Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/exports/process/KMIndexProcessor.java @ 4573:b87073a05f9d
flys-client: Patch to render combobox options as clickable links.
The way of passing data arguments to the links and further to
the Artifact feeding service is somewhat hacked and should be
refactored (later...).
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Tue, 27 Nov 2012 12:50:10 +0100 |
parents | 05a54b4d579d |
children | f59fbc9bd04a |
line wrap: on
line source
package de.intevation.flys.exports.process; import org.apache.log4j.Logger; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.w3c.dom.Document; import de.intevation.artifactdatabase.state.ArtifactAndFacet; import de.intevation.artifacts.CallContext; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.fixings.AnalysisPeriod; import de.intevation.flys.artifacts.model.fixings.QWD; import de.intevation.flys.exports.XYChartGenerator; import de.intevation.flys.jfree.StyledXYSeries; import de.intevation.flys.utils.KMIndex; public class KMIndexProcessor implements Processor { private static final Logger logger = Logger.getLogger(KMIndexProcessor.class); @Override public void doOut(XYChartGenerator generator, ArtifactAndFacet aandf, Document theme, boolean visible, int index) { String facettype = aandf.getFacetName(); if (facettype.contains(FacetTypes.FIX_SECTOR_AVERAGE_LS)) { doSectorAverageOut(generator, aandf, theme, visible, index); } else if (facettype.equals(FacetTypes.FIX_REFERENCE_EVENTS_LS)) { doReferenceEventsOut(generator, aandf, theme, visible, index); } else if (facettype.equals(FacetTypes.FIX_ANALYSIS_EVENTS_LS)) { doAnalysisEventsOut(generator, aandf, theme, visible, index); } } @Override public boolean canHandle(String facettype) { if (facettype == null) { return false; } if (facettype.equals(FacetTypes.FIX_SECTOR_AVERAGE_LS) || facettype.equals(FacetTypes.FIX_REFERENCE_EVENTS_LS) || facettype.equals(FacetTypes.FIX_ANALYSIS_EVENTS_LS)) { return true; } return false; } private void doSectorAverageOut(XYChartGenerator generator, ArtifactAndFacet aaf, Document doc, boolean visible, int idx) { logger.debug("doSectorAverageOut" + aaf.getFacet().getIndex()); CallContext context = generator.getCallContext(); int index = aaf.getFacet().getIndex(); int sectorNdx = index & 3; @SuppressWarnings("unchecked") KMIndex<AnalysisPeriod> kms = (KMIndex<AnalysisPeriod>)aaf.getData(context); if(kms == null) { return; } XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc); for (KMIndex.Entry<AnalysisPeriod> entry: kms) { double km = entry.getKm(); AnalysisPeriod ap = entry.getValue(); QWD qwd = ap.getQSectorAverages()[sectorNdx]; if (qwd == null) { continue; } double deltaW = qwd.getDeltaW(); series.add(km, deltaW); } generator.addAxisSeries(series, idx, visible); } private void doReferenceEventsOut(XYChartGenerator generator, ArtifactAndFacet aaf, Document doc, boolean visible, int idx) { logger.debug("doReferenceEventOut"); CallContext context = generator.getCallContext(); @SuppressWarnings("unchecked") KMIndex<QWD> kms = (KMIndex<QWD>)aaf.getData(context); if(kms == null) { return; } XYSeriesCollection col = new XYSeriesCollection(); StyledXYSeries series = new StyledXYSeries(aaf.getFacetDescription(), false, doc); for (KMIndex.Entry<QWD> entry: kms) { double km = entry.getKm(); QWD qwd = entry.getValue(); series.add(km, qwd.getDeltaW()); } col.addSeries(series); generator.addAxisDataset(col, idx, visible); } private void doAnalysisEventsOut(XYChartGenerator generator, ArtifactAndFacet aaf, Document doc, boolean visible, int idx) { logger.debug("doAnalysisEventsOut"); CallContext context = generator.getCallContext(); @SuppressWarnings("unchecked") KMIndex<QWD> kms = (KMIndex<QWD>)aaf.getData(context); if(kms == null) { return; } XYSeriesCollection col = new XYSeriesCollection(); StyledXYSeries series = new StyledXYSeries(aaf.getFacetDescription(), false, doc); for (KMIndex.Entry<QWD> entry: kms) { double km = entry.getKm(); QWD qwd = entry.getValue(); series.add(km, qwd.getDeltaW()); } col.addSeries(series); generator.addAxisDataset(col, idx, visible); } }