ingo@3749: package de.intevation.flys.artifacts.access;
ingo@3749: 
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: 
ingo@3749: import de.intevation.flys.artifacts.FLYSArtifact;
raimund@3760: import de.intevation.flys.artifacts.model.DateRange;
raimund@3760: 
ingo@3749: 
sascha@3777: public class BedQualityAccess extends RiverAccess {
sascha@3750: 
raimund@3768:     private static final Logger logger = Logger
raimund@3768:         .getLogger(BedQualityAccess.class);
raimund@3768: 
raimund@3760:     private Double from;
raimund@3760:     private Double to;
raimund@3768:     private List<String> bedDiameter;
raimund@3768:     private List<String> bedloadDiameter;
raimund@3760:     private List<DateRange> ranges;
raimund@3760: 
ingo@3749:     public BedQualityAccess(FLYSArtifact artifact) {
ingo@3749:         super(artifact);
ingo@3749:     }
raimund@3760: 
raimund@3760:     public double getFrom() {
raimund@3760:         if (from == null) {
raimund@3760:             from = getDouble("ld_from");
raimund@3760:         }
raimund@3760:         return from.doubleValue();
raimund@3760:     }
raimund@3760: 
raimund@3760:     public double getTo() {
raimund@3760:         if (to == null) {
raimund@3760:             to = getDouble("ld_to");
raimund@3760:         }
raimund@3760:         return to.doubleValue();
raimund@3760:     }
raimund@3760: 
raimund@3760:     public List<DateRange> 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<String> getBedDiameter() {
raimund@3780:         String value = getString("bed_diameter");
raimund@3780:         if (bedDiameter == null && value != null) {
raimund@3780:             bedDiameter = extractDiameter(value);
raimund@3768:         }
raimund@3768:         return bedDiameter;
raimund@3768:     }
raimund@3768: 
raimund@3768:     public List<String> getBedloadDiameter() {
raimund@3780:         String value = getString("load_diameter");
raimund@3780:         if (bedloadDiameter == null && value != null) {
raimund@3780:             bedloadDiameter = extractDiameter(value);
raimund@3768:         }
raimund@3768:         return bedloadDiameter;
raimund@3768:     }
raimund@3768: 
raimund@3760:     private List<DateRange> extractRanges(String dateString) {
raimund@3760:         List<DateRange> list = new LinkedList<DateRange>();
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<String> extractDiameter(String value) {
raimund@3768:         List<String> result = new LinkedList<String>();
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 :