99from typing import Any
1010
1111# Local application imports
12- from .geode_objects import geode_objects
13- from .geode_objects .geode_object import GeodeType , GeodeObject , to_geode_type
12+ from .geode_objects import geode_objects , geode_meshes , geode_models
13+ from .geode_objects .types import (
14+ GeodeObjectType ,
15+ geode_object_type ,
16+ GeodeMeshType ,
17+ geode_mesh_type ,
18+ GeodeModelType ,
19+ geode_model_type ,
20+ )
21+ from .geode_objects .geode_object import GeodeObject
22+ from .geode_objects .geode_mesh import GeodeMesh
23+ from .geode_objects .geode_model import GeodeModel
1424from . import utils_functions
1525from opengeodeweb_microservice .database .data import Data
1626from opengeodeweb_microservice .database .connection import get_session
@@ -24,24 +34,56 @@ def data_file_path(data_id: str, filename: str | None) -> str:
2434 return data_path
2535
2636
27- def load_data (data_id : str ) -> GeodeObject :
28- data_entry = Data .get (data_id )
29- if not data_entry :
37+ def geode_object_from_string (value : str ) -> type [GeodeObject ]:
38+ return geode_objects [geode_object_type (value )]
39+
40+
41+ def geode_mesh_from_string (value : str ) -> type [GeodeMesh ]:
42+ return geode_meshes [geode_mesh_type (value )]
43+
44+
45+ def geode_model_from_string (value : str ) -> type [GeodeModel ]:
46+ return geode_models [geode_model_type (value )]
47+
48+
49+ def load_object_data (data_id : str ) -> GeodeObject :
50+ data = Data .get (data_id )
51+ if not data :
52+ flask .abort (404 , f"Data with id { data_id } not found" )
53+
54+ file_absolute_path = data_file_path (data_id , data .native_file_name )
55+ print ("Loading file: " , file_absolute_path )
56+ print ("File exists: " , os .path .exists (file_absolute_path ))
57+ return geode_object_from_string (data .geode_object ).load (file_absolute_path )
58+
59+
60+ def load_mesh_data (data_id : str ) -> GeodeMesh :
61+ data = Data .get (data_id )
62+ if not data :
63+ flask .abort (404 , f"Data with id { data_id } not found" )
64+
65+ file_absolute_path = data_file_path (data_id , data .native_file_name )
66+ print ("Loading file: " , file_absolute_path )
67+ print ("File exists: " , os .path .exists (file_absolute_path ))
68+ return geode_mesh_from_string (data .geode_object ).load_mesh (file_absolute_path )
69+
70+
71+ def load_model_data (data_id : str ) -> GeodeModel :
72+ data = Data .get (data_id )
73+ if not data :
3074 flask .abort (404 , f"Data with id { data_id } not found" )
3175
32- file_absolute_path = data_file_path (data_id , data_entry .native_file_name )
76+ file_absolute_path = data_file_path (data_id , data .native_file_name )
3377 print ("Loading file: " , file_absolute_path )
3478 print ("File exists: " , os .path .exists (file_absolute_path ))
35- return geode_objects [to_geode_type (data_entry .geode_object )].load (
36- file_absolute_path
37- )
79+ return geode_model_from_string (data .geode_object ).load_model (file_absolute_path )
3880
3981
4082def get_data_info (data_id : str ) -> Data :
41- data_entry = Data .get (data_id )
42- if not data_entry :
83+ data = Data .get (data_id )
84+ if not data :
4385 flask .abort (404 , f"Data with id { data_id } not found" )
44- return data_entry
86+ return data
4587
4688
4789def upload_file_path (filename : str ) -> str :
@@ -52,9 +94,9 @@ def upload_file_path(filename: str) -> str:
5294
5395def geode_object_output_extensions (
5496 geode_object : GeodeObject ,
55- ) -> dict [GeodeType , dict [str , bool ]]:
56- results : dict [GeodeType , dict [str , bool ]] = {}
57- for mixin_geode_object in geode_objects [geode_object .geode_type ()].__mro__ :
97+ ) -> dict [GeodeObjectType , dict [str , bool ]]:
98+ results : dict [GeodeObjectType , dict [str , bool ]] = {}
99+ for mixin_geode_object in geode_objects [geode_object .geode_object_type ()].__mro__ :
58100 output_extensions_method = getattr (
59101 mixin_geode_object , "output_extensions" , None
60102 )
@@ -70,23 +112,23 @@ def geode_object_output_extensions(
70112 geode_object , f"test.{ output_extension } "
71113 )
72114 object_output_extensions [output_extension ] = bool_is_saveable
73- if hasattr (mixin_geode_object , "geode_type " ):
74- results [mixin_geode_object .geode_type ()] = object_output_extensions
115+ if hasattr (mixin_geode_object , "geode_object_type " ):
116+ results [mixin_geode_object .geode_object_type ()] = object_output_extensions
75117 return results
76118
77119
78- # def assign_crs(geode_type: GeodeType , data, crs_name: str, info):
120+ # def assign_crs(geode_type: GeodeObjectType , data, crs_name: str, info):
79121# builder = create_builder(geode_object, data)
80122# geode_objects[geode_type].["crs"]["assign"](data, builder, crs_name, info)
81123
82124
83- # def convert_crs(geode_type: GeodeType , data, crs_name: str, info):
125+ # def convert_crs(geode_type: GeodeObjectType , data, crs_name: str, info):
84126# builder = create_builder(geode_object, data)
85127# geode_objects[geode_type].["crs"]["convert"](data, builder, crs_name, info)
86128
87129
88130# def create_crs(
89- # geode_type: GeodeType ,
131+ # geode_type: GeodeObjectType ,
90132# data,
91133# name: str,
92134# input_coordiante_system,
@@ -98,7 +140,7 @@ def geode_object_output_extensions(
98140# )
99141
100142
101- # def geographic_coordinate_systems_info(geode_type: GeodeType , crs):
143+ # def geographic_coordinate_systems_info(geode_type: GeodeObjectType , crs):
102144# if is_3D(geode_object):
103145# return og_gs.GeographicCoordinateSystemInfo3D(
104146# crs["authority"], crs["code"], crs["name"]
@@ -109,7 +151,7 @@ def geode_object_output_extensions(
109151# )
110152
111153
112- # def coordinate_system(geode_type: GeodeType , coordinate_system):
154+ # def coordinate_system(geode_type: GeodeObjectType , coordinate_system):
113155# return og.CoordinateSystem2D(
114156# [
115157# og.Vector2D(
@@ -133,18 +175,18 @@ def geode_object_output_extensions(
133175# )
134176
135177
136- # def assign_geographic_coordinate_system_info(geode_type: GeodeType , data, input_crs):
178+ # def assign_geographic_coordinate_system_info(geode_type: GeodeObjectType , data, input_crs):
137179# info = geographic_coordinate_systems_info(geode_object, input_crs)
138180# assign_crs(geode_object, data, input_crs["name"], info)
139181
140182
141- # def convert_geographic_coordinate_system_info(geode_type: GeodeType , data, output_crs):
183+ # def convert_geographic_coordinate_system_info(geode_type: GeodeObjectType , data, output_crs):
142184# info = geographic_coordinate_systems_info(geode_object, output_crs)
143185# convert_crs(geode_object, data, output_crs["name"], info)
144186
145187
146188# def create_coordinate_system(
147- # geode_type: GeodeType , data, name, input_coordinate_points, output_coordinate_points
189+ # geode_type: GeodeObjectType , data, name, input_coordinate_points, output_coordinate_points
148190# ):
149191# input_coordiante_system = coordinate_system(geode_object, input_coordinate_points)
150192# output_coordiante_system = coordinate_system(geode_object, output_coordinate_points)
0 commit comments