rrenkert@4374: package de.intevation.flys.exports.minfo; rrenkert@4374: rrenkert@4374: import org.apache.log4j.Logger; rrenkert@4374: import org.jfree.data.xy.XYSeries; rrenkert@4374: import org.w3c.dom.Document; rrenkert@4374: rrenkert@4374: import de.intevation.artifactdatabase.state.ArtifactAndFacet; rrenkert@4374: import de.intevation.artifactdatabase.state.Facet; rrenkert@4374: import de.intevation.flys.artifacts.model.FacetTypes; rrenkert@4374: import de.intevation.flys.artifacts.model.minfo.SedimentLoadResult; rrenkert@4374: import de.intevation.flys.exports.StyledSeriesBuilder; rrenkert@4374: import de.intevation.flys.exports.XYChartGenerator; rrenkert@4374: import de.intevation.flys.jfree.FLYSAnnotation; rrenkert@4374: import de.intevation.flys.jfree.StyledXYSeries; rrenkert@4374: rrenkert@4374: rrenkert@4374: public class SedimentLoadLSGenerator rrenkert@4374: extends XYChartGenerator rrenkert@4374: implements FacetTypes rrenkert@4374: { rrenkert@4374: public enum YAXIS { rrenkert@4374: L(0); rrenkert@4374: rrenkert@4374: protected int idx; rrenkert@4374: rrenkert@4374: private YAXIS(int c) { rrenkert@4374: idx = c; rrenkert@4374: } rrenkert@4374: } rrenkert@4374: /** The logger that is used in this generator. */ rrenkert@4374: private static Logger logger = Logger.getLogger(BedQualityGenerator.class); rrenkert@4374: rrenkert@4375: public static final String I18N_CHART_TITLE = "chart.sedimentload.ls.title"; rrenkert@4375: public static final String I18N_XAXIS_LABEL = "chart.sedimentload.ls.xaxis.label"; rrenkert@4375: public static final String I18N_YAXIS_LABEL = "chart.sedimentload.ls.yaxis.label.diff"; rrenkert@4374: rrenkert@4375: public static final String I18N_CHART_TITLE_DEFAULT = "Sedimentfracht"; rrenkert@4374: public static final String I18N_XAXIS_LABEL_DEFAULT = "Fluss-Km"; rrenkert@4375: public static final String I18N_YAXIS_LABEL_DEFAULT = "[t/a]"; rrenkert@4374: rrenkert@4374: @Override rrenkert@4374: protected YAxisWalker getYAxisWalker() { rrenkert@4374: return new YAxisWalker() { rrenkert@4374: rrenkert@4374: @Override rrenkert@4374: public int length() { rrenkert@4374: return YAXIS.values().length; rrenkert@4374: } rrenkert@4374: rrenkert@4374: @Override rrenkert@4374: public String getId(int idx) { rrenkert@4374: YAXIS[] yaxes = YAXIS.values(); rrenkert@4374: return yaxes[idx].toString(); rrenkert@4374: } rrenkert@4374: }; rrenkert@4374: } rrenkert@4374: rrenkert@4374: @Override rrenkert@4374: public void doOut(ArtifactAndFacet bundle, Document attr, boolean visible) { rrenkert@4374: String name = bundle.getFacetName(); rrenkert@4374: rrenkert@4374: logger.debug("doOut: " + name); rrenkert@4374: rrenkert@4374: if (name == null) { rrenkert@4374: logger.error("No facet name for doOut(). No output generated!"); rrenkert@4374: return; rrenkert@4374: } rrenkert@4374: rrenkert@4374: Facet facet = bundle.getFacet(); rrenkert@4374: rrenkert@4374: if (facet == null) { rrenkert@4374: return; rrenkert@4374: } rrenkert@4374: rrenkert@4374: if (name.equals(SEDIMENT_LOAD_COARSE)) { rrenkert@4374: doSedimentLoadCoarseOut( rrenkert@4374: (SedimentLoadResult) bundle.getData(context), rrenkert@4374: bundle, rrenkert@4374: attr, rrenkert@4374: visible); rrenkert@4374: } rrenkert@4374: else if (name.equals(SEDIMENT_LOAD_SAND)) { rrenkert@4374: doSedimentLoadSandOut( rrenkert@4374: (SedimentLoadResult) bundle.getData(context), rrenkert@4374: bundle, rrenkert@4374: attr, rrenkert@4374: visible); rrenkert@4374: } rrenkert@4374: else if (name.equals(SEDIMENT_LOAD_FINEMIDDLE)) { rrenkert@4374: doSedimentLoadFineMiddleOut( rrenkert@4374: (SedimentLoadResult) bundle.getData(context), rrenkert@4374: bundle, rrenkert@4374: attr, rrenkert@4374: visible); rrenkert@4374: } rrenkert@4374: else if (name.equals(SEDIMENT_LOAD_SUSP_SAND)) { rrenkert@4374: doSedimentLoadSandOut( rrenkert@4374: (SedimentLoadResult) bundle.getData(context), rrenkert@4374: bundle, rrenkert@4374: attr, rrenkert@4374: visible); rrenkert@4374: } rrenkert@4374: else if (name.equals(SEDIMENT_LOAD_SUSP_SAND_BED)) { rrenkert@4374: doSedimentLoadSuspSandBedOut( rrenkert@4374: (SedimentLoadResult) bundle.getData(context), rrenkert@4374: bundle, rrenkert@4374: attr, rrenkert@4374: visible); rrenkert@4374: } rrenkert@4374: else if (name.equals(SEDIMENT_LOAD_SUSP_SEDIMENT)) { rrenkert@4374: doSedimentLoadSuspSedimentOut( rrenkert@4374: (SedimentLoadResult) bundle.getData(context), rrenkert@4374: bundle, rrenkert@4374: attr, rrenkert@4374: visible); rrenkert@4374: } rrenkert@4374: else if (name.equals(SEDIMENT_LOAD_TOTAL)) { rrenkert@4374: doSedimentLoadTotalOut( rrenkert@4374: (SedimentLoadResult) bundle.getData(context), rrenkert@4374: bundle, rrenkert@4374: attr, rrenkert@4374: visible); rrenkert@4374: } rrenkert@4374: else if (name.equals(LONGITUDINAL_ANNOTATION)) { rrenkert@4374: doAnnotations( rrenkert@4374: (FLYSAnnotation) bundle.getData(context), rrenkert@4374: bundle, rrenkert@4374: attr, rrenkert@4374: visible); rrenkert@4374: } rrenkert@4374: } rrenkert@4374: rrenkert@4374: @Override rrenkert@4374: protected String getDefaultChartTitle() { rrenkert@4374: return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); rrenkert@4374: } rrenkert@4374: rrenkert@4374: @Override rrenkert@4374: protected String getDefaultXAxisLabel() { rrenkert@4374: return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT); rrenkert@4374: } rrenkert@4374: rrenkert@4374: @Override rrenkert@4374: protected String getDefaultYAxisLabel(int pos) { rrenkert@4374: String label = "default"; rrenkert@4374: if (pos == YAXIS.L.idx) { rrenkert@4374: label = msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); rrenkert@4374: } rrenkert@4374: return label; rrenkert@4374: } rrenkert@4374: rrenkert@4374: protected void doSedimentLoadCoarseOut(SedimentLoadResult data, rrenkert@4374: ArtifactAndFacet aandf, Document theme, boolean visible) { rrenkert@4374: rrenkert@4374: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); rrenkert@4374: StyledSeriesBuilder.addPoints(series, data.getCoarseData(), true); rrenkert@4374: rrenkert@4374: addAxisSeries(series, YAXIS.L.idx, visible); rrenkert@4374: } rrenkert@4374: rrenkert@4374: protected void doSedimentLoadSandOut(SedimentLoadResult data, rrenkert@4374: ArtifactAndFacet aandf, Document theme, boolean visible) { rrenkert@4374: rrenkert@4374: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); rrenkert@4374: StyledSeriesBuilder.addPoints(series, data.getSandData(), true); rrenkert@4374: rrenkert@4374: addAxisSeries(series, YAXIS.L.idx, visible); rrenkert@4374: } rrenkert@4374: rrenkert@4374: protected void doSedimentLoadFineMiddleOut(SedimentLoadResult data, rrenkert@4374: ArtifactAndFacet aandf, Document theme, boolean visible) { rrenkert@4374: rrenkert@4374: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); rrenkert@4374: StyledSeriesBuilder.addPoints(series, data.getFineMiddleData(), true); rrenkert@4374: rrenkert@4374: addAxisSeries(series, YAXIS.L.idx, visible); rrenkert@4374: } rrenkert@4374: rrenkert@4374: protected void doSedimentLoadSuspSandOut(SedimentLoadResult data, rrenkert@4374: ArtifactAndFacet aandf, Document theme, boolean visible) { rrenkert@4374: rrenkert@4374: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); rrenkert@4374: StyledSeriesBuilder.addPoints(series, data.getSuspSandData(), true); rrenkert@4374: rrenkert@4374: addAxisSeries(series, YAXIS.L.idx, visible); rrenkert@4374: } rrenkert@4374: rrenkert@4374: protected void doSedimentLoadSuspSandBedOut(SedimentLoadResult data, rrenkert@4374: ArtifactAndFacet aandf, Document theme, boolean visible) { rrenkert@4374: rrenkert@4374: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); rrenkert@4374: StyledSeriesBuilder.addPoints(series, data.getSuspSandBedData(), true); rrenkert@4374: rrenkert@4374: addAxisSeries(series, YAXIS.L.idx, visible); rrenkert@4374: } rrenkert@4374: rrenkert@4374: protected void doSedimentLoadSuspSedimentOut(SedimentLoadResult data, rrenkert@4374: ArtifactAndFacet aandf, Document theme, boolean visible) { rrenkert@4374: rrenkert@4374: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); rrenkert@4374: StyledSeriesBuilder.addPoints(series, data.getSuspSedimentData(), true); rrenkert@4374: rrenkert@4374: addAxisSeries(series, YAXIS.L.idx, visible); rrenkert@4374: } rrenkert@4374: rrenkert@4374: protected void doSedimentLoadTotalOut(SedimentLoadResult data, rrenkert@4374: ArtifactAndFacet aandf, Document theme, boolean visible) { rrenkert@4374: rrenkert@4374: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); rrenkert@4374: StyledSeriesBuilder.addPoints(series, data.getTotalData(), true); rrenkert@4374: rrenkert@4374: addAxisSeries(series, YAXIS.L.idx, visible); rrenkert@4374: } rrenkert@4374: } felix@4431: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :