public void testRegExFIDValidator() { FIDValidator validator = new SimplifyingFilterVisitor.RegExFIDValidator("abc\\.\\d+"); simpleVisitor.setFIDValidator(validator); Set<Identifier> ids = new HashSet<Identifier>(); ids.add(ff.featureId("abc..")); ids.add(ff.featureId(".abc.1")); ids.add(ff.featureId("abc.123")); ids.add(ff.featureId("abc.ax")); Id filter = ff.id(ids); Filter result = (Filter) filter.accept(simpleVisitor, null); Filter expected = ff.id(Collections.singleton(ff.featureId("abc.123"))); assertEquals(expected, result); }
public void testTypeNameDotNumberValidator() { final String typeName = "states"; FIDValidator validator; validator = new SimplifyingFilterVisitor.TypeNameDotNumberFidValidator(typeName); simpleVisitor.setFIDValidator(validator); Set<Identifier> ids = new HashSet<Identifier>(); ids.add(ff.featureId("_states")); ids.add(ff.featureId("states.abc")); ids.add(ff.featureId("states..")); ids.add(ff.featureId("states.123")); Id filter = ff.id(ids); Filter result = (Filter) filter.accept(simpleVisitor, null); Filter expected = ff.id(Collections.singleton(ff.featureId("states.123"))); assertEquals(expected, result); }
FIDValidator validator = new SimplifyingFilterVisitor.TypeNameDotNumberFidValidator(typeName); filterSimplifier.setFIDValidator(validator); filterSimplifier.setFeatureType(this.featureType);
public void testFidValidity() { simpleVisitor.setFIDValidator( new SimplifyingFilterVisitor.FIDValidator() { public boolean isValid(String fid) { return fid.startsWith("pass"); } }); Set<Identifier> ids = new HashSet<Identifier>(); ids.add(ff.featureId("notPass")); Id filter = ff.id(ids); assertEquals(Filter.EXCLUDE, filter.accept(simpleVisitor, null)); ids.add(ff.featureId("pass1")); ids.add(ff.featureId("pass2")); filter = ff.id(ids); Set<Identifier> validIds = new HashSet<Identifier>(); validIds.add(ff.featureId("pass2")); validIds.add(ff.featureId("pass1")); Filter expected = ff.id(validIds); assertEquals(expected, filter.accept(simpleVisitor, null)); }
Filter[] splitFilter(Filter original) { Filter[] split = new Filter[2]; if (original != null) { // create a filter splitter PostPreProcessFilterSplittingVisitor splitter = new PostPreProcessFilterSplittingVisitor( getDataStore().getFilterCapabilities(), null, null); original.accept(splitter, null); split[0] = splitter.getFilterPre(); split[1] = splitter.getFilterPost(); } SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor(); visitor.setFIDValidator(new PrimaryKeyFIDValidator(this)); split[0] = (Filter) split[0].accept(visitor, null); split[1] = (Filter) split[1].accept(visitor, null); return split; }
Filter[] splitFilter(Filter original, FeatureSource source) { JDBCFeatureSource featureSource = null; if (source instanceof JDBCFeatureSource) { featureSource = (JDBCFeatureSource) source; } else { featureSource = ((JDBCFeatureStore) source).getFeatureSource(); } Filter[] split = new Filter[2]; if (original != null) { split = getDataStore().getSQLDialect().splitFilter(original, featureSource.getSchema()); } // handle three-valued logic differences by adding "is not null" checks in the filter, // the simplifying filter visitor will take care of them if they are redundant NullHandlingVisitor nhv = new NullHandlingVisitor(source.getSchema()); split[0] = (Filter) split[0].accept(nhv, null); SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor(); visitor.setFIDValidator(new PrimaryKeyFIDValidator(featureSource)); visitor.setFeatureType(getSchema()); split[0] = (Filter) split[0].accept(visitor, null); split[1] = (Filter) split[1].accept(visitor, null); return split; }
FIDValidator validator = new SimplifyingFilterVisitor.TypeNameDotNumberFidValidator( typeName); filterSimplifier.setFIDValidator(validator);
Filter[] splitFilter(Filter original) { Filter[] split = new Filter[2]; if ( original != null ) { //create a filter splitter PostPreProcessFilterSplittingVisitor splitter = new PostPreProcessFilterSplittingVisitor(getDataStore() .getFilterCapabilities(), null, null); original.accept(splitter, null); split[0] = splitter.getFilterPre(); split[1] = splitter.getFilterPost(); } SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor(); visitor.setFIDValidator( new PrimaryKeyFIDValidator( this ) ); split[0] = (Filter) split[0].accept(visitor, null); split[1] = (Filter) split[1].accept(visitor, null); return split; }
/** * Helper method for splitting a filter. */ Filter[] splitFilter(Filter original) { Filter[] split = new Filter[2]; if ( original != null ) { //create a filter splitter PostPreProcessFilterSplittingVisitor splitter = new PostPreProcessFilterSplittingVisitor(getDataStore() .getFilterCapabilities(), getSchema(), null); original.accept(splitter, null); split[0] = splitter.getFilterPre(); split[1] = splitter.getFilterPost(); } SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor(); visitor.setFIDValidator( new PrimaryKeyFIDValidator( this ) ); split[0] = (Filter) split[0].accept(visitor, null); split[1] = (Filter) split[1].accept(visitor, null); return split; }
Filter[] splitFilter(Filter original, FeatureSource source) { JDBCFeatureSource featureSource = null; if (source instanceof JDBCFeatureSource) { featureSource = (JDBCFeatureSource) source; } else { featureSource = ((JDBCFeatureStore)source).getFeatureSource(); } Filter[] split = new Filter[2]; if ( original != null ) { //create a filter splitter PostPreProcessFilterSplittingVisitor splitter = new PostPreProcessFilterSplittingVisitor(getDataStore() .getFilterCapabilities(), featureSource.getSchema(), null); original.accept(splitter, null); split[0] = splitter.getFilterPre(); split[1] = splitter.getFilterPost(); } SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor(); visitor.setFIDValidator( new PrimaryKeyFIDValidator( featureSource ) ); split[0] = (Filter) split[0].accept(visitor, null); split[1] = (Filter) split[1].accept(visitor, null); return split; }