/** * Calculate minimum (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the minimum * @param expression Single Expression argument * @return An object containing the minimum value of the attributes * @throws IllegalFilterException * @throws IOException */ static CalcResult calculateMin(SimpleFeatureCollection collection, Expression expression) throws IllegalFilterException, IOException { MinVisitor minVisitor = new MinVisitor(expression); collection.accepts(minVisitor, null); return minVisitor.getResult(); }
featureCollection.accepts(minVisit, progress); if (progress.isCanceled()) return null; globalMin = (Comparable) minVisit.getResult().getValue();
fc2.accepts(minVisitor2, null); Object result = minVisitor.getResult().getValue(); int value = ((Integer) result).intValue(); assertEquals(1, value); int value2 = minVisitor.getResult().toInt(); assertEquals(1, value2); CalcResult minResult1 = minVisitor.getResult(); CalcResult minResult2 = minVisitor2.getResult(); CalcResult minResult3 = minResult1.merge(minResult2); assertEquals(1, minResult3.toInt()); minResult1 = minVisitor.getResult(); minResult7 = minResult7.merge(minResult1); assertEquals(-50, minResult7.toInt()); minResult1 = minVisitor.getResult(); minResult7 = minResult7.merge(minResult1); assertEquals(-100.0, minResult7.toDouble(), 0); assertEquals(CalcResult.NULL_RESULT, minVisitor.getResult()); assertSame(minResult2, minVisitor.getResult().merge(minResult2)); assertSame(minResult2, minResult2.merge(minVisitor.getResult()));
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); }
MinVisitor min = new MinVisitor(attribute); handleVisitor(qAbove, min); Comparable minAbove = (Comparable) min.getResult().getValue(); nearest.setValue(maxBelow, minAbove);
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); }
/** * Calculate minimum (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the minimum * @param expression Single Expression argument * * @return An object containing the minimum value of the attributes * * @throws IllegalFilterException * @throws IOException */ static CalcResult calculateMin(SimpleFeatureCollection collection, Expression expression) throws IllegalFilterException, IOException { MinVisitor minVisitor = new MinVisitor(expression); collection.accepts(minVisitor, null); return minVisitor.getResult(); }
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); }
/** * Calculate minimum (using FeatureCalc) - only one parameter is used. * * @param collection collection to calculate the minimum * @param expression Single Expression argument * * @return An object containing the minimum value of the attributes * * @throws IllegalFilterException * @throws IOException */ public static CalcResult calculateMin(FeatureCollection collection, Expression expression) throws IllegalFilterException, IOException { MinVisitor minVisitor = new MinVisitor(expression); collection.accepts(minVisitor, null); return minVisitor.getResult(); }
MinVisitor transformedVisitor = new MinVisitor(transformedExpression); delegateVisitor(transformedVisitor, progress); original.setValue(transformedVisitor.getResult().getValue()); } else if (visitor instanceof MaxVisitor) { MaxVisitor original = (MaxVisitor) visitor;
final MinVisitor min = new MinVisitor(time.getAttribute()); collection.accepts(min, null); CalcResult minResult = min.getResult();
CalcResult calcResult = min.getResult(); if (calcResult != CalcResult.NULL_RESULT) { result.add(((Number) min.getMin()).doubleValue());
private Object calculate(FeatureCollection featureCollection) { int classNum = getClasses(); Comparable globalMin; Comparable globalMax; try { MinVisitor minVisit = new MinVisitor(getExpression()); if (progress == null) progress = new NullProgressListener(); featureCollection.accepts(minVisit, progress); if (progress.isCanceled()) return null; globalMin = (Comparable) minVisit.getResult().getValue(); MaxVisitor maxVisit = new MaxVisitor(getExpression()); featureCollection.accepts(maxVisit, progress); if (progress.isCanceled()) return null; globalMax = (Comparable) maxVisit.getResult().getValue(); if ((globalMin instanceof Number) && (globalMax instanceof Number)) { return calculateNumerical(classNum, globalMin, globalMax); } else { return calculateNonNumerical(classNum, featureCollection); } } catch (IllegalFilterException e) { // accepts exploded LOGGER.log(Level.SEVERE, "EqualIntervalFunction calculate(FeatureCollection) failed", e); return null; } catch (IOException e) { // getResult().getValue() exploded LOGGER.log(Level.SEVERE, "EqualIntervalFunction calculate(FeatureCollection) failed", e); return null; } }
private RangedClassifier calculate(SimpleFeatureCollection featureCollection) { int classNum = getClasses(); Comparable globalMin; Comparable globalMax; try { MinVisitor minVisit = new MinVisitor(getExpression()); if (progress == null) progress = new NullProgressListener(); featureCollection.accepts(minVisit, progress); if (progress.isCanceled()) return null; globalMin = (Comparable) minVisit.getResult().getValue(); MaxVisitor maxVisit = new MaxVisitor(getExpression()); featureCollection.accepts(maxVisit, progress); if (progress.isCanceled()) return null; globalMax = (Comparable) maxVisit.getResult().getValue(); if ((globalMin instanceof Number) && (globalMax instanceof Number)) { return calculateNumerical(classNum, globalMin, globalMax); } else { return calculateNonNumerical(classNum, featureCollection); } } catch (IllegalFilterException e) { // accepts exploded LOGGER.log(Level.SEVERE, "EqualIntervalFunction calculate(SimpleFeatureCollection) failed", e); return null; } catch (IOException e) { // getResult().getValue() exploded LOGGER.log(Level.SEVERE, "EqualIntervalFunction calculate(SimpleFeatureCollection) failed", e); return null; } }
protected void updateAttributeStats(DataAttribute attribute) throws IOException { FeatureTypeInfo featureType = GeoServerApplication.get().getCatalog().getFeatureType(featureTypeId); FeatureSource<?, ?> fs = featureType.getFeatureSource(null, null); // check we can compute min and max PropertyDescriptor pd = fs.getSchema().getDescriptor(attribute.getName()); Class<?> binding = pd.getType().getBinding(); if (pd == null || !Comparable.class.isAssignableFrom(binding) || Geometry.class.isAssignableFrom(binding)) { return; } // grab the feature collection and run the min/max visitors (this will move the // query to the dbms in case of such data source) Query q = new Query(); q.setPropertyNames(new String[] {attribute.getName()}); FeatureCollection<?, ?> fc = fs.getFeatures(q); MinVisitor minVisitor = new MinVisitor(attribute.getName()); MaxVisitor maxVisitor = new MaxVisitor(attribute.getName()); fc.accepts(minVisitor, null); fc.accepts(maxVisitor, null); Object min = minVisitor.getResult().getValue(); attribute.setMin(Converters.convert(min, String.class)); Object max = maxVisitor.getResult().getValue(); attribute.setMax(Converters.convert(max, String.class)); }
MinVisitor highersVisitor = new MinVisitor(attribute); highers.accepts(highersVisitor, null); Comparable minOfGreater = (Comparable) highersVisitor.getResult().getValue(); return closest(value, maxOfSmallers, minOfGreater);