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.awt.Dialog.ModalExclusionType; rrenkert@7892: import java.util.Map; rrenkert@7892: aheinecke@7148: import org.apache.log4j.Logger; aheinecke@7148: import org.jfree.data.xy.XYSeries; aheinecke@7148: aheinecke@7148: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; aheinecke@7148: import org.dive4elements.artifacts.CallContext; 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: import org.dive4elements.river.artifacts.model.minfo.BedDiameterData; aheinecke@7148: import org.dive4elements.river.artifacts.model.minfo.BedDiameterResult; aheinecke@7148: import org.dive4elements.river.artifacts.model.minfo.BedloadDiameterResult; aheinecke@7148: aheinecke@7148: public class BedQualityDiameterProcessor extends DefaultProcessor { aheinecke@7148: aheinecke@7148: private final static Logger logger = aheinecke@7148: Logger.getLogger(BedQualityDiameterProcessor.class); aheinecke@7148: aheinecke@7148: public static final String I18N_AXIS_LABEL_DEFAULT = aheinecke@7148: "Durchmesser [mm]"; 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) { aheinecke@7148: CallContext context = generator.getCallContext(); rrenkert@7892: Map metaData = bundle.getFacet().getMetaData(); rrenkert@7892: StyledXYSeries series = new StyledXYSeries(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); aheinecke@7148: String facetName = bundle.getFacetName(); aheinecke@7148: double [][] points; aheinecke@7148: aheinecke@7148: if (facetName.equals(FacetTypes.BED_QUALITY_BED_DIAMETER_TOPLAYER)) { aheinecke@7148: points = ((BedDiameterResult) data).getDiameterCapData(); aheinecke@7148: } else if (facetName.equals(FacetTypes.BED_QUALITY_BED_DIAMETER_SUBLAYER)) { aheinecke@7148: points = ((BedDiameterResult) data).getDiameterSubData(); aheinecke@7148: } else if (facetName.equals(FacetTypes.BED_QUALITY_BEDLOAD_DIAMETER)) { aheinecke@7148: points = ((BedloadDiameterResult) data).getDiameterData(); aheinecke@7148: } else if (facetName.equals(FacetTypes.BED_DIAMETER_DATA_TOP) || aheinecke@7148: facetName.equals(FacetTypes.BED_DIAMETER_DATA_SUB) || aheinecke@7148: facetName.equals(FacetTypes.BEDLOAD_DIAMETER_DATA)) { aheinecke@7148: points = ((BedDiameterData) data).getDiameterData(); aheinecke@7148: } else { aheinecke@7148: logger.error("Unknown facet name: " + facetName); aheinecke@7148: return; aheinecke@7148: } aheinecke@7148: StyledSeriesBuilder.addPoints(series, points, true); aheinecke@7148: aheinecke@7148: generator.addAxisSeries(series, axisName, visible); aheinecke@7148: } aheinecke@7148: aheinecke@7148: @Override aheinecke@7148: public boolean canHandle(String facettype) { aheinecke@7148: return facettype.equals(FacetTypes.BED_QUALITY_BED_DIAMETER_TOPLAYER) || aheinecke@7148: facettype.equals(FacetTypes.BED_QUALITY_BED_DIAMETER_SUBLAYER) || aheinecke@7148: facettype.equals(FacetTypes.BED_QUALITY_BEDLOAD_DIAMETER) || aheinecke@7148: facettype.equals(FacetTypes.BED_DIAMETER_DATA_TOP) || aheinecke@7148: facettype.equals(FacetTypes.BED_DIAMETER_DATA_SUB) || aheinecke@7148: facettype.equals(FacetTypes.BEDLOAD_DIAMETER_DATA); aheinecke@7148: } aheinecke@7148: aheinecke@7148: @Override aheinecke@7148: public String getAxisLabel(DiagramGenerator generator) { rrenkert@7892: if (yAxisLabel != null && !yAxisLabel.isEmpty()) { rrenkert@7892: return generator.msg(yAxisLabel, I18N_AXIS_LABEL_DEFAULT); rrenkert@7892: } aheinecke@7148: return generator.msg( aheinecke@7148: I18N_AXIS_LABEL, aheinecke@7148: I18N_AXIS_LABEL_DEFAULT); aheinecke@7148: } aheinecke@7148: } aheinecke@7148: