aheinecke@7148: /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde aheinecke@7148: * Software engineering by Intevation GmbH aheinecke@7148: * aheinecke@7148: * This file is Free Software under the GNU AGPL (>=v3) aheinecke@7148: * and comes with ABSOLUTELY NO WARRANTY! Check out the aheinecke@7148: * documentation coming with Dive4Elements River for details. aheinecke@7148: */ aheinecke@7148: aheinecke@7148: package org.dive4elements.river.exports.process; aheinecke@7148: rrenkert@7892: import java.util.Map; rrenkert@7892: aheinecke@7148: import org.apache.log4j.Logger; aheinecke@7148: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; aheinecke@7148: import org.dive4elements.artifacts.CallContext; tom@8260: import org.dive4elements.artifacts.CallMeta; tom@8260: tom@8260: import org.dive4elements.river.artifacts.resources.Resources; aheinecke@7148: import org.dive4elements.river.artifacts.model.FacetTypes; aheinecke@7148: import org.dive4elements.river.exports.DiagramGenerator; aheinecke@7148: import org.dive4elements.river.exports.StyledSeriesBuilder; aheinecke@7148: import org.dive4elements.river.jfree.StyledXYSeries; aheinecke@7148: import org.dive4elements.river.themes.ThemeDocument; aheinecke@7148: aheinecke@7148: public class BedQualityDiameterProcessor extends DefaultProcessor { aheinecke@7148: teichmann@8202: private final static Logger log = aheinecke@7148: Logger.getLogger(BedQualityDiameterProcessor.class); aheinecke@7148: aheinecke@7148: public static final String I18N_AXIS_LABEL = aheinecke@7148: "chart.bedquality.yaxis.label.diameter"; aheinecke@7148: rrenkert@7892: protected String yAxisLabel; aheinecke@7148: @Override aheinecke@7148: public void doOut( aheinecke@7148: DiagramGenerator generator, aheinecke@7148: ArtifactAndFacet bundle, aheinecke@7148: ThemeDocument theme, aheinecke@7148: boolean visible) { gernotbelger@9123: CallContext context = generator.getContext(); rrenkert@7892: Map metaData = bundle.getFacet().getMetaData(); gernotbelger@9556: StyledXYSeries series = new StyledXYSeries(bundle.getFacetName(), bundle.getFacetDescription(), aheinecke@7148: theme); rrenkert@7892: series.putMetaData(metaData, bundle.getArtifact(), context); rrenkert@7892: yAxisLabel = metaData.get("Y"); aheinecke@7148: Object data = bundle.getData(context); rrenkert@8001: if (data == null) { rrenkert@8001: return; rrenkert@8001: } rrenkert@7987: if (!(data instanceof double[][])) { teichmann@8202: log.error("Unknown data type: " + data.getClass().getName()); aheinecke@7148: return; aheinecke@7148: } rrenkert@7987: double[][] values = (double[][])data; rrenkert@7987: StyledSeriesBuilder.addPoints(series, values, true); aheinecke@7148: aheinecke@7148: generator.addAxisSeries(series, axisName, visible); aheinecke@7148: } aheinecke@7148: aheinecke@7148: @Override aheinecke@7148: public boolean canHandle(String facettype) { andre@8592: String name = facettype.replace(".interpol",""); andre@8592: return name.equals(FacetTypes.BED_QUALITY_BED_DIAMETER_TOPLAYER) || andre@8592: name.equals(FacetTypes.BED_QUALITY_BED_DIAMETER_SUBLAYER) || andre@8592: name.equals(FacetTypes.BED_QUALITY_BEDLOAD_DIAMETER) || andre@8592: name.equals(FacetTypes.BED_DIAMETER_DATA_TOP) || andre@8592: name.equals(FacetTypes.BED_DIAMETER_DATA_SUB) || andre@8592: name.equals(FacetTypes.BEDLOAD_DIAMETER_DATA); aheinecke@7148: } aheinecke@7148: aheinecke@7148: @Override aheinecke@7148: public String getAxisLabel(DiagramGenerator generator) { tom@8260: gernotbelger@9123: CallMeta meta = generator.getContext().getMeta(); tom@8260: rrenkert@7892: if (yAxisLabel != null && !yAxisLabel.isEmpty()) { tom@8260: return Resources.getMsg(meta, yAxisLabel); rrenkert@7892: } tom@8260: return Resources.getMsg(meta, I18N_AXIS_LABEL); aheinecke@7148: } aheinecke@7148: } aheinecke@7148: