99
1010from ted_sws import config
1111from ted_sws .core .model .transform import MappingSuite , FileResource , TransformationRuleSet , SHACLTestSuite , \
12- SPARQLTestSuite , MetadataConstraints , TransformationTestData , ConceptualMapping
12+ SPARQLTestSuite , MetadataConstraints , TransformationTestData , ConceptualMapping , MappingSuiteType , \
13+ MetadataConstraintsStandardForm , MetadataConstraintsEform
1314from ted_sws .data_manager .adapters import inject_date_string_fields , remove_date_string_fields
1415from ted_sws .data_manager .adapters .repository_abc import MappingSuiteRepositoryABC
1516from ted_sws .mapping_suite_processor .adapters .conceptual_mapping_reader import ConceptualMappingReader
2526MS_CONCEPTUAL_MAPPING_FILE_NAME = "conceptual_mappings.xlsx"
2627MS_OUTPUT_FOLDER_NAME = "output"
2728MS_TEST_SUITE_REPORT = "test_suite_report"
28- MS_CREATED_AT = "created_at"
29+ MS_CREATED_AT_KEY = "created_at"
2930MONGODB_COLLECTION_ID = "_id"
31+ MS_METADATA_IDENTIFIER_KEY = 'identifier'
32+ MS_STANDARD_METADATA_VERSION_KEY = 'version'
33+ MS_EFORMS_METADATA_VERSION_KEY = 'mapping_version'
34+ MS_METADATA_CONSTRAINTS_KEY = 'metadata_constraints'
35+ MS_CONSTRAINTS_KEY = 'constraints'
36+ MS_TITLE_KEY = 'title'
37+ MS_HASH_DIGEST_KEY = 'mapping_suite_hash_digest'
38+ MS_MAPPING_TYPE_KEY = 'mapping_type'
39+ MS_ONTOLOGY_VERSION_KEY = 'ontology_version'
3040
3141
3242class MappingSuiteRepositoryMongoDB (MappingSuiteRepositoryABC ):
@@ -55,8 +65,8 @@ def _create_dict_from_mapping_suite(self, mapping_suite: MappingSuite) -> dict:
5565 """
5666 mapping_suite_dict = mapping_suite .dict ()
5767 mapping_suite_dict [MONGODB_COLLECTION_ID ] = mapping_suite .get_mongodb_id ()
58- mapping_suite_dict [MS_CREATED_AT ] = datetime .fromisoformat (mapping_suite_dict [MS_CREATED_AT ])
59- inject_date_string_fields (data = mapping_suite_dict , date_field_name = MS_CREATED_AT )
68+ mapping_suite_dict [MS_CREATED_AT_KEY ] = datetime .fromisoformat (mapping_suite_dict [MS_CREATED_AT_KEY ])
69+ inject_date_string_fields (data = mapping_suite_dict , date_field_name = MS_CREATED_AT_KEY )
6070 return mapping_suite_dict
6171
6272 def _create_mapping_suite_from_dict (self , mapping_suite_dict : dict ) -> Optional [MappingSuite ]:
@@ -67,8 +77,8 @@ def _create_mapping_suite_from_dict(self, mapping_suite_dict: dict) -> Optional[
6777 """
6878 if mapping_suite_dict :
6979 mapping_suite_dict .pop (MONGODB_COLLECTION_ID , None )
70- mapping_suite_dict [MS_CREATED_AT ] = mapping_suite_dict [MS_CREATED_AT ].isoformat ()
71- remove_date_string_fields (data = mapping_suite_dict , date_field_name = MS_CREATED_AT )
80+ mapping_suite_dict [MS_CREATED_AT_KEY ] = mapping_suite_dict [MS_CREATED_AT_KEY ].isoformat ()
81+ remove_date_string_fields (data = mapping_suite_dict , date_field_name = MS_CREATED_AT_KEY )
7282 return MappingSuite (** mapping_suite_dict )
7383 return None
7484
@@ -134,7 +144,6 @@ def _read_package_metadata(self, package_path: pathlib.Path) -> dict:
134144 package_metadata_path = package_path / MS_METADATA_FILE_NAME
135145 package_metadata_content = package_metadata_path .read_text (encoding = "utf-8" )
136146 package_metadata = json .loads (package_metadata_content )
137- package_metadata ['metadata_constraints' ] = MetadataConstraints (** package_metadata ['metadata_constraints' ])
138147 return package_metadata
139148
140149 def _read_transformation_rule_set (self , package_path : pathlib .Path ) -> TransformationRuleSet :
@@ -343,16 +352,30 @@ def _read_mapping_suite_package(self, mapping_suite_identifier: str) -> Optional
343352 package_path = self .repository_path / mapping_suite_identifier
344353 if package_path .is_dir ():
345354 package_metadata = self ._read_package_metadata (package_path )
346- package_metadata ["version" ] = package_metadata [
347- "version" ] if "version" in package_metadata else package_metadata ["mapping_version" ]
348- package_metadata ["identifier" ] = package_metadata [
349- "identifier" ] if "identifier" in package_metadata else mapping_suite_identifier
350- package_metadata ["transformation_rule_set" ] = self ._read_transformation_rule_set (package_path )
351- package_metadata ["shacl_test_suites" ] = self ._read_shacl_test_suites (package_path )
352- package_metadata ["sparql_test_suites" ] = self ._read_sparql_test_suites (package_path )
353- package_metadata ["transformation_test_data" ] = self ._read_test_data_package (package_path )
354- package_metadata ["conceptual_mapping" ] = self ._read_conceptual_mapping (package_path )
355- return MappingSuite (** package_metadata )
355+ if MS_MAPPING_TYPE_KEY in package_metadata and package_metadata [
356+ MS_MAPPING_TYPE_KEY ] == MappingSuiteType .ELECTRONIC_FORMS :
357+ package_metadata [MS_METADATA_CONSTRAINTS_KEY ] = MetadataConstraints (constraints = MetadataConstraintsEform (
358+ ** package_metadata [MS_METADATA_CONSTRAINTS_KEY ][MS_CONSTRAINTS_KEY ]))
359+ else :
360+ package_metadata [MS_METADATA_CONSTRAINTS_KEY ] = MetadataConstraints (constraints = MetadataConstraintsStandardForm (
361+ ** package_metadata [MS_METADATA_CONSTRAINTS_KEY ][MS_CONSTRAINTS_KEY ]))
362+ mapping_suite = MappingSuite (metadata_constraints = package_metadata [MS_METADATA_CONSTRAINTS_KEY ],
363+ created_at = package_metadata [MS_CREATED_AT_KEY ],
364+ title = package_metadata [MS_TITLE_KEY ],
365+ ontology_version = package_metadata [MS_ONTOLOGY_VERSION_KEY ],
366+ mapping_suite_hash_digest = package_metadata [MS_HASH_DIGEST_KEY ],
367+ mapping_type = package_metadata [MS_MAPPING_TYPE_KEY ] if MS_MAPPING_TYPE_KEY in package_metadata else MappingSuiteType .STANDARD_FORMS ,
368+ version = package_metadata [
369+ MS_STANDARD_METADATA_VERSION_KEY ] if MS_STANDARD_METADATA_VERSION_KEY in package_metadata else \
370+ package_metadata [MS_EFORMS_METADATA_VERSION_KEY ],
371+ identifier = package_metadata [
372+ MS_METADATA_IDENTIFIER_KEY ] if MS_METADATA_IDENTIFIER_KEY in package_metadata else mapping_suite_identifier ,
373+ transformation_rule_set = self ._read_transformation_rule_set (package_path ),
374+ shacl_test_suites = self ._read_shacl_test_suites (package_path ),
375+ sparql_test_suites = self ._read_sparql_test_suites (package_path ),
376+ transformation_test_data = self ._read_test_data_package (package_path ),
377+ conceptual_mapping = self ._read_conceptual_mapping (package_path )) #TODO remove conceptual_mapping value assignment when conceptual mapping reader is removed
378+ return mapping_suite
356379 return None
357380
358381 @classmethod
0 commit comments