annotate src/main/java/de/intevation/lada/factory/ProbeFactory.java @ 1324:212fe0cfd694 release-2.5

Use correct ort to generate probe.
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 24 Mar 2017 11:59:19 +0100
parents 9dfb52db6a0f
children
rev   line source
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
2 * Software engineering by Intevation GmbH
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
3 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
4 * This file is Free Software under the GNU GPL (v>=3)
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
6 * the documentation coming with IMIS-Labordaten-Application for details.
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
7 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
8 package de.intevation.lada.factory;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10 import java.sql.Timestamp;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import java.util.Calendar;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 import java.util.Date;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import java.util.List;
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
15 import java.util.Hashtable;
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import javax.inject.Inject;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
19 import org.apache.log4j.Logger;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
20
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
21 import de.intevation.lada.model.land.KommentarP;
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22 import de.intevation.lada.model.land.Messprogramm;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 import de.intevation.lada.model.land.MessprogrammMmt;
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
24 import de.intevation.lada.model.land.Probe;
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
25 import de.intevation.lada.model.land.Messung;
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
26 import de.intevation.lada.model.land.Messwert;
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
27 import de.intevation.lada.model.land.Ortszuordnung;
1262
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
28 import de.intevation.lada.model.land.OrtszuordnungMp;
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
29 import de.intevation.lada.model.land.StatusProtokoll;
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
30 import de.intevation.lada.model.stammdaten.DeskriptorUmwelt;
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
31 import de.intevation.lada.model.stammdaten.Deskriptoren;
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
32 import de.intevation.lada.model.stammdaten.Ort;
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 import de.intevation.lada.util.annotation.RepositoryConfig;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 import de.intevation.lada.util.data.QueryBuilder;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 import de.intevation.lada.util.data.Repository;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 import de.intevation.lada.util.data.RepositoryType;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 import de.intevation.lada.util.rest.Response;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
39 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
40 * This factory creates probe objects and its children using a messprogramm
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
41 * as template.
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
42 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
43 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
44 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 public class ProbeFactory {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46
1083
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
47 // Day of year representing February 28
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
48 private static final int FEBRUARY_28 = 58;
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
49
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
50 private static Hashtable<String, int[]> fieldsTable;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
51
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
52 public ProbeFactory() {
1079
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
53 int[] T = { Calendar.DAY_OF_YEAR, Calendar.DAY_OF_YEAR, 1 };
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
54 int[] W = { Calendar.DAY_OF_YEAR, Calendar.DAY_OF_YEAR, 7 };
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
55 int[] W2 = { Calendar.DAY_OF_YEAR, Calendar.DAY_OF_YEAR, 14 };
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
56 int[] W4 = { Calendar.DAY_OF_YEAR, Calendar.DAY_OF_YEAR, 28 };
1075
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
57
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
58 int[] M = { Calendar.MONTH, Calendar.DAY_OF_MONTH, 1 };
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
59 int[] Q = { Calendar.MONTH, Calendar.DAY_OF_MONTH, 3 };
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
60 int[] H = { Calendar.MONTH, Calendar.DAY_OF_MONTH, 6 };
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
61
1083
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
62 int[] J = { Calendar.YEAR, Calendar.DAY_OF_YEAR, 1 };
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
63
1262
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
64 fieldsTable = new Hashtable<String, int[]>();
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
65
1262
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
66 fieldsTable.put("T", T);
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
67 fieldsTable.put("W", W);
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
68 fieldsTable.put("W2", W2);
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
69 fieldsTable.put("W4", W4);
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
70 fieldsTable.put("M", M);
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
71 fieldsTable.put("Q", Q);
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
72 fieldsTable.put("H", H);
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
73 fieldsTable.put("J", J);
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
74 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
75
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
76 private class Intervall {
1079
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
77 private final int teilVon;
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
78 private final int teilBis;
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
79 private final int offset;
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
80
1079
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
81 private final int intervallField;
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
82 private final int subIntField;
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
83 private final int intervallFactor;
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
84
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
85 private Calendar from;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
86
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
87 public Intervall(
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
88 Messprogramm messprogramm,
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
89 Calendar start
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
90 ) {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
91 this.teilVon = messprogramm.getTeilintervallVon();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
92 this.teilBis = messprogramm.getTeilintervallBis();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
93 this.offset = messprogramm.getIntervallOffset();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
94
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
95 this.intervallField = fieldsTable
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
96 .get(messprogramm.getProbenintervall())[0];
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
97 this.subIntField = fieldsTable
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
98 .get(messprogramm.getProbenintervall())[1];
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
99 this.intervallFactor = fieldsTable
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
100 .get(messprogramm.getProbenintervall())[2];
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
101
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
102 this.from = (Calendar)start.clone();
1079
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
103
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
104 /* Align with beginning of next interval
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
105 * like first day of next quarter or Monday of next week.*/
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
106 if (intervallField == Calendar.DAY_OF_YEAR
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
107 && intervallFactor % 7 == 0
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
108 ) {
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
109 if (from.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
110 from.add(Calendar.WEEK_OF_YEAR, 1);
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
111 from.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
112 }
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
113 } else {
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
114 int startIntField = start.get(intervallField);
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
115 from.set(
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
116 intervallField,
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
117 startIntField + startIntField % intervallFactor
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
118 );
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
119 }
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
120 from = adjustSubIntField(from, teilVon);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
121 if (start.after(from)) {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
122 // to next intervall if start not at first day of intervall
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
123 this.roll();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
124 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
125 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
126
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
127 /**
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
128 * Return given calendar adjusted to start of intervall (e.g. first
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
129 * day in quarter) plus offset and given amount of days.
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
130 *
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
131 * @param cal Calendar to be adjusted
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
132 * @param int amount of days to be added (plus offset)
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
133 *
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
134 * @return the adjusted Calendar object.
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
135 */
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
136 private Calendar adjustSubIntField(Calendar cal, int teil) {
1075
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
137 int intValue = cal.get(intervallField);
1079
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
138 int adjust = offset;
1075
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
139
1079
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
140 if (intervallField != subIntField) {
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
141 intValue = intValue - intValue % intervallFactor;
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
142 cal.set(intervallField, intValue);
1083
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
143
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
144 if (subIntField == Calendar.DAY_OF_YEAR) {
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
145 // Adjust in leap year
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
146 teil += startInLeapYear() && teil > FEBRUARY_28
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
147 ? 1
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
148 : 0;
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
149 }
1079
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
150 } else {
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
151 adjust += intValue - 1;
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
152 }
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
153
e544d76a311f Use Intervall class for generation of weekly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1078
diff changeset
154 int subIntValue = adjust + Math.min(teil, getDuration());
1075
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
155 cal.set(subIntField, subIntValue);
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
156
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
157 return cal;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
158 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
159
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
160 /**
1075
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
161 * @return sum of actual maxima for subIntField from beginning of
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
162 * actual intervall for the next intervallFactor values intervallField
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
163 * or just intervallFactor, if subIntField == intervallField.
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
164 */
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
165 private int getDuration() {
1075
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
166 if (subIntField == intervallField) {
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
167 return intervallFactor;
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
168 }
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
169 int duration = 0;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
170 Calendar tmp = (Calendar)from.clone();
1083
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
171
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
172 /* reset to beginning of intervall, e.g. first day of quarter
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
173 * to compensate possible overflow if
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
174 * teilVon > maximum of intervallField: */
1075
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
175 int intValue = from.get(intervallField);
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
176 tmp.set(
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
177 intervallField,
1075
b5314ea024c6 Use Intervall class for daily Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1074
diff changeset
178 intValue - intValue % intervallFactor
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
179 );
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
180 tmp.set(subIntField, tmp.getActualMinimum(subIntField));
1083
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
181
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
182 for (int i = 0; i < intervallFactor; i++) {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
183 duration += tmp.getActualMaximum(subIntField);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
184 tmp.add(intervallField, 1);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
185 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
186 return duration;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
187 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
188
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
189 public Date getFrom() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
190 return from.getTime();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
191 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
192
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
193 public Date getTo() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
194 Calendar to = (Calendar)from.clone();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
195 to = adjustSubIntField(to, teilBis);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
196 return to.getTime();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
197 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
198
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
199 public boolean startInLeapYear() {
1077
7143cd96d3de Calendar.DAY_OF_YEAR is 1-based.
Tom Gottfried <tom@intevation.de>
parents: 1075
diff changeset
200 return from.getActualMaximum(Calendar.DAY_OF_YEAR) > 365;
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
201 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
202
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
203 public int getStartDOY() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
204 return from.get(Calendar.DAY_OF_YEAR);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
205 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
206
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
207 public void roll() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
208 from.add(intervallField, intervallFactor);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
209 from = adjustSubIntField(from, teilVon);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
210 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
211
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
212 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
213 // end Intervall class
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
214
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
215
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
216 @Inject Logger logger;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
217
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
218 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
219 * The data repository
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
220 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
221 @Inject
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
222 @RepositoryConfig(type = RepositoryType.RW)
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
223 private Repository repository;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
224
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
225 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
226 * Create a list of probe objects
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
227 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
228 * @param id Messprogramm id
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
229 * @param from The start date
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
230 * @param to The end date
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
231 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
232 * @return List of probe objects.
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
233 */
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
234 public List<Probe> create(Messprogramm messprogramm, Long from, Long to) {
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
235 Calendar start = Calendar.getInstance();
1061
f3331174b1ae Avoid detour via Date object.
Tom Gottfried <tom@intevation.de>
parents: 1060
diff changeset
236 start.setTimeInMillis(from);
1074
90bc64e74e4a Adjust end to end of the day.
Tom Gottfried <tom@intevation.de>
parents: 1073
diff changeset
237
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
238 Calendar end = Calendar.getInstance();
1061
f3331174b1ae Avoid detour via Date object.
Tom Gottfried <tom@intevation.de>
parents: 1060
diff changeset
239 end.setTimeInMillis(to);
1074
90bc64e74e4a Adjust end to end of the day.
Tom Gottfried <tom@intevation.de>
parents: 1073
diff changeset
240 /* Adjust to end of the day as we want to generate Probe objects
90bc64e74e4a Adjust end to end of the day.
Tom Gottfried <tom@intevation.de>
parents: 1073
diff changeset
241 * before or at this day. */
90bc64e74e4a Adjust end to end of the day.
Tom Gottfried <tom@intevation.de>
parents: 1073
diff changeset
242 end.set(Calendar.HOUR_OF_DAY, 23);
90bc64e74e4a Adjust end to end of the day.
Tom Gottfried <tom@intevation.de>
parents: 1073
diff changeset
243 end.set(Calendar.MINUTE, 59);
90bc64e74e4a Adjust end to end of the day.
Tom Gottfried <tom@intevation.de>
parents: 1073
diff changeset
244 end.set(Calendar.SECOND, 59);
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
245
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
246 int gueltigVon = messprogramm.getGueltigVon();
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
247 int gueltigBis = messprogramm.getGueltigBis();
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
248
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
249 List<Probe> proben = new ArrayList<Probe>();
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
250
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
251 for (Intervall intervall = new Intervall(messprogramm, start);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
252 intervall.getFrom().before(end.getTime());
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
253 intervall.roll()
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
254 ) {
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
255 /* Leap year adaption of validity period.
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
256 * It is assumed here (and should be enforced by the data model)
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
257 * that gueltigVon and gueltigBis are always given relative to
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
258 * a non-leap year. E.g. a value of 59 is assumed to denote
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
259 * March 1 and thus has to be adapted in a leap year. */
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
260 int leapDay = intervall.startInLeapYear() ? 1 : 0;
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
261 int actualGueltigVon =
1083
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
262 gueltigVon > FEBRUARY_28
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
263 ? gueltigVon + leapDay
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
264 : gueltigVon;
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
265 int actualGueltigBis =
1083
99c6c644773b Use Intervall-class for generation of yearly Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1081
diff changeset
266 gueltigBis > FEBRUARY_28
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
267 ? gueltigBis + leapDay
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
268 : gueltigBis;
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
269
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
270 int solldatumBeginnDOY = intervall.getStartDOY();
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
271
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
272 if ((
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
273 // Validity within one year
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
274 actualGueltigVon < actualGueltigBis
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
275 && solldatumBeginnDOY >= actualGueltigVon
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
276 && solldatumBeginnDOY <= actualGueltigBis
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
277 ) || (
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
278 // Validity over turn of the year
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
279 actualGueltigVon > actualGueltigBis
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
280 && (solldatumBeginnDOY >= actualGueltigVon
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
281 || solldatumBeginnDOY <= actualGueltigBis)
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
282 )
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
283 ) {
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
284 Probe probe = createObjects(
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
285 messprogramm,
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
286 intervall.getFrom(),
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
287 intervall.getTo()
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
288 );
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
289 if (probe != null) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
290 proben.add(probe);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
291 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
292 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
293 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
294
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
295 return proben;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
296 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
297
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
298 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
299 * Create a single probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
300 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
301 * @param messprogramm The messprogramm containing probe details
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
302 * @param startDate The date for 'solldatumbeginn'
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
303 * @param endDate The date for 'solldatumende'
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
304 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
305 * @return The new probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
306 */
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
307 private Probe createObjects(
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
308 Messprogramm messprogramm,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
309 Date startDate,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
310 Date endDate
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
311 ) {
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
312 QueryBuilder<Probe> builderProbe =
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
313 new QueryBuilder<Probe>(
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
314 repository.entityManager("land"),
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
315 Probe.class);
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
316 builderProbe.and("mprId", messprogramm.getId());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
317 builderProbe.and("solldatumBeginn", startDate);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
318 builderProbe.and("solldatumEnde", endDate);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
319
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
320 List<Probe> proben =
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
321 repository.filterPlain(builderProbe.getQuery(), "land");
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
322
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
323 if (!proben.isEmpty()) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
324 return null;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
325 }
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
326 Probe probe = new Probe();
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
327 probe.setBaId(messprogramm.getBaId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
328 probe.setDatenbasisId(messprogramm.getDatenbasisId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
329 probe.setMediaDesk(messprogramm.getMediaDesk());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
330 probe.setMstId(messprogramm.getMstId());
896
c94a07959060 Use the laborMstId in generated probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 810
diff changeset
331 probe.setLaborMstId(messprogramm.getLaborMstId());
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
332 probe.setProbenartId(messprogramm.getProbenartId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
333 probe.setProbeNehmerId(messprogramm.getProbeNehmerId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
334 probe.setSolldatumBeginn(new Timestamp(startDate.getTime()));
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
335 probe.setSolldatumEnde(new Timestamp(endDate.getTime()));
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
336 probe.setTest(messprogramm.getTest());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
337 probe.setUmwId(messprogramm.getUmwId());
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
338 probe.setMprId(messprogramm.getId());
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
339 repository.create(probe, "land");
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
340
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
341 if (messprogramm.getProbeKommentar() != null &&
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
342 !messprogramm.getProbeKommentar().equals("")) {
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
343 KommentarP kommentar = new KommentarP();
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
344 kommentar.setDatum(new Timestamp(new Date().getTime()));
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
345 kommentar.setProbeId(probe.getId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
346 kommentar.setText(messprogramm.getProbeKommentar());
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
347 kommentar.setMstId(messprogramm.getMstId());
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
348
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
349 repository.create(kommentar, "land");
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
350 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
351
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
352 QueryBuilder<MessprogrammMmt> builder =
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
353 new QueryBuilder<MessprogrammMmt>(
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
354 repository.entityManager("land"),
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
355 MessprogrammMmt.class);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
356 builder.and("messprogrammId", messprogramm.getId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
357 Response response = repository.filter(builder.getQuery(), "land");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 684
diff changeset
358 @SuppressWarnings("unchecked")
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
359 List<MessprogrammMmt> mmts = (List<MessprogrammMmt>)response.getData();
1262
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
360 for (int i = 0; i < mmts.size(); i++) {
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
361 MessprogrammMmt mmt = mmts.get(i);
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
362 Messung messung = new Messung();
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
363 messung.setFertig(false);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
364 messung.setGeplant(true);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
365 messung.setMmtId(mmt.getMmtId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
366 messung.setNebenprobenNr(
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
367 messprogramm.getMstId() + mmt.getMmtId());
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
368 messung.setProbeId(probe.getId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
369 repository.create(messung, "land");
897
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
370
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
371 for (int mw : mmt.getMessgroessen()) {
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
372 Messwert wert = new Messwert();
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
373 wert.setMessgroesseId(mw);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
374 wert.setMessungsId(messung.getId());
914
54e83373bfae We need a wider range to allow arbitrary input formated +-9.99e+-99
Tom Gottfried <tom@intevation.de>
parents: 897
diff changeset
375 wert.setMesswert(0d);
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
376 wert.setMehId(1);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
377 repository.create(wert, "land");
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
378 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
379 }
1262
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
380 QueryBuilder<OrtszuordnungMp> builderOrt =
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
381 new QueryBuilder<OrtszuordnungMp>(
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
382 repository.entityManager("land"),
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
383 OrtszuordnungMp.class);
1324
212fe0cfd694 Use correct ort to generate probe.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1262
diff changeset
384 builderOrt.and("messprogrammId", messprogramm.getId());
1262
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
385 List<OrtszuordnungMp> orte =
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
386 repository.filterPlain(builderOrt.getQuery(), "land");
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
387 for (OrtszuordnungMp ort : orte) {
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
388 Ortszuordnung ortP = new Ortszuordnung();
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
389 ortP.setOrtszuordnungTyp(ort.getOrtszuordnungTyp());
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
390 ortP.setProbeId(probe.getId());
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
391 ortP.setOrtId(ort.getOrtId());
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
392 ortP.setOrtszusatztext(ort.getOrtszusatztext());
9dfb52db6a0f Make use of the ort factory in ort service.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1215
diff changeset
393 repository.create(ortP, "land");
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
394 }
680
a5e6580e8016 Reload the created probe object to have the 'probeIdAlt' field available.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 656
diff changeset
395 // Reolad the probe to have the old id
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
396 probe = (Probe)repository.getById(
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
397 Probe.class, probe.getId(), "land").getData();
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
398 return probe;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
399 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
400
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
401 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
402 * Search for the umwelt id using the 'deskriptor'.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
403 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
404 * @param probe The probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
405 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
406 * @return The updated probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
407 */
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
408 public Probe findUmweltId(Probe probe) {
1122
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
409 String mediaDesk = probe.getMediaDesk();
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
410 if (mediaDesk != null) {
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
411 String[] mediaDeskParts = mediaDesk.split(" ");
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
412 if (mediaDeskParts.length <= 1) {
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
413 return probe;
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
414 }
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
415 probe.setUmwId(findUmwelt(mediaDeskParts));
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
416 }
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
417 return probe;
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
418 }
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
419
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
420 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
421 * Search for the media description using the 'deskriptor'.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
422 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
423 * @param probe The probe object
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
424 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
425 * @return The updated probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
426 */
1097
186d602e031a Merged branch schema-update into default.
Tom Gottfried <tom@intevation.de>
parents: 1083
diff changeset
427 public Probe findMediaDesk(Probe probe) {
1122
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
428 String mediaDesk = probe.getMediaDesk();
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
429 if (mediaDesk != null) {
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
430 Object result = repository.queryFromString(
713
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
431 "SELECT get_media_from_media_desk( :mediaDesk );", "stamm")
1122
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
432 .setParameter("mediaDesk", mediaDesk)
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
433 .getSingleResult();
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
434 probe.setMedia(result != null ? result.toString() : "");
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
435 }
709
e502e1af6256 added autofill Mediadescription
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents: 698
diff changeset
436 return probe;
e502e1af6256 added autofill Mediadescription
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents: 698
diff changeset
437 }
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
438
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
439 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
440 * Search for the umwelt id using the 'deskriptor'.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
441 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
442 * @param messprogramm The messprogramm
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
443 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
444 * @return The updated messprogramm.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
445 */
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
446 public Messprogramm findUmweltId(Messprogramm messprogramm) {
1122
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
447 String mediaDesk = messprogramm.getMediaDesk();
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
448 if (mediaDesk != null) {
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
449 String[] mediaDeskParts = mediaDesk.split(" ");
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
450 if (mediaDeskParts.length <= 1) {
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
451 return messprogramm;
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
452 }
1ef08710aaeb Do not allow empty string for media descriptor.
Tom Gottfried <tom@intevation.de>
parents: 1097
diff changeset
453 messprogramm.setUmwId(findUmwelt(mediaDeskParts));
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
454 }
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
455 return messprogramm;
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
456 }
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
457
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
458
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
459 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
460 * Find the umwelt id for a given deskriptor.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
461 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
462 * @param mediaDesk The deskriptor string
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
463 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
464 * @return The umwelt id or an empty string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
465 */
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
466 private String findUmwelt(String[] mediaDesk) {
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
467 List<Integer> mediaIds = new ArrayList<Integer>();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
468 boolean zebs = false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
469 Integer parent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
470 Integer hdParent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
471 Integer ndParent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
472 if ("01".equals(mediaDesk[1])) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
473 zebs = true;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
474 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
475 for (int i = 1; i < mediaDesk.length; i++) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
476 if ("00".equals(mediaDesk[i])) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
477 mediaIds.add(-1);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
478 continue;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
479 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
480 if (zebs && i < 5) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
481 parent = hdParent;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
482 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
483 else if (!zebs && i < 3) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
484 parent = hdParent;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
485 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
486 else {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
487 parent = ndParent;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
488 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
489 QueryBuilder<Deskriptoren> builder = new QueryBuilder<Deskriptoren>(
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
490 repository.entityManager("stamm"), Deskriptoren.class);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
491 if (parent != null) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
492 builder.and("vorgaenger", parent);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
493 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
494 builder.and("sn", mediaDesk[i]);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
495 builder.and("ebene", i - 1);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
496 Response response = repository.filter(builder.getQuery(), "stamm");
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
497 @SuppressWarnings("unchecked")
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
498 List<Deskriptoren> data = (List<Deskriptoren>)response.getData();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
499 if (data.isEmpty()) {
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
500 return "";
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
501 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
502 hdParent = data.get(0).getId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
503 mediaIds.add(data.get(0).getId());
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
504 if (i == 2) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
505 ndParent = data.get(0).getId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
506 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
507 }
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
508 return getUmwelt(mediaIds, zebs);
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
509 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
510
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
511 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
512 * Find the umwelt id in the database using media deskriptor ids.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
513 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
514 * @param media The list of media ids.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
515 * @param isZebs Flag for type of the deskriptor.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
516 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
517 * @return The umwelt id or an empty string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
518 */
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
519 private String getUmwelt(List<Integer> media, boolean isZebs) {
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
520 QueryBuilder<DeskriptorUmwelt> builder =
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
521 new QueryBuilder<DeskriptorUmwelt>(
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
522 repository.entityManager("stamm"), DeskriptorUmwelt.class);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
523
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
524 if (media.size() == 0) {
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
525 return "";
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
526 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
527
735
bcaf30a871ef Set fixed size for first deskriptoren request.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 732
diff changeset
528 int size = 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
529 for (int i = size; i >= 0; i--) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
530 if (media.get(i) == -1) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
531 continue;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
532 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
533 String field = "s" + (i > 9 ? i : "0" + i);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
534 builder.and(field, media.get(i));
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
535 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
536 Response response = repository.filter(builder.getQuery(), "stamm");
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
537 @SuppressWarnings("unchecked")
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
538 List<DeskriptorUmwelt> data = (List<DeskriptorUmwelt>)response.getData();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
539 if (data.isEmpty()) {
732
83acc3b63354 Fixed size of main descriptor fields and return 'null' instead of "" for empty
Raimund Renkert <raimund.renkert@intevation.de>
parents: 713
diff changeset
540 return null;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
541 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
542
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
543 boolean unique = isUnique(data);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
544 if (unique) {
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
545 return data.get(0).getUmwId();
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
546 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
547 else {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
548 int found = -1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
549 for (int i = 0; i < data.size(); i++) {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
550 int matches = 0;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
551 int lastMatch = 0;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
552 for (int j = size + 1; j < 12; j++) {
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
553 switch(j) {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
554 case 2: if (media.get(2).equals(data.get(i).getS02()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
555 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
556 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
557 case 3: if (media.get(3).equals(data.get(i).getS03()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
558 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
559 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
560 case 4: if (media.get(4).equals(data.get(i).getS04()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
561 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
562 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
563 case 5: if (media.get(5).equals(data.get(i).getS05()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
564 matches +=1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
565 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
566 case 6: if (media.get(6).equals(data.get(i).getS06()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
567 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
568 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
569 case 7: if (media.get(7).equals(data.get(i).getS07()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
570 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
571 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
572 case 8: if (media.get(8).equals(data.get(i).getS08()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
573 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
574 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
575 case 9: if (media.get(9).equals(data.get(i).getS09()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
576 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
577 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
578 case 10: if (media.get(10).equals(data.get(i).getS10()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
579 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
580 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
581 case 11: if (media.get(11).equals(data.get(i).getS11()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
582 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
583 break;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
584 }
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
585 if (matches > lastMatch) {
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
586 lastMatch = matches;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
587 found = i;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
588 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
589 }
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
590 if (found >= 0) {
697
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
591 return data.get(found).getUmwId();
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
592 }
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
593 }
732
83acc3b63354 Fixed size of main descriptor fields and return 'null' instead of "" for empty
Raimund Renkert <raimund.renkert@intevation.de>
parents: 713
diff changeset
594 return null;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
595 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
596 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
597
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
598 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
599 * Determine if the entries in the list have the same umwelt id.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
600 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
601 * @param list A list of DescriptorUmwelt objects.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
602 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
603 * @return true if the objects have the same umwelt id else false.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
604 */
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
605 private boolean isUnique(List<DeskriptorUmwelt> list) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
606 if (list.isEmpty()) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
607 return false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
608 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
609 String element = list.get(0).getUmwId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
610 for (int i = 1; i < list.size(); i++) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
611 if (!element.equals(list.get(i))) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
612 return false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
613 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
614 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
615 return true;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
616 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
617
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
618 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)