sascha@3408: package de.intevation.flys.artifacts.access; sascha@3408: sascha@3408: import de.intevation.artifactdatabase.data.StateData; sascha@3411: sascha@3408: import de.intevation.flys.artifacts.FLYSArtifact; sascha@3411: sascha@3408: import de.intevation.flys.artifacts.model.DateRange; sascha@3408: sascha@3408: import java.util.Arrays; sascha@3408: import java.util.Date; sascha@3408: sascha@3408: import org.apache.log4j.Logger; sascha@3408: sascha@3408: public class FixAnalysisAccess sascha@3408: extends Access sascha@3408: { sascha@3408: private static Logger log = Logger.getLogger(FixAnalysisAccess.class); sascha@3408: sascha@3408: protected String river; sascha@3408: sascha@3408: protected String calculationMode; sascha@3408: sascha@3408: protected Double from; sascha@3408: protected Double to; sascha@3408: protected Double step; sascha@3408: sascha@3408: protected Long start; sascha@3408: protected Long end; sascha@3408: sascha@3408: protected Integer qSectorStart; sascha@3408: protected Integer qSectorEnd; sascha@3408: sascha@3408: protected DateRange referencePeriod; sascha@3408: protected DateRange [] analysisPeriods; sascha@3408: sascha@3408: protected int [] events; sascha@3408: sascha@3408: protected Boolean preprocessing; sascha@3408: sascha@3408: protected String function; sascha@3408: sascha@3408: protected double [] qs; sascha@3408: sascha@3408: public FixAnalysisAccess() { sascha@3408: } sascha@3408: sascha@3408: public FixAnalysisAccess(FLYSArtifact artifact) { sascha@3408: super(artifact); sascha@3408: } sascha@3408: sascha@3408: public String getRiver() { sascha@3408: if (river == null) { sascha@3408: river = getString("river"); sascha@3408: } sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("river: '" + river + "'"); sascha@3408: } sascha@3408: return river; sascha@3408: } sascha@3408: sascha@3408: public String getCalculationMode() { sascha@3408: if (calculationMode == null) { sascha@3408: calculationMode = getString("calculation.mode"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("calculationMode: '" + calculationMode + "'"); sascha@3408: } sascha@3408: return calculationMode; sascha@3408: } sascha@3408: sascha@3408: public Double getFrom() { sascha@3408: sascha@3408: if (from == null) { sascha@3408: from = getDouble("from"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("from: '" + from + "'"); sascha@3408: } sascha@3408: sascha@3408: return from; sascha@3408: } sascha@3408: sascha@3408: public Double getTo() { sascha@3408: sascha@3408: if (to == null) { sascha@3408: to = getDouble("to"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("to: '" + to + "'"); sascha@3408: } sascha@3408: sascha@3408: return to; sascha@3408: } sascha@3408: sascha@3408: public Double getStep() { sascha@3408: sascha@3408: if (step == null) { sascha@3408: step = getDouble("step"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("step: '" + step + "'"); sascha@3408: } sascha@3408: sascha@3408: return step; sascha@3408: } sascha@3408: sascha@3408: public Long getStart() { sascha@3408: sascha@3408: if (start == null) { sascha@3408: start = getLong("start"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("start: '" + start + "'"); sascha@3408: } sascha@3408: sascha@3408: return start; sascha@3408: } sascha@3408: sascha@3408: public Long getEnd() { sascha@3408: sascha@3408: if (end == null) { sascha@3408: end = getLong("end"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("end: '" + end + "'"); sascha@3408: } sascha@3408: sascha@3408: return end; sascha@3408: } sascha@3408: sascha@3408: public Integer getQSectorStart() { sascha@3408: sascha@3408: if (qSectorStart == null) { sascha@3408: qSectorStart = getInteger("q1"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("q1: '" + qSectorStart + "'"); sascha@3408: } sascha@3408: sascha@3408: return qSectorStart; sascha@3408: } sascha@3408: sascha@3408: public Integer getQSectorEnd() { sascha@3408: sascha@3408: if (qSectorEnd == null) { sascha@3408: qSectorEnd = getInteger("q2"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("q2: '" + qSectorEnd + "'"); sascha@3408: } sascha@3408: sascha@3408: return qSectorEnd; sascha@3408: } sascha@3408: sascha@3408: public int [] getEvents() { sascha@3408: if (events == null) { sascha@3408: events = getIntArray("events"); sascha@3408: } sascha@3408: if (log.isDebugEnabled() && events != null) { sascha@3408: log.debug("events: " + Arrays.toString(events)); sascha@3408: } sascha@3408: return events; sascha@3408: } sascha@3408: sascha@3408: public DateRange getReferencePeriod() { sascha@3408: if (referencePeriod == null) { sascha@3408: StateData refStart = artifact.getData("ref_start"); sascha@3408: StateData refEnd = artifact.getData("ref_end"); sascha@3408: sascha@3408: if (refStart == null || refEnd == null) { sascha@3408: log.warn("missing 'ref_start' or 'ref_start' value"); sascha@3408: return null; sascha@3408: } sascha@3408: sascha@3408: try { sascha@3408: long rs = Long.parseLong((String)refStart.getValue()); sascha@3408: long re = Long.parseLong((String)refEnd .getValue()); sascha@3408: sascha@3408: if (rs > re) { long t = rs; rs = re; re = t; } sascha@3408: sascha@3408: Date from = new Date(rs); sascha@3408: Date to = new Date(re); sascha@3408: referencePeriod = new DateRange(from, to); sascha@3408: } sascha@3408: catch (NumberFormatException nfe) { sascha@3408: log.warn("ref_start or ref_end is not an integer."); sascha@3408: } sascha@3408: } sascha@3408: sascha@3408: return referencePeriod; sascha@3408: } sascha@3408: sascha@3408: public DateRange [] getAnalysisPeriods() { sascha@3408: if (analysisPeriods == null) { sascha@3408: analysisPeriods = getDateRange("ana_data"); sascha@3408: } sascha@3408: sascha@3408: return analysisPeriods; sascha@3408: } sascha@3408: sascha@3408: /** sascha@3408: * @return DateRange object ranging from eldest to youngest date sascha@3408: * of analysis and reference periods. sascha@3408: */ sascha@3408: public DateRange getDateRange() { sascha@3408: DateRange refP = getReferencePeriod(); sascha@3408: sascha@3408: Date from = refP.getFrom(); sascha@3408: Date to = refP.getTo(); sascha@3408: sascha@3408: DateRange[] rs = getAnalysisPeriods(); sascha@3408: for(DateRange r : rs) { sascha@3408: if(r.getFrom().before(from)) { sascha@3408: from = r.getFrom(); sascha@3408: } sascha@3408: if(r.getTo().after(to)) { sascha@3408: to = r.getTo(); sascha@3408: } sascha@3408: } sascha@3408: sascha@3408: return new DateRange(from, to); sascha@3408: } sascha@3408: sascha@3408: public Boolean getPreprocessing() { sascha@3408: if (preprocessing == null) { sascha@3408: preprocessing = getBoolean("preprocessing"); sascha@3408: } sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("preprocessing: " + preprocessing); sascha@3408: } sascha@3408: return preprocessing; sascha@3408: } sascha@3408: sascha@3408: public String getFunction() { sascha@3408: if (function == null) { sascha@3408: function = getString("function"); sascha@3408: } sascha@3408: if (log.isDebugEnabled()) { sascha@3408: log.debug("function: " + function); sascha@3408: } sascha@3408: return function; sascha@3408: } sascha@3408: sascha@3408: public double [] getQs() { sascha@3408: if (qs == null) { sascha@3408: qs = getDoubleArray("qs"); sascha@3408: } sascha@3408: sascha@3408: if (log.isDebugEnabled() && qs != null) { sascha@3408: log.debug("qs: " + Arrays.toString(qs)); sascha@3408: } sascha@3408: return qs; sascha@3408: } sascha@3408: } sascha@3408: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :