public void testUniquePreserveOrder() throws IOException { UniqueVisitor uniqueVisitor = new UniqueVisitor(0, ft); uniqueVisitor.setPreserveOrder(true); fc.accepts(uniqueVisitor, null); Set value1 = uniqueVisitor.getResult().toSet(); assertEquals(1, value1.iterator().next()); uniqueVisitor.reset(); invfc.accepts(uniqueVisitor, null); value1 = uniqueVisitor.getResult().toSet(); assertEquals(3, value1.iterator().next()); }
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")); }
uniqueVisitor.setMaxFeatures(1); fc.accepts(uniqueVisitor, null); Set value1 = uniqueVisitor.getResult().toSet(); assertEquals(1, value1.size()); assertEquals(1, value1.iterator().next()); uniqueVisitor.setMaxFeatures(2); fc.accepts(uniqueVisitor, null); value1 = uniqueVisitor.getResult().toSet(); assertEquals(2, value1.size()); assertEquals(2, value1.iterator().next()); uniqueVisitor.setMaxFeatures(2); fc.accepts(uniqueVisitor, null); value1 = uniqueVisitor.getResult().toSet(); assertEquals(1, value1.size()); assertEquals(3, value1.iterator().next()); uniqueVisitor.setMaxFeatures(2); fc.accepts(uniqueVisitor, null); value1 = uniqueVisitor.getResult().toSet();
fc2.accepts(uniqueVisitor2, null); Set value1 = uniqueVisitor.getResult().toSet(); assertEquals(3, value1.size()); // 3 items in the set assertEquals( 5, uniqueResult3.toSet().size()); // 3 and 3.0 are different, so there are actually 5 assertEquals(3, uniqueResult1.toSet().size()); CalcResult uniqueResult4 = new UniqueResult(anotherSet); assertEquals(4, uniqueResult5.toSet().size()); assertEquals(anotherSet, uniqueResult1.toSet()); Set<Object> set = uniqueResult3.toSet(); assertTrue(set.size() == 4); assertTrue(set.contains(3.0));
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 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 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 testStoreChecksVisitorLimits() 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) { @Override public boolean hasLimits() { // forced to return true, to check that the JDBCDataStore // asks the visitor if it has limits, and if answered true // it ignores query limits return true; } }; v.setPreserveOrder(true); Query q = new Query(tname("ft1")); q.setMaxFeatures(1); 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(3, result.size()); assertEquals("one", result.iterator().next()); }
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()); }
/** * Returns the unique values in colName in the database, pre-filtered with filter f (if not null) * @param colName * @param f If null, will not use filter * @return * @throws DaoException */ private Set<Object> getUniqueValues(String colName, Filter f) throws DaoException{ try { // get feature source FeatureSource contents = getFeatureSource(); // prep query Query query = getQuery(); if (f != null) { query.setFilter(f); } query.setPropertyNames(new String[]{colName}); UniqueVisitor visitor = new UniqueVisitor(colName); // get unique results FeatureCollection collection = contents.getFeatures(query); collection.accepts(visitor, null); CalcResult result = visitor.getResult(); Set<Object> results = result.toSet(); return results; }catch(Exception e){ throw new DaoException(e); } }
/** * Returns the unique values in colName in the database, pre-filtered with filter f (if not null) * @param colName * @param f If null, will not use filter * @return * @throws DaoException */ private Set<Object> getUniqueValues(String colName, Filter f) throws DaoException{ try { // get feature source FeatureSource contents = getFeatureSource(); // prep query Query query = getQuery(); if (f != null) { query.setFilter(f); } query.setPropertyNames(new String[]{colName}); UniqueVisitor visitor = new UniqueVisitor(colName); // get unique results FeatureCollection collection = contents.getFeatures(query); collection.accepts(visitor, null); CalcResult result = visitor.getResult(); Set<Object> results = result.toSet(); return results; }catch(Exception e){ throw new DaoException(e); } }