ingo@403: package de.intevation.flys.exports; ingo@403: ingo@403: import org.apache.log4j.Logger; ingo@403: ingo@403: import org.jfree.data.xy.XYSeries; ingo@403: ingo@403: import org.w3c.dom.Document; ingo@403: ingo@403: import de.intevation.artifacts.Artifact; ingo@403: ingo@695: import de.intevation.artifactdatabase.state.Facet; ingo@695: ingo@696: import de.intevation.flys.artifacts.FLYSArtifact; ingo@403: import de.intevation.flys.artifacts.model.WQCKms; ingo@403: import de.intevation.flys.artifacts.model.WQKms; ingo@403: felix@1862: import de.intevation.flys.jfree.FLYSAnnotation; felix@1862: ingo@403: ingo@403: /** ingo@403: * An OutGenerator that generates discharge longitudinal section curves. ingo@403: * ingo@403: * @author Ingo Weinzierl ingo@403: */ ingo@403: public class DischargeLongitudinalSectionGenerator ingo@403: extends LongitudinalSectionGenerator ingo@403: { ingo@403: private static Logger logger = ingo@403: Logger.getLogger(DischargeLongitudinalSectionGenerator.class); ingo@403: ingo@403: ingo@420: public DischargeLongitudinalSectionGenerator() { ingo@420: super(); ingo@420: } ingo@420: ingo@420: sascha@719: @Override ingo@1684: public void doOut( ingo@1684: Artifact artifact, ingo@1684: Facet facet, ingo@1684: Document attr, ingo@1684: boolean visible ingo@1684: ) { ingo@403: logger.debug("DischargeLongitudinalSectionGenerator.doOut"); ingo@403: sascha@719: if (facet == null) { sascha@719: return; sascha@719: } sascha@719: sascha@719: String name = facet.getName(); sascha@719: sascha@719: if (name == null) { sascha@719: return; sascha@719: } ingo@696: ingo@696: FLYSArtifact flys = (FLYSArtifact) artifact; ingo@696: Facet f = flys.getNativeFacet(facet); ingo@696: sascha@719: if (name.equals(DISCHARGE_LONGITUDINAL_W)) { ingo@1712: doWOut((WQKms) f.getData(artifact, context), facet, attr, visible); ingo@403: } sascha@719: else if (name.equals(DISCHARGE_LONGITUDINAL_Q)) { ingo@1712: doQOut((WQKms) f.getData(artifact, context), facet, attr, visible); ingo@696: } felix@1862: else if (name.equals(LONGITUDINAL_ANNOTATION)) { felix@1862: doAnnotations((FLYSAnnotation) f.getData(artifact, context), felix@1862: facet, attr, visible); felix@1862: } felix@1862: if (name.equals(DISCHARGE_LONGITUDINAL_C)) { ingo@1684: doCorrectedWOut( ingo@1684: (WQCKms) f.getData(artifact, context), ingo@1712: facet, ingo@1684: attr, ingo@1684: visible); ingo@403: } ingo@403: else { ingo@696: logger.warn("Unknown facet name: " + name); ingo@403: } ingo@403: } ingo@403: ingo@403: ingo@403: /** ingo@403: * Adds a new series for the corrected W curve. ingo@403: * ingo@403: * @param wqckms The object that contains the corrected W values. ingo@924: * @param theme The theme that contains styling information. ingo@403: */ ingo@1684: protected void doCorrectedWOut( ingo@1684: WQCKms wqckms, ingo@1712: Facet facet, ingo@1684: Document theme, ingo@1684: boolean visible ingo@1684: ) { ingo@403: logger.debug("DischargeLongitudinalSectionGenerator.doCorrectedWOut"); ingo@403: sascha@719: int size = wqckms.size(); ingo@403: sascha@719: if (size > 0) { ingo@924: XYSeries series = new StyledXYSeries( ingo@1712: facet.getDescription(), ingo@924: theme); ingo@924: sascha@719: for (int i = 0; i < size; i++) { sascha@925: series.add(wqckms.getKm(i), wqckms.getC(i)); sascha@719: } ingo@923: ingo@1684: addFirstAxisSeries(series, visible); ingo@403: } sascha@745: sascha@745: if (wqckms.guessWaterIncreasing()) { sascha@745: setInverted(true); sascha@745: } ingo@403: } ingo@403: } ingo@403: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :