bjoern@4536: package de.intevation.flys.exports.process; bjoern@4536: bjoern@4536: import java.util.List; bjoern@4536: bjoern@4536: import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction; bjoern@4536: bjoern@4536: import org.apache.log4j.Logger; bjoern@4536: import org.jfree.data.xy.XYSeries; bjoern@4536: import org.w3c.dom.Document; bjoern@4536: bjoern@4536: import de.intevation.artifactdatabase.state.ArtifactAndFacet; bjoern@4536: import de.intevation.artifacts.CallContext; bjoern@4536: import de.intevation.flys.artifacts.model.minfo.BedHeightSingle; bjoern@4536: import de.intevation.flys.exports.XYChartGenerator; bjoern@4536: import de.intevation.flys.jfree.StyledXYSeries; bjoern@4536: import de.intevation.flys.model.BedHeightSingleValue; bjoern@4536: bjoern@4536: public class BedheightProcessor implements Processor { bjoern@4536: bjoern@4536: private final static Logger logger = bjoern@4536: Logger.getLogger(BedheightProcessor.class); bjoern@4536: bjoern@4536: private final static String BEDHEIGHT = "bedheight"; bjoern@4536: bjoern@4536: @Override bjoern@4536: public void doOut(XYChartGenerator generator, ArtifactAndFacet aandf, bjoern@4536: Document theme, boolean visible, int index) { bjoern@4536: CallContext context = generator.getCallContext(); bjoern@4536: Object data = aandf.getData(context); bjoern@4536: if (data instanceof BedHeightSingle) { bjoern@4536: doBedheightSingleOut(generator, aandf, theme, index, visible, bjoern@4536: (BedHeightSingle)data); bjoern@4536: } bjoern@4536: else if (data instanceof List) { bjoern@4536: doBedheightSingeValuesOut(generator, aandf, theme, index, visible, bjoern@4536: (List)data); bjoern@4536: } bjoern@4536: logger.error("Can't process " + data.getClass().getName() + " objects"); bjoern@4536: } bjoern@4536: bjoern@4536: private void doBedheightSingeValuesOut(XYChartGenerator generator, bjoern@4536: ArtifactAndFacet aandf, Document theme, int index, boolean visible, bjoern@4536: List data) { bjoern@4536: logger.debug("doBedheightSingleOut"); bjoern@4536: bjoern@4536: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), bjoern@4536: theme); bjoern@4536: for(BedHeightSingleValue bvalue: data) { bjoern@4536: series.add(bvalue.getStation(), bvalue.getSoundingWidth()); bjoern@4536: } bjoern@4536: generator.addAxisSeries(series, index, visible); bjoern@4536: } bjoern@4536: bjoern@4536: @Override bjoern@4536: public boolean canHandle(String facettype) { bjoern@4536: return BEDHEIGHT.equals(facettype); bjoern@4536: } bjoern@4536: bjoern@4536: public void doBedheightSingleOut(XYChartGenerator generator, bjoern@4536: ArtifactAndFacet aandf, Document theme, int index, boolean visible, bjoern@4536: BedHeightSingle data) { bjoern@4536: double[] width = data.getMorphWidths(); bjoern@4536: double[] stations = data.getStations().toNativeArray(); bjoern@4536: bjoern@4536: logger.debug("doBedheightSingleOut"); bjoern@4536: bjoern@4536: XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), bjoern@4536: theme); bjoern@4536: bjoern@4536: for (int i = 0; i < width.length; i++) { bjoern@4536: series.add(stations[i], width[i], false); bjoern@4536: } bjoern@4536: bjoern@4536: generator.addAxisSeries(series, index, visible); bjoern@4536: } bjoern@4536: bjoern@4536: }