# HG changeset patch # User Sascha L. Teichmann # Date 1342019581 0 # Node ID 3c61d9e64ca02d76a56d1fa4344dc73f492f79ee # Parent 4a70525c5b0d7a959d9ae540ce28cb9e9722391e SQ: Added sieve flys-artifacts/trunk@4941 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 4a70525c5b0d -r 3c61d9e64ca0 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Wed Jul 11 11:25:42 2012 +0000 +++ b/flys-artifacts/ChangeLog Wed Jul 11 15:13:01 2012 +0000 @@ -1,3 +1,8 @@ +2012-07-10 Sascha L. Teichmann + + * src/main/java/de/intevation/flys/artifacts/model/sq/Sieve.java: + Simulates a sieve to separate the differen fractions from each other. + 2012-07-10 Sascha L. Teichmann * src/main/java/de/intevation/flys/artifacts/model/DateRange.java, diff -r 4a70525c5b0d -r 3c61d9e64ca0 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/Sieve.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/Sieve.java Wed Jul 11 15:13:01 2012 +0000 @@ -0,0 +1,52 @@ +package de.intevation.flys.artifacts.model.sq; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class Sieve +{ + public double [] fractionSizes; + + protected List> fractions; + + public Sieve() { + } + + public Sieve(double [] fractionSizes) { + this.fractionSizes = fractionSizes; + fractions = new ArrayList>(fractionSizes.length+1); + for (int i = fractionSizes.length; i >= 0; --i) { + fractions.add(new ArrayList()); + } + } + + public void sieve(Iterator sqs) { + OUTER: while (sqs.hasNext()) { + SQ sq = sqs.next(); + double q = sq.getQ(); + for (int i = 0; i < fractionSizes.length; ++i) { + if (q < fractionSizes[i]) { + fractions.get(i).add(sq); + continue OUTER; + } + } + fractions.get(fractions.size()-1).add(sq); + } + } + + public int numFractions() { + return fractions.size(); + } + + public List getFraction(int idx) { + return fractions.get(idx); + } + + public void reset() { + for (List fraction: fractions) { + fraction.clear(); + } + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :