annotate src/main/java/de/intevation/lada/factory/ProbeFactory.java @ 1064:8ec6a2a31171

Generalize generation of Proben for (multiples of) months.
author Tom Gottfried <tom@intevation.de>
date Thu, 29 Sep 2016 16:15:38 +0200
parents 0fbcaefc565b
children 703b370c3b34
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
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21 import de.intevation.lada.model.land.LKommentarP;
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.LMessung;
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.LMesswert;
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 735
diff changeset
24 import de.intevation.lada.model.land.LOrtszuordnung;
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 import de.intevation.lada.model.land.LProbe;
897
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
26 import de.intevation.lada.model.land.LStatusProtokoll;
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 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
28 import de.intevation.lada.model.land.MessprogrammMmt;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 import de.intevation.lada.model.land.MessungTranslation;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 import de.intevation.lada.model.land.ProbeTranslation;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
31 import de.intevation.lada.model.stamm.DeskriptorUmwelt;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
32 import de.intevation.lada.model.stamm.Deskriptoren;
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 735
diff changeset
33 import de.intevation.lada.model.stamm.Ort;
656
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.annotation.RepositoryConfig;
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.QueryBuilder;
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.Repository;
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.data.RepositoryType;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 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
39
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
40 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
41 * This factory creates probe objects and its children using a messprogramm
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
42 * as template.
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
43 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
44 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
45 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 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
47
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
48 private static Hashtable<String, int[]> fieldsTable;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
49
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
50 public ProbeFactory() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
51 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
52 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
53 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
54
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
55 this.fieldsTable = new Hashtable<String, int[]>();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
56
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
57 this.fieldsTable.put("M", M);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
58 this.fieldsTable.put("Q", Q);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
59 this.fieldsTable.put("H", H);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
60 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
61
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
62 private class Intervall {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
63 private int teilVon;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
64 private int teilBis;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
65 private int offset;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
66
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
67 private int intervallField;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
68 private int subIntField;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
69 private int intervallFactor;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
70
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
71 private Calendar from;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
72
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
73 public Intervall(
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
74 Messprogramm messprogramm,
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
75 Calendar start
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
76 ) {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
77 this.teilVon = messprogramm.getTeilintervallVon();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
78 this.teilBis = messprogramm.getTeilintervallBis();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
79 this.offset = messprogramm.getIntervallOffset();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
80
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
81 this.intervallField = fieldsTable
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
82 .get(messprogramm.getProbenintervall())[0];
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
83 this.subIntField = fieldsTable
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
84 .get(messprogramm.getProbenintervall())[1];
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
85 this.intervallFactor = fieldsTable
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
86 .get(messprogramm.getProbenintervall())[2];
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
87
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
88 /* Align with beginning of next interval
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
89 * like first day of next quarter.*/
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
90 // TODO: Avoid overflow e.g. into next quarter, if e.g. teilBis
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
91 // greater than sum of actual maxima of months in quarter.
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
92 int startIntField = start.get(intervallField);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
93 this.from = (Calendar)start.clone();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
94 from.set(
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
95 intervallField,
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
96 startIntField + startIntField % intervallFactor
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
97 );
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
98 from = adjustSubIntField(from, teilVon);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
99 if (start.after(from)) {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
100 // 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
101 this.roll();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
102 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
103 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
104
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
105 /**
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
106 * 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
107 * 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
108 *
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
109 * @param cal Calendar to be adjusted
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
110 * @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
111 *
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
112 * @return the adjusted Calendar object.
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
113 */
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
114 private Calendar adjustSubIntField(Calendar cal, int teil) {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
115 int intField = cal.get(intervallField);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
116 cal.set(
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
117 intervallField,
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
118 intField - intField % intervallFactor
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
119 );
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
120 cal.set(subIntField, offset + Math.min(teil, getDuration()));
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
121 return cal;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
122 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
123
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 * Get sum of actual maxima for given field from actual field value
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
126 * for the next factor values of iterField.
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 * @param calendar Time to start from
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
129 *
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
130 * @return the sum of maxima for the field values specified with
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
131 * field and factor.
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
132 */
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
133 private int getDuration() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
134 logger.debug("## calculate maximum ##");
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
135 int duration = 0;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
136 Calendar tmp = (Calendar)from.clone();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
137 /* 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
138 * to compensate possible overflow if
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
139 * teilVon > maximum of intervallField: */
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
140 int fromIntField = from.get(intervallField);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
141 tmp.set(
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
142 intervallField,
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
143 fromIntField - fromIntField % intervallFactor
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
144 );
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
145 tmp.set(subIntField, tmp.getActualMinimum(subIntField));
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
146 logger.debug(tmp);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
147 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
148 logger.debug(tmp.getActualMaximum(subIntField));
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
149 duration += tmp.getActualMaximum(subIntField);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
150 tmp.add(intervallField, 1);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
151 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
152 logger.debug(duration);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
153 return duration;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
154 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
155
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
156 public Date getFrom() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
157 logger.debug("getFrom() from: " + from);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
158 return from.getTime();
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
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
161 public Date getTo() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
162 logger.debug("getTo() from: " + from);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
163 Calendar to = (Calendar)from.clone();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
164 to = adjustSubIntField(to, teilBis);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
165 return to.getTime();
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
166 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
167
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
168 public boolean startInLeapYear() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
169 return from.getActualMaximum(Calendar.DAY_OF_YEAR) > 364;
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
170 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
171
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
172 public int getStartDOY() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
173 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
174 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
175
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
176 public void roll() {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
177 from.add(intervallField, intervallFactor);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
178 from = adjustSubIntField(from, teilVon);
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
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
181 }
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
182 // end Intervall class
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
183
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
184
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
185 @Inject Logger logger;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
186
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
187 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
188 * The data repository
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
189 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
190 @Inject
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
191 @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
192 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
193
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
194 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
195 * Create a list of probe objects
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
196 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
197 * @param id Messprogramm id
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
198 * @param from The start date
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
199 * @param to The end date
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
200 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
201 * @return List of probe objects.
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
202 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
203 public List<LProbe> create(String id, Long from, Long to) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
204 QueryBuilder<Messprogramm> builder =
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
205 new QueryBuilder<Messprogramm>(
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
206 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
207 Messprogramm.class);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
208 builder.and("id", id);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
209 Response response = repository.filter(builder.getQuery(), "land");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 684
diff changeset
210 @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
211 List<Messprogramm> messprogramme =
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
212 (List<Messprogramm>)response.getData();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
213 if (messprogramme == null || messprogramme.isEmpty()) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
214 return null;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
215 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
216 Messprogramm messprogramm = messprogramme.get(0);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
217 Calendar start = Calendar.getInstance();
1061
f3331174b1ae Avoid detour via Date object.
Tom Gottfried <tom@intevation.de>
parents: 1060
diff changeset
218 start.setTimeInMillis(from);
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
219 Calendar end = Calendar.getInstance();
1061
f3331174b1ae Avoid detour via Date object.
Tom Gottfried <tom@intevation.de>
parents: 1060
diff changeset
220 end.setTimeInMillis(to);
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
221
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
222 List<LProbe> proben = new ArrayList<LProbe>();
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
223
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
224 if (fieldsTable.keySet().contains(messprogramm.getProbenintervall())) {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
225 proben.addAll(generateMonthly(messprogramm, start, end));
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
226 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
227 else {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
228 Date[][] intervals = calculateIntervals(start, end, messprogramm);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
229 for (Date[] interval : intervals) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
230 createProben(interval, messprogramm, proben);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
231 }
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
232 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
233 return proben;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
234 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
235
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
236 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
237 * Create LProbe objects using the interval and messprogramm details.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
238 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
239 * @param interval The time interval for probe objects.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
240 * @param messprogramm The messprogramm containing details.
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
241 * @param proben An (empty) list for probe objects
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
242 * filled by this method
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
243 * @return
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
244 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
245 private void createProben(
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
246 Date[] interval,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
247 Messprogramm messprogramm,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
248 List<LProbe> proben
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
249 ) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
250 Calendar start = Calendar.getInstance();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
251 start.setTime(interval[0]);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
252 int startDay = start.get(Calendar.DAY_OF_YEAR);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
253 Calendar end = Calendar.getInstance();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
254 end.setTime(interval[1]);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
255 int endDay = end.get(Calendar.DAY_OF_YEAR);
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
256
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
257 // If fixed interval (T, W, W2, W4)
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
258 if ("T".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
259 proben.addAll(generate(messprogramm, start, end, 1));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
260 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
261 else if ("W".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
262 Calendar realStart = getMonday(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
263 proben.addAll(generate(messprogramm, realStart, end, 7));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
264 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
265 else if ("W2".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
266 Calendar realStart = getMonday(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
267 proben.addAll(generate(messprogramm, realStart, end, 14));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
268 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
269 else if ("W4".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
270 Calendar realStart = getMonday(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
271 proben.addAll(generate(messprogramm, realStart, end, 28));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
272 }
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
273 else if ("J".equals(messprogramm.getProbenintervall())) {
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
274 int offset = messprogramm.getIntervallOffset();
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
275 int teilVon = messprogramm.getTeilintervallVon();
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
276 int teilBis = messprogramm.getTeilintervallBis();
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
277
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
278 if (teilVon >= startDay + offset
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
279 && teilBis <= endDay + offset
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
280 ) {
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
281 start.add(Calendar.DATE, teilVon - startDay + offset);
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
282 Date startDate = start.getTime();
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
283 end.add(Calendar.DATE, teilBis - endDay + offset);
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
284 Date endDate = end.getTime();
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
285 LProbe probe = createObjects(messprogramm, startDate, endDate);
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
286 if (probe != null) {
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
287 proben.add(probe);
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
288 }
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
289 }
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
290 }
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
291 }
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
292
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
293 private List<LProbe> generateMonthly(
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
294 Messprogramm messprogramm,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
295 Calendar start,
1057
6d26e94b643e Remove unused redundant arguments.
Tom Gottfried <tom@intevation.de>
parents: 981
diff changeset
296 Calendar end
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
297 ) {
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
298 logger.debug("start: " + start);
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
299
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
300 int gueltigVon = messprogramm.getGueltigVon();
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
301 int gueltigBis = messprogramm.getGueltigBis();
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
302
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
303 List<LProbe> proben = new ArrayList<LProbe>();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
304
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
305 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
306 intervall.getFrom().before(end.getTime());
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
307 intervall.roll()
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
308 ) {
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
309 /* 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
310 * 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
311 * 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
312 * 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
313 * 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
314 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
315 int actualGueltigVon =
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
316 gueltigVon > 58
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
317 ? gueltigVon + leapDay
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
318 : gueltigVon;
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
319 int actualGueltigBis =
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
320 gueltigBis > 58
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
321 ? gueltigBis + leapDay
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
322 : gueltigBis;
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
323
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
324 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
325
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
326 if ((
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
327 // Validity within one year
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
328 actualGueltigVon < actualGueltigBis
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
329 && solldatumBeginnDOY >= actualGueltigVon
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
330 && solldatumBeginnDOY <= actualGueltigBis
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
331 ) || (
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
332 // 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
333 actualGueltigVon > actualGueltigBis
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
334 && (solldatumBeginnDOY >= actualGueltigVon
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
335 || solldatumBeginnDOY <= actualGueltigBis)
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
336 )
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
337 ) {
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
338 LProbe probe = createObjects(
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
339 messprogramm,
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
340 intervall.getFrom(),
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
341 intervall.getTo()
1062
0fbcaefc565b Make generation of monthly Probes respect actual lenght of months.
Tom Gottfried <tom@intevation.de>
parents: 1061
diff changeset
342 );
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
343 if (probe != null) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
344 proben.add(probe);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
345 }
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
346 } else {
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
347 logger.debug(solldatumBeginnDOY + " not within validity "
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
348 + actualGueltigVon + " to " + actualGueltigBis);
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
349 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
350 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
351
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
352 return proben;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
353 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
354
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
355 private List<LProbe> generate(
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
356 Messprogramm messprogramm,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
357 Calendar start,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
358 Calendar end,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
359 int days
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
360 ) {
1059
a435b9fd1d85 Set default in data model instead of on generation of Probe objects.
Tom Gottfried <tom@intevation.de>
parents: 1058
diff changeset
361 int offset = messprogramm.getIntervallOffset();
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
362 int startDay = start.get(Calendar.DAY_OF_YEAR) +
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
363 messprogramm.getTeilintervallVon() - 1 + offset;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
364 int endDay = end.get(Calendar.DAY_OF_YEAR);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
365
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
366 List<LProbe> proben = new ArrayList<LProbe>();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
367 int duration = messprogramm.getTeilintervallBis() -
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
368 messprogramm.getTeilintervallVon();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
369
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
370 logger.debug("real start day: " + startDay);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
371 logger.debug("real end day" + endDay);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
372 for (;startDay <= endDay;) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
373 logger.debug("generate from " + startDay);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
374 start.set(Calendar.DAY_OF_YEAR, startDay);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
375 end.set(Calendar.DAY_OF_YEAR, startDay + duration);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
376 logger.debug("from: " + start.getTime() + " to " + end.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
377 startDay += days;
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
378 LProbe probe = createObjects(
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
379 messprogramm, start.getTime(), end.getTime());
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
380 if (probe != null) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
381 proben.add(probe);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
382 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
383 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
384 return proben;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
385 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
386
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
387 private Calendar getMonday(Calendar week) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
388 if (week.get(Calendar.DAY_OF_WEEK) > 1) {
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
389 week.set(Calendar.WEEK_OF_YEAR,
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
390 week.get(Calendar.WEEK_OF_YEAR) + 1);
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
391 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
392 week.set(Calendar.DAY_OF_WEEK, week.getFirstDayOfWeek());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
393 return week;
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
394 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
395
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
396 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
397 * Create a single probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
398 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
399 * @param messprogramm The messprogramm containing probe details
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
400 * @param startDate The date for 'solldatumbeginn'
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
401 * @param endDate The date for 'solldatumende'
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
402 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
403 * @return The new probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
404 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
405 private LProbe createObjects(
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
406 Messprogramm messprogramm,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
407 Date startDate,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
408 Date endDate
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
409 ) {
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
410 QueryBuilder<LProbe> builderProbe =
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
411 new QueryBuilder<LProbe>(
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
412 repository.entityManager("land"),
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
413 LProbe.class);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
414 builderProbe.and("mprId", messprogramm.getId());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
415 builderProbe.and("solldatumBeginn", startDate);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
416 builderProbe.and("solldatumEnde", endDate);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
417
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
418 List<LProbe> proben =
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
419 repository.filterPlain(builderProbe.getQuery(), "land");
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
420
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
421 if (!proben.isEmpty()) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
422 return null;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
423 }
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
424 LProbe probe = new LProbe();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
425 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
426 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
427 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
428 probe.setMstId(messprogramm.getMstId());
896
c94a07959060 Use the laborMstId in generated probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 810
diff changeset
429 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
430 probe.setNetzbetreiberId(messprogramm.getNetzbetreiberId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
431 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
432 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
433 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
434 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
435 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
436 probe.setUmwId(messprogramm.getUmwId());
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
437 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
438 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
439 ProbeTranslation translation = new ProbeTranslation();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
440 translation.setProbeId(probe);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
441 repository.create(translation, "land");
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
442
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
443 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
444 !messprogramm.getProbeKommentar().equals("")) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
445 LKommentarP kommentar = new LKommentarP();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
446 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
447 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
448 kommentar.setText(messprogramm.getProbeKommentar());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
449 kommentar.setErzeuger(messprogramm.getMstId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
450
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
451 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
452 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
453
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
454 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
455 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
456 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
457 MessprogrammMmt.class);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
458 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
459 Response response = repository.filter(builder.getQuery(), "land");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 684
diff changeset
460 @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
461 List<MessprogrammMmt> mmts = (List<MessprogrammMmt>)response.getData();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
462 for (MessprogrammMmt mmt : mmts) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
463 LMessung messung = new LMessung();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
464 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
465 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
466 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
467 messung.setNebenprobenNr(
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
468 messprogramm.getNetzbetreiberId() + mmt.getMmtId());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
469 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
470 repository.create(messung, "land");
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
471 MessungTranslation mTranslation = new MessungTranslation();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
472 mTranslation.setMessungsId(messung);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
473 repository.create(mTranslation, "land");
897
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
474
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
475 LStatusProtokoll status = new LStatusProtokoll();
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
476 status.setDatum(new Timestamp(new Date().getTime()));
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
477 status.setMessungsId(messung.getId());
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
478 status.setErzeuger(probe.getMstId());
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
479 status.setStatusStufe(1);
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
480 status.setStatusWert(0);
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
481 repository.create(status, "land");
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
482 messung.setStatus(status.getId());
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
483 repository.update(messung, "land");
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
484
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
485 for (int mw : mmt.getMessgroessen()) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
486 LMesswert wert = new LMesswert();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
487 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
488 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
489 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
490 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
491 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
492 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
493 }
698
cd22674b4673 Fixed ort generation from messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 697
diff changeset
494 if (messprogramm.getOrtId() != null &&
cd22674b4673 Fixed ort generation from messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 697
diff changeset
495 !messprogramm.getOrtId().equals("")) {
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 735
diff changeset
496 LOrtszuordnung ort = new LOrtszuordnung();
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 735
diff changeset
497 ort.setOrtszuordnungTyp("E");
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
498 ort.setProbeId(probe.getId());
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 735
diff changeset
499 QueryBuilder<Ort> ortBuilder = new QueryBuilder<Ort>(
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 735
diff changeset
500 repository.entityManager("stamm"), Ort.class);
698
cd22674b4673 Fixed ort generation from messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 697
diff changeset
501 ortBuilder.and("id", messprogramm.getOrtId());
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
502 Response ortResponse = repository.filter(
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
503 ortBuilder.getQuery(), "stamm");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 684
diff changeset
504 @SuppressWarnings("unchecked")
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 735
diff changeset
505 List<Ort> orte = (List<Ort>) ortResponse.getData();
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
506 if (orte != null && !orte.isEmpty()) {
810
092e673cbb8d Added and updated model, services, etc for to fit the new db schema.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 735
diff changeset
507 ort.setOrtId(Long.valueOf(orte.get(0).getId()));
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
508 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
509 repository.create(ort, "land");
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
510 }
680
a5e6580e8016 Reload the created probe object to have the 'probeIdAlt' field available.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 656
diff changeset
511 // Reolad the probe to have the old id
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
512 probe = (LProbe)repository.getById(
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
513 LProbe.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
514 return probe;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
515 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
516
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
517 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
518 * Determine the interval for probe generation using a start date, end date
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
519 * and the messprogramm.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
520 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
521 * @param start Calendar object defining the start of the first interval
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
522 * @param end Calendar object defining the end of the last interval.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
523 * @param messprogramm The messprogramm
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
524 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
525 * @return An array of start/end pairs.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
526 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
527 private Date[][] calculateIntervals(
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
528 Calendar start,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
529 Calendar end,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
530 Messprogramm messprogramm
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
531 ) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
532 int realStart = start.get(Calendar.DAY_OF_YEAR);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
533 int realEnd = end.get(Calendar.DAY_OF_YEAR);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
534 int startYear = start.get(Calendar.YEAR);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
535 int endYear = end.get(Calendar.YEAR);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
536 int years = (endYear - startYear) + 1;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
537 Date[][] intervals = new Date[years][2];
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
538 for (int i = 0; i < years; i++) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
539 Calendar cStart = Calendar.getInstance();
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
540 cStart.set(
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
541 startYear + i,
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
542 start.get(Calendar.MONTH),
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
543 start.get(Calendar.DAY_OF_MONTH)
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
544 );
1058
0d0362fe7619 Remove null-checks for already validated mandatory fields.
Tom Gottfried <tom@intevation.de>
parents: 1057
diff changeset
545 if (messprogramm.getGueltigVon() <= 0
0d0362fe7619 Remove null-checks for already validated mandatory fields.
Tom Gottfried <tom@intevation.de>
parents: 1057
diff changeset
546 || (realStart > messprogramm.getGueltigVon() && i == 0)
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
547 ) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
548 intervals[0][0] = start.getTime();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
549 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
550 else {
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
551 start.add(Calendar.DATE,
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
552 messprogramm.getGueltigVon() - realStart);
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
553 Date startDate = start.getTime();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
554 intervals[i][0] = startDate;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
555 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
556
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
557 Calendar cEnd = Calendar.getInstance();
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
558 cEnd.set(
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
559 startYear + i,
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
560 end.get(Calendar.MONTH),
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
561 end.get(Calendar.DAY_OF_MONTH)
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
562 );
1058
0d0362fe7619 Remove null-checks for already validated mandatory fields.
Tom Gottfried <tom@intevation.de>
parents: 1057
diff changeset
563 if (messprogramm.getGueltigBis() <= 0
0d0362fe7619 Remove null-checks for already validated mandatory fields.
Tom Gottfried <tom@intevation.de>
parents: 1057
diff changeset
564 || (realEnd < messprogramm.getGueltigBis() && i == years - 1)
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
565 ) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
566 intervals[i][1] = cEnd.getTime();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
567 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
568 else {
1060
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
569 cEnd.add(Calendar.DATE,
cf5a2de206e3 Improve readability for easier debugging.
Tom Gottfried <tom@intevation.de>
parents: 1059
diff changeset
570 messprogramm.getGueltigBis() - realEnd);
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
571 Date endDate = cEnd.getTime();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
572 intervals[i][1] = endDate;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
573 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
574 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
575
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
576 return intervals;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
577 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
578
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
579
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
580 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
581 * Search for the umwelt id using the 'deskriptor'.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
582 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
583 * @param probe The probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
584 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
585 * @return The updated probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
586 */
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
587 public LProbe findUmweltId(LProbe probe) {
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
588 String[] mediaDesk = probe.getMediaDesk().split(" ");
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
589 if (mediaDesk.length <= 1) {
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
590 return probe;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
591 }
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
592 probe.setUmwId(findUmwelt(mediaDesk));
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
593 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
594 }
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
595
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
596 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
597 * Search for the media description using the 'deskriptor'.
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 * @param probe The probe object
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 * @return The updated probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
602 */
709
e502e1af6256 added autofill Mediadescription
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents: 698
diff changeset
603 public LProbe findMediaDesk(LProbe probe) {
713
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
604 Object result = repository.queryFromString(
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
605 "SELECT get_media_from_media_desk( :mediaDesk );", "stamm")
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
606 .setParameter("mediaDesk", probe.getMediaDesk())
713
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
607 .getSingleResult();
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
608 probe.setMedia(result != null ? result.toString() : "");
709
e502e1af6256 added autofill Mediadescription
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents: 698
diff changeset
609 return probe;
e502e1af6256 added autofill Mediadescription
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents: 698
diff changeset
610 }
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
611
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
612 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
613 * Search for the umwelt id using the 'deskriptor'.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
614 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
615 * @param messprogramm The messprogramm
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
616 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
617 * @return The updated messprogramm.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
618 */
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
619 public Messprogramm findUmweltId(Messprogramm 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
620 String[] mediaDesk = messprogramm.getMediaDesk().split(" ");
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
621 if (mediaDesk.length <= 1) {
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
622 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
623 }
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
624 messprogramm.setUmwId(findUmwelt(mediaDesk));
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
625 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
626 }
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
627
1064
8ec6a2a31171 Generalize generation of Proben for (multiples of) months.
Tom Gottfried <tom@intevation.de>
parents: 1062
diff changeset
628
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
629 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
630 * Find the umwelt id for a given deskriptor.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
631 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
632 * @param mediaDesk The deskriptor string
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
633 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
634 * @return The umwelt id or an empty string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
635 */
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
636 private String findUmwelt(String[] mediaDesk) {
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
637 List<Integer> mediaIds = new ArrayList<Integer>();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
638 boolean zebs = false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
639 Integer parent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
640 Integer hdParent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
641 Integer ndParent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
642 if ("01".equals(mediaDesk[1])) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
643 zebs = true;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
644 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
645 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
646 if ("00".equals(mediaDesk[i])) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
647 mediaIds.add(-1);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
648 continue;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
649 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
650 if (zebs && i < 5) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
651 parent = hdParent;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
652 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
653 else if (!zebs && i < 3) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
654 parent = hdParent;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
655 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
656 else {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
657 parent = ndParent;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
658 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
659 QueryBuilder<Deskriptoren> builder = new QueryBuilder<Deskriptoren>(
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
660 repository.entityManager("stamm"), Deskriptoren.class);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
661 if (parent != null) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
662 builder.and("vorgaenger", parent);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
663 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
664 builder.and("sn", mediaDesk[i]);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
665 builder.and("ebene", i - 1);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
666 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
667 @SuppressWarnings("unchecked")
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
668 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
669 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
670 return "";
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
671 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
672 hdParent = data.get(0).getId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
673 mediaIds.add(data.get(0).getId());
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
674 if (i == 2) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
675 ndParent = data.get(0).getId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
676 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
677 }
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
678 return getUmwelt(mediaIds, zebs);
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
679 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
680
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
681 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
682 * 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
683 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
684 * @param media The list of media ids.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
685 * @param isZebs Flag for type of the deskriptor.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
686 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
687 * @return The umwelt id or an empty string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
688 */
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
689 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
690 QueryBuilder<DeskriptorUmwelt> builder =
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
691 new QueryBuilder<DeskriptorUmwelt>(
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
692 repository.entityManager("stamm"), DeskriptorUmwelt.class);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
693
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
694 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
695 return "";
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
696 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
697
735
bcaf30a871ef Set fixed size for first deskriptoren request.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 732
diff changeset
698 int size = 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
699 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
700 if (media.get(i) == -1) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
701 continue;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
702 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
703 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
704 builder.and(field, media.get(i));
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
705 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
706 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
707 @SuppressWarnings("unchecked")
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
708 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
709 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
710 return null;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
711 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
712
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
713 boolean unique = isUnique(data);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
714 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
715 return data.get(0).getUmwId();
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
716 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
717 else {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
718 int found = -1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
719 for (int i = 0; i < data.size(); i++) {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
720 int matches = 0;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
721 int lastMatch = 0;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
722 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
723 switch(j) {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
724 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
725 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
726 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
727 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
728 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
729 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
730 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
731 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
732 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
733 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
734 matches +=1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
735 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
736 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
737 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
738 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
739 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
740 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
741 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
742 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
743 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
744 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
745 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
746 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
747 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
748 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
749 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
750 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
751 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
752 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
753 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
754 case 12: if (media.get(12).equals(data.get(i).getS12()))
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
755 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
756 break;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
757 }
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
758 if (matches > lastMatch) {
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
759 lastMatch = matches;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
760 found = i;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
761 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
762 }
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
763 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
764 return data.get(found).getUmwId();
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
765 }
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
766 }
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
767 return null;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
768 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
769 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
770
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
771 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
772 * 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
773 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
774 * @param list A list of DescriptorUmwelt objects.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
775 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
776 * @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
777 */
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
778 private boolean isUnique(List<DeskriptorUmwelt> list) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
779 if (list.isEmpty()) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
780 return false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
781 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
782 String element = list.get(0).getUmwId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
783 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
784 if (!element.equals(list.get(i))) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
785 return false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
786 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
787 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
788 return true;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
789 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
790
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
791 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)