aheinecke@7126: /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde aheinecke@7126: * Software engineering by Intevation GmbH aheinecke@7126: * aheinecke@7126: * This file is Free Software under the GNU AGPL (>=v3) aheinecke@7126: * and comes with ABSOLUTELY NO WARRANTY! Check out the aheinecke@7126: * documentation coming with Dive4Elements River for details. aheinecke@7126: */ aheinecke@7126: aheinecke@7126: package org.dive4elements.river.exports.process; aheinecke@7126: rrenkert@7892: import java.util.Map; rrenkert@7892: aheinecke@7126: import org.apache.log4j.Logger; aheinecke@7126: aheinecke@7126: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; aheinecke@7126: import org.dive4elements.artifacts.CallContext; aheinecke@7126: aheinecke@7126: import org.dive4elements.river.artifacts.D4EArtifact; rrenkert@8002: import org.dive4elements.river.artifacts.access.RiverAccess; aheinecke@7126: import org.dive4elements.river.artifacts.model.FacetTypes; aheinecke@7126: import org.dive4elements.river.themes.ThemeDocument; aheinecke@7126: import org.dive4elements.river.exports.DiagramGenerator; aheinecke@7126: import org.dive4elements.river.exports.StyledSeriesBuilder; aheinecke@7126: import org.dive4elements.river.jfree.StyledXYSeries; aheinecke@7126: aheinecke@7126: public class MiddleBedHeightProcessor extends DefaultProcessor { aheinecke@7126: teichmann@8202: /** Private log. */ teichmann@8202: private static final Logger log = felix@7540: Logger.getLogger(MiddleBedHeightProcessor.class); aheinecke@7126: aheinecke@7126: public static final String I18N_AXIS_LABEL = aheinecke@7126: "chart.bedheight_middle.section.yaxis.label"; aheinecke@7126: aheinecke@7126: public static final String I18N_AXIS_LABEL_DEFAULT = aheinecke@7126: "mittlere Sohlhöhen [müNN]"; aheinecke@7126: rrenkert@7892: protected String yAxisLabel; rrenkert@7892: aheinecke@7126: @Override aheinecke@7126: public void doOut( aheinecke@7126: DiagramGenerator generator, aheinecke@7126: ArtifactAndFacet bundle, aheinecke@7126: ThemeDocument theme, aheinecke@7126: boolean visible) { aheinecke@7126: CallContext context = generator.getCallContext(); rrenkert@7892: Map metaData = bundle.getFacet().getMetaData(); rrenkert@7892: yAxisLabel = metaData.get("Y"); aheinecke@7126: rrenkert@7983: Object raw = bundle.getData(context); rrenkert@8001: if (raw == null) { rrenkert@8001: return; rrenkert@8001: } rrenkert@7983: if (!(raw instanceof double[][])) { teichmann@8202: log.error("Unkonwn data type: " + raw.getClass().getName()); rrenkert@7983: return; rrenkert@7983: } rrenkert@7983: rrenkert@7983: double[][] data = (double[][])raw; rrenkert@7892: StyledXYSeries series = new StyledXYSeries(bundle.getFacetDescription(), aheinecke@7126: theme); rrenkert@7892: series.putMetaData(metaData, bundle.getArtifact(), context); aheinecke@7126: rrenkert@7983: StyledSeriesBuilder.addPoints(series, data, aheinecke@7126: false, 0.110d); aheinecke@7126: aheinecke@7126: generator.addAxisSeries(series, axisName, visible); aheinecke@7126: } aheinecke@7126: aheinecke@7126: @Override aheinecke@7126: public String getAxisLabel(DiagramGenerator generator) { aheinecke@7126: D4EArtifact flys = (D4EArtifact) generator.getMaster(); aheinecke@7126: rrenkert@8002: RiverAccess access = new RiverAccess(flys); rrenkert@8002: String unit = access.getRiver().getWstUnit().getName(); aheinecke@7126: rrenkert@7892: if (yAxisLabel != null && !yAxisLabel.isEmpty()) { rrenkert@7892: return generator.msg( rrenkert@7892: yAxisLabel, rrenkert@7892: I18N_AXIS_LABEL_DEFAULT, rrenkert@7892: new Object[] { unit }); rrenkert@7892: } aheinecke@7126: return generator.msg( aheinecke@7126: I18N_AXIS_LABEL, aheinecke@7126: I18N_AXIS_LABEL_DEFAULT, aheinecke@7126: new Object[] { unit }); aheinecke@7126: } aheinecke@7126: aheinecke@7126: @Override aheinecke@7126: public boolean canHandle(String facetType) { aheinecke@7126: if (facetType == null) { aheinecke@7126: return false; aheinecke@7126: } aheinecke@7126: return facetType.equals(FacetTypes.MIDDLE_BED_HEIGHT_EPOCH) || aheinecke@7126: facetType.equals(FacetTypes.MIDDLE_BED_HEIGHT_SINGLE); aheinecke@7126: } aheinecke@7126: }