Skip to content

Commit e12c1c7

Browse files
committed
database integration. using id from database of OGW-Microservice's database
rm filename from register json schema new functions for data_file_path get_data_info, get_data_file_path, load_data
1 parent 2eebac3 commit e12c1c7

File tree

9 files changed

+51
-31
lines changed

9 files changed

+51
-31
lines changed

src/opengeodeweb_viewer/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def test_config(path):
4848
*test_ids,
4949
uploads_directory,
5050
structure_directory,
51-
]: # create directories for tests
51+
]:
5252
os.makedirs(
5353
(
5454
os.path.join(tmp_data_root, directory)

src/opengeodeweb_viewer/object/object_methods.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,19 @@
55
import vtk
66

77
# Local application imports
8-
from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema
98
from opengeodeweb_viewer.vtk_protocol import VtkView
109

1110

1211
class VtkObjectView(VtkView):
1312
def __init__(self):
1413
super().__init__()
1514

16-
def registerObject(self, id, file_name, reader, filter, mapper):
15+
def registerObject(self, id, reader, filter, mapper):
16+
data_info = self.get_data_info(id)
17+
file_path = self.get_data_file_path(id, data_info.viewable_file_name)
1718
actor = vtk.vtkActor()
1819
self.register_object(id, reader, filter, actor, mapper, {})
19-
reader.SetFileName(os.path.join(self.DATA_FOLDER_PATH, id, file_name))
20+
reader.SetFileName(file_path)
2021
actor.SetMapper(mapper)
2122
mapper.SetColorModeToMapScalars()
2223
mapper.SetResolveCoincidentTopologyLineOffsetParameters(1, -0.1)
@@ -57,9 +58,7 @@ def applyTextures(self, id, textures):
5758

5859
new_texture = vtk.vtkTexture()
5960
image_reader = vtk.vtkXMLImageDataReader()
60-
image_reader.SetFileName(
61-
os.path.join(self.DATA_FOLDER_PATH, id, texture_file_name)
62-
)
61+
image_reader.SetFileName(self.get_data_file_path(id, texture_file_name))
6362

6463
shader_texture_name = f"VTK_TEXTURE_UNIT_{index}"
6564
polydata_mapper.MapDataArrayToMultiTextureAttribute(

src/opengeodeweb_viewer/rpc/generic/generic_protocols.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ def register(self, params):
2727
params, self.generic_schemas_dict["register"], self.generic_prefix
2828
)
2929
viewer_object = params["viewer_object"]
30-
params.pop("viewer_object", None)
30+
data_id = params["data_id"]
31+
data_info = self.get_data_info(data_id)
32+
register_params = {"id": data_id, "file_name": data_info.viewable_file_name}
3133
if viewer_object == "mesh":
32-
self.mesh_protocols.registerMesh(params)
34+
self.mesh_protocols.registerMesh(register_params)
3335
elif viewer_object == "model":
34-
self.model_protocols.registerModel(params)
36+
self.model_protocols.registerModel(register_params)
3537

3638
@exportRpc(generic_prefix + generic_schemas_dict["deregister"]["rpc"])
3739
def deregister(self, params):

src/opengeodeweb_viewer/rpc/generic/schemas/register.json

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,11 @@
1313
"id": {
1414
"type": "string",
1515
"minLength": 1
16-
},
17-
"file_name": {
18-
"type": "string",
19-
"minLength": 1
2016
}
2117
},
2218
"required": [
2319
"viewer_object",
24-
"id",
25-
"file_name"
20+
"id"
2621
],
2722
"additionalProperties": false
2823
}

src/opengeodeweb_viewer/rpc/mesh/schemas/register.json

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,10 @@
55
"id": {
66
"type": "string",
77
"minLength": 1
8-
},
9-
"file_name": {
10-
"type": "string",
11-
"minLength": 1
128
}
139
},
1410
"required": [
15-
"id",
16-
"file_name"
11+
"id"
1712
],
1813
"additionalProperties": false
1914
}

src/opengeodeweb_viewer/rpc/model/model_protocols.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def __init__(self):
2323
@exportRpc(model_prefix + model_schemas_dict["register"]["rpc"])
2424
def registerModel(self, params):
2525
validate_schema(params, self.model_schemas_dict["register"], self.model_prefix)
26-
id, file_name = params["id"], params["file_name"]
26+
id = params["id"]
2727
try:
2828
reader = vtk.vtkXMLMultiBlockDataReader()
2929
filter = vtk.vtkGeometryFilter()
@@ -32,7 +32,7 @@ def registerModel(self, params):
3232
mapper.SetInputConnection(filter.GetOutputPort())
3333
attributes = vtkCompositeDataDisplayAttributes()
3434
mapper.SetCompositeDataDisplayAttributes(attributes)
35-
self.registerObject(id, file_name, reader, filter, mapper)
35+
self.registerObject(id, reader, filter, mapper)
3636
self.get_object(id)["max_dimension"] = "default"
3737
except Exception as e:
3838
print("error : ", str(e), flush=True)

src/opengeodeweb_viewer/rpc/model/schemas/register.json

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,10 @@
55
"id": {
66
"type": "string",
77
"minLength": 1
8-
},
9-
"file_name": {
10-
"type": "string",
11-
"minLength": 1
128
}
139
},
1410
"required": [
15-
"id",
16-
"file_name"
11+
"id"
1712
],
1813
"additionalProperties": false
1914
}

src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ def takeScreenshot(self, params):
112112
validate_schema(
113113
params, self.viewer_schemas_dict["take_screenshot"], self.viewer_prefix
114114
)
115-
116115
filename, output_extension, include_background = (
117116
params["filename"],
118117
params["output_extension"],

src/opengeodeweb_viewer/vtk_protocol.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,50 @@
66
from vtk.web import protocols as vtk_protocols
77

88
# Local application imports
9+
from opengeodeweb_microservice.database.data import Data
10+
from opengeodeweb_microservice.database.connection import get_session
911

1012

1113
class VtkView(vtk_protocols.vtkWebProtocol):
1214
def __init__(self):
1315
super().__init__()
1416
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")
1519
self.DataReader = vtk.vtkXMLPolyDataReader()
1620
self.ImageReader = vtk.vtkXMLImageDataReader()
1721

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+
1853
def get_data_base(self):
1954
return self.getSharedObject("db")
2055

0 commit comments

Comments
 (0)