Skip to content

Commit

Permalink
filter ilidata concerning category preferredDataSource gpkg or pg
Browse files Browse the repository at this point in the history
  • Loading branch information
signedav committed Nov 30, 2023
1 parent c3adc6b commit 6f73076
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 62 deletions.
10 changes: 9 additions & 1 deletion modelbaker/iliwrapper/ilicache.py
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ class IliDataCache(IliCache):

CACHE_PATH = os.path.expanduser("~/.ilidatacache")

def __init__(self, configuration, type="metaconfig", models=None):
def __init__(self, configuration, type="metaconfig", models=None, datasources=[]):
IliCache.__init__(self, configuration)
self.information_file = "ilidata.xml"

Expand All @@ -454,6 +454,7 @@ def __init__(self, configuration, type="metaconfig", models=None):
if self.base_configuration
else []
)
self.datasources = datasources

def process_model_directory(self, path):
# download remote and local repositories
Expand Down Expand Up @@ -512,9 +513,16 @@ def _process_informationfile(self, file, netloc, url):
datasource = datasource_code_regex.search(
category_value
).group(1)

# filter for models and types and if datasources are passed and found in the category, they need to be considered
if (
not any(model in models for model in self.filter_models)
or type != self.type
or (
self.datasources
and datasource
and datasource not in self.datasources
)
):
continue
title = list()
Expand Down
66 changes: 59 additions & 7 deletions tests/test_ilicache.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,58 @@ def test_ilimodels_xml_parser_24_local_repo_local_files(self):

def test_ilidata_xml_parser_metaconfig_kbs(self):
# find kbs metaconfig file according to the model(s) with direct ilidata.xml scan
# pass gpkg as datasource find the ones with gpkg-datasource-category and the ones without datasource-category
ilimetaconfigcache = IliDataCache(
configuration=None, models="KbS_LV95_V1_4", datasources=["gpkg"]
)
ilimetaconfigcache._process_informationfile(
os.path.join(
test_path, "testdata", "ilirepo", "usabilityhub", "ilidata.xml"
),
"test_repo",
os.path.join(test_path, "testdata", "ilirepo", "usabilityhub"),
)
assert "test_repo" in ilimetaconfigcache.repositories.keys()
metaconfigs = {
e["id"]
for e in next(elem for elem in ilimetaconfigcache.repositories.values())
}
expected_metaconfigs = {
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0-technical", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_gpkg_localfiletest", # gpkg as preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0-wrong", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_gpkg", # no preferred datasource
}
assert metaconfigs == expected_metaconfigs

# pass pg as datasource find the ones with pg-datasource-category and the ones without datasource-category
ilimetaconfigcache = IliDataCache(
configuration=None, models="KbS_LV95_V1_4", datasources=["pg"]
)
ilimetaconfigcache._process_informationfile(
os.path.join(
test_path, "testdata", "ilirepo", "usabilityhub", "ilidata.xml"
),
"test_repo",
os.path.join(test_path, "testdata", "ilirepo", "usabilityhub"),
)
assert "test_repo" in ilimetaconfigcache.repositories.keys()
metaconfigs = {
e["id"]
for e in next(elem for elem in ilimetaconfigcache.repositories.values())
}
expected_metaconfigs = {
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0-technical", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_localfiletest", # pg as preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_ili2db", # pg as preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0-wrong", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_gpkg", # no preferred datasource
}
assert metaconfigs == expected_metaconfigs

# don't pass any datasource, means find all
ilimetaconfigcache = IliDataCache(configuration=None, models="KbS_LV95_V1_4")
ilimetaconfigcache._process_informationfile(
os.path.join(
Expand All @@ -299,13 +351,13 @@ def test_ilidata_xml_parser_metaconfig_kbs(self):
for e in next(elem for elem in ilimetaconfigcache.repositories.values())
}
expected_metaconfigs = {
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0-technical",
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0",
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_localfiletest",
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_gpkg_localfiletest",
"ch.opengis.ili.config.KbS_LV95_V1_4_ili2db",
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0-wrong",
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_gpkg",
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0-technical", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_localfiletest", # pg as preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_gpkg_localfiletest", # gpkg as preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_ili2db", # pg as preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0-wrong", # no preferred datasource
"ch.opengis.ili.config.KbS_LV95_V1_4_config_V1_0_gpkg", # no preferred datasource
}
assert metaconfigs == expected_metaconfigs

Expand Down
12 changes: 0 additions & 12 deletions tests/testdata/ilirepo/invalid/ilidata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>
</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -68,9 +65,6 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>
</categories>
</DatasetIdx16.DataIndex.DatasetMetadata>

Expand All @@ -95,9 +89,6 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>
</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -133,9 +124,6 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>
</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down
54 changes: 12 additions & 42 deletions tests/testdata/ilirepo/usabilityhub/ilidata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>
</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -73,9 +70,6 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>
</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -111,7 +105,7 @@
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
<value>http://codes.modelbaker.ch/preferredDataSource/pg</value>
</DatasetIdx16.Code_>
</categories>
<files>
Expand Down Expand Up @@ -148,7 +142,7 @@
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
<value>http://codes.modelbaker.ch/preferredDataSource/gpkg</value>
</DatasetIdx16.Code_>
</categories>
<files>
Expand Down Expand Up @@ -184,9 +178,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
<files>
<DatasetIdx16.DataFile>
Expand All @@ -211,9 +203,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -249,7 +239,7 @@
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
<value>http://codes.modelbaker.ch/preferredDataSource/pg</value>
</DatasetIdx16.Code_>
</categories>
<files>
Expand Down Expand Up @@ -414,9 +404,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/projecttopping</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -452,9 +440,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/projecttopping</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -554,9 +540,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/referenceData</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
<files>
          <DatasetIdx16.DataFile>
Expand Down Expand Up @@ -591,9 +575,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/referenceData</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
<files>
          <DatasetIdx16.DataFile>
Expand Down Expand Up @@ -641,9 +623,6 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>
</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -678,9 +657,6 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/metaconfig</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>
</categories>
<files>
<DatasetIdx16.DataFile>
Expand Down Expand Up @@ -716,9 +692,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/referenceData</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
        <files>
          <DatasetIdx16.DataFile>
Expand Down Expand Up @@ -764,9 +738,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/referenceData</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
        <files>
          <DatasetIdx16.DataFile>
Expand Down Expand Up @@ -812,9 +784,7 @@
<DatasetIdx16.Code_>
<value>http://codes.interlis.ch/type/referenceData</value>
</DatasetIdx16.Code_>
<DatasetIdx16.Code_>
<value>http://codes.opengis.ch/modelbaker</value>
</DatasetIdx16.Code_>

</categories>
        <files>
          <DatasetIdx16.DataFile>
Expand Down

0 comments on commit 6f73076

Please sign in to comment.