comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/QWSeriesCollection.java @ 3729:e727e3ebdf85

Factored out a pure QW model to be more reusable. flys-artifacts/trunk@5402 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sat, 08 Sep 2012 14:19:40 +0000
parents 04d090d06d3f
children
comparison
equal deleted inserted replaced
3728:d03e65378b9f 3729:e727e3ebdf85
1 package de.intevation.flys.artifacts.services; 1 package de.intevation.flys.artifacts.services;
2 2
3 import de.intevation.flys.artifacts.model.fixings.QW; 3 import de.intevation.flys.artifacts.model.fixings.QWI;
4 4
5 import de.intevation.flys.java2d.ShapeUtils; 5 import de.intevation.flys.java2d.ShapeUtils;
6 6
7 import de.intevation.flys.jfree.ShapeRenderer; 7 import de.intevation.flys.jfree.ShapeRenderer;
8 8
36 public class QWSeriesCollection 36 public class QWSeriesCollection
37 extends XYSeriesCollection 37 extends XYSeriesCollection
38 implements XYItemLabelGenerator 38 implements XYItemLabelGenerator
39 { 39 {
40 public interface LabelGenerator { 40 public interface LabelGenerator {
41 String createLabel(QW qw); 41 String createLabel(QWI qw);
42 } // interface LabelGenerator 42 } // interface LabelGenerator
43 43
44 public static class DateFormatLabelGenerator 44 public static class DateFormatLabelGenerator
45 implements LabelGenerator 45 implements LabelGenerator
46 { 46 {
57 public DateFormatLabelGenerator(DateFormat format) { 57 public DateFormatLabelGenerator(DateFormat format) {
58 this.format = format; 58 this.format = format;
59 } 59 }
60 60
61 @Override 61 @Override
62 public String createLabel(QW qw) { 62 public String createLabel(QWI qw) {
63 Date date = qw.getDate(); 63 Date date = qw.getDate();
64 return date != null ? format.format(date) : ""; 64 return date != null ? format.format(date) : "";
65 } 65 }
66 } // class DateFormatLabelGenerator 66 } // class DateFormatLabelGenerator
67 67
69 new DateFormatLabelGenerator(); 69 new DateFormatLabelGenerator();
70 70
71 protected Date minDate; 71 protected Date minDate;
72 protected Date maxDate; 72 protected Date maxDate;
73 73
74 protected List<List<QW>> labels; 74 protected List<List<QWI>> labels;
75 75
76 protected Rectangle2D area; 76 protected Rectangle2D area;
77 77
78 protected LabelGenerator labelGenerator; 78 protected LabelGenerator labelGenerator;
79 79
80 protected Map<ShapeRenderer.Entry, Integer> knownShapes = 80 protected Map<ShapeRenderer.Entry, Integer> knownShapes =
81 new HashMap<ShapeRenderer.Entry, Integer>(); 81 new HashMap<ShapeRenderer.Entry, Integer>();
82 82
83 public QWSeriesCollection() { 83 public QWSeriesCollection() {
84 labels = new ArrayList<List<QW>>(); 84 labels = new ArrayList<List<QWI>>();
85 labelGenerator = SIMPLE_GENERATOR; 85 labelGenerator = SIMPLE_GENERATOR;
86 } 86 }
87 87
88 public QWSeriesCollection(LabelGenerator labelGenerator) { 88 public QWSeriesCollection(LabelGenerator labelGenerator) {
89 this(); 89 this();
90 this.labelGenerator = labelGenerator; 90 this.labelGenerator = labelGenerator;
91 } 91 }
92 92
93 protected static ShapeRenderer.Entry classify(QW qw) { 93 protected static ShapeRenderer.Entry classify(QWI qw) {
94 boolean interpolated = qw.getInterpolated(); 94 boolean interpolated = qw.getInterpolated();
95 95
96 Shape shape = interpolated 96 Shape shape = interpolated
97 ? ShapeUtils.INTERPOLATED_SHAPE 97 ? ShapeUtils.INTERPOLATED_SHAPE
98 : ShapeUtils.MEASURED_SHAPE; 98 : ShapeUtils.MEASURED_SHAPE;
101 Color color = Color.blue; 101 Color color = Color.blue;
102 102
103 return new ShapeRenderer.Entry(shape, color, filled); 103 return new ShapeRenderer.Entry(shape, color, filled);
104 } 104 }
105 105
106 public void add(QW qw) { 106 public void add(QWI qw) {
107 107
108 ShapeRenderer.Entry key = classify(qw); 108 ShapeRenderer.Entry key = classify(qw);
109 109
110 Integer seriesNo = knownShapes.get(key); 110 Integer seriesNo = knownShapes.get(key);
111 111
114 if (seriesNo == null) { 114 if (seriesNo == null) {
115 seriesNo = Integer.valueOf(getSeriesCount()); 115 seriesNo = Integer.valueOf(getSeriesCount());
116 knownShapes.put(key, seriesNo); 116 knownShapes.put(key, seriesNo);
117 series = new XYSeries(seriesNo, false); 117 series = new XYSeries(seriesNo, false);
118 addSeries(series); 118 addSeries(series);
119 labels.add(new ArrayList<QW>()); 119 labels.add(new ArrayList<QWI>());
120 } 120 }
121 else { 121 else {
122 series = getSeries(seriesNo); 122 series = getSeries(seriesNo);
123 } 123 }
124 124
128 128
129 extendDateRange(qw); 129 extendDateRange(qw);
130 extendArea(qw); 130 extendArea(qw);
131 } 131 }
132 132
133 protected void extendDateRange(QW qw) { 133 protected void extendDateRange(QWI qw) {
134 Date date = qw.getDate(); 134 Date date = qw.getDate();
135 if (date != null) { 135 if (date != null) {
136 if (minDate == null) { 136 if (minDate == null) {
137 minDate = maxDate = date; 137 minDate = maxDate = date;
138 } 138 }
145 } 145 }
146 } 146 }
147 } 147 }
148 } 148 }
149 149
150 protected void extendArea(QW qw) { 150 protected void extendArea(QWI qw) {
151 if (area == null) { 151 if (area == null) {
152 area = new Rectangle2D.Double( 152 area = new Rectangle2D.Double(
153 qw.getQ(), qw.getW(), 0d, 0d); 153 qw.getQ(), qw.getW(), 0d, 0d);
154 } 154 }
155 else { 155 else {

http://dive4elements.wald.intevation.org