annotate artifacts/src/main/java/org/dive4elements/river/artifacts/services/BedKMChartService.java @ 8856:5e38e2924c07 3.2.x

Fix code style.
author Tom Gottfried <tom@intevation.de>
date Thu, 18 Jan 2018 20:12:01 +0100
parents fe7e9da6312a
children 0a5239a1e46e
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
9 package org.dive4elements.river.artifacts.services;
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import java.awt.Color;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import java.awt.Dimension;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 import java.awt.Transparency;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import java.awt.image.BufferedImage;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import java.io.ByteArrayOutputStream;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 import java.io.IOException;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import java.util.Date;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 import java.util.List;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import javax.imageio.ImageIO;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import org.apache.log4j.Logger;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 import org.jfree.chart.ChartFactory;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 import org.jfree.chart.JFreeChart;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 import org.jfree.chart.axis.DateAxis;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 import org.jfree.chart.plot.PlotOrientation;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 import org.jfree.chart.plot.XYPlot;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 import org.jfree.data.xy.XYSeries;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 import org.jfree.data.xy.XYSeriesCollection;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 import org.w3c.dom.Document;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 import org.w3c.dom.Element;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 import org.w3c.dom.NodeList;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
35 import org.dive4elements.artifactdatabase.DefaultService;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
36 import org.dive4elements.artifacts.CallMeta;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
37 import org.dive4elements.artifacts.GlobalContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
38 import org.dive4elements.artifacts.Service;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
39 import org.dive4elements.river.artifacts.model.minfo.BedOverview;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
40 import org.dive4elements.river.artifacts.model.minfo.BedOverviewFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
41 import org.dive4elements.river.artifacts.resources.Resources;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
42 import org.dive4elements.river.backend.SedDBSessionHolder;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4051
diff changeset
43 import org.dive4elements.river.utils.KMIndex;
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 public class BedKMChartService extends DefaultService {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 private static final long serialVersionUID = -4946194087923870485L;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 private static final Logger log =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 Logger.getLogger(BedKMChartService.class);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 public static final int DEFAULT_WIDTH = 240;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 public static final int DEFAULT_HEIGHT = 180;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 public static final String I18N_CHART_LABEL =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 "bed.km.chart.label";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58 public static final String DEFAULT_CHART_LABEL =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 "Measuring Points";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 public static final String I18N_CHART_TITLE =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 "bed.km.chart.title";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 public static final String DEFAULT_CHART_TITLE =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 "Measuring points";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 public static final String I18N_KM_AXIS =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 "bed.km.chart.km.axis";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 public static final String DEFAULT_KM_AXIS =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 "km";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 public static final String I18N_DATE_AXIS =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 "bed.km.chart.date.axis";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 public static final String DEFAULT_DATE_AXIS =
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 "Date";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 public static final String DEFAULT_FORMAT = "png";
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 // TODO: Load fancy image from resources.
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
82 public static final byte [] EMPTY = {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 (byte)0x89, (byte)0x50, (byte)0x4e, (byte)0x47,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
84 (byte)0x0d, (byte)0x0a, (byte)0x1a, (byte)0x0a,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
85 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x0d,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
86 (byte)0x49, (byte)0x48, (byte)0x44, (byte)0x52,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
87 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
88 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
89 (byte)0x08, (byte)0x00, (byte)0x00, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
90 (byte)0x00, (byte)0x3a, (byte)0x7e, (byte)0x9b,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
91 (byte)0x55, (byte)0x00, (byte)0x00, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
92 (byte)0x01, (byte)0x73, (byte)0x52, (byte)0x47,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
93 (byte)0x42, (byte)0x00, (byte)0xae, (byte)0xce,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
94 (byte)0x1c, (byte)0xe9, (byte)0x00, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
95 (byte)0x00, (byte)0x09, (byte)0x70, (byte)0x48,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
96 (byte)0x59, (byte)0x73, (byte)0x00, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
97 (byte)0x0b, (byte)0x13, (byte)0x00, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 (byte)0x0b, (byte)0x13, (byte)0x01, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
99 (byte)0x9a, (byte)0x9c, (byte)0x18, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
100 (byte)0x00, (byte)0x00, (byte)0x07, (byte)0x74,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
101 (byte)0x49, (byte)0x4d, (byte)0x45, (byte)0x07,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
102 (byte)0xdc, (byte)0x04, (byte)0x04, (byte)0x10,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 (byte)0x30, (byte)0x15, (byte)0x7d, (byte)0x77,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104 (byte)0x36, (byte)0x0b, (byte)0x00, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105 (byte)0x00, (byte)0x08, (byte)0x74, (byte)0x45,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
106 (byte)0x58, (byte)0x74, (byte)0x43, (byte)0x6f,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
107 (byte)0x6d, (byte)0x6d, (byte)0x65, (byte)0x6e,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
108 (byte)0x74, (byte)0x00, (byte)0xf6, (byte)0xcc,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
109 (byte)0x96, (byte)0xbf, (byte)0x00, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
110 (byte)0x00, (byte)0x0a, (byte)0x49, (byte)0x44,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
111 (byte)0x41, (byte)0x54, (byte)0x08, (byte)0xd7,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
112 (byte)0x63, (byte)0xf8, (byte)0x0f, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
113 (byte)0x01, (byte)0x01, (byte)0x01, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
114 (byte)0x1b, (byte)0xb6, (byte)0xee, (byte)0x56,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
115 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
116 (byte)0x49, (byte)0x45, (byte)0x4e, (byte)0x44,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
117 (byte)0xae, (byte)0x42, (byte)0x60, (byte)0x82
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
118 };
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120 private static final Output empty() {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 return new Output(EMPTY, "image/png");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
123
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124 @Override
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125 public Service.Output process(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126 Document data,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 GlobalContext globalContext,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
128 CallMeta callMeta
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
129 ) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
130 log.debug("SQKMChartService.process");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
131
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
132 SedDBSessionHolder.acquire();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
133 try {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
134 return doProcess(data, globalContext, callMeta);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
135 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
136 finally {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
137 SedDBSessionHolder.release();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
138 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
139 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
140
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
141 protected Service.Output doProcess(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
142 Document input,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
143 GlobalContext globalContext,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
144 CallMeta callMeta
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
145 ) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
146 String river = getRiverName(input);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
147 Dimension extent = getExtent(input);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
148 String format = getFormat(input);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
149
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
150 if (river == null) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
151 log.warn("River invalid.");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
152 return empty();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
153 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
154
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
155 BedOverview overview = BedOverviewFactory.getOverview(river);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
156
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
157 if (overview == null) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
158 log.warn("No overview found for river '" + river + "'");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
159 return empty();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
160 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
161
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
162 KMIndex<List<Date>> entries = overview.filter(BedOverview.ACCEPT);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
163
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
164 JFreeChart chart = createChart(entries, river, callMeta);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
165
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
166 return encode(chart, extent, format);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
167 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
168
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
169 protected static Output encode(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
170 JFreeChart chart,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
171 Dimension extent,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
172 String format
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
173 ) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
174 BufferedImage image = chart.createBufferedImage(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
175 extent.width, extent.height,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
176 Transparency.BITMASK,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
177 null);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
178
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
179 ByteArrayOutputStream out = new ByteArrayOutputStream();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
180
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
181 try {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
182 ImageIO.write(image, format, out);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
183 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
184 catch (IOException ioe) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
185 log.warn("writing image failed", ioe);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
186 return empty();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
187 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
188
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
189 return new Output(out.toByteArray(), "image/" + format);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
190 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
191
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
192 protected static JFreeChart createChart(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
193 KMIndex<List<Date>> entries,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
194 String river,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
195 CallMeta callMeta
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
196 ) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
197
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
198 XYSeriesCollection dataset = new XYSeriesCollection();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
199 String key = Resources.format(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
200 callMeta, I18N_CHART_LABEL, DEFAULT_CHART_LABEL, river);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
201
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
202 XYSeries series = new XYSeries(key);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
203 for (KMIndex.Entry<List<Date>> e: entries) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
204 double km = e.getKm();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
205 List<Date> ds = e.getValue();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
206 for (Date d: ds) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
207 series.add(km, d.getTime());
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
208 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
209 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
210
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
211 dataset.addSeries(series);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
212 String title = Resources.format(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
213 callMeta, I18N_CHART_TITLE, DEFAULT_CHART_TITLE, river);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
214
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
215 String kmAxis = Resources.getMsg(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
216 callMeta, I18N_KM_AXIS, DEFAULT_KM_AXIS);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
217
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
218 String dateAxis = Resources.getMsg(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
219 callMeta, I18N_DATE_AXIS, DEFAULT_DATE_AXIS);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
220
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
221 JFreeChart chart = ChartFactory.createXYLineChart(
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
222 title,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
223 kmAxis,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
224 dateAxis,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
225 null,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
226 PlotOrientation.VERTICAL,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
227 true,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
228 true,
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
229 false);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
230
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
231 XYPlot plot = (XYPlot)chart.getPlot();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
232
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
233 DateAxis dA = new DateAxis();
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
234 plot.setRangeAxis(dA);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
235 plot.setDataset(0, dataset);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
236
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
237 chart.setBackgroundPaint(Color.white);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
238 plot.setBackgroundPaint(Color.white);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
239 plot.setDomainGridlinePaint(Color.gray);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
240 plot.setRangeGridlinePaint(Color.gray);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
241 plot.setDomainGridlinesVisible(true);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
242 plot.setRangeGridlinesVisible(true);
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8566
diff changeset
243 XYLineAndShapeRenderer renderer =
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8566
diff changeset
244 (XYLineAndShapeRenderer)plot.getRenderer();
3751
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
245
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
246 renderer.setSeriesPaint(0, Color.gray);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
247 renderer.setSeriesLinesVisible(0, false);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
248 renderer.setSeriesShapesVisible(0, true);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
249 renderer.setDrawOutlines(true);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
250 return chart;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
251 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
252
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
253
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
254 protected static String getRiverName(Document input) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
255 NodeList rivers = input.getElementsByTagName("river");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
256
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
257 if (rivers.getLength() == 0) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
258 return null;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
259 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
260
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
261 String river = ((Element)rivers.item(0)).getAttribute("name");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
262
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
263 return river.length() > 0 ? river : null;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
264 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
265
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
266 protected static Dimension getExtent(Document input) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
267
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
268 int width = DEFAULT_WIDTH;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
269 int height = DEFAULT_HEIGHT;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
270
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
271 NodeList extents = input.getElementsByTagName("extent");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
272
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
273 if (extents.getLength() > 0) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
274 Element element = (Element)extents.item(0);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
275 String w = element.getAttribute("width");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
276 String h = element.getAttribute("height");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
277
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
278 try {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
279 width = Math.max(1, Integer.parseInt(w));
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
280 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
281 catch (NumberFormatException nfe) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
282 log.warn("width '" + w + "' is not a valid.");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
283 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
284
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
285 try {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
286 height = Math.max(1, Integer.parseInt(h));
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
287 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
288 catch (NumberFormatException nfe) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
289 log.warn("height '" + h + "' is not a valid");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
290 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
291 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
292
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
293 return new Dimension(width, height);
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
294 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
295
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
296 protected static String getFormat(Document input) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
297 String format = DEFAULT_FORMAT;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
298
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
299 NodeList formats = input.getElementsByTagName("format");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
300
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
301 if (formats.getLength() > 0) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
302 String type = ((Element)formats.item(0)).getAttribute("type");
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
303 if (type.length() > 0) {
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
304 format = type;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
305 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
306 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
307
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
308 return format;
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
309 }
ae598cf50682 Added new services to render overview charts in minfo bed quality calculation
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
310 }

http://dive4elements.wald.intevation.org