rrenkert@4371: package de.intevation.flys.artifacts.access;
rrenkert@4371: 
rrenkert@4371: import gnu.trove.TIntArrayList;
rrenkert@4371: 
rrenkert@4371: import org.apache.log4j.Logger;
rrenkert@4371: 
felix@4826: import de.intevation.artifacts.CallContext;
felix@4826: 
rrenkert@4371: import de.intevation.flys.artifacts.FLYSArtifact;
rrenkert@4371: 
rrenkert@4371: 
rrenkert@4371: public class SedimentLoadAccess
felix@4826: extends      RangeAccess
rrenkert@4371: {
rrenkert@4371:     private static final Logger logger = Logger.getLogger(BedHeightAccess.class);
rrenkert@4371: 
rrenkert@4371:     private int[] singleIDs;
rrenkert@4371:     private int[] epochIDs;
rrenkert@4371: 
rrenkert@4371:     private String time;
rrenkert@4371:     private String unit;
rrenkert@4371: 
felix@4826:     public SedimentLoadAccess(FLYSArtifact artifact, CallContext context) {
felix@4826:         super(artifact, context);
rrenkert@4371:     }
rrenkert@4371: 
rrenkert@4371:     public Double getLowerKM() {
felix@4826:         // TODO update callers
felix@4826:         return getFrom();
rrenkert@4371:     }
rrenkert@4371: 
rrenkert@4371:     public Double getUpperKM() {
felix@4826:         // TODO update callers
felix@4826:         return getTo();
rrenkert@4371:     }
rrenkert@4371: 
rrenkert@4371:     public String getYearEpoch() {
rrenkert@4371:         if (time == null) {
rrenkert@4371:             time =  getString("ye_select");
rrenkert@4371:         }
rrenkert@4371:         return time;
rrenkert@4371:     }
rrenkert@4371: 
rrenkert@4371:     public int[] getPeriod() {
rrenkert@4371:         if (getYearEpoch().equals("year") ) {
rrenkert@4371:             Integer start = getInteger("start");
rrenkert@4371:             Integer end = getInteger("end");
rrenkert@4371:             if (start == null || end == null) {
rrenkert@4371:                 logger.warn("No 'start' or 'end' parameter specified!");
rrenkert@4371:                 return null;
rrenkert@4371:             }
rrenkert@4371: 
rrenkert@4371:             return new int[]{start.intValue(), end.intValue()};
rrenkert@4371:         }
rrenkert@4371:         return null;
rrenkert@4371:     }
rrenkert@4371: 
rrenkert@4371:     public int[][] getEpochs() {
rrenkert@4516:         if (getYearEpoch().equals("epoch") ||
rrenkert@4516:             getYearEpoch().equals("off_epoch")
rrenkert@4516:         ) {
rrenkert@4371:             String data = getString("epochs");
rrenkert@4371: 
rrenkert@4371:             if (data == null) {
rrenkert@4371:                 logger.warn("No 'epochs' parameter specified!");
rrenkert@4371:                 return null;
rrenkert@4371:             }
rrenkert@4371: 
rrenkert@4371:             String[] parts = data.split(";");
rrenkert@4371: 
rrenkert@4371:             int[][] list = new int[parts.length][];
rrenkert@4371: 
rrenkert@4371:             for (int i = 0; i < parts.length; i++) {
rrenkert@4371:                 String[] values = parts[i].split(",");
rrenkert@4371:                 TIntArrayList ints = new TIntArrayList();
rrenkert@4371:                 try {
rrenkert@4371:                     ints.add(Integer.parseInt(values[0]));
rrenkert@4371:                     ints.add(Integer.parseInt(values[1]));
rrenkert@4371:                     list[i] = ints.toNativeArray();
rrenkert@4371:                 }
rrenkert@4371:                 catch (NumberFormatException nfe) {
rrenkert@4371:                     logger.warn("Cannot parse int from string: '" + values + "'");
rrenkert@4371:                 }
rrenkert@4371:             }
rrenkert@4371:             return list;
rrenkert@4371:         }
rrenkert@4371: 
rrenkert@4371:         return null;
rrenkert@4371:     }
rrenkert@4371: 
rrenkert@4371:     public String getUnit () {
rrenkert@4371:         if (unit == null) {
rrenkert@4371:             unit = getString("unit");
rrenkert@4371:         }
rrenkert@4371:         return unit;
rrenkert@4371:     }
rrenkert@4371: }
rrenkert@4371: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :