Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityDistanceSelect.java @ 8784:6714e07e18c2
Issue1854: Use the real data.
There is no guarantee that the overviews contain the same data.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Tue, 08 Dec 2015 18:10:18 +0100 |
parents | 1116079e6624 |
children | d55cbb45c565 |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013, 2015 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.artifacts.states.minfo; import java.util.Date; import java.util.List; import java.util.Collections; import org.w3c.dom.Element; import org.apache.log4j.Logger; import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.access.RiverAccess; import org.dive4elements.river.artifacts.states.DistanceSelect; import org.dive4elements.river.artifacts.model.minfo.QualityMeasurementFactory; import org.dive4elements.artifacts.common.utils.XMLUtils; import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifactdatabase.data.StateData; /** Extended Distance Select with default values appropiate for BedQuality */ public class BedQualityDistanceSelect extends DistanceSelect { private static Logger log = Logger.getLogger(BedQualityDistanceSelect.class); /** * The default constructor that initializes an empty State object. */ public BedQualityDistanceSelect() { } @Override protected Element createData( XMLUtils.ElementCreator cr, Artifact artifact, StateData data, CallContext context) { Element ele = super.createData(cr, artifact, data, context); if (!data.getName().equals("ld_from") && !data.getName().equals("ld_to")) { return ele; } RiverAccess access = new RiverAccess((D4EArtifact)artifact); String river = access.getRiverName(); double [] minMax = access.getRiver().determineMinMaxDistance(); List<Double> bKms = QualityMeasurementFactory.getBedMeasurements( river, minMax[0], minMax[1], new Date(Long.MIN_VALUE/100000), new Date(Long.MAX_VALUE/1000) // values expected to fit in SQL Date, though large enough ).getKms(); List<Double> blKms = QualityMeasurementFactory.getBedloadMeasurements( river, minMax[0], minMax[1], new Date(Long.MIN_VALUE/100000), new Date(Long.MAX_VALUE/1000) // values expected to fit in SQL Date, though large enough ).getKms(); if (bKms.isEmpty() || blKms.isEmpty()) { log.warn("Not all data found for river '" + river + "'"); return ele; } Collections.sort(blKms); Collections.sort(bKms); double start = Math.min(bKms.get(0), blKms.get(0)); double end = Math.max( bKms.get(bKms.size()-1), blKms.get(blKms.size()-1)); if (data.getName().equals("ld_from")) { cr.addAttr(ele, "defaultLabel", data.getName(), true); cr.addAttr(ele, "defaultValue", Double.toString(start), true); } else if (data.getName().equals("ld_to")) { cr.addAttr(ele, "defaultLabel", data.getName(), true); cr.addAttr(ele, "defaultValue", Double.toString(end), true); } return ele; } }