teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.exports; ingo@2706: rrenkert@4626: import java.util.Arrays; rrenkert@4626: ingo@2706: import org.apache.log4j.Logger; ingo@2706: ingo@2706: import org.jfree.data.xy.XYSeries; ingo@2706: ingo@2706: import org.w3c.dom.Document; ingo@2706: teichmann@5831: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; ingo@2706: teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact; ingo@2706: teichmann@5831: import org.dive4elements.river.artifacts.access.FlowVelocityAccess; teichmann@5831: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: import org.dive4elements.river.artifacts.model.FlowVelocityData; teichmann@5831: import org.dive4elements.river.artifacts.model.minfo.BedDiameterResult; teichmann@5831: import org.dive4elements.river.artifacts.model.minfo.BedloadDiameterResult; teichmann@5831: import org.dive4elements.river.model.FlowVelocityMeasurementValue; ingo@2706: teichmann@5831: import org.dive4elements.river.jfree.Bounds; teichmann@5831: import org.dive4elements.river.jfree.DoubleBounds; teichmann@5864: import org.dive4elements.river.jfree.RiverAnnotation; teichmann@5831: import org.dive4elements.river.jfree.StyledXYSeries; teichmann@5831: teichmann@5865: import org.dive4elements.river.utils.RiverUtils; ingo@2706: ingo@2706: ingo@2706: /** tom@6794: * An OutGenerator that generates flow velocity diagramms. ingo@2706: * ingo@2706: * @author Ingo Weinzierl ingo@2706: */ ingo@2706: public class FlowVelocityGenerator tom@6517: extends LongitudinalSectionGenerator ingo@2706: implements FacetTypes ingo@2706: { ingo@2706: public enum YAXIS { tom@6794: V(0), // flow velocity tom@6794: T(1), // tau (shear stress) tom@6794: Q(2), // discharge tom@6794: O(3), // diameter tom@6794: W(4), // waterlevel tom@6794: D(5); // waterlevel-difference ingo@2706: protected int idx; ingo@2706: private YAXIS(int c) { tom@6794: idx = c; ingo@2706: } ingo@2706: } ingo@2706: ingo@2706: /** The logger that is used in this generator. */ ingo@2706: private static Logger logger = Logger.getLogger(FlowVelocityGenerator.class); ingo@2706: ingo@2706: /** ingo@2706: * Key to look up internationalized String for LongitudinalSection diagrams ingo@2706: * titles. ingo@2706: */ ingo@2706: public static final String I18N_CHART_TITLE = ingo@2706: "chart.flow_velocity.section.title"; ingo@2706: tom@6794: /** TODO: tom@6794: * are the following defined somewhere else too? tom@6794: * remove them here! ingo@2706: */ rrenkert@5549: private void doBedQualityLoadDiameter( rrenkert@5549: BedloadDiameterResult data, rrenkert@5549: ArtifactAndFacet aandf, rrenkert@5549: Document attr, rrenkert@5549: boolean visible) { rrenkert@5549: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), attr); rrenkert@5549: StyledSeriesBuilder.addPoints(series, data.getDiameterData(), true); rrenkert@5549: rrenkert@5549: addAxisSeries(series, YAXIS.D.idx, visible); rrenkert@5549: } rrenkert@5549: rrenkert@5549: rrenkert@5549: private void doBedQualityTopLayerOut( rrenkert@5549: BedDiameterResult data, rrenkert@5549: ArtifactAndFacet aandf, rrenkert@5549: Document attr, rrenkert@5549: boolean visible) { rrenkert@5549: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), attr); rrenkert@5549: StyledSeriesBuilder.addPoints(series, data.getDiameterSubData(), true); rrenkert@5549: addAxisSeries(series, YAXIS.D.idx, visible); rrenkert@5549: } rrenkert@5549: rrenkert@5549: rrenkert@5549: private void doBedQualitySubLayerOut( rrenkert@5549: BedDiameterResult data, rrenkert@5549: ArtifactAndFacet aandf, rrenkert@5549: Document attr, rrenkert@5549: boolean visible rrenkert@5549: ) { rrenkert@5549: logger.debug("Do beddiametersubout"); rrenkert@5549: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), attr); rrenkert@5549: StyledSeriesBuilder.addPoints(series, data.getDiameterSubData(), true); rrenkert@5549: addAxisSeries(series, YAXIS.D.idx, visible); rrenkert@5549: } ingo@2706: } ingo@2706: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :