[Commits] r2203 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data

commits at geoext.org commits at geoext.org
Thu May 20 22:18:02 CEST 2010


Author: elemoine
Date: 2010-05-20 22:18:02 +0200 (Thu, 20 May 2010)
New Revision: 2203

Modified:
   core/trunk/geoext/lib/GeoExt/data/WFSCapabilitiesReader.js
   core/trunk/geoext/tests/lib/GeoExt/data/WFSCapabilitiesReader.html
Log:
WFSCapabilitiesReader should set featureNS in the WFS protocols it creates, reported by fvanderbiest, r=tschaub (closes #278)

Modified: core/trunk/geoext/lib/GeoExt/data/WFSCapabilitiesReader.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/WFSCapabilitiesReader.js	2010-05-20 15:33:01 UTC (rev 2202)
+++ core/trunk/geoext/lib/GeoExt/data/WFSCapabilitiesReader.js	2010-05-20 20:18:02 UTC (rev 2203)
@@ -38,6 +38,8 @@
         recordType = GeoExt.data.LayerRecord.create(
             recordType || meta.fields || [
                 {name: "name", type: "string"},
+                {name: "title", type: "string"},
+                {name: "namespace", type: "string", mapping: "featureNS"},
                 {name: "abstract", type: "string"}
             ]
         );
@@ -78,34 +80,43 @@
         if(typeof data === "string" || data.nodeType) {
             data = this.meta.format.read(data);
         }
-        var records = [], layer, l, parts, layerOptions, protocolOptions;
+
         var featureTypes = data.featureTypeList.featureTypes;
+        var fields = this.recordType.prototype.fields;
+
+        var featureType, values, field, v, parts, layer, values;
+        var layerOptions, protocolOptions;
+
         var protocolDefaults = {
             url: data.capability.request.getfeature.href.post
         };
-        for(var i=0, len=featureTypes.length; i<len; i++) {
-            layer = featureTypes[i];
-            if(layer.name) {
-                // create protocol
-                parts = layer.name.split(":");
-                if (parts.length > 1) {
-                    protocolOptions = {
-                        featureType: parts[1],
-                        featurePrefix: parts[0]
-                    };
-                } else {
-                    protocolOptions = {
-                        featureType: parts[0],
-                        featurePrefix: null
-                    };
+
+        var records = [];
+
+        for(var i=0, lenI=featureTypes.length; i<lenI; i++) {
+            featureType = featureTypes[i];
+            if(featureType.name) {
+                values = {};
+
+                for(var j=0, lenJ=fields.length; j<lenJ; j++) {
+                    field = fields.items[j];
+                    v = featureType[field.mapping || field.name] ||
+                        field.defaultValue;
+                    v = field.convert(v);
+                    values[field.name] = v;
                 }
+
+                protocolOptions = {
+                    featureType: featureType.name,
+                    featureNS: featureType.featureNS
+                };
                 if(this.meta.protocolOptions) {
                     Ext.apply(protocolOptions, this.meta.protocolOptions, 
                         protocolDefaults);
                 } else {
                     Ext.apply(protocolOptions, {}, protocolDefaults);
                 }
-                // create vector layer with protocol
+
                 layerOptions = {
                     protocol: new OpenLayers.Protocol.WFS(protocolOptions),
                     strategies: [new OpenLayers.Strategy.Fixed()]
@@ -113,13 +124,13 @@
                 if(this.meta.layerOptions) {
                     Ext.apply(layerOptions, this.meta.layerOptions);
                 }
-                l = new OpenLayers.Layer.Vector(
-                    layer.title || layer.name, 
+
+                values.layer = new OpenLayers.Layer.Vector(
+                    featureType.title || featureType.name,
                     layerOptions
                 );
-                records.push(new this.recordType(Ext.apply(layer, {
-                    layer: l
-                }), l.id));
+
+                records.push(new this.recordType(values, values.layer.id));
             }
         }
         return {

Modified: core/trunk/geoext/tests/lib/GeoExt/data/WFSCapabilitiesReader.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/WFSCapabilitiesReader.html	2010-05-20 15:33:01 UTC (rev 2202)
+++ core/trunk/geoext/tests/lib/GeoExt/data/WFSCapabilitiesReader.html	2010-05-20 20:18:02 UTC (rev 2203)
@@ -17,7 +17,7 @@
             var fields = reader.recordType.prototype.fields;
 
             // 1 test
-            t.eq(fields.items.length, 4, 'number of default items is correct');
+            t.eq(fields.items.length, 5, 'number of default items is correct');
 
             var reader = new GeoExt.data.WFSCapabilitiesReader({},[
                 {name: "foo"},
@@ -33,7 +33,7 @@
         }
         
         function test_read(t) {
-            t.plan(7);
+            t.plan(9);
 
             var reader = new GeoExt.data.WFSCapabilitiesReader();
 
@@ -45,8 +45,9 @@
             var record = records.records[0];
 
             //3 tests -- testing the fields of a record
-            t.eq(record.get("name"), "sf:archsites", "[0] correct layer name");
+            t.eq(record.get("name"), "archsites", "[0] correct layer name");
             t.eq(record.get("title"), "Spearfish archeological sites", "[0] correct layer title");
+            t.eq(record.get("namespace"), "http://www.openplans.org/spearfish", "[0] correct layer namespace");
             t.eq(
                 record.get("abstract"),
                "Sample data from GRASS, archeological sites location, Spearfish, South Dakota, USA",
@@ -58,6 +59,7 @@
             t.eq(layer.CLASS_NAME, "OpenLayers.Layer.Vector", "[0] layer field is of type OpenLayers.Layer.Vector");
             t.eq(layer.protocol.CLASS_NAME, "OpenLayers.Protocol.WFS.v1_0_0", "[0] protocol is of type OpenLayers.Protocol.WFS.v1_0_0");
             t.eq(layer.protocol.url, "http://someserver.com:8080/geoserver/wfs?", "[0] protocol has correct URL");
+            t.eq(layer.protocol.featureNS, "http://www.openplans.org/spearfish", "[0] protocol has correct featureNS");
         }
         
     </script>



More information about the Commits mailing list