Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataValueFilter.java @ 8048:cde6d2a9ec32
Sediment Load: Added table to figure out where grain fractions are measured.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 17 Jul 2014 11:37:25 +0200 |
parents | 1de6256c9786 |
children | 72760ca2fc2b |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.artifacts.model.minfo; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Value; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Value.Filter; public final class SedimentLoadDataValueFilter { private SedimentLoadDataValueFilter() { } public static abstract class Composite implements Filter { protected List<Filter> filters; public Composite() { filters = new ArrayList<Filter>(); } public void add(Filter filter) { filters.add(filter); } } public static final class And extends Composite { public And() { } @Override public boolean accept(Value value) { for (Filter filter: filters) { if (!filter.accept(value)) { return false; } } return true; } } // class And public static final class Or extends Composite { public Or() { } @Override public boolean accept(Value value) { for (Filter filter: filters) { if (filter.accept(value)) { return true; } } return false; } } // class Or public static final class Year implements Filter { private int year; public Year(int year) { this.year = year; } @Override public boolean accept(Value value) { Calendar cal = Calendar.getInstance(); cal.setTime(value.getLoad().getStartTime()); return cal.get(Calendar.YEAR) == year; } } // class Year public static final class IsEpoch implements Filter { public static final IsEpoch INSTANCE = new IsEpoch(); private IsEpoch() { } @Override public boolean accept(Value value) { return value.getLoad().isEpoch(); } } // class Year public static final class TimeRangeIntersects implements Filter { private Date a; private Date b; public TimeRangeIntersects(Date a, Date b) { if (a.after(b)) { this.b = a; this.a = b; } else { this.a = a; this.b = b; } } @Override public boolean accept(Value value) { Date c = value.getLoad().getStartTime(); Date d = value.getLoad().getStopTime(); return d == null ? c.compareTo(a) >= 0 && c.compareTo(b) <= 0 : !(a.after(d) || c.after(b)); } } // class TimeRangeIntersects } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :