public Object visit(Id filter, Object extraData) { Set ids = filter.getIDs(); if (ids.isEmpty()) { throw new IllegalArgumentException("Invalid fid filter provides, has no fids inside"); } Set<FeatureId> fids = new HashSet<FeatureId>(); for (Iterator it = ids.iterator(); it.hasNext(); ) { FeatureId id = new FeatureIdImpl((String) it.next()); FeatureId retyped = RetypingFeatureCollection.reTypeId( id, map.getFeatureType(), map.getOriginalFeatureType()); fids.add(retyped); } return ff.id(fids); } }
@Override public Object visit(Id filter, Object extraData) { Set<Identifier> identifiers = filter.getIdentifiers(); Set<Identifier> renamedIdentifiers = identifiers .stream() .map( id -> { String name = id.getID().toString(); if (name.startsWith(prefix)) { name = name.substring(prefix.length()); } return getFactory(extraData).featureId(name); }) .collect(Collectors.toSet()); return getFactory(extraData).id(renamedIdentifiers); } }
/** * Gets the fid filter that contains all the fids. * * @return the fid filter that contains all the fids. */ public Id getFidFilter() { if (current.isEmpty()) { Set<FeatureId> empty = Collections.emptySet(); return ff.id(empty); } Data data = (Data) current.peek(); if (data.fids.size() > 0) { Set<FeatureId> set = new HashSet<FeatureId>(); Set<String> fids = data.fids; for (String fid : fids) { set.add(ff.featureId(fid)); } return ff.id(set); } else { Set<FeatureId> empty = Collections.emptySet(); return ff.id(empty); } }
/** * Gets the fid filter that contains all the fids. * * @return the fid filter that contains all the fids. */ public Id getFidFilter() { if (current.isEmpty()) { Set<FeatureId> empty = Collections.emptySet(); return (Id) ff.id(empty); } Data data = (Data) current.peek(); if (data.fids.size() > 0) { Set<FeatureId> set = new HashSet<FeatureId>(); Set<String> fids = data.fids; for (String fid : fids) { set.add(ff.featureId(fid)); } return (Id) ff.id(set); } else { Set<FeatureId> empty = Collections.emptySet(); return (Id) ff.id(empty); } }
public Object visit(Id filter, Object extraData) { return getFactory(extraData).id(filter.getIdentifiers()); }
/** * * <!-- begin-user-doc --> * Surprised we actually have something to do: namely collapse multiple fid filters using AND * <!-- end-user-doc --> * * @generated modifiable */ public Object parse(ElementInstance instance, Node node, Object value) throws Exception { if (node.hasChild("FeatureId")) { // round up into a featureId filter HashSet fids = new HashSet(); fids.addAll(node.getChildValues("FeatureId")); return factory.id(fids); } return node.getChildValue(Filter.class); }
public Feature findFeature(FeatureId id, Hints hints) throws IOException { for (Entry<Name, FeatureTypeMapping> mapping : mappings.entrySet()) { if (Thread.currentThread().isInterrupted()) { return null; } Filter filter = filterFac.id(id); FeatureCollection<FeatureType, Feature> fCollection = new MappingFeatureSource(this, mapping.getValue()).getFeatures(filter, hints); FeatureIterator<Feature> iterator = fCollection.features(); try { if (iterator.hasNext()) { return iterator.next(); } } finally { iterator.close(); } } return null; } }
public void testFid() { Id filter = fac.id(Collections.singleton(fac.featureId("fakeId"))); assertAttributeName(filter, new String[0]); }
public static Id id() { return f.id( new LinkedHashSet<Identifier>( Arrays.asList( f.featureId("foo.1"), f.featureId("foo.2"), f.featureId("foo.3")))); }
private void fireRemoved(final SimpleFeature removedFeature) { String typeName = featureType.getTypeName(); BoundingBox bounds = removedFeature.getBounds(); ReferencedEnvelope referencedEnvelope = ReferencedEnvelope.reference(bounds); String fid = removedFeature.getID(); FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null); Filter filter = ff.id(Collections.singleton(ff.featureId(fid))); doFireFeaturesRemoved(typeName, referencedEnvelope, filter); }
private void fireAdded(final SimpleFeature addedFeature) { final String typeName = featureType.getTypeName(); final BoundingBox bounds = addedFeature.getBounds(); ReferencedEnvelope referencedEnvelope = ReferencedEnvelope.reference(bounds); String fid = addedFeature.getID(); FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null); Filter filter = ff.id(Collections.singleton(ff.featureId(fid))); doFireFeaturesAdded(typeName, referencedEnvelope, filter); }
private void fireChanged(final SimpleFeature changedFeature) { final String typeName = featureType.getTypeName(); final BoundingBox bounds = changedFeature.getBounds(); ReferencedEnvelope referencedEnvelope = ReferencedEnvelope.reference(bounds); String fid = changedFeature.getID(); FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null); Filter filter = ff.id(Collections.singleton(ff.featureId(fid))); doFireFeaturesChanged(typeName, referencedEnvelope, filter); }
/** Example located on the wiki */ public void testDefaultFilterVisitorFeatureIdExample() { Filter myFilter = ff.id(Collections.singleton(ff.featureId("fred"))); FilterVisitor allFids = new DefaultFilterVisitor() { public Object visit(Id filter, Object data) { Set set = (Set) data; set.addAll(filter.getIDs()); return set; } }; Set set = (Set) myFilter.accept(allFids, new HashSet()); assertEquals(1, set.size()); } /** Example located on the wiki */
public void testIdCollector() { Filter filter = ff.isNull(ff.property("name")); Set fids = (Set) filter.accept(IdCollectorFilterVisitor.ID_COLLECTOR, new HashSet()); assertTrue(fids.isEmpty()); assertFalse(fids.contains("eclesia")); filter = ff.id(Collections.singleton(ff.featureId("eclesia"))); fids = (Set) filter.accept(IdCollectorFilterVisitor.ID_COLLECTOR, new HashSet()); assertFalse(fids.isEmpty()); assertTrue(fids.contains("eclesia")); } }
/** Make sure it does not break with non spatial filters */ public void testNoProjection() { Filter idFilter = ff.id(Collections.singleton(ff.featureId("testType:1"))); Filter clone = (Filter) idFilter.accept(reprojector, null); assertNotSame(idFilter, clone); assertEquals(idFilter, clone); }
public static Id resourceId() { ResourceIdImpl resourceId = new ResourceIdImpl("foo.4", "", new Version(Version.Action.NEXT)); resourceId.setPreviousRid("previousRid"); resourceId.setStartTime(new Date(1000)); resourceId.setEndTime(new Date(2000)); Integer testInt = Integer.valueOf(1234567890); return f.id( new LinkedHashSet<Identifier>( Arrays.asList( f.featureId("foo.1", "v1"), f.resourceId("foo.2", "", new Version(new Date(1000))), // f.resourceId("foo.3", "", new Version(testInt)), // resourceId))); }
public void testNullFilterVisitor() { Filter filter = ff.isNull(ff.property("name")); assertEquals(Integer.valueOf(1), filter.accept(NullFilterVisitor.NULL_VISITOR, 1)); filter = Filter.INCLUDE; assertEquals(Integer.valueOf(1), filter.accept(NullFilterVisitor.NULL_VISITOR, 1)); FilterVisitor allFids = new NullFilterVisitor() { public Object visit(Id filter, Object data) { if (data == null) return null; Set set = (Set) data; set.addAll(filter.getIDs()); return set; } }; Filter myFilter = ff.id(Collections.singleton(ff.featureId("fred"))); Set set = (Set) myFilter.accept(allFids, new HashSet()); assertNotNull(set); Set set2 = (Set) myFilter.accept(allFids, null); // set2 will be null assertNull(set2); }
public void testIdFinderFilterVisitor() { Filter filter = ff.isNull(ff.property("name")); boolean found = (Boolean) filter.accept(new IdFinderFilterVisitor(), null); assertFalse(found); filter = ff.id(Collections.singleton(ff.featureId("eclesia"))); found = (Boolean) filter.accept(new IdFinderFilterVisitor(), null); assertTrue(found); }
/** * Mapping specifies station_no --> wq_plus/@id. A FidFilter over wq_plus type should result in * a compare equals filter over the station_no attribute of wq_ir_results simple type. */ @Test public void testUnrollFidMappedToAttribute() throws Exception { String fid = "station_no.1"; Id fidFilter = ff.id(Collections.singleton(ff.featureId(fid))); Filter unrolled = (Filter) fidFilter.accept(visitor, null); assertNotNull(unrolled); FeatureCollection<SimpleFeatureType, SimpleFeature> results = mapping.getSource().getFeatures(unrolled); assertEquals(1, getCount(results)); FeatureIterator<SimpleFeature> features = results.features(); SimpleFeature unmappedFeature = (SimpleFeature) features.next(); features.close(); assertNotNull(unmappedFeature); Object object = unmappedFeature.getProperty("station_no").getValue(); assertEquals(fid, object); }