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: aheinecke@7148: import java.util.List; aheinecke@7148: 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.minfo.BedHeightSingle; 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.model.BedHeightSingleValue; aheinecke@7148: import org.dive4elements.river.themes.ThemeDocument; aheinecke@7148: aheinecke@7148: import org.dive4elements.river.artifacts.model.minfo.BedParametersResult; aheinecke@7148: aheinecke@7148: public class BedQualityPorosityProcessor extends DefaultProcessor { aheinecke@7148: aheinecke@7148: private final static Logger logger = aheinecke@7148: Logger.getLogger(BedQualityPorosityProcessor.class); aheinecke@7148: aheinecke@7148: public static final String I18N_AXIS_LABEL_DEFAULT = aheinecke@7148: "Porosität [%]"; aheinecke@7148: public static final String I18N_AXIS_LABEL = aheinecke@7148: "chart.bedquality.yaxis.label.porosity"; aheinecke@7148: 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(); aheinecke@7148: XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), aheinecke@7148: theme); 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_POROSITY_TOPLAYER)) { aheinecke@7148: points = ((BedParametersResult) data).getPorosityCapData(); aheinecke@7148: } else if (facetName.equals(FacetTypes.BED_QUALITY_BED_DIAMETER_SUBLAYER)) { aheinecke@7148: points = ((BedParametersResult) data).getPorositySubData(); 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_POROSITY_TOPLAYER) || aheinecke@7148: facettype.equals(FacetTypes.BED_QUALITY_POROSITY_SUBLAYER); aheinecke@7148: } aheinecke@7148: aheinecke@7148: @Override aheinecke@7148: public String getAxisLabel(DiagramGenerator generator) { aheinecke@7148: return generator.msg( aheinecke@7148: I18N_AXIS_LABEL, aheinecke@7148: I18N_AXIS_LABEL_DEFAULT); aheinecke@7148: } aheinecke@7148: } aheinecke@7148: aheinecke@7148: