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.access; ingo@3749: rrenkert@6258: import java.util.ArrayList; raimund@3760: import java.util.Date; raimund@3760: import java.util.LinkedList; raimund@3760: import java.util.List; raimund@3760: raimund@3768: import org.apache.log4j.Logger; raimund@3768: teichmann@5831: import org.dive4elements.artifacts.CallContext; felix@4824: teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact; teichmann@5831: import org.dive4elements.river.artifacts.model.DateRange; raimund@3760: ingo@3749: felix@4847: /** Access data of artifact used in BedQuality calculations. */ felix@4847: public class BedQualityAccess felix@4847: extends RangeAccess { sascha@3750: raimund@3768: private static final Logger logger = Logger raimund@3768: .getLogger(BedQualityAccess.class); raimund@3768: raimund@3768: private List bedDiameter; raimund@3768: private List bedloadDiameter; raimund@3760: private List ranges; raimund@3760: raimund@3760: teichmann@5867: public BedQualityAccess(D4EArtifact artifact, CallContext context) { teichmann@6101: super(artifact); raimund@3760: } raimund@3760: raimund@3760: public List getDateRanges() { raimund@3760: if (ranges == null) { raimund@3760: ranges = extractRanges(getString("periods")); raimund@3760: } raimund@3760: return ranges; raimund@3760: } raimund@3760: raimund@3768: public List getBedDiameter() { raimund@3780: String value = getString("bed_diameter"); raimund@3780: if (bedDiameter == null && value != null) { raimund@3780: bedDiameter = extractDiameter(value); raimund@3768: } rrenkert@6258: if (bedDiameter == null) { rrenkert@6258: return new ArrayList(); rrenkert@6258: } raimund@3768: return bedDiameter; raimund@3768: } raimund@3768: raimund@3768: public List getBedloadDiameter() { raimund@3780: String value = getString("load_diameter"); raimund@3780: if (bedloadDiameter == null && value != null) { raimund@3780: bedloadDiameter = extractDiameter(value); raimund@3768: } rrenkert@6258: if (bedloadDiameter == null) { rrenkert@6258: return new ArrayList(); rrenkert@6258: } raimund@3768: return bedloadDiameter; raimund@3768: } raimund@3768: raimund@3760: private List extractRanges(String dateString) { raimund@3760: List list = new LinkedList(); raimund@3760: String[] dates = dateString.split(";"); raimund@3760: for (String s : dates) { raimund@3760: String[] pair = s.split(","); raimund@3760: try { raimund@3760: long l1 = Long.parseLong(pair[0]); raimund@3760: long l2 = Long.parseLong(pair[1]); raimund@3760: Date first = new Date(l1); raimund@3760: Date second = new Date(l2); raimund@3760: DateRange dr = new DateRange(first, second); raimund@3760: list.add(dr); raimund@3760: } raimund@3760: catch (NumberFormatException nfe) { raimund@3760: continue; raimund@3760: } raimund@3760: } raimund@3760: return list; raimund@3760: } raimund@3768: raimund@3768: private List extractDiameter(String value) { raimund@3768: List result = new LinkedList(); raimund@3768: String[] diameter = value.split(";"); raimund@3768: for (String v : diameter) { raimund@3768: logger.debug("diameter: " + v); raimund@3768: String[] parts = v.split("\\."); raimund@3768: result.add(parts[parts.length - 1]); raimund@3768: logger.debug(parts[parts.length-1]); raimund@3768: } raimund@3768: return result; raimund@3768: } ingo@3749: } sascha@3777: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :