Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/exports/MiddleBedHeightGenerator.java @ 4241:49cb65d5932d
Improved the historical discharge calculation.
The calculation now creates new HistoricalWQKms (new subclass of WQKms). Those WQKms are used
to create new facets from (new) type 'HistoricalDischargeCurveFacet'. The chart generator is
improved to support those facets.
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 24 Oct 2012 14:34:35 +0200 |
parents | 0f60efc39953 |
children | f3c4976874f2 |
line wrap: on
line source
package de.intevation.flys.exports; import de.intevation.artifactdatabase.state.ArtifactAndFacet; import de.intevation.artifactdatabase.state.Facet; import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.MiddleBedHeightData; import de.intevation.flys.jfree.FLYSAnnotation; import de.intevation.flys.jfree.StyledXYSeries; import de.intevation.flys.utils.FLYSUtils; import org.apache.log4j.Logger; import org.jfree.data.xy.XYSeries; import org.w3c.dom.Document; // TODO Move class to de.intevation.flys.exports.minfo /** * An OutGenerator that generates middle bed height charts. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class MiddleBedHeightGenerator extends XYChartGenerator implements FacetTypes { public enum YAXIS { H(0); protected int idx; private YAXIS(int c) { idx = c; } } /** The logger that is used in this generator. */ private static Logger logger = Logger.getLogger(MiddleBedHeightGenerator.class); /** Key to look up internationalized String for annotations label. */ public static final String I18N_ANNOTATIONS_LABEL = "chart.bedheight_middle.annotations.label"; public static final String I18N_CHART_TITLE = "chart.bedheight_middle.section.title"; public static final String I18N_CHART_SUBTITLE = "chart.bedheight_middle.section.subtitle"; public static final String I18N_CHART_SHORT_SUBTITLE = "chart.bedheight_middle.section.shortsubtitle"; public static final String I18N_XAXIS_LABEL = "chart.bedheight_middle.section.xaxis.label"; public static final String I18N_YAXIS_LABEL = "chart.bedheight_middle.section.yaxis.label"; public static final String I18N_CHART_TITLE_DEFAULT = "Mittlere Sohlhöhe"; public static final String I18N_XAXIS_LABEL_DEFAULT = "km"; public static final String I18N_YAXIS_LABEL_DEFAULT = "mittlere Sohlhöhen [müNN]"; @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(); } }; } /** * Returns the default title for this chart. * * @return the default title for this chart. */ @Override public String getDefaultChartTitle() { Object[] args = new Object[] { getRiverName() }; return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT, args); } /** * Get internationalized label for the x axis. */ @Override protected String getDefaultXAxisLabel() { FLYSArtifact flys = (FLYSArtifact) master; return msg( I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT, new Object[] { FLYSUtils.getRiver(flys).getName() }); } @Override protected String getDefaultYAxisLabel(int index) { String label = "default"; if (index == YAXIS.H.idx) { label = getHAxisLabel(); } return label; } /** * Get internationalized label for the y axis. */ protected String getHAxisLabel() { return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); } /** * Produce output. * @param artifactAndFacet current facet. * @param attr theme for facet */ @Override public void doOut( ArtifactAndFacet artifactAndFacet, Document attr, boolean visible ) { String name = artifactAndFacet.getFacetName(); logger.debug("MiddleBedHeightGenerator.doOut: " + name); if (name == null) { logger.error("No facet name for doOut(). No output generated!"); return; } Facet facet = artifactAndFacet.getFacet(); if (facet == null) { return; } if (name.equals(MIDDLE_BED_HEIGHT_SINGLE) || name.equals(MIDDLE_BED_HEIGHT_EPOCH)) { doHeightOut( (MiddleBedHeightData) artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else if (name.equals(MIDDLE_BED_HEIGHT_ANNOTATION)) { doAnnotations( (FLYSAnnotation) artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else if (FacetTypes.IS.AREA(name)) { doArea( artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else if (FacetTypes.IS.MANUALPOINTS(name)) { doPoints( artifactAndFacet.getData(context), artifactAndFacet, attr, visible, YAXIS.H.idx); } else { logger.warn("Unknown facet name: " + name); return; } } /** * @param data A data object * @param aandf The artifact and facet. This facet does NOT support any data objects. Use * FLYSArtifact.getNativeFacet() instead to retrieve a Facet which supports * data. * @param theme The theme that contains styling information. * @param visible The visibility of the curve. */ protected void doHeightOut( MiddleBedHeightData data, ArtifactAndFacet aandf, Document theme, boolean visible ) { logger.debug("MiddleBedHeightGenerator.doMainChannelOut"); XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); StyledSeriesBuilder.addPoints(series, data.getMiddleHeightsPoints(), false); addAxisSeries(series, YAXIS.H.idx, visible); } /** Look up the axis identifier for a given facet type. */ public int axisIdxForFacet(String facetName) { if (FacetTypes.IS.H(facetName)) { return YAXIS.H.idx; } else { logger.warn("Could not find axis for facet " + facetName); return YAXIS.H.idx; } } /** * Do Area out. * @param theme styling information. * @param visible whether or not visible. */ protected void doArea( Object o, ArtifactAndFacet aandf, Document theme, boolean visible ) { logger.debug("FlowVelocityGenerator.doArea"); logger.warn("TODO: Implement FlowVelocityGenerator.doArea"); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :