public void accepts( org.opengis.feature.FeatureVisitor visitor, org.opengis.util.ProgressListener progress) throws IOException { featureSource.accepts(query, visitor, progress); }
public void computeAggregateFunction(Query query, FeatureCalc function) throws IOException { final Lock lock = rwLock.readLock(); try { lock.lock(); checkStore(); SimpleFeatureSource fs = slicesIndexStore.getFeatureSource(query.getTypeName()); if (fs instanceof ContentFeatureSource) ((ContentFeatureSource) fs).accepts(query, function, null); else { final SimpleFeatureCollection collection = fs.getFeatures(query); collection.accepts(function, null); } } finally { lock.unlock(); } }
public void computeAggregateFunction(Query query, FeatureCalc function) throws IOException { query = mergeHints(query); checkStore(); SimpleFeatureSource fs = getTileIndexStore().getFeatureSource(query.getTypeName()); if (fs instanceof ContentFeatureSource) ((ContentFeatureSource) fs).accepts(query, function, null); else { final SimpleFeatureCollection collection = fs.getFeatures(query); collection.accepts(function, null); } }
public void testUnique() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("stringProperty")); UniqueVisitor v = new MyUniqueVisitor(p); dataStore.getFeatureSource(tname("ft1")).accepts(Query.ALL, v, null); assertFalse(visited); Set result = v.getResult().toSet(); assertEquals(3, result.size()); assertTrue(result.contains("zero")); assertTrue(result.contains("one")); assertTrue(result.contains("two")); }
public void testUniqueWithFilter() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("stringProperty")); UniqueVisitor v = new MyUniqueVisitor(p); Filter f = ff.greater(ff.property(aname("doubleProperty")), ff.literal(1)); Query q = new Query(tname("ft1"), f); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); Set result = v.getResult().toSet(); assertEquals(2, result.size()); assertTrue(result.contains("one")); assertTrue(result.contains("two")); }
public void testAcceptsVisitor() throws Exception { class TotalVisitor implements FeatureVisitor { int total = 0; public void visit(Feature feature) { total++; } } TotalVisitor visitor = new TotalVisitor(); // initial test on Transaction.AUTO_COMMIT int count = featureSource.getCount(Query.ALL); featureSource.accepts(Query.ALL, visitor, null); assertEquals(count, visitor.total); visitor.total = 0; // reset // test on a transaction JDBCFeatureStore ft1 = (JDBCFeatureStore) dataStore.getFeatureSource(tname("ft1")); try (Transaction transaction = new DefaultTransaction()) { ft1.setTransaction(transaction); Connection connection = ft1.getDataStore().getConnection(ft1.getState()); assertFalse("connection established", connection.isClosed()); ft1.accepts(Query.ALL, visitor, null); assertFalse("connection maintained", connection.isClosed()); } } }
public void testSumAreaWithGroupBy() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("geom")); GroupByVisitor v = new GroupByVisitorBuilder() .withAggregateAttribute(ff.function("area2", p)) .withAggregateVisitor("SumArea") .withGroupByAttributes( Collections.singleton(aname("name")), dataStore.getSchema(tname("aggregate"))) .build(); dataStore.getFeatureSource(tname("aggregate")).accepts(Query.ALL, v, null); if (dataStore.getSupportedFunctions().containsKey(FilterFunction_area.NAME.getName())) { assertFalse(visited); } List groups = v.getResult().toList(); assertEquals(20.0, (Double) ((Object[]) groups.get(0))[1], 0.01); assertEquals(10.0, (Double) ((Object[]) groups.get(1))[1], 0.01); }
public void testMax() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); MaxVisitor v = new MyMaxVisitor(p); dataStore.getFeatureSource(tname("ft1")).accepts(Query.ALL, v, null); assertFalse(visited); assertEquals(2.2, v.getResult().toDouble(), 0.01); }
public void testSum() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); SumVisitor v = new MySumVisitor(p); dataStore.getFeatureSource(tname("ft1")).accepts(Query.ALL, v, null); assertFalse(visited); assertEquals(3.3, v.getResult().toDouble(), 0.01); }
public void testMin() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); MinVisitor v = new MyMinVisitor(p); dataStore.getFeatureSource(tname("ft1")).accepts(Query.ALL, v, null); assertFalse(visited); assertEquals(0.0, v.getResult().toDouble(), 0.01); }
public void testUniqueWithLimitOffsetOnVisitor() throws Exception { if (!dataStore.getSQLDialect().isLimitOffsetSupported() || !dataStore.getSQLDialect().isAggregatedSortSupported("distinct")) { return; } FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("stringProperty")); UniqueVisitor v = new MyUniqueVisitor(p); v.setPreserveOrder(true); v.setStartIndex(1); v.setMaxFeatures(2); Query q = new Query(tname("ft1")); q.setSortBy(new SortBy[] {new SortByImpl(p, SortOrder.ASCENDING)}); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); Set result = v.getResult().toSet(); assertEquals(2, result.size()); assertEquals("two", result.iterator().next()); }
public void testUniqueWithLimitOnVisitor() throws Exception { if (!dataStore.getSQLDialect().isLimitOffsetSupported() || !dataStore.getSQLDialect().isAggregatedSortSupported("distinct")) { return; } FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("stringProperty")); UniqueVisitor v = new MyUniqueVisitor(p); v.setPreserveOrder(true); v.setStartIndex(0); v.setMaxFeatures(2); Query q = new Query(tname("ft1")); q.setSortBy(new SortBy[] {new SortByImpl(p, SortOrder.ASCENDING)}); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); Set result = v.getResult().toSet(); assertEquals(2, result.size()); assertEquals("one", result.iterator().next()); }
public void testSumArea() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("geom")); SumAreaVisitor v = new MySumAreaVisitor(p); dataStore.getFeatureSource(tname("aggregate")).accepts(Query.ALL, v, null); assertEquals( visited, !dataStore.getFilterCapabilities().supports(FilterFunction_area.class)); assertEquals(30.0, v.getResult().toDouble(), 0.01); }
public void testUniqueWithLimitOffset() throws Exception { if (!dataStore.getSQLDialect().isLimitOffsetSupported() || !dataStore.getSQLDialect().isAggregatedSortSupported("distinct")) { return; } FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("stringProperty")); UniqueVisitor v = new MyUniqueVisitor(p); Query q = new Query(tname("ft1")); q.setStartIndex(0); q.setMaxFeatures(2); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); Set result = v.getResult().toSet(); assertEquals(2, result.size()); }
public void testMinWithFilter() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); MinVisitor v = new MyMinVisitor(p); Filter f = ff.greater(ff.property(aname("doubleProperty")), ff.literal(1)); Query q = new Query(tname("ft1"), f); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); assertEquals(1.1, v.getResult().toDouble(), 0.01); }
public void testMaxWithFilter() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); MaxVisitor v = new MyMaxVisitor(p); Filter f = ff.less(ff.property(aname("doubleProperty")), ff.literal(2)); Query q = new Query(tname("ft1"), f); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); assertEquals(1.1, v.getResult().toDouble(), 0.01); }
public void testSumWithFilter() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); SumVisitor v = new MySumVisitor(p); Filter f = ff.less(ff.property(aname("doubleProperty")), ff.literal(2)); Query q = new Query(tname("ft1"), f); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); assertEquals(1.1, v.getResult().toDouble(), 0.01); }
public void testMaxWithLimitOffset() throws Exception { if (!dataStore.getSQLDialect().isLimitOffsetSupported()) { return; } FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); MaxVisitor v = new MyMaxVisitor(p); Query q = new Query(tname("ft1")); q.setStartIndex(0); q.setMaxFeatures(2); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); assertEquals(1.1, v.getResult().toDouble(), 0.01); }
public void testSumWithLimitOffset() throws Exception { if (!dataStore.getSQLDialect().isLimitOffsetSupported()) { return; } FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); SumVisitor v = new MySumVisitor(p); Query q = new Query(tname("ft1")); q.setStartIndex(0); q.setMaxFeatures(2); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); assertEquals(1.1, v.getResult().toDouble(), 0.01); }
public void testMinWithLimitOffset() throws Exception { if (!dataStore.getSQLDialect().isLimitOffsetSupported()) { return; } FilterFactory ff = dataStore.getFilterFactory(); PropertyName p = ff.property(aname("doubleProperty")); MinVisitor v = new MyMinVisitor(p); Query q = new Query(tname("ft1")); q.setStartIndex(0); q.setMaxFeatures(2); dataStore.getFeatureSource(tname("ft1")).accepts(q, v, null); assertFalse(visited); assertEquals(0.0, v.getResult().toDouble(), 0.01); }