Allow filters in WFST for multiple geometry columns. r=bartvde (closes #3370)

This commit is contained in:
ahocevar
2011-10-06 18:02:27 -04:00
parent 00e2e1bd59
commit 0afb5207e2
2 changed files with 24 additions and 2 deletions

View File

@@ -432,8 +432,8 @@ OpenLayers.Format.WFST.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
this.setFilterProperty(filter.filters[i]);
}
} else {
if(filter instanceof OpenLayers.Filter.Spatial) {
// got a spatial filter, set its property
if(filter instanceof OpenLayers.Filter.Spatial && !filter.property) {
// got a spatial filter without property, so set it
filter.property = this.geometryName;
}
}

View File

@@ -133,6 +133,28 @@
t.xml_eq(got, expected, snippet + " request without geometry created correctly");
}
}
function test_setFilterProperty(t) {
t.plan(2);
var format = new OpenLayers.Format.WFST({
geometryName: "foo"
});
var filter = new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.AND,
filters: [new OpenLayers.Filter.Spatial({
type: OpenLayers.Filter.Spatial.BBOX,
value: new OpenLayers.Bounds(1,2,3,4)
}), new OpenLayers.Filter.Spatial({
type: OpenLayers.Filter.Spatial.DWITHIN,
property: "bar",
value: new OpenLayers.Geometry.Point(1,2),
distance: 10
})]
});
format.setFilterProperty(filter);
t.eq(filter.filters[0].property, "foo", "property set if not set on filter");
t.eq(filter.filters[1].property, "bar", "property not set if set on filter");
}
function test_update_null_geometry(t) {
var format = new OpenLayers.Format.WFST({