comparison flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixWQCurveGenerator.java @ 3578:bae185bf9d2d

Theme the qsector markers. flys-artifacts/trunk@5193 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Mon, 13 Aug 2012 07:35:57 +0000
parents e7f1556192b3
children c105b4466b4e
comparison
equal deleted inserted replaced
3577:25cce741d03c 3578:bae185bf9d2d
3 import de.intevation.artifactdatabase.state.ArtifactAndFacet; 3 import de.intevation.artifactdatabase.state.ArtifactAndFacet;
4 import de.intevation.flys.artifacts.FLYSArtifact; 4 import de.intevation.flys.artifacts.FLYSArtifact;
5 import de.intevation.flys.artifacts.access.FixAnalysisAccess; 5 import de.intevation.flys.artifacts.access.FixAnalysisAccess;
6 import de.intevation.flys.artifacts.model.DateRange; 6 import de.intevation.flys.artifacts.model.DateRange;
7 import de.intevation.flys.artifacts.model.FacetTypes; 7 import de.intevation.flys.artifacts.model.FacetTypes;
8 import de.intevation.flys.artifacts.model.NamedDouble;
8 import de.intevation.flys.artifacts.model.QWDDateRange; 9 import de.intevation.flys.artifacts.model.QWDDateRange;
9 import de.intevation.flys.artifacts.model.fixings.FixFunction; 10 import de.intevation.flys.artifacts.model.fixings.FixFunction;
10 import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet; 11 import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet;
11 import de.intevation.flys.artifacts.model.fixings.QW; 12 import de.intevation.flys.artifacts.model.fixings.QW;
12 import de.intevation.flys.artifacts.model.fixings.QWD; 13 import de.intevation.flys.artifacts.model.fixings.QWD;
16 import de.intevation.flys.jfree.FLYSAnnotation; 17 import de.intevation.flys.jfree.FLYSAnnotation;
17 import de.intevation.flys.jfree.JFreeUtil; 18 import de.intevation.flys.jfree.JFreeUtil;
18 import de.intevation.flys.jfree.StyledXYSeries; 19 import de.intevation.flys.jfree.StyledXYSeries;
19 import de.intevation.flys.utils.ThemeUtil; 20 import de.intevation.flys.utils.ThemeUtil;
20 21
22 import org.jfree.chart.plot.Marker;
23 import org.jfree.chart.plot.ValueMarker;
24 import org.jfree.ui.RectangleAnchor;
25 import org.jfree.ui.TextAnchor;
26
27 import java.awt.BasicStroke;
28 import java.awt.Color;
29
30
21 import java.text.DateFormat; 31 import java.text.DateFormat;
22 import java.util.ArrayList; 32 import java.util.ArrayList;
23 import java.util.List; 33 import java.util.List;
24 34
25 import org.apache.log4j.Logger; 35 import org.apache.log4j.Logger;
97 doWQCurveOut(aaf, doc, visible); 107 doWQCurveOut(aaf, doc, visible);
98 } 108 }
99 else if(FIX_OUTLIER.equals(name)) { 109 else if(FIX_OUTLIER.equals(name)) {
100 doOutlierOut(aaf, doc, visible); 110 doOutlierOut(aaf, doc, visible);
101 } 111 }
112 else if(QSECTOR.equals(name)) {
113 doQSectorOut(aaf, doc, visible);
114 }
102 else { 115 else {
103 logger.warn("Unknown facet name " + name); 116 logger.warn("Unknown facet name " + name);
104 return; 117 return;
105 } 118 }
106 } 119 }
174 protected void doOutlierOut(ArtifactAndFacet aaf, Document doc, boolean visible) { 187 protected void doOutlierOut(ArtifactAndFacet aaf, Document doc, boolean visible) {
175 logger.debug("doOutlierOut"); 188 logger.debug("doOutlierOut");
176 189
177 QW[] qws = (QW[])aaf.getData(context); 190 QW[] qws = (QW[])aaf.getData(context);
178 addQWSeries(qws, aaf, doc, visible); 191 addQWSeries(qws, aaf, doc, visible);
192 }
193
194
195 /** Add markers for q sectors. */
196 protected void doQSectorOut(ArtifactAndFacet aaf, Document theme, boolean visible) {
197 logger.debug("doQSectorOut");
198 if (!visible) {
199 return;
200 }
201
202 List<NamedDouble> qsectors = (List<NamedDouble>) aaf.getData(context);
203
204 if (qsectors == null) {
205 logger.warn("No QSectors coming from data.");
206 return;
207 }
208 for (NamedDouble qsector : qsectors) {
209 if (Double.isNaN(qsector.getValue())) {
210 continue;
211 }
212 Marker m = new ValueMarker(qsector.getValue());
213 m.setPaint(Color.black);
214
215 float[] dashes = ThemeUtil.parseLineStyle(theme);
216 int size = ThemeUtil.parseLineWidth(theme);
217 BasicStroke stroke;
218 if (dashes.length <= 1) {
219 stroke = new BasicStroke(Integer.valueOf(size));
220 }
221 else {
222 stroke = new BasicStroke(Integer.valueOf(size),
223 BasicStroke.CAP_BUTT,
224 BasicStroke.JOIN_ROUND,
225 1.0f,
226 dashes,
227 0.0f);
228 }
229 m.setStroke(stroke);
230
231 if (ThemeUtil.parseShowLineLabel(theme)) {
232 m.setLabel(qsector.getName());
233 m.setPaint(ThemeUtil.parseTextColor(theme));
234 m.setLabelFont(ThemeUtil.parseTextFont(theme));
235 }
236 Color paint = ThemeUtil.parseLineColorField(theme);
237 if (paint != null) {
238 m.setPaint(paint);
239 }
240 m.setLabelAnchor(RectangleAnchor.TOP_LEFT);
241 m.setLabelTextAnchor(TextAnchor.TOP_LEFT);
242 addDomainMarker(m);
243 }
179 } 244 }
180 245
181 protected void addQWSeries(QW[] qws, ArtifactAndFacet aaf, Document theme, boolean visible) { 246 protected void addQWSeries(QW[] qws, ArtifactAndFacet aaf, Document theme, boolean visible) {
182 if(qws != null) { 247 if(qws != null) {
183 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); 248 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme);

http://dive4elements.wald.intevation.org