| 
6 | 6 | from vtk.web import protocols as vtk_protocols  | 
7 | 7 | 
 
  | 
8 | 8 | # Local application imports  | 
 | 9 | +from opengeodeweb_microservice.database.data import Data  | 
 | 10 | +from opengeodeweb_microservice.database.connection import get_session  | 
9 | 11 | 
 
  | 
10 | 12 | 
 
  | 
11 | 13 | class VtkView(vtk_protocols.vtkWebProtocol):  | 
12 | 14 |     def __init__(self):  | 
13 | 15 |         super().__init__()  | 
14 | 16 |         self.DATA_FOLDER_PATH = os.getenv("DATA_FOLDER_PATH")  | 
 | 17 | +        if not self.DATA_FOLDER_PATH:  | 
 | 18 | +            raise ValueError("DATA_FOLDER_PATH environment variable not set")  | 
15 | 19 |         self.DataReader = vtk.vtkXMLPolyDataReader()  | 
16 | 20 |         self.ImageReader = vtk.vtkXMLImageDataReader()  | 
17 | 21 | 
 
  | 
 | 22 | +    def get_data_info(self, id: str) -> Data:  | 
 | 23 | +        data_entry = Data.get(id)  | 
 | 24 | +        if not data_entry:  | 
 | 25 | +            raise ValueError(f"Data with id {id} not found")  | 
 | 26 | +        return data_entry  | 
 | 27 | + | 
 | 28 | +    def get_data_file_path(self, id: str, filename: str = "") -> str:  | 
 | 29 | +        data_entry = self.get_data_info(id)  | 
 | 30 | +        if filename:  | 
 | 31 | +            return os.path.join(self.DATA_FOLDER_PATH, id, filename)  | 
 | 32 | +        return os.path.join(self.DATA_FOLDER_PATH, id, data_entry.native_file_name)  | 
 | 33 | + | 
 | 34 | +    def load_data(self, id: str):  | 
 | 35 | +        data_entry = self.get_data_info(id)  | 
 | 36 | +        file_path = self.get_data_file_path(id, data_entry.native_file_name)  | 
 | 37 | + | 
 | 38 | +        if not os.path.exists(file_path):  | 
 | 39 | +            raise FileNotFoundError(f"File not found at {file_path}")  | 
 | 40 | + | 
 | 41 | +        if file_path.endswith(".vtp"):  | 
 | 42 | +            reader = vtk.vtkXMLPolyDataReader()  | 
 | 43 | +        elif file_path.endswith(".vti"):  | 
 | 44 | +            reader = vtk.vtkXMLImageDataReader()  | 
 | 45 | +        elif file_path.endswith(".vtu"):  | 
 | 46 | +            reader = vtk.vtkXMLUnstructuredGridReader()  | 
 | 47 | +        else:  | 
 | 48 | +            raise ValueError(f"Unsupported file extension for {file_path}")  | 
 | 49 | + | 
 | 50 | +        reader.SetFileName(file_path)  | 
 | 51 | +        return reader, data_entry.geode_object  | 
 | 52 | + | 
18 | 53 |     def get_data_base(self):  | 
19 | 54 |         return self.getSharedObject("db")  | 
20 | 55 | 
 
  | 
 | 
0 commit comments