view artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoad.java @ 6952:e6a8255d0764

SedimentLoad: Allow to set range of total load.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 30 Aug 2013 12:32:29 +0200
parents 9a0f8d532797
children 7be97faf5848
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 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.Date;
import java.util.HashMap;
import java.util.Set;

import org.dive4elements.river.artifacts.model.NamedObjectImpl;
import org.dive4elements.river.artifacts.model.Range;


/** Gives access to Fractions (at kms). */
public class SedimentLoad
extends NamedObjectImpl
{
    protected String description;
    protected Date start;
    protected Date end;
    protected boolean isEpoch;
    protected String unit;

    protected HashMap<Double, SedimentLoadFraction> kms;

    public SedimentLoad() {
        kms = new HashMap<Double, SedimentLoadFraction>();
    }

    public SedimentLoad(
        String description,
        Date start,
        Date end,
        boolean isEpoch,
        String unit
    ) {
        this();
        this.description = description;
        this.start = start;
        this.end = end;
        this.isEpoch = isEpoch;
        this.unit = unit;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getStart() {
        return start;
    }

    public void setStart(Date start) {
        this.start = start;
    }

    public Date getEnd() {
        return end;
    }

    public void setEnd(Date end) {
        this.end = end;
    }

    public boolean isEpoch() {
        return isEpoch;
    }

    public void setEpoch(boolean isEpoch) {
        this.isEpoch = isEpoch;
    }

    public Set<Double> getKms() {
        return kms.keySet();
    }

    public void addKm(double km, SedimentLoadFraction fraction) {
        kms.put(km, fraction);
    }

    public SedimentLoadFraction getFraction(double km) {
        if (kms.get(km) == null) {
            return new SedimentLoadFraction();
        }
        return kms.get(km);
    }

    public void setCoarse(double km, double coarse, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setCoarse(coarse);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setCoarse(coarse);
            f.setCoarseRange(range);
            kms.put(km, f);
        }
    }

    public void setFineMiddle(double km, double fine_middle, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setFineMiddle(fine_middle);
            kms.get(km).setFineMiddleRange(range);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setFineMiddle(fine_middle);
            f.setFineMiddleRange(range);
            kms.put(km, f);
        }
    }

    public void setSand(double km, double sand, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setSand(sand);
            kms.get(km).setSandRange(range);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setSand(sand);
            f.setSandRange(range);
            kms.put(km, f);
        }
    }

    public void setSuspSand(double km, double susp_sand, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setSuspSand(susp_sand);
            kms.get(km).setSuspSandRange(range);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setSuspSand(susp_sand);
            f.setSuspSandRange(range);
            kms.put(km, f);
        }
    }

    public void setSuspSandBed(double km, double susp_sand_bed, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setSuspSandBed(susp_sand_bed);
            kms.get(km).setSuspSandBedRange(range);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setSuspSandBed(susp_sand_bed);
            f.setSuspSandBedRange(range);
            kms.put(km, f);
        }
    }

    public void setSuspSediment(double km, double susp_sediment, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setSuspSediment(susp_sediment);
            kms.get(km).setSuspSedimentRange(range);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setSuspSediment(susp_sediment);
            f.setSuspSedimentRange(range);
            kms.put(km, f);
        }
    }

    public void setLoadTotal(double km, double total) {
        setLoadTotal(km, total, null);
    }

    public void setLoadTotal(double km, double total, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setLoadTotal(total);
            kms.get(km).setLoadTotalRange(range);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setLoadTotal(total);
            f.setLoadTotalRange(range);
            kms.put(km, f);
        }
    }

    public void setTotal(double km, double total, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setTotal(total);
            kms.get(km).setTotalRange(range);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setTotal(total);
            f.setTotalRange(range);
            kms.put(km, f);
        }
    }

    public void setUnknown(double km, double unknown, Range range) {
        if (kms.containsKey(km)) {
            kms.get(km).setUnknown(unknown);
            kms.get(km).setUnknownRange(range);
        }
        else {
            SedimentLoadFraction f = new SedimentLoadFraction();
            f.setUnknown(unknown);
            f.setUnknownRange(range);
            kms.put(km, f);
        }
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public boolean hasCoarse() {
        for (SedimentLoadFraction slf : kms.values()) {
            if (slf.getCoarse() > 0d) {
                return true;
            }
        }
        return false;
    }

    public boolean hasFineMiddle() {
        for (SedimentLoadFraction slf : kms.values()) {
            if (slf.getFineMiddle() > 0d) {
                return true;
            }
        }
        return false;
    }

    public boolean hasSand() {
        for (SedimentLoadFraction slf : kms.values()) {
            if (slf.getSand() > 0d) {
                return true;
            }
        }
        return false;
    }

    public boolean hasSuspSand() {
        for (SedimentLoadFraction slf : kms.values()) {
            if (slf.getSuspSand() > 0d) {
                return true;
            }
        }
        return false;
    }

    public boolean hasSuspSediment() {
        for (SedimentLoadFraction slf : kms.values()) {
            if (slf.getSuspSediment() > 0d) {
                return true;
            }
        }
        return false;
    }

    public boolean hasTotalLoad() {
        for (SedimentLoadFraction slf : kms.values()) {
            if (slf.getLoadTotal() > 0d) {
                return true;
            }
        }
        return false;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org