Mercurial > lada > lada-server
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 } |