# HG changeset patch # User Sascha L. Teichmann # Date 1405588799 -7200 # Node ID c835f3cf098e032bd440982ea1a26eff209030cd # Parent 8c14588d1f78afdf252d289c9a2cf7e9c327794f Sediment load: Added join to fetch measurement station via ranges which know the river. Added a visitor for values, too. diff -r 8c14588d1f78 -r c835f3cf098e artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadData.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadData.java Thu Jul 17 10:56:38 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadData.java Thu Jul 17 11:19:59 2014 +0200 @@ -55,6 +55,10 @@ boolean accept(Value value); } + public interface Visitor { + void visit(Value value); + } + private double value; private Load load; @@ -240,17 +244,29 @@ return values != null && !values.isEmpty(); } - public List filterGrainFraction(int grainFraction, Value.Filter filter) { + public void filterGrainFraction( + int grainFraction, + Value.Filter filter, + Value.Visitor visitor + ) { List values = grainFractions.get(grainFraction); - if (values == null || values.isEmpty()) { - return Collections.emptyList(); + if (values != null && !values.isEmpty()) { + for (Value value: values) { + if (filter.accept(value)) { + visitor.visit(value); + } + } } - List result = new ArrayList(values.size()); - for (Value value: values) { - if (filter.accept(value)) { + } + + public List filterGrainFraction(int grainFraction, Value.Filter filter) { + final List result = new ArrayList(); + filterGrainFraction(grainFraction, filter, new Value.Visitor() { + @Override + public void visit(Value value) { result.add(value); } - } + }); return result; } diff -r 8c14588d1f78 -r c835f3cf098e artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataFactory.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataFactory.java Thu Jul 17 10:56:38 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataFactory.java Thu Jul 17 11:19:59 2014 +0200 @@ -45,7 +45,8 @@ "JOIN time_intervals ti ON sl.time_interval_id = ti.id " + "JOIN grain_fraction gf ON sl.grain_fraction_id = gf.id " + "JOIN measurement_station ms ON slv.measurement_station_id = ms.id " + - "JOIN rivers r ON ms.river_id = r.id " + + "JOIN ranges rng ON ms.range_id = rng.id " + + "JOIN rivers r ON rng.river_id = r.id " + "WHERE r.name = :river " + "ORDER BY sl.id";