On Thursday, December 10, 2009, Ivan Grcic <[email protected]> wrote: > Hi devs, > > before opening ticket i want to confirm that im right about this issue > > Currently its not possible to make filter like this: > <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> > <And> > <Not><ogc:FeatureId fid="Feature.1"/></Not> > <Not><ogc:FeatureId fid="Feature.2"/></Not> > </And> > </Filter> > > I trace the source of it, in Format/Filter/v1.js writers&readers for > AND,OR, NOT do not handle FeatureIds seperatly as root "Filter" does. > > line: 296 > > "Not": function(filter) { > var node = this.createElementNSPlus("ogc:Not"); > var childFilter = filter.filters[0]; > this.writeNode( > this.getFilterType(childFilter), childFilter, node > ); > return node; > }, > > That happens because FeatureId doesnt have type and getFilterType > method throws "Filter writing not supported for rule type: undefined" > if we try to encapsulate FeatureId with Logical.Not > > Its neccesary to check if filter is of FeatureId type and treat it > differently, like the root Filter element does > > "Not": function(filter) { > var node = this.createElementNSPlus("ogc:Not"); > var childFilter = filter.filters[0]; > > var sub = childFilter.CLASS_NAME.split(".").pop(); > if(sub === "FeatureId") { > for(var i=0; i<childFilter.fids.length; ++i) { > this.writeNode("FeatureId", childFilter.fids[i], > node); > } > } else { > this.writeNode( > this.getFilterType(childFilter), childFilter, node > ); > } > return node; > } > > Please can anyone confirm this?
Hi. I don't know the specs but they allow FeatureID filters within NOT filters then I agree there's a bug in the library. And I think the problem exists for AND and OR as well, no? Cheers, -- Eric Lemoine Camptocamp France SAS Savoie Technolac, BP 352 73377 Le Bourget du Lac, Cedex Tel : 00 33 4 79 44 44 96 Mail : [email protected] http://www.camptocamp.com _______________________________________________ Dev mailing list [email protected] http://openlayers.org/mailman/listinfo/dev
