aheinecke@7050: /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde aheinecke@7050: * Software engineering by Intevation GmbH aheinecke@7050: * aheinecke@7050: * This file is Free Software under the GNU AGPL (>=v3) aheinecke@7050: * and comes with ABSOLUTELY NO WARRANTY! Check out the aheinecke@7050: * documentation coming with Dive4Elements River for details. aheinecke@7050: */ aheinecke@7050: aheinecke@7050: package org.dive4elements.river.exports.process; aheinecke@7050: aheinecke@7050: import org.apache.log4j.Logger; aheinecke@7050: aheinecke@7050: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; aheinecke@7050: import org.dive4elements.artifacts.CallContext; aheinecke@7050: import org.dive4elements.river.artifacts.model.FacetTypes; aheinecke@7067: import org.dive4elements.river.exports.DiagramGenerator; aheinecke@7050: import org.dive4elements.river.exports.XYChartGenerator; aheinecke@7050: import org.dive4elements.river.jfree.RiverAnnotation; aheinecke@7050: import org.dive4elements.river.themes.ThemeDocument; aheinecke@7050: aheinecke@7050: /** aheinecke@7050: * Add data to chart/generator. aheinecke@7050: * aheinecke@7050: */ aheinecke@7057: public class AnnotationProcessor extends DefaultProcessor { aheinecke@7050: aheinecke@7050: /** Private logger. */ aheinecke@7050: private static final Logger logger = aheinecke@7050: Logger.getLogger(AnnotationProcessor.class); aheinecke@7050: aheinecke@7050: @Override aheinecke@7050: public void doOut( aheinecke@7067: DiagramGenerator generator, aheinecke@7075: ArtifactAndFacet bundle, aheinecke@7067: ThemeDocument theme, aheinecke@7067: boolean visible) { aheinecke@7067: if (!visible) { aheinecke@7067: // Nothing to do aheinecke@7067: return; aheinecke@7067: } aheinecke@7067: CallContext context = generator.getCallContext(); aheinecke@7075: if (!(bundle.getData(context) instanceof RiverAnnotation)) { aheinecke@7067: // Just a bit defensive should not happen aheinecke@7067: logger.error("Incompatible facet in doOut"); aheinecke@7067: return; aheinecke@7067: } aheinecke@7075: RiverAnnotation ra = (RiverAnnotation)bundle.getData(context); aheinecke@7067: ra.setTheme(theme); aheinecke@7075: ra.setLabel(bundle.getFacetDescription()); aheinecke@7067: generator.addAnnotations(ra); aheinecke@7067: } aheinecke@7067: aheinecke@7067: @Override aheinecke@7067: public void doOut( aheinecke@7050: XYChartGenerator generator, aheinecke@7075: ArtifactAndFacet bundle, aheinecke@7050: ThemeDocument theme, aheinecke@7050: boolean visible, aheinecke@7050: int index) aheinecke@7050: { aheinecke@7050: if (!visible) { aheinecke@7050: // Nothing to do aheinecke@7050: return; aheinecke@7050: } aheinecke@7050: CallContext context = generator.getCallContext(); aheinecke@7075: if (!(bundle.getData(context) instanceof RiverAnnotation)) { aheinecke@7050: // Just a bit defensive should not happen aheinecke@7050: logger.error("Incompatible facet in doOut"); aheinecke@7050: return; aheinecke@7050: } aheinecke@7075: RiverAnnotation ra = (RiverAnnotation)bundle.getData(context); aheinecke@7050: ra.setTheme(theme); aheinecke@7075: ra.setLabel(bundle.getFacetDescription()); aheinecke@7050: generator.addAnnotations(ra); aheinecke@7050: } aheinecke@7050: aheinecke@7050: @Override aheinecke@7050: public boolean canHandle(String facetType) { aheinecke@7050: if (facetType == null) { aheinecke@7050: return false; aheinecke@7050: } aheinecke@7129: return facetType.equals(FacetTypes.LONGITUDINAL_ANNOTATION) || aheinecke@7161: facetType.equals(FacetTypes.MIDDLE_BED_HEIGHT_ANNOTATION) || aheinecke@7161: facetType.equals(FacetTypes.FLOW_VELOCITY_ANNOTATION); aheinecke@7050: } aheinecke@7050: }