UniqueVisitor visitor = new UniqueVisitor(attribute); collection.accepts(visitor, null); TreeSet<Object> result = new TreeSet<>(visitor.getUnique());
/** * Calculate unique (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the unique * @param expression Single Expression argument * @return An object containing the unique value of the attributes * @throws IllegalFilterException * @throws IOException */ static CalcResult calculateUnique(SimpleFeatureCollection collection, Expression expression) throws IllegalFilterException, IOException { UniqueVisitor uniqueVisitor = new UniqueVisitor(expression); collection.accepts(uniqueVisitor, null); return uniqueVisitor.getResult(); }
private void initVisitor() { visitor = new UniqueVisitor(this.idFieldName); visitor.setStartIndex(currentVisitorStart); visitor.setMaxFeatures(STEP_LOAD); try { fc.accepts(visitor, new NullProgressListener()); visitorIterator = visitor.getUnique().iterator(); } catch (IOException e) { throw new RuntimeException(e); } }
/** * Extract the domain of a dimension as a set of unique values. * * <p>It retrieves a comma separated list of values as a Set of {@link String}. * * @return a comma separated list of values as a {@link String}. * @throws IOException */ Set extractDomain(final String attribute) throws IOException { Query query = new Query(typeName); query.setPropertyNames(Arrays.asList(attribute)); final UniqueVisitor visitor = new UniqueVisitor(attribute); granuleCatalog.computeAggregateFunction(query, visitor); return visitor.getUnique(); }
/** * Check if there is any granule referred by other coverages. * * @param coverageName * @return * @throws IOException */ private boolean checkForReferences(String coverageName) throws IOException { final String[] coverageNames = parentReader.getGridCoverageNames(); for (String typeName : coverageNames) { if (!coverageName.equalsIgnoreCase(typeName)) { Query query = new Query(typeName); final SimpleFeatureCollection collection = granuleCatalog.getGranules(query); UniqueVisitor visitor = new UniqueVisitor(parentReader.locationAttributeName); collection.accepts(visitor, null); Set<String> features = visitor.getUnique(); if (features.size() > 0) { return true; } } } return false; }
int classNum, FeatureCollection<?, ?> featureCollection) throws IOException { UniqueVisitor uniqueVisit = new UniqueVisitor(getParameters().get(0)); featureCollection.accepts(uniqueVisit, new NullProgressListener()); List result = uniqueVisit.getResult().toList();
int classNum = getClasses(); UniqueVisitor uniqueVisit = new UniqueVisitor(getParameters().get(0)); if (progress == null) progress = new NullProgressListener(); featureCollection.accepts(uniqueVisit, progress);
private List<String> collectFilesFromTable(DataStore sourceStore, String table) throws IOException { final SimpleFeatureSource featureSource = sourceStore.getFeatureSource(table); final Properties properties = getCoverageConfiguration(table); String locationAttribute = getProperty( properties, Utils.Prop.LOCATION_ATTRIBUTE, Utils.DEFAULT_LOCATION_ATTRIBUTE); PathType pathType = PathType.RELATIVE.valueOf( getProperty(properties, Utils.Prop.PATH_TYPE, PathType.ABSOLUTE.name())); // query the location attribute Query q = new Query(table); q.setPropertyNames(new String[] {locationAttribute}); // extract unique values UniqueVisitor uniqueLocations = new UniqueVisitor(locationAttribute); featureSource.getFeatures(q).accepts(uniqueLocations, null); Set<String> locations = uniqueLocations.getUnique(); // map via pathtype and return return locations .stream() .map(l -> pathType.resolvePath(configuration.getMosaicDirectory().getPath(), l)) .map(url -> URLs.urlToFile(url).getAbsolutePath()) .collect(Collectors.toList()); }
private List<String> collectFilesFromTable(ImageMosaicReader reader, String coverage) throws IOException { // grab the necessary background info final String mosaicDirectoryPath = configuration.getMosaicDirectory().getAbsolutePath(); final GranuleSource granuleSource = reader.getGranules(coverage, true); final MosaicConfigurationBean configuration = reader.getRasterManager(coverage).getConfiguration(); final CatalogConfigurationBean catalogConfiguration = configuration.getCatalogConfigurationBean(); final PathType pathType = catalogConfiguration.getPathType(); if (pathType != PathType.ABSOLUTE && pathType != PathType.RELATIVE) { throw new MigrationException("Cannot perform migration with path type " + pathType); } // query the location attribute final String locationAttribute = catalogConfiguration.getLocationAttribute(); Query q = new Query(coverage); q.setPropertyNames(new String[] {locationAttribute}); // extract unique values UniqueVisitor uniqueLocations = new UniqueVisitor(locationAttribute); final SimpleFeatureCollection granules = granuleSource.getGranules(q); granules.accepts(uniqueLocations, null); Set<String> locations = uniqueLocations.getUnique(); // map via pathtype and return return locations .stream() .map(l -> pathType.resolvePath(mosaicDirectoryPath, l)) .map(url -> URLs.urlToFile(url).getAbsolutePath()) .collect(Collectors.toList()); }
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()); }
SimpleFeatureType ft = stb.buildFeatureType(); UniqueVisitor vis = new UniqueVisitor("bar"); verify(delegate); vis = new UniqueVisitor("geo"); SimpleFeatureIterator it = createNiceMock(SimpleFeatureIterator.class); replay(it);
public void testDelegateAccepts() throws Exception { SimpleFeatureTypeBuilder stb = new SimpleFeatureTypeBuilder(); stb.setName("test"); stb.add("foo", String.class); stb.add("bar", Integer.class); UniqueVisitor vis = new UniqueVisitor("bar"); SimpleFeatureCollection delegate = createMock(SimpleFeatureCollection.class); delegate.accepts(vis, null); expectLastCall().once(); replay(delegate); ReTypingFeatureCollection rtc = new ReTypingFeatureCollection(delegate, stb.buildFeatureType()); rtc.accepts(vis, null); verify(delegate); vis = new UniqueVisitor("baz"); SimpleFeatureIterator it = createNiceMock(SimpleFeatureIterator.class); replay(it); SimpleFeatureType ft = createNiceMock(SimpleFeatureType.class); replay(ft); delegate = createMock(SimpleFeatureCollection.class); expect(delegate.features()).andReturn(it).once(); expect(delegate.getSchema()).andReturn(ft).once(); replay(delegate); rtc = new ReTypingFeatureCollection(delegate, stb.buildFeatureType()); rtc.accepts(vis, null); verify(delegate); }
throws IOException { final SimpleFeatureCollection collection = granuleCatalog.getGranules(query); UniqueVisitor visitor = new UniqueVisitor(parentReader.locationAttributeName); collection.accepts(visitor, null); Set<String> features = visitor.getUnique();
UniqueVisitor visitor = new UniqueVisitor(attIndex, features.getSchema()); features.accepts(visitor, progressListener); List uniqueValues = visitor.getResult().toList();
public void testUnique() throws IllegalFilterException, IOException { UniqueVisitor uniqueVisitor = new UniqueVisitor(0, ft); fc.accepts(uniqueVisitor, null); UniqueVisitor uniqueVisitor2 = new UniqueVisitor(3, ft2); fc2.accepts(uniqueVisitor2, null);
public void testUniquePagination() throws IOException { UniqueVisitor uniqueVisitor = new UniqueVisitor(0, ft); uniqueVisitor.setPreserveOrder(true); uniqueVisitor.setStartIndex(0);
/** * Calculate unique (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the unique * @param expression Single Expression argument * * @return An object containing the unique value of the attributes * * @throws IllegalFilterException * @throws IOException */ static CalcResult calculateUnique(SimpleFeatureCollection collection, Expression expression) throws IllegalFilterException, IOException { UniqueVisitor uniqueVisitor = new UniqueVisitor(expression); collection.accepts(uniqueVisitor, null); return uniqueVisitor.getResult(); }
Expression transformedExpression = transformer.transformExpression(original.getExpression()); UniqueVisitor transformedVisitor = new UniqueVisitor(transformedExpression); transformedVisitor.setMaxFeatures(original.getMaxFeatures()); transformedVisitor.setStartIndex(original.getStartIndex());
public @Test void handleUniqueVisitorNotIndexed() { testVisitor(new UniqueVisitor("ip"), Sets.newHashSet(1000, 2000, 3000)); }
/** * @see GeogigFeatureVisitorHandler */ public @Test void handleUniqueVisitorMaterializedAttribute() { NodeRef typeRef = pointsSource.delegate.getTypeRef(); createIndex(typeRef, Collections.singletonList("ip")); testVisitor(new UniqueVisitor("ip"), Sets.newHashSet(1000, 2000, 3000)); }