rrenkert@8182: package org.dive4elements.river.exports.process; rrenkert@8182: rrenkert@8354: import java.util.Map; rrenkert@8354: rrenkert@8182: import org.apache.log4j.Logger; rrenkert@8182: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; rrenkert@8182: import org.dive4elements.artifacts.CallContext; rrenkert@8354: import org.dive4elements.artifacts.CallMeta; rrenkert@8354: import org.dive4elements.river.artifacts.D4EArtifact; rrenkert@8354: import org.dive4elements.river.artifacts.access.RiverAccess; rrenkert@8182: import org.dive4elements.river.artifacts.model.FacetTypes; rrenkert@8182: import org.dive4elements.river.artifacts.model.WQKms; rrenkert@8354: import org.dive4elements.river.artifacts.resources.Resources; rrenkert@8182: import org.dive4elements.river.exports.DiagramGenerator; rrenkert@8182: import org.dive4elements.river.exports.StyledSeriesBuilder; rrenkert@8182: import org.dive4elements.river.jfree.StyledXYSeries; rrenkert@8182: import org.dive4elements.river.themes.ThemeDocument; rrenkert@8182: rrenkert@8182: rrenkert@8182: public class ComputedDischargeProcessor rrenkert@8182: extends DefaultProcessor rrenkert@8182: implements FacetTypes rrenkert@8182: { teichmann@8202: private static Logger log = rrenkert@8182: Logger.getLogger(ComputedDischargeProcessor.class); rrenkert@8182: rrenkert@8354: private String yAxisLabel = ""; rrenkert@8354: rrenkert@8354: private String I18N_AXIS_LABEL = "chart.discharge.curve.yaxis.label"; rrenkert@8182: rrenkert@8182: @Override rrenkert@8182: public void doOut( rrenkert@8182: DiagramGenerator generator, rrenkert@8182: ArtifactAndFacet bundle, rrenkert@8182: ThemeDocument theme, rrenkert@8182: boolean visible rrenkert@8182: ) { rrenkert@8182: CallContext context = generator.getCallContext(); rrenkert@8182: Object data = bundle.getData(context); rrenkert@8182: if (data instanceof WQKms) { rrenkert@8182: doDischargeOut(generator, bundle, theme, visible); rrenkert@8182: } rrenkert@8182: } rrenkert@8182: rrenkert@8182: @Override rrenkert@8182: public String getAxisLabel(DiagramGenerator generator) { rrenkert@8354: CallMeta meta = generator.getCallContext().getMeta(); rrenkert@8354: RiverAccess access = new RiverAccess((D4EArtifact)generator.getMaster()); rrenkert@8354: String unit = access.getRiver().getWstUnit().getName(); rrenkert@8354: if (yAxisLabel != null && !yAxisLabel.isEmpty()) { rrenkert@8354: return Resources.getMsg( rrenkert@8354: meta, rrenkert@8354: yAxisLabel, rrenkert@8354: new Object[] { unit }); rrenkert@8354: } rrenkert@8354: return Resources.getMsg( rrenkert@8354: meta, rrenkert@8354: I18N_AXIS_LABEL, rrenkert@8354: new Object[] { unit }); rrenkert@8182: } rrenkert@8182: rrenkert@8182: /** rrenkert@8182: * Returns true if the Processor class is able to generate output for a facet type rrenkert@8182: * rrenkert@8182: * @param facettype Name of the facet type rrenkert@8182: * @return true if the facettype can be processed rrenkert@8182: */ rrenkert@8182: @Override rrenkert@8182: public boolean canHandle(String facettype) { rrenkert@8182: return COMPUTED_DISCHARGE_Q.equals(facettype); rrenkert@8182: } rrenkert@8182: rrenkert@8182: private void doDischargeOut( rrenkert@8182: DiagramGenerator generator, rrenkert@8182: ArtifactAndFacet bundle, rrenkert@8182: ThemeDocument theme, rrenkert@8182: boolean visible rrenkert@8182: ) { rrenkert@8182: CallContext context = generator.getCallContext(); rrenkert@8354: Map metaData = bundle.getFacet().getMetaData( rrenkert@8354: bundle.getArtifact(), context); rrenkert@8354: StyledXYSeries series = rrenkert@8354: new StyledXYSeries(bundle.getFacetDescription(), theme); rrenkert@8182: Object data = bundle.getData(context); rrenkert@8354: rrenkert@8354: series.putMetaData(metaData, bundle.getArtifact(), context); rrenkert@8354: yAxisLabel = metaData.get("Y"); rrenkert@8354: rrenkert@8182: WQKms wqkms = (WQKms) data; rrenkert@8182: double[][] wqData = new double[2][wqkms.size()]; rrenkert@8182: for (int i = 0; i < wqkms.size(); i++) { rrenkert@8182: wqData[0][i] = wqkms.getQ(i); rrenkert@8182: wqData[1][i] = wqkms.getW(i); rrenkert@8182: } rrenkert@8182: StyledSeriesBuilder.addPoints(series, wqData, false); rrenkert@8182: generator.addAxisSeries(series, axisName, visible); rrenkert@8182: } rrenkert@8182: }