annotate src/main/java/de/intevation/lada/factory/ProbeFactory.java @ 981:84f17f460969

Refactored probe generation.
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 17 Jun 2016 12:17:08 +0200
parents 54e83373bfae
children 1c41c7b8f7c2 6d26e94b643e
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;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 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
17
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
18 import org.apache.log4j.Logger;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
19
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 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
21 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
22 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
23 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
24 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
25 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
26 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
27 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
28 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
29 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
30 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
31 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
32 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
33 import de.intevation.lada.util.annotation.RepositoryConfig;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 import de.intevation.lada.util.data.QueryBuilder;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 import de.intevation.lada.util.data.Repository;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 import de.intevation.lada.util.data.RepositoryType;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 import de.intevation.lada.util.rest.Response;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
39 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
40 * This factory creates probe objects and its children using a messprogramm
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
41 * as template.
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
42 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
43 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
44 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 public class ProbeFactory {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
47 @Inject Logger logger;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
48
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
49 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
50 * The data repository
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
51 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 @Inject
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 @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
54 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
55
691
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
56 /**
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
57 * Create a list of probe objects
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
58 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
59 * @param id Messprogramm id
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
60 * @param from The start date
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
61 * @param to The end date
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
62 *
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
63 * @return List of probe objects.
46bb231ff9b9 Documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 685
diff changeset
64 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 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
66 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
67 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
68 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
69 Messprogramm.class);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 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
71 Response response = repository.filter(builder.getQuery(), "land");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 684
diff changeset
72 @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
73 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
74 (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
75 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
76 return null;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 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
79 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
80 start.setTime(new Date(from));
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 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
82 end.setTime(new Date (to));
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
83 List<LProbe> proben = new ArrayList<LProbe>();
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
84
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
85
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
86 if ("M".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
87 Calendar realStart = getStart ("M", start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
88 proben.addAll(generateMonth(messprogramm, realStart, end, "M"));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
89 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
90 else if ("Q".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
91 Calendar realStart = getStart ("Q", start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
92 proben.addAll(generateQuarter(messprogramm, realStart, end, "Q"));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
93 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
94 else if ("H".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
95 Calendar realStart = getStart ("H", start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
96 proben.addAll(generateHalf(messprogramm, realStart, end, "H"));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
97 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
98 else {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
99 Date[][] intervals = calculateIntervals(start, end, messprogramm);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
100 for (Date[] interval : intervals) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
101 createProben(interval, messprogramm, proben);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
102 }
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
103 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
104 return proben;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
105 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
106
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
107 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
108 * Create LProbe objects using the interval and messprogramm details.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
109 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
110 * @param interval The time interval for probe objects.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
111 * @param messprogramm The messprogramm containing details.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
112 * @param proben An (empty) list for probe objects filled by this
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
113 * method
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
114 * @return
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
115 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
116 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
117 Date[] interval,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
118 Messprogramm messprogramm,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 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
120 ) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 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
122 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
123 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
124 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
125 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
126 int endDay = end.get(Calendar.DAY_OF_YEAR);
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
127
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
128 // If fixed interval (T, W, W2, W4)
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
129 if ("T".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
130 proben.addAll(generate(messprogramm, start, end, 1));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
131 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
132 else if ("W".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
133 Calendar realStart = getMonday(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
134 proben.addAll(generate(messprogramm, realStart, end, 7));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
135 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
136 else if ("W2".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
137 Calendar realStart = getMonday(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
138 proben.addAll(generate(messprogramm, realStart, end, 14));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
139 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
140 else if ("W4".equals(messprogramm.getProbenintervall())) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
141 Calendar realStart = getMonday(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
142 proben.addAll(generate(messprogramm, realStart, end, 28));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
143 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
144 else if ("J".equals(messprogramm.getProbenintervall()) &&
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
145 messprogramm.getTeilintervallVon() >= startDay + messprogramm.getIntervallOffset() &&
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
146 messprogramm.getTeilintervallBis() <= endDay + messprogramm.getIntervallOffset()) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
147 start.add(Calendar.DATE, messprogramm.getTeilintervallVon() - startDay + messprogramm.getIntervallOffset());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
148 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
149 end.add(Calendar.DATE, messprogramm.getTeilintervallBis() - endDay + messprogramm.getIntervallOffset());
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
150 Date endDate = end.getTime();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
151 LProbe probe = createObjects(messprogramm, startDate, endDate);
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
152 if (probe != null) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
153 proben.add(probe);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
154 }
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
155 return;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
156 }
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
157 }
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
158
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
159 private List<LProbe> generateMonth(
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
160 Messprogramm messprogramm,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
161 Calendar start,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
162 Calendar end,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
163 String interval
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
164 ) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
165 int offset = messprogramm.getIntervallOffset() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
166 0 : messprogramm.getIntervallOffset();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
167 int teilVon = messprogramm.getTeilintervallVon() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
168 0 : messprogramm.getTeilintervallVon() - 1;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
169 int teilBis = messprogramm.getTeilintervallBis() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
170 0 : messprogramm.getTeilintervallBis();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
171 int manualDuration = teilBis - teilVon;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
172
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
173 List<LProbe> proben = new ArrayList<LProbe>();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
174
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
175 int currentLength = getDurationMonth(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
176 if (manualDuration > 0) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
177 currentLength = manualDuration;
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
178 }
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
179 Calendar monthStart = (Calendar)start.clone();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
180 Calendar monthEnd = Calendar.getInstance();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
181 monthStart.add(Calendar.DAY_OF_YEAR, offset + teilVon);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
182 monthEnd.setTime(start.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
183 monthEnd.add(Calendar.DAY_OF_YEAR, currentLength - 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
184 for (;monthStart.before(end);) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
185 if (monthStart.get(Calendar.DAY_OF_YEAR) > messprogramm.getGueltigVon() &&
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
186 monthStart.get(Calendar.DAY_OF_YEAR) < messprogramm.getGueltigBis()) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
187 LProbe probe = createObjects(messprogramm, monthStart.getTime(), monthEnd.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
188 if (probe != null) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
189 proben.add(probe);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
190 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
191 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
192 monthStart.set(Calendar.DAY_OF_MONTH, 2);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
193 monthStart = getStart("M", monthStart);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
194 monthStart.add(Calendar.DAY_OF_YEAR, offset + teilVon);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
195 if (manualDuration <= 0) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
196 currentLength = getDurationMonth(monthStart);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
197 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
198 monthEnd.setTime(monthStart.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
199 monthEnd.add(Calendar.DAY_OF_YEAR, currentLength - 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
200 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
201
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
202 return proben;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
203 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
204
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
205 private List<LProbe> generateQuarter(
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
206 Messprogramm messprogramm,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
207 Calendar start,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
208 Calendar end,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
209 String interval
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
210 ) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
211 int offset = messprogramm.getIntervallOffset() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
212 0 : messprogramm.getIntervallOffset();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
213 int teilVon = messprogramm.getTeilintervallVon() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
214 0 : messprogramm.getTeilintervallVon() - 1;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
215 int teilBis = messprogramm.getTeilintervallBis() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
216 0 : messprogramm.getTeilintervallBis();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
217 int manualDuration = teilBis - teilVon;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
218
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
219 List<LProbe> proben = new ArrayList<LProbe>();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
220
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
221 int currentLength = getDurationQuarter(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
222 if (manualDuration > 0) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
223 currentLength = manualDuration;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
224 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
225 Calendar quarterStart = (Calendar)start.clone();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
226 Calendar quarterEnd = Calendar.getInstance();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
227 quarterStart.add(Calendar.DAY_OF_YEAR, offset + teilVon);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
228 quarterEnd.setTime(start.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
229 quarterEnd.add(Calendar.DAY_OF_YEAR, currentLength);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
230 for (;quarterStart.before(end);) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
231 if (quarterStart.get(Calendar.DAY_OF_YEAR) > messprogramm.getGueltigVon() &&
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
232 quarterStart.get(Calendar.DAY_OF_YEAR) < messprogramm.getGueltigBis()) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
233 LProbe probe = createObjects(messprogramm, quarterStart.getTime(), quarterEnd.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
234 if (probe != null) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
235 proben.add(probe);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
236 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
237 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
238 quarterStart.set(Calendar.DAY_OF_MONTH, 2);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
239 quarterStart = getStart("Q", quarterStart);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
240 quarterStart.add(Calendar.DAY_OF_YEAR, offset + teilVon);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
241 if (manualDuration <= 0) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
242 currentLength = getDurationQuarter(quarterStart);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
243 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
244 quarterEnd.setTime(quarterStart.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
245 quarterEnd.add(Calendar.DAY_OF_YEAR, currentLength);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
246 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
247
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
248 return proben;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
249 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
250
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
251 private List<LProbe> generateHalf(
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
252 Messprogramm messprogramm,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
253 Calendar start,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
254 Calendar end,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
255 String interval
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 int offset = messprogramm.getIntervallOffset() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
258 0 : messprogramm.getIntervallOffset();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
259 int teilVon = messprogramm.getTeilintervallVon() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
260 0 : messprogramm.getTeilintervallVon() - 1;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
261 int teilBis = messprogramm.getTeilintervallBis() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
262 0 : messprogramm.getTeilintervallBis();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
263 int manualDuration = teilBis - teilVon;
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 List<LProbe> proben = new ArrayList<LProbe>();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
266
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
267 int currentLength = getDurationHalf(start);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
268 if (manualDuration > 0) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
269 currentLength = manualDuration;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
270 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
271 Calendar halfStart = (Calendar)start.clone();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
272 Calendar halfEnd = Calendar.getInstance();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
273 halfStart.add(Calendar.DAY_OF_YEAR, offset + teilVon);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
274 halfEnd.setTime(halfStart.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
275 halfEnd.add(Calendar.DAY_OF_YEAR, currentLength);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
276 for (;halfStart.before(end);) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
277 if (halfStart.get(Calendar.DAY_OF_YEAR) > messprogramm.getGueltigVon() &&
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
278 halfStart.get(Calendar.DAY_OF_YEAR) < messprogramm.getGueltigBis()) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
279 LProbe probe = createObjects(messprogramm, halfStart.getTime(), halfEnd.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
280 if (probe != null) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
281 proben.add(probe);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
282 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
283 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
284 halfStart.set(Calendar.DAY_OF_MONTH, 2);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
285 halfStart = getStart("H", halfStart);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
286 halfStart.add(Calendar.DAY_OF_YEAR, offset + teilVon);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
287 if (manualDuration <= 0) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
288 currentLength = getDurationHalf(halfStart);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
289 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
290 halfEnd.setTime(halfStart.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
291 halfEnd.add(Calendar.DAY_OF_YEAR, currentLength);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
292 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
293
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
294 return proben;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
295 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
296
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
297 private List<LProbe> generate(
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
298 Messprogramm messprogramm,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
299 Calendar start,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
300 Calendar end,
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
301 int days
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
302 ) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
303 int offset = messprogramm.getIntervallOffset() == null ?
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
304 0 : messprogramm.getIntervallOffset();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
305 int startDay = start.get(Calendar.DAY_OF_YEAR) +
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
306 messprogramm.getTeilintervallVon() - 1 + offset;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
307 int endDay = end.get(Calendar.DAY_OF_YEAR);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
308
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
309
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
310 //int teilStart = messprogramm.getTeilintervallVon() + startDay;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
311 //int teilEnd = messprogramm.getTeilintervallBis() + startDay;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
312 List<LProbe> proben = new ArrayList<LProbe>();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
313 int duration = messprogramm.getTeilintervallBis() -
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
314 messprogramm.getTeilintervallVon();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
315
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
316 logger.debug("real start day: " + startDay);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
317 logger.debug("real end day" + endDay);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
318 for (;startDay <= endDay;) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
319 logger.debug("generate from " + startDay);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
320 start.set(Calendar.DAY_OF_YEAR, startDay);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
321 end.set(Calendar.DAY_OF_YEAR, startDay + duration);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
322 logger.debug("from: " + start.getTime() + " to " + end.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
323 startDay += days;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
324 LProbe probe = createObjects(messprogramm, start.getTime(), end.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
325 if (probe != null) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
326 proben.add(probe);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
327 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
328 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
329 return proben;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
330 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
331
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
332 private int getDurationMonth(Calendar month) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
333 return month.getActualMaximum(Calendar.DAY_OF_MONTH);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
334 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
335
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
336 private int getDurationQuarter(Calendar month) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
337 if ((month.get(Calendar.MONTH)) % 3 != 0) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
338 logger.debug("not a valid month!");
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
339 return 91; // Fallback to not generate to much probe objects.
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
340 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
341 int duration = 0;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
342 Calendar tmp = (Calendar)month.clone();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
343 for (int i = 0; i < 3; i++) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
344 duration += tmp.getActualMaximum(Calendar.DAY_OF_MONTH);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
345 tmp.set(Calendar.MONTH, tmp.get(Calendar.MONTH) + 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
346 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
347 return duration;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
348 }
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 private int getDurationHalf(Calendar month) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
351 if ((month.get(Calendar.MONTH)) % 6 != 0) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
352 logger.debug("not a valid month!");
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
353 return 183; // Fallback to not generate to much probe objects.
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 int duration = 0;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
356 Calendar tmp = (Calendar)month.clone();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
357 for (int i = 0; i < 6; i++) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
358 duration += tmp.getActualMaximum(Calendar.DAY_OF_MONTH);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
359 tmp.set(Calendar.MONTH, tmp.get(Calendar.MONTH) + 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
360 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
361 return duration - 1;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
362 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
363
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
364 private Calendar getStart(String interval, Calendar date) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
365 Calendar start = Calendar.getInstance();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
366 start.setTime(date.getTime());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
367 if ("M".equals(interval)) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
368 if (start.get(Calendar.DAY_OF_MONTH) > 1) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
369 int month = start.get(Calendar.MONTH) + 1;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
370 start.set(Calendar.MONTH, month);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
371 start.set(Calendar.DAY_OF_MONTH, 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
372 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
373 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
374 else if ("Q".equals(interval)) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
375 int month = start.get(Calendar.MONTH); /* 0 through 11 */
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
376 int quarter = (month / 3) + 1;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
377 Calendar tmp = (Calendar)start.clone();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
378 logger.debug("in " + quarter + ". quarter");
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
379
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
380 tmp.set(Calendar.MONTH, (quarter * 3));
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
381 logger.debug("its the " + tmp.get(Calendar.MONTH) + ". month");
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
382 tmp.set(Calendar.DAY_OF_MONTH, 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
383 int firstDayOfQuarter = tmp.get(Calendar.DAY_OF_YEAR);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
384 if (start.get(Calendar.DAY_OF_YEAR) > firstDayOfQuarter) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
385 if (quarter < 4) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
386 start.set(Calendar.MONTH, (quarter + 1) * 3 - 2);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
387 start.set(Calendar.DAY_OF_MONTH, 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
388 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
389 else {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
390 // Next year...
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
391 start.set(Calendar.MONTH, 0);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
392 start.set(Calendar.YEAR, start.get(Calendar.YEAR) + 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
393 start.set(Calendar.DAY_OF_MONTH, 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
394 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
395 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
396 else {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
397 start = (Calendar)tmp.clone();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
398 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
399 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
400 else if ("H".equals(interval)) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
401 int month = start.get(Calendar.MONTH);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
402 int half = (month / 6) + 1;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
403 Calendar tmp = (Calendar)start.clone();
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
404 tmp.set(Calendar.MONTH, half * 6 - 6);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
405 tmp.set(Calendar.DAY_OF_MONTH, 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
406 int firstDayOfHalf = tmp.get(Calendar.DAY_OF_YEAR);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
407 if (start.get(Calendar.DAY_OF_YEAR) > firstDayOfHalf) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
408 if (half == 1) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
409 start.set(Calendar.MONTH, (half + 1) * 6 - 6);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
410 start.set(Calendar.DAY_OF_MONTH, 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
411 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
412 else {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
413 // Next year...
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
414 start.set(Calendar.MONTH, 0);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
415 start.set(Calendar.YEAR, start.get(Calendar.YEAR) + 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
416 start.set(Calendar.DAY_OF_MONTH, 1);
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 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
419 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
420 return start;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
421 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
422
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
423 private Calendar getMonday(Calendar week) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
424 if (week.get(Calendar.DAY_OF_WEEK) > 1) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
425 week.set(Calendar.WEEK_OF_YEAR, week.get(Calendar.WEEK_OF_YEAR) + 1);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
426 }
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
427 week.set(Calendar.DAY_OF_WEEK, week.getFirstDayOfWeek());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
428 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
429 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
430
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
431 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
432 * Create a single probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
433 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
434 * @param messprogramm The messprogramm containing probe details
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
435 * @param startDate The date for 'solldatumbeginn'
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
436 * @param endDate The date for 'solldatumende'
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
437 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
438 * @return The new probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
439 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
440 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
441 Messprogramm messprogramm,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
442 Date startDate,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
443 Date endDate
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
444 ) {
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
445 QueryBuilder<LProbe> builderProbe =
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
446 new QueryBuilder<LProbe>(
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
447 repository.entityManager("land"),
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
448 LProbe.class);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
449 builderProbe.and("mprId", messprogramm.getId());
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
450 builderProbe.and("solldatumBeginn", startDate);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
451 builderProbe.and("solldatumEnde", endDate);
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
452
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
453 List<LProbe> proben =
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
454 repository.filterPlain(builderProbe.getQuery(), "land");
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
455
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
456 if (!proben.isEmpty()) {
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
457 return null;
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
458 }
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
459 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
460 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
461 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
462 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
463 probe.setMstId(messprogramm.getMstId());
896
c94a07959060 Use the laborMstId in generated probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 810
diff changeset
464 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
465 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
466 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
467 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
468 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
469 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
470 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
471 probe.setUmwId(messprogramm.getUmwId());
981
84f17f460969 Refactored probe generation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 914
diff changeset
472 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
473 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
474 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
475 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
476 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
477
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
478 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
479 !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
480 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
481 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
482 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
483 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
484 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
485
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
486 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
487 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
488
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
489 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
490 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
491 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
492 MessprogrammMmt.class);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
493 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
494 Response response = repository.filter(builder.getQuery(), "land");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 684
diff changeset
495 @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
496 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
497 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
498 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
499 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
500 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
501 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
502 messung.setNebenprobenNr(
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
503 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
504 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
505 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
506 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
507 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
508 repository.create(mTranslation, "land");
897
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
509
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
510 LStatusProtokoll status = new LStatusProtokoll();
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
511 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
512 status.setMessungsId(messung.getId());
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
513 status.setErzeuger(probe.getMstId());
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
514 status.setStatusStufe(1);
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
515 status.setStatusWert(0);
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
516 repository.create(status, "land");
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
517 messung.setStatus(status.getId());
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
518 repository.update(messung, "land");
67c3d22372e4 Add the initial status to generated messung objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 896
diff changeset
519
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
520 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
521 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
522 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
523 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
524 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
525 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
526 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
527 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
528 }
698
cd22674b4673 Fixed ort generation from messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 697
diff changeset
529 if (messprogramm.getOrtId() != null &&
cd22674b4673 Fixed ort generation from messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 697
diff changeset
530 !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
531 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
532 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
533 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
534 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
535 repository.entityManager("stamm"), Ort.class);
698
cd22674b4673 Fixed ort generation from messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 697
diff changeset
536 ortBuilder.and("id", messprogramm.getOrtId());
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
537 Response ortResponse = repository.filter(ortBuilder.getQuery(), "stamm");
685
3118fbbe6292 Fixed or supressed warnings.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 684
diff changeset
538 @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
539 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
540 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
541 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
542 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
543 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
544 }
680
a5e6580e8016 Reload the created probe object to have the 'probeIdAlt' field available.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 656
diff changeset
545 // Reolad the probe to have the old id
a5e6580e8016 Reload the created probe object to have the 'probeIdAlt' field available.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 656
diff changeset
546 probe =
a5e6580e8016 Reload the created probe object to have the 'probeIdAlt' field available.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 656
diff changeset
547 (LProbe)repository.getById(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
548 return probe;
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
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
551 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
552 * 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
553 * and the messprogramm.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
554 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
555 * @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
556 * @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
557 * @param messprogramm The messprogramm
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
558 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
559 * @return An array of start/end pairs.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
560 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
561 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
562 Calendar start,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
563 Calendar end,
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
564 Messprogramm messprogramm
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 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
567 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
568 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
569 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
570 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
571 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
572 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
573 Calendar cStart = Calendar.getInstance();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
574 cStart.set(startYear + i, start.get(Calendar.MONTH), start.get(Calendar.DAY_OF_MONTH));
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
575 if (messprogramm.getGueltigVon() == null ||
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
576 messprogramm.getGueltigVon() <= 0 ||
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
577 (realStart > messprogramm.getGueltigVon() &&
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
578 i == 0)
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
579 ) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
580 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
581 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
582 else {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
583 start.add(Calendar.DATE, messprogramm.getGueltigVon() - realStart);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
584 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
585 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
586 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
587
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
588 Calendar cEnd = Calendar.getInstance();
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
589 cEnd.set(startYear + i, end.get(Calendar.MONTH), end.get(Calendar.DAY_OF_MONTH));
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
590 if (messprogramm.getGueltigBis() == null ||
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
591 messprogramm.getGueltigBis() <= 0 ||
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
592 (realEnd < messprogramm.getGueltigBis() &&
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
593 i == years - 1)
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
594 ) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
595 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
596 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
597 else {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
598 cEnd.add(Calendar.DATE, messprogramm.getGueltigBis() - realEnd);
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
599 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
600 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
601 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
602 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
603
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
604 return intervals;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
605 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
606
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
607 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
608 * Parse an interval string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
609 * Posible values are: J, H, Q, M, W4, W2, W, T
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
610 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
611 * @param interval the interval string.
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 * @return the amount of days for the given interval.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
614 */
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
615 private int parseInterval(String interval) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
616 if ("J".equals(interval)) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
617 return 365;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
618 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
619 else if ("H".equals(interval)) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
620 return 183;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
621 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
622 else if ("Q".equals(interval)) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
623 return 91;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
624 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
625 else if ("M".equals(interval)) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
626 return 30;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
627 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
628 else if ("W4".equals(interval)) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
629 return 28;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
630 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
631 else if ("W2".equals(interval)) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
632 return 14;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
633 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
634 else if ("W".equals(interval)) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
635 return 7;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
636 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
637 else if ("T".equals(interval)) {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
638 return 1;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
639 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
640 else {
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
641 return 0;
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
642 }
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
643 }
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
644
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
645 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
646 * Search for the umwelt id using the 'deskriptor'.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
647 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
648 * @param probe The probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
649 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
650 * @return The updated probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
651 */
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
652 public LProbe findUmweltId(LProbe probe) {
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
653 String[] mediaDesk = probe.getMediaDesk().split(" ");
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
654 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
655 return probe;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
656 }
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
657 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
658 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
659 }
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
660
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
661 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
662 * Search for the media description using the 'deskriptor'.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
663 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
664 * @param probe The probe object
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
665 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
666 * @return The updated probe object.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
667 */
709
e502e1af6256 added autofill Mediadescription
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents: 698
diff changeset
668 public LProbe findMediaDesk(LProbe probe) {
713
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
669 Object result = repository.queryFromString(
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
670 "SELECT get_media_from_media_desk( :mediaDesk );", "stamm")
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
671 .setParameter("mediaDesk", probe.getMediaDesk())
713
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
672 .getSingleResult();
d8e421d9d7ec Fixed possible NPE.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 711
diff changeset
673 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
674 return probe;
e502e1af6256 added autofill Mediadescription
Marco Lechner, Bundesamt fuer Strahlenschutz, SW 2.1 <mlechner@bfs.de>
parents: 698
diff changeset
675 }
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
676
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
677 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
678 * Search for the umwelt id using the 'deskriptor'.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
679 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
680 * @param messprogramm The messprogramm
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 * @return The updated messprogramm.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
683 */
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
684 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
685 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
686 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
687 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
688 }
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 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
690 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
691 }
8c486052264c Refactored finding the umwelt id to be able to use it for messprogramme.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 696
diff changeset
692
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
693 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
694 * Find the umwelt id for a given deskriptor.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
695 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
696 * @param mediaDesk The deskriptor string
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
697 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
698 * @return The umwelt id or an empty string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
699 */
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
700 private String findUmwelt(String[] mediaDesk) {
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
701 List<Integer> mediaIds = new ArrayList<Integer>();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
702 boolean zebs = false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
703 Integer parent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
704 Integer hdParent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
705 Integer ndParent = null;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
706 if ("01".equals(mediaDesk[1])) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
707 zebs = true;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
708 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
709 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
710 if ("00".equals(mediaDesk[i])) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
711 mediaIds.add(-1);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
712 continue;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
713 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
714 if (zebs && i < 5) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
715 parent = hdParent;
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 if (!zebs && i < 3) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
718 parent = hdParent;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
719 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
720 else {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
721 parent = ndParent;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
722 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
723 QueryBuilder<Deskriptoren> builder = new QueryBuilder<Deskriptoren>(
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
724 repository.entityManager("stamm"), Deskriptoren.class);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
725 if (parent != null) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
726 builder.and("vorgaenger", parent);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
727 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
728 builder.and("sn", mediaDesk[i]);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
729 builder.and("ebene", i - 1);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
730 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
731 @SuppressWarnings("unchecked")
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
732 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
733 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
734 return "";
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
735 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
736 hdParent = data.get(0).getId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
737 mediaIds.add(data.get(0).getId());
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
738 if (i == 2) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
739 ndParent = data.get(0).getId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
740 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
741 }
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
742 return getUmwelt(mediaIds, zebs);
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
743 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
744
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
745 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
746 * 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
747 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
748 * @param media The list of media ids.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
749 * @param isZebs Flag for type of the deskriptor.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
750 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
751 * @return The umwelt id or an empty string.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
752 */
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
753 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
754 QueryBuilder<DeskriptorUmwelt> builder =
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
755 new QueryBuilder<DeskriptorUmwelt>(
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
756 repository.entityManager("stamm"), DeskriptorUmwelt.class);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
757
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
758 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
759 return "";
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
760 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
761
735
bcaf30a871ef Set fixed size for first deskriptoren request.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 732
diff changeset
762 int size = 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
763 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
764 if (media.get(i) == -1) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
765 continue;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
766 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
767 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
768 builder.and(field, media.get(i));
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 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
771 @SuppressWarnings("unchecked")
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
772 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
773 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
774 return null;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
775 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
776
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
777 boolean unique = isUnique(data);
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
778 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
779 return data.get(0).getUmwId();
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
780 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
781 else {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
782 int found = -1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
783 for (int i = 0; i < data.size(); i++) {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
784 int matches = 0;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
785 int lastMatch = 0;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
786 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
787 switch(j) {
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
788 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
789 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
790 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
791 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
792 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
793 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
794 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
795 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
796 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
797 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
798 matches +=1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
799 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
800 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
801 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
802 break;
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
803 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
804 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
805 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
806 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
807 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
808 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
809 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
810 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
811 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
812 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
813 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
814 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
815 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
816 matches += 1;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
817 break;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
818 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
819 matches += 1;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
820 break;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
821 }
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
822 if (matches > lastMatch) {
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
823 lastMatch = matches;
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
824 found = i;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
825 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
826 }
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
827 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
828 return data.get(found).getUmwId();
696
97ccdf45a4a3 Find the correct umweltbereich.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 695
diff changeset
829 }
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
830 }
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
831 return null;
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
832 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
833 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
834
711
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
835 /**
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
836 * 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
837 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
838 * @param list A list of DescriptorUmwelt objects.
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
839 *
3ec358698b4d Code style and documentation.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 709
diff changeset
840 * @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
841 */
695
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
842 private boolean isUnique(List<DeskriptorUmwelt> list) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
843 if (list.isEmpty()) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
844 return false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
845 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
846 String element = list.get(0).getUmwId();
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
847 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
848 if (!element.equals(list.get(i))) {
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
849 return false;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
850 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
851 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
852 return true;
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
853 }
b8afbf6c1b5d Find the umw_id for probe objects.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 691
diff changeset
854
656
866d05db7a6a Added probe factory. This factory creates probe objects(and its childs) from
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
855 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)