From 3732c2885b08d677889a7f32a2e9932384a95cf1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=ABl=20M=C3=A9liani?= <m.meliani@neogeo-online.net>
Date: Tue, 18 Jun 2013 12:54:52 +0200
Subject: [PATCH] Cleaned up the code.

---
 src/mapfile.py | 107 ++++++++++++++++++++-----------------------------
 1 file changed, 43 insertions(+), 64 deletions(-)

diff --git a/src/mapfile.py b/src/mapfile.py
index 0576a1a..6d9828b 100644
--- a/src/mapfile.py
+++ b/src/mapfile.py
@@ -81,7 +81,7 @@ class Layer(MetadataMixin):
     def enable(self, enabled=True):
         requests = ["GetCapabilities", "GetMap", "GetFeatureInfo", "GetLegendGraphic"]
         self.ms.status = mapscript.MS_ON if enabled else mapscript.MS_OFF
-        self.ms.setMetaData("wms_enable_request",  " ".join(('%s' if enabled else "!%s") % c for c in requests))
+        self.set_metadata("wms_enable_request",  " ".join(('%s' if enabled else "!%s") % c for c in requests))
 
     def get_type_name(self):
         return {
@@ -297,8 +297,7 @@ class FeatureTypeModel(LayerModel):
             self.ms.data = "%s FROM %s" % (ds[ft_name].get_geometry_column(), ft_name)
             self.set_metadata("ows_extent", "%s %s %s %s" %
                 (ft.get_extent().minX(), ft.get_extent().minY(),
-                ft.get_extent().maxX(), ft.get_extent().maxY())
-                )
+                ft.get_extent().maxX(), ft.get_extent().maxY()))
         #elif cpram["dbtype"] in ["shp", "shapefile"]:
         else:
             self.ms.connectiontype = mapscript.MS_SHAPEFILE
@@ -310,8 +309,10 @@ class FeatureTypeModel(LayerModel):
         #    raise ValueError("Unhandled type '%s'" % info["dbtype"])
 
         # Deactivate wms and wfs requests, because we are a virtual layer.
-        self.set_metadata("wms_enable_request", "!GetCapabilities !GetMap !GetFeatureInfo !GetLegendGraphic")
-        self.set_metadata("wfs_enable_request", "!GetCapabilities !DescribeFeatureType !GetFeature")
+        self.set_metadatas({
+            "wms_enable_request": "!GetCapabilities !GetMap !GetFeatureInfo !GetLegendGraphic",
+            "wfs_enable_request": "!GetCapabilities !DescribeFeatureType !GetFeature",
+            })
 
         # Update mra metadatas, and make sure the mandatory ones are left untouched.
         self.update_mra_metadatas(metadata)
@@ -348,16 +349,7 @@ class FeatureTypeModel(LayerModel):
                 })
 
         if enabled:
-            layer.ms.setMetaData("wfs_enable_request", "GetCapabilities GetFeature DescribeFeatureType")
-
-        layer.set_metadata("wfs_srs", "EPSG:4326")
-        layer.ms.setMetaData("wfs_getfeature_formatlist", "OGRGML,SHAPEZIP")
-        layer.ms.setMetaData("gml_types", "auto")
-
-        # TODO: layer.ms.setMetaData("wfs_metadataurl_format", "")
-        # TODO: layer.ms.setMetaData("wfs_metadataurl_href", "")
-        # TODO: layer.ms.setMetaData("wfs_metadataurl_type", "")
-        # TODO: layer.ms.setMetaData("gml_xml_items", "")
+            layer.set_metadata("wfs_enable_request", "GetCapabilities GetFeature DescribeFeatureType")
 
         # Configure the layer based on information from the store.
         ds = ws.get_datastore(self.get_mra_metadata("storage"))
@@ -366,29 +358,24 @@ class FeatureTypeModel(LayerModel):
         # Configure the different fields.
         field_names = []
         for field in ft.iterfields():
-            layer.set_metadata("gml_%s_alias" % field.get_name(), field.get_name())
-            layer.set_metadata("gml_%s_type" % field.get_name(), field.get_type_gml())
-            #TODO: layer.set_metadata("gml_%s_precision" field.get_name(), "")
-            #TODO: layer.set_metadata("gml_%s_width" field.get_name(), "")
-            #TODO: layer.set_metadata("gml_%s_value" field.get_name(), "")
+            layer.set_metadatas({
+                "gml_%s_alias" % field.get_name(): field.get_name(),
+                "gml_%s_type" % field.get_name(): field.get_type_gml(),
+                # TODO: Add gml_<field name>_precision, gml_<field name>_width
+                })
             field_names.append(field.get_name())
-        layer.set_metadata("wfs_include_items", ",".join(field_names))
-        layer.set_metadata("gml_include_items", ",".join(field_names))
 
-        layer.set_metadata("wfs_featureid", ft.get_fid_column())
-        layer.set_metadata("gml_featureid", ft.get_fid_column())
-        layer.set_metadata("gml_geometries", ft.get_geometry_column())
-        layer.set_metadata("gml_%s_type" % ft.get_geometry_column(), ft.get_geomtype_gml())
-        # TODO: layer.set_metadata("gml_%s_occurances" ft.get_geometry_column(), "")
-
-        # TODO: Check if class already exists.
-        # If no class exists we add a new class by default
-#        if layer.ms.type == mapscript.MS_LAYER_POINT:
-#            maptools.create_def_point_class(layer.ms)
-#        elif layer.ms.type == mapscript.MS_LAYER_LINE:
-#            maptools.create_def_line_class(layer.ms)
-#        elif layer.ms.type == mapscript.MS_LAYER_POLYGON:
-#            maptools.create_def_polygon_class(layer.ms)
+        layer.set_metadatas({
+            "wfs_include_items", ",".join(field_names),
+            "gml_include_items", ",".join(field_names),
+            "wfs_featureid": ft.get_fid_column(),
+            "gml_featureid": ft.get_fid_column(),
+            "gml_geometries": ft.get_geometry_column(),
+            "gml_%s_type" % ft.get_geometry_column(): ft.get_geomtype_gml(),
+            # TODO: Add gml_<geometry name>_occurances,
+            "wfs_srs": "EPSG:4326",
+            "wfs_getfeature_formatlist": "OGRGML,SHAPEZIP",
+            })
 
         plugins.extend("post_configure_vector_layer", self, ws, ds, ft, layer)
 
@@ -424,8 +411,10 @@ class CoverageModel(LayerModel):
         #    raise ValueError("Unhandled type '%s'" % cparam["dbtype"])
 
         # Deactivate wms and wcs requests, because we are a virtual layer.
-        self.set_metadata("wms_enable_request", "!GetCapabilities !GetMap !GetFeatureInfo !GetLegendGraphic")
-        self.set_metadata("wcs_enable_request", "!GetCapabilities !DescribeCoverage !GetCoverage")
+        self.set_metadatas({
+            "wms_enable_request": "!GetCapabilities !GetMap !GetFeatureInfo !GetLegendGraphic",
+            "wcs_enable_request": "!GetCapabilities !DescribeCoverage !GetCoverage",
+            )}
 
         # Update mra metadatas, and make sure the mandatory ones are left untouched.
         self.update_mra_metadatas(metadata)
@@ -460,24 +449,17 @@ class CoverageModel(LayerModel):
                 "wfs_name": layer.get_metadata("wms_name"),
                 "wfs_title": layer.get_metadata("wms_title"),
                 "wfs_abstract": layer.get_metadata("wms_abstract"),
-                #"wfs_keywordlist": layer.get_metadata("wms_keywordlist"),
+                # TODO: wfs_keywordlist, wcs_srs, wcs_getfeature_formatlist...
                 })
 
         if enabled:
-            layer.ms.setMetaData("wcs_enable_request", "GetCapabilities GetCoverage DescribeCoverage")
-
-        # TODO: layer.set_metadata("wcs_srs", "")
-        # TODO: layer.set_metadata("wcs_getfeature_formatlist", "")
-        # TODO: layer.set_metadata("wcs_metadataurl_format", "")
-        # TODO: layer.set_metadata("wcs_metadataurl_href", "")
-        # TODO: layer.set_metadata("wcs_metadataurl_type", "")
-        # ...
+            layer.set_metadata("wcs_enable_request", "GetCapabilities GetCoverage DescribeCoverage")
 
         plugins.extend("post_configure_raster_layer", self, ws, layer)
 
 
-
 class Workspace(object):
+    # TODO
     pass
 
 class MapfileWorkspace(Workspace):
@@ -538,7 +520,6 @@ class MapfileWorkspace(Workspace):
         with self.mapfile.mra_metadata(st_type, {}) as stores:
             del stores[name]
 
-
     # Datastores:
 
     def get_datastore(self, name):
@@ -648,7 +629,6 @@ class MapfileWorkspace(Workspace):
         ft = self.get_featuretypemodel(ft_name, ds_name)
         self.mapfile.ms.removeLayer(ft.ms.index)
 
-
     # Coverages
 
     def iter_coveragemodels(self, cs_name=None, **kwargs):
@@ -820,19 +800,19 @@ class Mapfile(MetadataMixin):
         # "wms_getmap_formatlist"
         # "wms_getfeatureinfo_formatlist"
         # "wms_getlegendgraphic_formatlist"
-        # "wms_attribution_title"
-        # "wms_attribution_onlineresource": ""
-        # "wms_attribution_logourl_href"
-        # "wms_attribution_logourl_format"
-        # "wms_attribution_logourl_height"
-        # "wms_attribution_logourl_width"
-        # "wms_identifier_authority"
-        # "wms_identifier_value"
-        # "wms_authorityurl_name"
-        # "wms_authorityurl_href"
-        # "wms_metadataurl_type"
-        # "wms_metadataurl_href"
-        # "wms_metadataurl_format"
+        # "ows_attribution_title"
+        # "ows_attribution_onlineresource": ""
+        # "ows_attribution_logourl_href"
+        # "ows_attribution_logourl_format"
+        # "ows_attribution_logourl_height"
+        # "ows_attribution_logourl_width"
+        # "ows_identifier_authority"
+        # "ows_identifier_value"
+        # "ows_authorityurl_name"
+        # "ows_authorityurl_href"
+        # "ows_metadataurl_type"
+        # "ows_metadataurl_href"
+        # "ows_metadataurl_format"
 
         # TODO: pass correct data (title, abstract, ...) to layer.update()
         layer.update(l_metadata)
@@ -993,7 +973,6 @@ class Mapfile(MetadataMixin):
         # This is a ugly hack. We clone the layer and remove all the other styles.
         # Then we ask mapscript to generate the sld, but aprently for that the
         # cloned style needs to be in the mapfile... so be it.
-
         clone = layer.ms.clone()
         for c_index in reversed(xrange(clone.numclasses)):
             c = clone.getClass(c_index)
-- 
GitLab