Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/org/dive4elements/river/artifacts/access/BedQualityAccess.java @ 5831:bd047b71ab37
Repaired internal references
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 12:06:39 +0200 |
parents | flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedQualityAccess.java@37112235a946 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/org/dive4elements/river/artifacts/access/BedQualityAccess.java Thu Apr 25 12:06:39 2013 +0200 @@ -0,0 +1,86 @@ +package org.dive4elements.river.artifacts.access; + +import java.util.Date; +import java.util.LinkedList; +import java.util.List; + +import org.apache.log4j.Logger; + +import org.dive4elements.artifacts.CallContext; + +import org.dive4elements.river.artifacts.FLYSArtifact; +import org.dive4elements.river.artifacts.model.DateRange; + + +/** Access data of artifact used in BedQuality calculations. */ +public class BedQualityAccess +extends RangeAccess { + + private static final Logger logger = Logger + .getLogger(BedQualityAccess.class); + + private List<String> bedDiameter; + private List<String> bedloadDiameter; + private List<DateRange> ranges; + + + public BedQualityAccess(FLYSArtifact artifact, CallContext context) { + super(artifact, context); + } + + public List<DateRange> getDateRanges() { + if (ranges == null) { + ranges = extractRanges(getString("periods")); + } + return ranges; + } + + public List<String> getBedDiameter() { + String value = getString("bed_diameter"); + if (bedDiameter == null && value != null) { + bedDiameter = extractDiameter(value); + } + return bedDiameter; + } + + public List<String> getBedloadDiameter() { + String value = getString("load_diameter"); + if (bedloadDiameter == null && value != null) { + bedloadDiameter = extractDiameter(value); + } + return bedloadDiameter; + } + + private List<DateRange> extractRanges(String dateString) { + List<DateRange> list = new LinkedList<DateRange>(); + String[] dates = dateString.split(";"); + for (String s : dates) { + String[] pair = s.split(","); + try { + long l1 = Long.parseLong(pair[0]); + long l2 = Long.parseLong(pair[1]); + Date first = new Date(l1); + Date second = new Date(l2); + DateRange dr = new DateRange(first, second); + list.add(dr); + } + catch (NumberFormatException nfe) { + continue; + } + } + return list; + } + + private List<String> extractDiameter(String value) { + List<String> result = new LinkedList<String>(); + String[] diameter = value.split(";"); + for (String v : diameter) { + logger.debug("diameter: " + v); + String[] parts = v.split("\\."); + result.add(parts[parts.length - 1]); + logger.debug(parts[parts.length-1]); + } + return result; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :