Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/exports/FlowVelocityGenerator.java @ 4488:5041105d2edd
Check if response code from GGInA is 200 OK
Only parse the GGInA response if the status code is 200 OK. This improves the
error message if GGInA is not available and shows the real reason instead of a
JDOM error while parsing the response.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Wed, 14 Nov 2012 10:36:21 +0100 |
parents | 2e8638567c49 |
children | 5b551e3a58d5 |
line wrap: on
line source
package de.intevation.flys.exports; 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.FLYSArtifact; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.FlowVelocityData; import de.intevation.flys.model.FlowVelocityMeasurementValue; import de.intevation.flys.jfree.FLYSAnnotation; import de.intevation.flys.jfree.StyledXYSeries; import de.intevation.flys.utils.FLYSUtils; /** * An OutGenerator that generates flow velocity curves. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class FlowVelocityGenerator extends XYChartGenerator implements FacetTypes { public enum YAXIS { V(0), T(1), Q(2); /* TODO Q and Density will come as 4th and 3rd axis. */ protected int idx; private YAXIS(int c) { idx = c; } } /** The logger that is used in this generator. */ private static Logger logger = Logger.getLogger(FlowVelocityGenerator.class); /** Key to look up internationalized String for annotations label. */ public static final String I18N_ANNOTATIONS_LABEL = "chart.flow_velocity.annotations.label"; /** * Key to look up internationalized String for LongitudinalSection diagrams * titles. */ public static final String I18N_CHART_TITLE = "chart.flow_velocity.section.title"; /** * Key to look up internationalized String for LongitudinalSection diagrams * subtitles. */ public static final String I18N_CHART_SUBTITLE = "chart.flow_velocity.section.subtitle"; /** * Key to look up internationalized String for LongitudinalSection diagrams * short subtitles. */ public static final String I18N_CHART_SHORT_SUBTITLE = "chart.flow_velocity.section.shortsubtitle"; public static final String I18N_XAXIS_LABEL = "chart.flow_velocity.section.xaxis.label"; public static final String I18N_YAXIS_LABEL = "chart.flow_velocity.section.yaxis.label"; public static final String I18N_2YAXIS_LABEL = "chart.flow_velocity.section.yaxis.second.label"; public static final String I18N_3YAXIS_LABEL = "chart.flow_velocity.section.yaxis.third.label"; public static final String I18N_CHART_TITLE_DEFAULT = "Geschwindigkeit- und Schubspannung"; public static final String I18N_XAXIS_LABEL_DEFAULT = "km"; public static final String I18N_YAXIS_LABEL_DEFAULT = "Geschwindigkeit v [m/s]"; public static final String I18N_2YAXIS_LABEL_DEFAULT = "Schubspannung Tau [N]"; public static final String I18N_3YAXIS_LABEL_DEFAULT = "Q [m³/s]"; @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.V.idx) { label = getVAxisLabel(); } else if (index == YAXIS.T.idx) { label = getTAxisLabel(); } else if (index == YAXIS.Q.idx) { label = getQAxisLabel(); } return label; } /** * Get internationalized label for the y axis. */ protected String getVAxisLabel() { return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); } /** * Get internationalized label for the y axis. */ protected String getQAxisLabel() { return msg(I18N_3YAXIS_LABEL, I18N_3YAXIS_LABEL_DEFAULT); } /** * Get internationalized label for the y axis. */ protected String getTAxisLabel() { return msg(I18N_2YAXIS_LABEL, I18N_2YAXIS_LABEL_DEFAULT); } /** * Produce output. * @param artifactAndFacet current facet. * @param attr theme for facet * @param visible Whether this facets data is actually visible or not. */ public void doOut( ArtifactAndFacet artifactAndFacet, Document attr, boolean visible ) { String name = artifactAndFacet.getFacetName(); logger.debug("FlowVelocityGenerator.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(FLOW_VELOCITY_MAINCHANNEL)) { doMainChannelOut( (FlowVelocityData) artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else if (name.equals(FLOW_VELOCITY_TOTALCHANNEL)) { doTotalChannelOut( (FlowVelocityData) artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else if (name.equals(FLOW_VELOCITY_DISCHARGE)) { doQOut( (FlowVelocityData) artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else if (name.equals(FLOW_VELOCITY_TAU)) { doTauOut( (FlowVelocityData) artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else if (name.equals(FLOW_VELOCITY_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.V.idx); } else if (name.equals(LONGITUDINAL_ANNOTATION)) { doAnnotations( (FLYSAnnotation) artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else if (name.equals(FLOW_VELOCITY_MEASUREMENT)) { doVPointOut( artifactAndFacet.getData(context), artifactAndFacet, attr, visible); } else { logger.warn("Unknown facet name: " + name); return; } } /** * Process the output for W facets in a longitudinal section curve. * * @param data A FlowVelocityData object * @param aandf The 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 doMainChannelOut( FlowVelocityData data, ArtifactAndFacet aandf, Document theme, boolean visible ) { logger.debug("FlowVelocityGenerator.doMainChannelOut"); XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); StyledSeriesBuilder.addPoints(series, data.getMainChannelPoints(), true); addAxisSeries(series, YAXIS.V.idx, visible); } /** Handle VWQKms. */ protected void doVPointOut ( Object data, ArtifactAndFacet aandf, Document theme, boolean visible ) { logger.debug("FlowVelocityGenerator.doVPointOut"); XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); FlowVelocityMeasurementValue.FastFlowVelocityMeasurementValue value = (FlowVelocityMeasurementValue.FastFlowVelocityMeasurementValue) data; StyledSeriesBuilder.addPoints(series, new double[][] {{value.getStation()},{value.getV()}}, true); addAxisSeries(series, YAXIS.V.idx, visible); } /** * Add items to dataseries which describes the differences. */ protected void doTotalChannelOut( FlowVelocityData data, ArtifactAndFacet aandf, Document theme, boolean visible ) { logger.debug("FlowVelocityGenerator.doTotalChannelOut"); if (data == null) { logger.warn("No data to add to FlowVelocity chart."); return; } XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); StyledSeriesBuilder.addPoints(series, data.getTotalChannelPoints(), true); addAxisSeries(series, YAXIS.V.idx, visible); } /** * @param data A FlowVelocityData object * @param aandf The 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 doQOut( FlowVelocityData data, ArtifactAndFacet aandf, Document theme, boolean visible ) { logger.debug("FlowVelocityGenerator.doTauOut"); XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); StyledSeriesBuilder.addPoints(series, data.getQPoints(), true); addAxisSeries(series, YAXIS.Q.idx, visible); } /** * @param data A FlowVelocityData object * @param aandf The 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 doTauOut( FlowVelocityData data, ArtifactAndFacet aandf, Document theme, boolean visible ) { logger.debug("FlowVelocityGenerator.doTauOut"); XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); StyledSeriesBuilder.addPoints(series, data.getTauPoints(), true); addAxisSeries(series, YAXIS.T.idx, visible); } /** Look up the axis identifier for a given facet type. */ public int axisIdxForFacet(String facetName) { if (FacetTypes.IS.V(facetName)) { return YAXIS.V.idx; } else if (FacetTypes.IS.T(facetName)) { return YAXIS.T.idx; } else { logger.warn("Could not find axis for facet " + facetName); return YAXIS.V.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 :