# HG changeset patch # User Sascha L. Teichmann # Date 1328542947 0 # Node ID 3f3e4f94171b1ce4726b0123deada1328bc08895 # Parent 2966787b51885a04c85fd0435589fadca9bce5b4 Added generator for "Reduzierte Bezugslinie". flys-artifacts/trunk@3936 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 2966787b5188 -r 3f3e4f94171b flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Mon Feb 06 15:37:54 2012 +0000 +++ b/flys-artifacts/ChangeLog Mon Feb 06 15:42:27 2012 +0000 @@ -13,6 +13,19 @@ 2012-02-06 Sascha L. Teichmann + * doc/conf/conf.xml: Registered generator for normalized reference curves. + + * src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java: + Added "reference_curve_normalized". + + * src/main/java/de/intevation/flys/artifacts/states/ReferenceCurveState.java: + Added facets for normalized reference curves. + + * src/main/java/de/intevation/flys/exports/NormalizedReferenceCurveGenerator.java: + Generator for normalized reference curves. + +2012-02-06 Sascha L. Teichmann + * doc/conf/artifacts/winfo.xml: Added config for "reduzierte Bezugslinie". 2012-02-06 Sascha L. Teichmann diff -r 2966787b5188 -r 3f3e4f94171b flys-artifacts/doc/conf/conf.xml --- a/flys-artifacts/doc/conf/conf.xml Mon Feb 06 15:37:54 2012 +0000 +++ b/flys-artifacts/doc/conf/conf.xml Mon Feb 06 15:42:27 2012 +0000 @@ -182,6 +182,7 @@ de.intevation.flys.exports.MapGenerator de.intevation.flys.exports.MapGenerator de.intevation.flys.exports.ReferenceCurveGenerator + de.intevation.flys.exports.NormalizedReferenceCurveGenerator de.intevation.flys.exports.ReferenceCurveInfoGenerator de.intevation.flys.exports.ReferenceCurveExporter de.intevation.flys.exports.HistoricalDischargeCurveGenerator @@ -194,6 +195,7 @@ de.intevation.flys.exports.ReportGenerator de.intevation.flys.exports.ReportGenerator de.intevation.flys.exports.ReportGenerator + de.intevation.flys.exports.ReportGenerator de.intevation.flys.exports.ATExporter diff -r 2966787b5188 -r 3f3e4f94171b flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java Mon Feb 06 15:37:54 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FacetTypes.java Mon Feb 06 15:42:27 2012 +0000 @@ -124,5 +124,6 @@ String HISTORICAL_DISCHARGE_Q = "historical_discharge.historicalq"; String REFERENCE_CURVE = "reference_curve"; + String REFERENCE_CURVE_NORMALIZED = "reference_curve_normalized"; } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : diff -r 2966787b5188 -r 3f3e4f94171b flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ReferenceCurveState.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ReferenceCurveState.java Mon Feb 06 15:37:54 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ReferenceCurveState.java Mon Feb 06 15:42:27 2012 +0000 @@ -60,6 +60,11 @@ facets.add(new ReferenceCurveFacet(i, REFERENCE_CURVE, Resources.getMsg(context.getMeta(), REFERENCE_CURVE, REFERENCE_CURVE))); + facets.add(new ReferenceCurveFacet(i, + REFERENCE_CURVE_NORMALIZED, + Resources.getMsg( + context.getMeta(), + REFERENCE_CURVE_NORMALIZED, REFERENCE_CURVE_NORMALIZED))); } if (wws.length > 0) { diff -r 2966787b5188 -r 3f3e4f94171b flys-artifacts/src/main/java/de/intevation/flys/exports/NormalizedReferenceCurveGenerator.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/NormalizedReferenceCurveGenerator.java Mon Feb 06 15:42:27 2012 +0000 @@ -0,0 +1,246 @@ +package de.intevation.flys.exports; + +import org.w3c.dom.Document; + +import java.awt.Font; + +import org.apache.log4j.Logger; + +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.title.TextTitle; + +import org.jfree.data.xy.XYSeries; + +import de.intevation.artifactdatabase.state.ArtifactAndFacet; + +import de.intevation.flys.artifacts.model.FacetTypes; +import de.intevation.flys.artifacts.model.WW; +import de.intevation.flys.artifacts.model.WW.ApplyFunctionIterator; +import de.intevation.flys.artifacts.model.WWAxisTypes; + +import de.intevation.flys.jfree.StyledXYSeries; + + +/** + * An OutGenerator that generates reference curves. + */ +public class NormalizedReferenceCurveGenerator +extends XYChartGenerator +implements FacetTypes +{ + public static enum YAXIS { + W_M(0), + W_CM(1); + + public int idx; + private YAXIS(int c) { + idx = c; + } + } + + /** House logger. */ + private static Logger logger = + Logger.getLogger(NormalizedReferenceCurveGenerator.class); + + public static final String I18N_CHART_TITLE = + "chart.reference.curve.title"; + + public static final String I18N_CHART_SUBTITLE = + "chart.reference.curve.subtitle"; + + public static final String W_CM_DEFAULT = + "chart.reference.curve.wcm"; + + public static final String W_NNM_DEFAULT = + "chart.reference.curve.wnn"; + + public static final String START_GAUGE = + "chart.reference.curve.start_at_gauge"; + + public static final String START_FREE = + "chart.reference.curve.start_free"; + + /* + + public static final String I18N_XAXIS_LABEL = + "chart.reference.curve.xaxis.label"; + + public static final String I18N_YAXIS_LABEL = + "chart.reference.curve.yaxis.label"; +*/ +/* + public static final String I18N_XAXIS_LABEL_DEFAULT = + "W [NN + m]"; + + public static final String I18N_YAXIS_LABEL_DEFAULT = + "W [NN + m]"; + */ + + + public static final String I18N_CHART_TITLE_DEFAULT = + "Bezugslinie"; + + + public NormalizedReferenceCurveGenerator() { + super(); + } + + + /** + * Create Axis for given index. + * @return axis with according internationalized label. + */ + @Override + protected NumberAxis createYAxis(int index) { + Font labelFont = new Font("Tahoma", Font.BOLD, 14); + String label = getYAxisLabel(index); + + NumberAxis axis = createNumberAxis(index, label); + // TODO aspect-ratio settings. + if (index == YAXIS.W_M.idx) { + axis.setAutoRangeIncludesZero(false); + } + axis.setLabelFont(labelFont); + return axis; + } + + + /** Get default chart title. */ + @Override + protected String getDefaultChartTitle() { + return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); + } + + @Override + protected String getDefaultChartSubtitle() { + Object[] args = new Object[] { + getRiverName(), + }; + + return msg(I18N_CHART_SUBTITLE, "", args); + } + + + @Override + protected void addSubtitles(JFreeChart chart) { + String subtitle = getChartSubtitle(); + + if (subtitle != null && subtitle.length() > 0) { + chart.addSubtitle(new TextTitle(subtitle)); + } + } + + + /** Get Label for X-axis (W). */ + @Override + protected String getDefaultXAxisLabel() { + // TODO i18nreturn msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT); + // at_gauge + w_cm + return "W am Bezugsort- oder Pegel."; + } + + + /** + * Get Label for primary and other Y Axes. + * @param index Axis-Index (0-based). + */ + @Override + protected String getDefaultYAxisLabel(int index) { + String label = "default"; + if (index == YAXIS.W_M.idx) { + //label = msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); + //TODO i18n + return "W am Zielort"; + } + else if (index == YAXIS.W_CM.idx) { + return "W am Zielpegel"; + } + + return label; + } + + + /** + * Called for each facet/them in the out mapped to this generator. + * @param artifactFacet artifact and facet for this theme. + * @param theme styling info. + * @param visible Whether or not the theme is visible. + */ + @Override + public void doOut( + ArtifactAndFacet artifactFacet, + Document theme, + boolean visible + ) { + String name = artifactFacet.getFacetName(); + + logger.debug("NormalizedReferenceCurveGenerator.doOut: " + name); + + if (name == null || name.length() == 0) { + logger.error("No facet given. Cannot create dataset."); + return; + } + + if (name.equals(REFERENCE_CURVE_NORMALIZED)) { + doReferenceOut(artifactFacet.getData(context), theme, visible); + } + else { + logger.warn("Unknown facet name: " + name); + return; + } + } + + + /** Register DataSeries with (maybe transformed) points. */ + public void doReferenceOut( + Object data, + Document theme, + boolean visible + ) { + WW ww = (WW)data; + + // TODO: Fetch from black board instead! + WWAxisTypes wwat = new WWAxisTypes(ww); + + ApplyFunctionIterator iter = wwat.transform(ww); + + XYSeries series = new StyledXYSeries( + ww.getName(), false, theme); + + double [] values = new double[2]; + + while (iter.hasNext()) { + iter.next(values); + series.add(values[0], values[1], false); + } + + if (ww.endAtGauge()) { + addAxisSeries(series, YAXIS.W_M.idx, visible); + } + else { + addAxisSeries(series, YAXIS.W_CM.idx, visible); + } + } + + + /** Get Walker to iterate over all axes. */ + @Override + protected YAxisWalker getYAxisWalker() { + return new YAxisWalker() { + /** Get number of items. */ + @Override + public int length() { + return YAXIS.values().length; + } + + /** Get identifier for this index. */ + @Override + public String getId(int idx) { + YAXIS[] yaxes = YAXIS.values(); + return yaxes[idx].toString(); + } + }; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :