Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/exports/MiddleBedHeightGenerator.java @ 4573:b87073a05f9d
flys-client: Patch to render combobox options as clickable links.
The way of passing data arguments to the links and further to
the Artifact feeding service is somewhat hacked and should be
refactored (later...).
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Tue, 27 Nov 2012 12:50:10 +0100 |
parents | d337c67b6845 |
children | ab5db981044c |
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.exports.process.BedheightProcessor; import de.intevation.flys.exports.process.Processor; import de.intevation.flys.exports.process.WOutProcessor; 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), W(1), P(2); 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]"; public static final String I18N_W_YAXIS_LABEL = "chart.longitudinal.section.yaxis.label"; public static final String I18N_W_YAXIS_LABEL_DEFAULT = "W [NN + m]"; public static final String I18N_P_YAXIS_LABEL_DEFAULT = "Gepeilte Breite [m]"; public static final String I18N_P_YAXIS_LABEL = "chart.bedheight_middle.sounding.yaxis.label"; @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(); } else if (index == YAXIS.W.idx) { label = msg(I18N_W_YAXIS_LABEL, I18N_W_YAXIS_LABEL_DEFAULT); } else if (index == YAXIS.P.idx) { label = msg(I18N_P_YAXIS_LABEL, I18N_P_YAXIS_LABEL_DEFAULT); } 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; } Processor woutp = new WOutProcessor(); Processor bedp = new BedheightProcessor(); 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 if (bedp.canHandle(name)) { bedp.doOut(this, artifactAndFacet, attr, visible, YAXIS.P.idx); } else if (woutp.canHandle(name)) { woutp.doOut(this, artifactAndFacet, attr, visible, YAXIS.W.idx); } else { logger.warn("Unknown facet name: " + name); } } /** * @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 if (FacetTypes.IS.W(facetName)) { return YAXIS.W.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 :