add matchCase attribute for PropertyIsLike, r=tschaub (closes #3247)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11878 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -55,7 +55,7 @@ OpenLayers.Filter.Comparison = OpenLayers.Class(OpenLayers.Filter, {
|
|||||||
* elements. This property will be serialized with those elements only
|
* elements. This property will be serialized with those elements only
|
||||||
* if using the v1.1.0 filter format. However, when evaluating filters
|
* if using the v1.1.0 filter format. However, when evaluating filters
|
||||||
* here, the matchCase property will always be respected (for EQUAL_TO
|
* here, the matchCase property will always be respected (for EQUAL_TO
|
||||||
* and NOT_EQUAL_TO). Default is true.
|
* and NOT_EQUAL_TO). Default is true.
|
||||||
*/
|
*/
|
||||||
matchCase: true,
|
matchCase: true,
|
||||||
|
|
||||||
@@ -90,6 +90,12 @@ OpenLayers.Filter.Comparison = OpenLayers.Class(OpenLayers.Filter, {
|
|||||||
*/
|
*/
|
||||||
initialize: function(options) {
|
initialize: function(options) {
|
||||||
OpenLayers.Filter.prototype.initialize.apply(this, [options]);
|
OpenLayers.Filter.prototype.initialize.apply(this, [options]);
|
||||||
|
// since matchCase on PropertyIsLike is not schema compliant, we only
|
||||||
|
// want to use this if explicitly asked for
|
||||||
|
if (this.type === OpenLayers.Filter.Comparison.LIKE
|
||||||
|
&& options.matchCase === undefined) {
|
||||||
|
this.matchCase = null;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
* Differences from the v1.0.0 parser:
|
* Differences from the v1.0.0 parser:
|
||||||
* - uses GML v3 instead of GML v2
|
* - uses GML v3 instead of GML v2
|
||||||
* - reads matchCase attribute on ogc:PropertyIsEqual and
|
* - reads matchCase attribute on ogc:PropertyIsEqual and
|
||||||
* ogc:PropertyIsNotEqualelements.
|
* ogc:PropertyIsNotEqual elements.
|
||||||
* - writes matchCase attribute from comparison filters of type EQUAL_TO and
|
* - writes matchCase attribute from comparison filters of type EQUAL_TO,
|
||||||
* type NOT_EQUAL_TO.
|
* NOT_EQUAL_TO and LIKE.
|
||||||
*
|
*
|
||||||
* Inherits from:
|
* Inherits from:
|
||||||
* - <OpenLayers.Format.Filter.v1>
|
* - <OpenLayers.Format.Filter.v1>
|
||||||
@@ -127,6 +127,7 @@ OpenLayers.Format.Filter.v1_1_0 = OpenLayers.Class(
|
|||||||
"PropertyIsLike": function(filter) {
|
"PropertyIsLike": function(filter) {
|
||||||
var node = this.createElementNSPlus("ogc:PropertyIsLike", {
|
var node = this.createElementNSPlus("ogc:PropertyIsLike", {
|
||||||
attributes: {
|
attributes: {
|
||||||
|
matchCase: filter.matchCase,
|
||||||
wildCard: "*", singleChar: ".", escapeChar: "!"
|
wildCard: "*", singleChar: ".", escapeChar: "!"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -185,4 +186,4 @@ OpenLayers.Format.Filter.v1_1_0 = OpenLayers.Class(
|
|||||||
|
|
||||||
CLASS_NAME: "OpenLayers.Format.Filter.v1_1_0"
|
CLASS_NAME: "OpenLayers.Format.Filter.v1_1_0"
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -314,9 +314,39 @@
|
|||||||
t.xml_eq(node, out, "spatial dwithin filter with nested functions correctly written");
|
t.xml_eq(node, out, "spatial dwithin filter with nested functions correctly written");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_write_like_matchcase(t) {
|
||||||
|
t.plan(1);
|
||||||
|
|
||||||
|
var filter = new OpenLayers.Filter.Comparison({
|
||||||
|
type: OpenLayers.Filter.Comparison.LIKE,
|
||||||
|
property: "person",
|
||||||
|
value: "*me*",
|
||||||
|
matchCase: false
|
||||||
|
});
|
||||||
|
|
||||||
|
var format = new OpenLayers.Format.Filter.v1_1_0();
|
||||||
|
|
||||||
|
var got = format.write(filter);
|
||||||
|
var exp = readXML("LikeMatchCase");
|
||||||
|
t.xml_eq(got, exp, "wrote matchCase attribute on PropertyIsLike");
|
||||||
|
}
|
||||||
|
|
||||||
|
function readXML(id) {
|
||||||
|
var xml = document.getElementById(id).firstChild.nodeValue;
|
||||||
|
return new OpenLayers.Format.XML().read(xml).documentElement;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div id="LikeMatchCase"><!--
|
||||||
|
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
|
||||||
|
<ogc:PropertyIsLike wildCard="*" singleChar="." escapeChar="!" matchCase="false">
|
||||||
|
<ogc:PropertyName>person</ogc:PropertyName>
|
||||||
|
<ogc:Literal>*me*</ogc:Literal>
|
||||||
|
</ogc:PropertyIsLike>
|
||||||
|
</ogc:Filter>
|
||||||
|
--></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user