rrenkert@8207: package org.dive4elements.river.exports.process; rrenkert@8207: rrenkert@8354: import java.util.Map; rrenkert@8354: rrenkert@8207: import org.apache.log4j.Logger; rrenkert@8207: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; rrenkert@8354: 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@8207: import org.dive4elements.river.artifacts.model.FacetTypes; rrenkert@8207: import org.dive4elements.river.artifacts.model.fixings.FixDerivateFacet; rrenkert@8207: import org.dive4elements.river.artifacts.model.fixings.FixFunction; rrenkert@8354: import org.dive4elements.river.artifacts.resources.Resources; rrenkert@8207: import org.dive4elements.river.exports.DiagramGenerator; rrenkert@8207: import org.dive4elements.river.jfree.JFreeUtil; rrenkert@8207: import org.dive4elements.river.jfree.StyledXYSeries; rrenkert@8207: import org.dive4elements.river.themes.ThemeDocument; rrenkert@8207: rrenkert@8207: rrenkert@8207: public class FixDerivedProcessor rrenkert@8207: extends DefaultProcessor rrenkert@8207: implements FacetTypes rrenkert@8207: { rrenkert@8207: rrenkert@8207: private static Logger log = Logger.getLogger(FixDerivedProcessor.class); rrenkert@8207: rrenkert@8354: private String yAxisLabel = ""; rrenkert@8354: rrenkert@8354: private String I18N_AXIS_LABEL = "chart.discharge.curve.yaxis.label"; rrenkert@8354: rrenkert@8354: rrenkert@8207: public FixDerivedProcessor() { rrenkert@8207: } rrenkert@8207: rrenkert@8207: @Override rrenkert@8207: public void doOut( rrenkert@8207: DiagramGenerator generator, rrenkert@8207: ArtifactAndFacet bundle, rrenkert@8207: ThemeDocument theme, rrenkert@8207: boolean visible rrenkert@8207: ) { rrenkert@8354: CallContext context = generator.getCallContext(); rrenkert@8354: Map metaData = bundle.getFacet().getMetaData( rrenkert@8354: bundle.getArtifact(), context); rrenkert@8207: FixDerivateFacet facet = (FixDerivateFacet)bundle.getFacet(); rrenkert@8207: FixFunction func = (FixFunction)facet.getData( rrenkert@8207: bundle.getArtifact(), generator.getCallContext()); rrenkert@8207: rrenkert@8354: yAxisLabel = metaData.get("Y"); rrenkert@8354: rrenkert@8354: rrenkert@8207: if (func == null) { rrenkert@8207: log.warn("doOut: Facet does not contain FixFunction"); rrenkert@8207: return; rrenkert@8207: } rrenkert@8207: rrenkert@8207: double maxQ = func.getMaxQ(); rrenkert@8207: rrenkert@8207: if (maxQ > 0) { rrenkert@8207: StyledXYSeries series = JFreeUtil.sampleFunction2D( rrenkert@8207: func.getFunction(), rrenkert@8207: theme, rrenkert@8207: bundle.getFacetDescription(), rrenkert@8207: 500, // number of samples rrenkert@8207: 0.0 , // start rrenkert@8207: maxQ); // end rrenkert@8207: generator.addAxisSeries(series, axisName, visible); rrenkert@8354: series.putMetaData(metaData, bundle.getArtifact(), context); rrenkert@8207: } teichmann@8374: rrenkert@8207: } rrenkert@8207: rrenkert@8207: @Override rrenkert@8207: public boolean canHandle(String facettype) { rrenkert@8207: return FIX_DERIVATE_CURVE.equals(facettype); rrenkert@8207: } rrenkert@8354: rrenkert@8354: @Override rrenkert@8354: public String getAxisLabel(DiagramGenerator generator) { rrenkert@8354: CallMeta meta = generator.getCallContext().getMeta(); tom@8856: RiverAccess access = tom@8856: new RiverAccess((D4EArtifact)generator.getMaster()); rrenkert@8354: String unit = access.getRiver().getWstUnit().getName(); rrenkert@8354: 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@8354: } rrenkert@8207: }