teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.model.minfo; rrenkert@4296: rrenkert@4296: import java.util.Date; teichmann@6970: import java.util.Map; rrenkert@4370: import java.util.Set; teichmann@6970: import java.util.TreeMap; rrenkert@4296: teichmann@5831: import org.dive4elements.river.artifacts.model.NamedObjectImpl; felix@6374: import org.dive4elements.river.artifacts.model.Range; teichmann@6970: import org.dive4elements.river.utils.EpsilonComparator; felix@6374: rrenkert@4296: felix@5787: /** Gives access to Fractions (at kms). */ rrenkert@4296: public class SedimentLoad rrenkert@4296: extends NamedObjectImpl rrenkert@4296: { rrenkert@4296: protected String description; rrenkert@4296: protected Date start; rrenkert@4296: protected Date end; rrenkert@4296: protected boolean isEpoch; rrenkert@6392: protected String unit; rrenkert@4296: teichmann@6970: protected Map kms; rrenkert@4296: rrenkert@4296: public SedimentLoad() { teichmann@6970: kms = new TreeMap(EpsilonComparator.CMP); rrenkert@4296: } rrenkert@4296: rrenkert@4296: public SedimentLoad( rrenkert@4296: String description, rrenkert@4296: Date start, rrenkert@4296: Date end, rrenkert@6392: boolean isEpoch, rrenkert@6392: String unit rrenkert@4296: ) { rrenkert@4370: this(); rrenkert@4296: this.description = description; rrenkert@4296: this.start = start; rrenkert@4296: this.end = end; rrenkert@4296: this.isEpoch = isEpoch; rrenkert@6392: this.unit = unit; rrenkert@4296: } rrenkert@4296: rrenkert@4296: public String getDescription() { rrenkert@4296: return description; rrenkert@4296: } rrenkert@4296: rrenkert@4296: public void setDescription(String description) { rrenkert@4296: this.description = description; rrenkert@4296: } rrenkert@4296: rrenkert@4296: public Date getStart() { rrenkert@4296: return start; rrenkert@4296: } rrenkert@4296: rrenkert@4296: public void setStart(Date start) { rrenkert@4296: this.start = start; rrenkert@4296: } rrenkert@4296: rrenkert@4296: public Date getEnd() { rrenkert@4296: return end; rrenkert@4296: } rrenkert@4296: rrenkert@4296: public void setEnd(Date end) { rrenkert@4296: this.end = end; rrenkert@4296: } rrenkert@4296: rrenkert@4296: public boolean isEpoch() { rrenkert@4296: return isEpoch; rrenkert@4296: } rrenkert@4296: rrenkert@4296: public void setEpoch(boolean isEpoch) { rrenkert@4296: this.isEpoch = isEpoch; rrenkert@4296: } rrenkert@4296: rrenkert@4370: public Set getKms() { rrenkert@4370: return kms.keySet(); rrenkert@4296: } rrenkert@4296: rrenkert@4370: public void addKm(double km, SedimentLoadFraction fraction) { rrenkert@4370: kms.put(km, fraction); rrenkert@4296: } rrenkert@4296: rrenkert@4370: public SedimentLoadFraction getFraction(double km) { teichmann@6970: SedimentLoadFraction f = kms.get(km); teichmann@6970: if (f == null) { teichmann@6970: f = new SedimentLoadFraction(); teichmann@6970: kms.put(km, f); rrenkert@4370: } teichmann@6970: return f; rrenkert@4296: } rrenkert@4296: felix@6374: public void setCoarse(double km, double coarse, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setCoarse(coarse); teichmann@6970: f.setCoarseRange(range); rrenkert@4370: } rrenkert@4370: felix@6374: public void setFineMiddle(double km, double fine_middle, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setFineMiddle(fine_middle); teichmann@6970: f.setFineMiddleRange(range); rrenkert@4370: } rrenkert@4370: teichmann@6970: felix@6374: public void setSand(double km, double sand, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setSand(sand); teichmann@6970: f.setSandRange(range); felix@6374: } felix@6374: felix@6374: public void setSuspSand(double km, double susp_sand, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setSuspSand(susp_sand); teichmann@6970: f.setSuspSandRange(range); felix@6374: } felix@6374: felix@6374: public void setSuspSandBed(double km, double susp_sand_bed, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setSuspSandBed(susp_sand_bed); teichmann@6970: f.setSuspSandBedRange(range); rrenkert@4370: } rrenkert@4370: felix@6374: public void setSuspSediment(double km, double susp_sediment, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setSuspSediment(susp_sediment); teichmann@6970: f.setSuspSedimentRange(range); rrenkert@4370: } rrenkert@4370: rrenkert@4546: public void setLoadTotal(double km, double total) { felix@6952: setLoadTotal(km, total, null); felix@6952: } felix@6952: felix@6952: public void setLoadTotal(double km, double total, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setLoadTotal(total); teichmann@6970: f.setLoadTotalRange(range); rrenkert@4546: } rrenkert@4546: felix@6374: public void setTotal(double km, double total, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setTotal(total); teichmann@6970: f.setTotalRange(range); rrenkert@4296: } rrenkert@4515: rrenkert@6392: public void setUnknown(double km, double unknown, Range range) { teichmann@6970: SedimentLoadFraction f = getFraction(km); teichmann@6970: f.setUnknown(unknown); teichmann@6970: f.setUnknownRange(range); rrenkert@6392: } rrenkert@6392: rrenkert@6392: public String getUnit() { rrenkert@6392: return unit; rrenkert@6392: } rrenkert@6392: rrenkert@6392: public void setUnit(String unit) { rrenkert@6392: this.unit = unit; rrenkert@6392: } rrenkert@6392: rrenkert@4515: public boolean hasCoarse() { rrenkert@4515: for (SedimentLoadFraction slf : kms.values()) { rrenkert@4515: if (slf.getCoarse() > 0d) { rrenkert@4515: return true; rrenkert@4515: } rrenkert@4515: } rrenkert@4515: return false; rrenkert@4515: } rrenkert@4515: rrenkert@4515: public boolean hasFineMiddle() { rrenkert@4515: for (SedimentLoadFraction slf : kms.values()) { felix@6376: if (slf.getFineMiddle() > 0d) { rrenkert@4515: return true; rrenkert@4515: } rrenkert@4515: } rrenkert@4515: return false; rrenkert@4515: } rrenkert@4515: rrenkert@4515: public boolean hasSand() { rrenkert@4515: for (SedimentLoadFraction slf : kms.values()) { rrenkert@4515: if (slf.getSand() > 0d) { rrenkert@4515: return true; rrenkert@4515: } rrenkert@4515: } rrenkert@4515: return false; rrenkert@4515: } rrenkert@4515: rrenkert@4515: public boolean hasSuspSand() { rrenkert@4515: for (SedimentLoadFraction slf : kms.values()) { felix@6376: if (slf.getSuspSand() > 0d) { rrenkert@4515: return true; rrenkert@4515: } rrenkert@4515: } rrenkert@4515: return false; rrenkert@4515: } rrenkert@4515: rrenkert@4515: public boolean hasSuspSediment() { rrenkert@4515: for (SedimentLoadFraction slf : kms.values()) { felix@6376: if (slf.getSuspSediment() > 0d) { rrenkert@4515: return true; rrenkert@4515: } rrenkert@4515: } rrenkert@4515: return false; rrenkert@4515: } rrenkert@4546: rrenkert@4546: public boolean hasTotalLoad() { rrenkert@4546: for (SedimentLoadFraction slf : kms.values()) { rrenkert@4546: if (slf.getLoadTotal() > 0d) { rrenkert@4546: return true; rrenkert@4546: } rrenkert@4546: } rrenkert@4546: return false; rrenkert@4546: } rrenkert@4296: } felix@5662: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :