sascha@3775: package de.intevation.flys.artifacts.access; sascha@3775: felix@4825: import de.intevation.artifacts.CallContext; felix@4825: sascha@3775: import de.intevation.flys.artifacts.FLYSArtifact; sascha@3775: sascha@3776: import de.intevation.flys.artifacts.model.RangeWithValues; sascha@3776: sascha@3776: import de.intevation.flys.utils.DoubleUtil; sascha@3776: sascha@3776: import java.util.ArrayList; sascha@3776: import java.util.List; sascha@3776: sascha@3775: import org.apache.log4j.Logger; sascha@3775: felix@4040: /** Access data used for extreme value analysis. */ sascha@3775: public class ExtremeAccess felix@4825: extends RangeAccess sascha@3775: { felix@4332: /** Our private logger. */ felix@4332: private static Logger logger = Logger.getLogger(ExtremeAccess.class); sascha@3775: sascha@3776: protected Long start; sascha@3776: protected Long end; sascha@3776: sascha@3776: protected Double percent; sascha@3776: sascha@3776: protected String function; sascha@3776: sascha@3776: protected List ranges; sascha@3776: felix@4052: felix@4825: public ExtremeAccess(FLYSArtifact artifact, CallContext context) { felix@4825: super(artifact, context); sascha@3776: } sascha@3776: felix@4332: felix@4332: /** Returns the percent given. */ sascha@3776: public Double getPercent() { sascha@3776: sascha@3776: if (percent == null) { sascha@3776: percent = getDouble("percent"); sascha@3776: } sascha@3776: felix@4332: if (logger.isDebugEnabled()) { felix@4332: logger.debug("percent: '" + percent + "'"); sascha@3776: } sascha@3776: sascha@3776: return percent; sascha@3776: } sascha@3776: sascha@3776: public String getFunction() { sascha@3776: if (function == null) { sascha@3776: function = getString("function"); sascha@3776: } sascha@3776: felix@4332: if (logger.isDebugEnabled()) { felix@4332: logger.debug("function: '" + function + "'"); sascha@3776: } sascha@3776: sascha@3776: return function; sascha@3776: } sascha@3776: felix@4333: felix@4333: /** Find first RangeWithValues for which the given location felix@4333: * is within the range and return its values. felix@4333: * @return values of first suitable rangewithvalues or null. felix@4333: */ felix@4333: public double[] getValuesForRange(double location) { felix@4333: logger.debug("ExtemeAcces.getValuesForRange"); felix@4333: for (RangeWithValues rangeValues: getRanges()) { felix@4333: if (rangeValues.inside(location)) { felix@4333: return rangeValues.getValues(); felix@4333: } felix@4333: } felix@4333: return null; felix@4333: } felix@4333: felix@4333: sascha@3776: public List getRanges() { sascha@3776: sascha@3776: if (ranges == null) { sascha@3776: String rangesS = getString("ranges"); felix@4272: if (rangesS == null) { sascha@3776: return null; sascha@3776: } sascha@3776: ranges = new ArrayList(); sascha@3776: DoubleUtil.parseSegments(rangesS, new DoubleUtil.SegmentCallback() { sascha@3776: @Override sascha@3776: public void newSegment(double from, double to, double [] values) { sascha@3776: ranges.add(new RangeWithValues(from, to, values)); sascha@3776: } sascha@3776: }); sascha@3776: } sascha@3776: felix@4332: if (logger.isDebugEnabled()) { felix@4332: logger.debug("ranges: " + ranges); sascha@3776: } sascha@3776: sascha@3776: return ranges; sascha@3776: } sascha@3775: } sascha@3775: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :