Mercurial > dive4elements > river
changeset 4374:e596b2cc9f38
Added chart generator for sediment load output.
The generator builds a longitudinal section chart containing sediment loads.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 02 Nov 2012 14:58:51 +0100 |
parents | 1fb224bb2c6b |
children | 532272d9f2e0 |
files | flys-artifacts/doc/conf/conf.xml flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/SedimentLoadLSGenerator.java flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/SedimentLoadLSInfoGenerator.java |
diffstat | 3 files changed, 231 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-artifacts/doc/conf/conf.xml Fri Nov 02 14:54:29 2012 +0100 +++ b/flys-artifacts/doc/conf/conf.xml Fri Nov 02 14:58:51 2012 +0100 @@ -341,6 +341,8 @@ <output-generator name="fix_waterlevel_export">de.intevation.flys.exports.WaterlevelExporter</output-generator> <output-generator name="fix_vollmer_wq_curve">de.intevation.flys.exports.fixings.FixWQCurveGenerator</output-generator> <output-generator name="fix_vollmer_wq_curve_chartinfo">de.intevation.flys.exports.fixings.FixWQCurveInfoGenerator</output-generator> + <output-generator name="sedimentload_ls">de.intevation.flys.exports.minfo.SedimentLoadLSGenerator</output-generator> + <output-generator name="sedimentload_ls_chartinfo">de.intevation.flys.exports.minfo.SedimentLoadLSInfoGenerator</output-generator> <!-- Error report generators. --> <output-generator name="discharge_longitudinal_section_report">de.intevation.flys.exports.ReportGenerator</output-generator> <output-generator name="waterlevel_report">de.intevation.flys.exports.ReportGenerator</output-generator>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/SedimentLoadLSGenerator.java Fri Nov 02 14:58:51 2012 +0100 @@ -0,0 +1,217 @@ +package de.intevation.flys.exports.minfo; + +import org.apache.log4j.Logger; +import org.jfree.data.xy.XYSeries; +import org.w3c.dom.Document; + +import de.intevation.artifactdatabase.state.ArtifactAndFacet; +import de.intevation.artifactdatabase.state.Facet; +import de.intevation.flys.artifacts.model.FacetTypes; +import de.intevation.flys.artifacts.model.minfo.SedimentLoadResult; +import de.intevation.flys.exports.StyledSeriesBuilder; +import de.intevation.flys.exports.XYChartGenerator; +import de.intevation.flys.jfree.FLYSAnnotation; +import de.intevation.flys.jfree.StyledXYSeries; + + +public class SedimentLoadLSGenerator +extends XYChartGenerator +implements FacetTypes +{ + public enum YAXIS { + L(0); + + protected int idx; + + private YAXIS(int c) { + idx = c; + } + } + /** The logger that is used in this generator. */ + private static Logger logger = Logger.getLogger(BedQualityGenerator.class); + + public static final String I18N_CHART_TITLE = "chart.beddifference.epoch.title"; + public static final String I18N_XAXIS_LABEL = "chart.beddifference.xaxis.label"; + public static final String I18N_YAXIS_LABEL = "chart.beddifference.yaxis.label.diff"; + public static final String I18N_SECOND_YAXIS_LABEL = "chart.beddifference.yaxis.label.height"; + + public static final String I18N_CHART_TITLE_DEFAULT = "Sohlenhöhen Differenz"; + public static final String I18N_XAXIS_LABEL_DEFAULT = "Fluss-Km"; + public static final String I18N_YAXIS_LABEL_DEFAULT = "delta S [m]"; + public static final String I18N_SECOND_YAXIS_LABEL_DEFAULT = "Höhe [m]"; + + @Override + protected YAxisWalker getYAxisWalker() { + return new YAxisWalker() { + + @Override + public int length() { + return YAXIS.values().length; + } + + @Override + public String getId(int idx) { + YAXIS[] yaxes = YAXIS.values(); + return yaxes[idx].toString(); + } + }; + } + + @Override + public void doOut(ArtifactAndFacet bundle, Document attr, boolean visible) { + String name = bundle.getFacetName(); + + logger.debug("doOut: " + name); + + if (name == null) { + logger.error("No facet name for doOut(). No output generated!"); + return; + } + + Facet facet = bundle.getFacet(); + + if (facet == null) { + return; + } + + if (name.equals(SEDIMENT_LOAD_COARSE)) { + doSedimentLoadCoarseOut( + (SedimentLoadResult) bundle.getData(context), + bundle, + attr, + visible); + } + else if (name.equals(SEDIMENT_LOAD_SAND)) { + doSedimentLoadSandOut( + (SedimentLoadResult) bundle.getData(context), + bundle, + attr, + visible); + } + else if (name.equals(SEDIMENT_LOAD_FINEMIDDLE)) { + doSedimentLoadFineMiddleOut( + (SedimentLoadResult) bundle.getData(context), + bundle, + attr, + visible); + } + else if (name.equals(SEDIMENT_LOAD_SUSP_SAND)) { + doSedimentLoadSandOut( + (SedimentLoadResult) bundle.getData(context), + bundle, + attr, + visible); + } + else if (name.equals(SEDIMENT_LOAD_SUSP_SAND_BED)) { + doSedimentLoadSuspSandBedOut( + (SedimentLoadResult) bundle.getData(context), + bundle, + attr, + visible); + } + else if (name.equals(SEDIMENT_LOAD_SUSP_SEDIMENT)) { + doSedimentLoadSuspSedimentOut( + (SedimentLoadResult) bundle.getData(context), + bundle, + attr, + visible); + } + else if (name.equals(SEDIMENT_LOAD_TOTAL)) { + doSedimentLoadTotalOut( + (SedimentLoadResult) bundle.getData(context), + bundle, + attr, + visible); + } + else if (name.equals(LONGITUDINAL_ANNOTATION)) { + doAnnotations( + (FLYSAnnotation) bundle.getData(context), + bundle, + attr, + visible); + } + } + + @Override + protected String getDefaultChartTitle() { + return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); + } + + @Override + protected String getDefaultXAxisLabel() { + return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT); + } + + @Override + protected String getDefaultYAxisLabel(int pos) { + String label = "default"; + if (pos == YAXIS.L.idx) { + label = msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); + } + return label; + } + + protected void doSedimentLoadCoarseOut(SedimentLoadResult data, + ArtifactAndFacet aandf, Document theme, boolean visible) { + + XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); + StyledSeriesBuilder.addPoints(series, data.getCoarseData(), true); + + addAxisSeries(series, YAXIS.L.idx, visible); + } + + protected void doSedimentLoadSandOut(SedimentLoadResult data, + ArtifactAndFacet aandf, Document theme, boolean visible) { + + XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); + StyledSeriesBuilder.addPoints(series, data.getSandData(), true); + + addAxisSeries(series, YAXIS.L.idx, visible); + } + + protected void doSedimentLoadFineMiddleOut(SedimentLoadResult data, + ArtifactAndFacet aandf, Document theme, boolean visible) { + + XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); + StyledSeriesBuilder.addPoints(series, data.getFineMiddleData(), true); + + addAxisSeries(series, YAXIS.L.idx, visible); + } + + protected void doSedimentLoadSuspSandOut(SedimentLoadResult data, + ArtifactAndFacet aandf, Document theme, boolean visible) { + + XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); + StyledSeriesBuilder.addPoints(series, data.getSuspSandData(), true); + + addAxisSeries(series, YAXIS.L.idx, visible); + } + + protected void doSedimentLoadSuspSandBedOut(SedimentLoadResult data, + ArtifactAndFacet aandf, Document theme, boolean visible) { + + XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); + StyledSeriesBuilder.addPoints(series, data.getSuspSandBedData(), true); + + addAxisSeries(series, YAXIS.L.idx, visible); + } + + protected void doSedimentLoadSuspSedimentOut(SedimentLoadResult data, + ArtifactAndFacet aandf, Document theme, boolean visible) { + + XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); + StyledSeriesBuilder.addPoints(series, data.getSuspSedimentData(), true); + + addAxisSeries(series, YAXIS.L.idx, visible); + } + + protected void doSedimentLoadTotalOut(SedimentLoadResult data, + ArtifactAndFacet aandf, Document theme, boolean visible) { + + XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); + StyledSeriesBuilder.addPoints(series, data.getTotalData(), true); + + addAxisSeries(series, YAXIS.L.idx, visible); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/SedimentLoadLSInfoGenerator.java Fri Nov 02 14:58:51 2012 +0100 @@ -0,0 +1,12 @@ +package de.intevation.flys.exports.minfo; + +import de.intevation.flys.exports.ChartInfoGenerator; + + +public class SedimentLoadLSInfoGenerator +extends ChartInfoGenerator +{ + public SedimentLoadLSInfoGenerator() { + super(new SedimentLoadLSGenerator()); + } +}