comparison artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java @ 7099:24f153ad1f40 generator-refactoring

Use pre-converted diagram attributes now.
author Sascha L. Teichmann <teichmann@intevation.de>
date Mon, 23 Sep 2013 12:28:22 +0200
parents c64c04d0796e
children eb3a2bc5d591
comparison
equal deleted inserted replaced
7098:7dc31a235232 7099:24f153ad1f40
8 8
9 package org.dive4elements.river.exports; 9 package org.dive4elements.river.exports;
10 10
11 import java.awt.Color; 11 import java.awt.Color;
12 import java.awt.Font; 12 import java.awt.Font;
13
13 import java.text.NumberFormat; 14 import java.text.NumberFormat;
15
14 import java.util.ArrayList; 16 import java.util.ArrayList;
15 import java.util.HashMap; 17 import java.util.HashMap;
16 import java.util.List; 18 import java.util.List;
17 import java.util.Map; 19 import java.util.Map;
18 20
19 import javax.swing.ImageIcon; 21 import javax.swing.ImageIcon;
20 22
21 import org.apache.log4j.Logger; 23 import org.apache.log4j.Logger;
24
25 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
26 import org.dive4elements.artifactdatabase.state.Facet;
27
28 import org.dive4elements.river.artifacts.D4EArtifact;
29
30 import org.dive4elements.river.exports.process.Processor;
31
32 import org.dive4elements.river.jfree.AnnotationHelper;
33 import org.dive4elements.river.jfree.AxisDataset;
34 import org.dive4elements.river.jfree.Bounds;
35 import org.dive4elements.river.jfree.DoubleBounds;
36 import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
37
38 import org.dive4elements.river.themes.ThemeDocument;
39
22 import org.jfree.chart.ChartFactory; 40 import org.jfree.chart.ChartFactory;
23 import org.jfree.chart.JFreeChart; 41 import org.jfree.chart.JFreeChart;
24 import org.jfree.chart.LegendItem; 42 import org.jfree.chart.LegendItem;
43
25 import org.jfree.chart.annotations.XYAnnotation; 44 import org.jfree.chart.annotations.XYAnnotation;
26 import org.jfree.chart.annotations.XYImageAnnotation; 45 import org.jfree.chart.annotations.XYImageAnnotation;
27 import org.jfree.chart.annotations.XYTextAnnotation; 46
47 import org.jfree.chart.axis.LogarithmicAxis;
28 import org.jfree.chart.axis.NumberAxis; 48 import org.jfree.chart.axis.NumberAxis;
29 import org.jfree.chart.axis.ValueAxis; 49 import org.jfree.chart.axis.ValueAxis;
30 import org.jfree.chart.axis.LogarithmicAxis; 50
31 import org.jfree.chart.plot.Marker; 51 import org.jfree.chart.plot.Marker;
32 import org.jfree.chart.plot.PlotOrientation; 52 import org.jfree.chart.plot.PlotOrientation;
33 import org.jfree.chart.plot.XYPlot; 53 import org.jfree.chart.plot.XYPlot;
54
34 import org.jfree.data.Range; 55 import org.jfree.data.Range;
56
35 import org.jfree.data.general.Series; 57 import org.jfree.data.general.Series;
58
36 import org.jfree.data.xy.XYDataset; 59 import org.jfree.data.xy.XYDataset;
37 import org.jfree.data.xy.XYSeries; 60 import org.jfree.data.xy.XYSeries;
38 import org.jfree.data.xy.XYSeriesCollection; 61 import org.jfree.data.xy.XYSeriesCollection;
39 62
40 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
41 import org.dive4elements.artifactdatabase.state.Facet;
42 import org.dive4elements.river.artifacts.D4EArtifact;
43 import org.dive4elements.river.exports.process.Processor;
44 import org.dive4elements.river.jfree.AxisDataset;
45 import org.dive4elements.river.jfree.AnnotationHelper;
46 import org.dive4elements.river.jfree.Bounds;
47 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation;
48 import org.dive4elements.river.jfree.DoubleBounds;
49 import org.dive4elements.river.jfree.RiverAnnotation;
50 import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
51 import org.dive4elements.river.jfree.StyledXYSeries;
52 import org.dive4elements.river.themes.ThemeDocument;
53
54 import org.w3c.dom.Element;
55 63
56 /** 64 /**
57 * The main diagram creation class. 65 * The main diagram creation class.
58 * 66 *
59 * This class is the glue between output processors and facets. 67 * This class is the glue between output processors and facets.
88 protected Map<Integer, Bounds> yBounds; 96 protected Map<Integer, Bounds> yBounds;
89 97
90 /** Whether or not the plot is inverted (left-right). */ 98 /** Whether or not the plot is inverted (left-right). */
91 private boolean inverted; 99 private boolean inverted;
92 100
93 protected DiagramAttributes diagramAttributes; 101 protected DiagramAttributes.Instance diagramAttributes;
94 102
95 public DiagramGenerator() { 103 public DiagramGenerator() {
96 super(); 104 super();
97 105
98 xBounds = new HashMap<Integer, Bounds>(); 106 xBounds = new HashMap<Integer, Bounds>();
99 yBounds = new HashMap<Integer, Bounds>(); 107 yBounds = new HashMap<Integer, Bounds>();
100 } 108 }
101 109
102 @Override 110 @Override
103 public void setup(Object config) { 111 public void setup(Object config) {
104 Element cfg = (Element)config; 112
105 logger.debug("DiagramGenerator.setup"); 113 if (!(config instanceof DiagramAttributes)) {
106 // TODO: XML DOM is not thread safe! We have to re-factor this. 114 logger.error("invalid config type");
107 synchronized (cfg.getOwnerDocument()) { 115 return;
108 diagramAttributes = new DiagramAttributes(cfg); 116 }
109 } 117 DiagramAttributes da = (DiagramAttributes)config;
118 diagramAttributes = da.new Instance();
110 } 119 }
111 120
112 /** 121 /**
113 * Generate the chart anew (including localized axis and all). 122 * Generate the chart anew (including localized axis and all).
114 */ 123 */

http://dive4elements.wald.intevation.org