Mercurial > dive4elements > river
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 { |