[PATCH 6 of 8] Add SQRelation Processor
Wald Commits
scm-commit at wald.intevation.org
Fri Oct 4 17:56:40 CEST 2013
# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1380898805 -7200
# Node ID bb4a6b0077cf7bb67f2a43e43261a2e5fb428d70
# Parent a62c5b48ccab2215e5edbac89b42dc3d9052b5f6
Add SQRelation Processor
diff -r a62c5b48ccab -r bb4a6b0077cf artifacts/src/main/java/org/dive4elements/river/exports/process/SQRelationProcessor.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/process/SQRelationProcessor.java Fri Oct 04 17:00:05 2013 +0200
@@ -0,0 +1,110 @@
+/* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.exports.process;
+
+import org.apache.log4j.Logger;
+import org.jfree.data.xy.XYSeries;
+
+import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.exports.DiagramGenerator;
+import org.dive4elements.river.jfree.StyledXYSeries;
+import org.dive4elements.river.themes.ThemeDocument;
+import org.dive4elements.river.artifacts.model.FacetTypes;
+
+import org.dive4elements.river.jfree.JFreeUtil;
+
+import org.dive4elements.river.artifacts.model.sq.SQ;
+import org.dive4elements.river.artifacts.model.sq.SQFunction;
+
+public class SQRelationProcessor extends DefaultProcessor {
+
+ public static final String I18N_AXIS_LABEL =
+ "chart.sq_relation.yaxis.label";
+ public static final String I18N_AXIS_LABEL_DEFAULT =
+ "";
+
+ private final static Logger logger =
+ Logger.getLogger(SQRelationProcessor.class);
+
+ @Override
+ public void doOut(
+ DiagramGenerator generator,
+ ArtifactAndFacet bundle,
+ ThemeDocument theme,
+ boolean visible) {
+ CallContext context = generator.getCallContext();
+ String facetName = bundle.getFacetName();
+ XYSeries series;
+ Object data = bundle.getData(context);
+ String desc = bundle.getFacetDescription();
+
+ if (data == null) {
+ // Check has been here before so we keep it but
+ // this should never happen.
+ logger.error("Data is null for facet: " + facetName);
+ return;
+ }
+
+ if (FacetTypes.IS.SQ_CURVE(facetName)) {
+ SQFunction func = (SQFunction) data;
+
+ series = JFreeUtil.sampleFunction2DPositive(
+ func.getFunction(),
+ theme,
+ desc,
+ 500,
+ Math.max(func.getMinQ(), 0.01),
+ Math.max(func.getMaxQ(), 0.02));
+
+ } else if (FacetTypes.IS.SQ_MEASUREMENT(facetName) ||
+ FacetTypes.IS.SQ_OUTLIER(facetName)) {
+
+ SQ[] sqs = (SQ[]) data;
+ series = new StyledXYSeries(desc, theme);
+
+ for (SQ sq: sqs) {
+ double q = sq.getQ();
+ double s = sq.getS();
+ if (s > 0d && q > 0d) {
+ series.add(q, s, false);
+ }
+ }
+ } else {
+ logger.error("Could not handle: " + facetName);
+ return;
+ }
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Series '" + desc + "' has "
+ + series.getItemCount() + " items.");
+
+ logger.debug(" -> min x = " + series.getMinX());
+ logger.debug(" -> max x = " + series.getMaxX());
+ logger.debug(" -> min y = " + series.getMinY());
+ logger.debug(" -> max y = " + series.getMaxY());
+ }
+
+ generator.addAxisSeries(series, axisName, visible);
+ }
+
+ @Override
+ public boolean canHandle(String facettype) {
+ return FacetTypes.IS.SQ_CURVE(facettype) ||
+ FacetTypes.IS.SQ_MEASUREMENT(facettype) ||
+ FacetTypes.IS.SQ_OUTLIER(facettype);
+ }
+
+ @Override
+ public String getAxisLabel(DiagramGenerator generator) {
+ return generator.msg(
+ I18N_AXIS_LABEL,
+ I18N_AXIS_LABEL_DEFAULT);
+ }
+}
More information about the Dive4elements-commits
mailing list