annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZoneServerClientXChange.java @ 9661:9b8ba3b83a15

Importer (s/u-info) vegetation zones: new database column in vegetation_type table for german type name, localized vegetation type names by querying the database instead of translating by resource property, detecting and cancelling the import of a second vegetation zone file for a river, detecting, logging, cancelling in case of wrong column titles, detecting, logging and ignoring lines with missing (color) values, comparing vegetation zone name and class with the database and logging+ignoring in case of inconsistencies, starting the most elevated zone with 0 instead of -1 overflow days
author mschaefer
date Mon, 23 Mar 2020 16:38:12 +0100
parents d421c2bf0195
children
rev   line source
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
2 * Software engineering by
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
5 *
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
9 */
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.uinfo.vegetationzones;
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
11
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
12 import java.util.ArrayList;
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
13 import java.util.List;
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
14 import java.util.TreeSet;
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
15
9402
e511eb935ccd Changed hard coded standard vegetation zone table to fetching it from the database, i18n for the standard zone names
mschaefer
parents: 9260
diff changeset
16 import org.dive4elements.artifacts.CallContext;
e511eb935ccd Changed hard coded standard vegetation zone table to fetching it from the database, i18n for the standard zone names
mschaefer
parents: 9260
diff changeset
17 import org.dive4elements.river.artifacts.resources.Resources;
e511eb935ccd Changed hard coded standard vegetation zone table to fetching it from the database, i18n for the standard zone names
mschaefer
parents: 9260
diff changeset
18 import org.dive4elements.river.model.River;
9443
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9403
diff changeset
19 import org.dive4elements.river.model.uinfo.VegetationType;
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9403
diff changeset
20 import org.dive4elements.river.model.uinfo.VegetationZone;
9402
e511eb935ccd Changed hard coded standard vegetation zone table to fetching it from the database, i18n for the standard zone names
mschaefer
parents: 9260
diff changeset
21
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
22 /**
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
23 * @author Domenico Nardi Tironi
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
24 *
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
25 */
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
26 public class VegetationZoneServerClientXChange implements Comparable<VegetationZoneServerClientXChange> {
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
27
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
28 // IMMER ABGLEICHEN MIT VegetationZoneServerClientXChange.class Server und Client
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
29
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
30 private static final String TABLE_CELL_SEPARATOR = "TABLE_CELL_SEPARATOR";
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
31
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
32 private static final String TABLE_ROW_SEPARATOR = "TABLE_ROW_SEPARATOR";
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
33
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
34 private final String zoneName;
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
35
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
36 private final int min_day_overflow;
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
37
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
38 private final int max_day_overflow;
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
39
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
40 private final String hexColor;
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
41
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
42 public static List<VegetationZoneServerClientXChange> parse(final String zonesRaw) {
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
43 final List<VegetationZoneServerClientXChange> resultList = new ArrayList<>();
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
44
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
45 final List<String[]> results = new ArrayList<>();
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
46 if (zonesRaw.contains(TABLE_ROW_SEPARATOR)) {
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
47 final String[] rows = zonesRaw.split(TABLE_ROW_SEPARATOR);
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
48 for (final String row : rows) {
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
49 if (row.contains(TABLE_CELL_SEPARATOR)) {
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
50 final String[] result = row.split(TABLE_CELL_SEPARATOR);
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
51 results.add(result);
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
52 }
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
53 }
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
54 }
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
55 for (final String[] zone : results) {
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
56
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
57 final VegetationZoneServerClientXChange helper = new VegetationZoneServerClientXChange(zone[0], Integer.valueOf(zone[1]), Integer.valueOf(zone[2]),
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
58 zone[3]);
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
59 resultList.add(helper);
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
60 }
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
61
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
62 return resultList;
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
63 }
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
64
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
65 public static VegetationZoneServerClientXChange createFromTableEntry(final String zone, final String min_day_overflow, final String max_day_overflow,
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
66 final String hexColor) {
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
67 return new VegetationZoneServerClientXChange(zone, Integer.valueOf(min_day_overflow), Integer.valueOf(max_day_overflow), hexColor); // Error-Handling?
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
68 }
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
69
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
70 private VegetationZoneServerClientXChange(final String zone, final Integer min_day_overflow, final Integer max_day_overflow, final String hexColor) {
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
71 this.zoneName = zone;
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
72 this.min_day_overflow = min_day_overflow;
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
73 this.max_day_overflow = max_day_overflow;
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
74 this.hexColor = hexColor;
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
75 }
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
76
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
77 public int getMax_day_overflow() {
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
78 return this.max_day_overflow;
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
79 }
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
80
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
81 public String getZoneName() {
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
82 if (this.zoneName == null || this.zoneName.equals("")) {
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
83 return "---";
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
84 }
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
85 return this.zoneName;
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
86 }
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
87
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
88 public String getHexColor() {
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
89 try {
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
90 // REMARK: only return valid colors
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
91 Integer.decode(this.hexColor);
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
92 return this.hexColor;
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
93 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
94 catch (final NumberFormatException e) {
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
95 e.printStackTrace();
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
96 return "#ffffff";
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
97 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
98 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
99
9071
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
100 public int getMin_day_overflow() {
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
101 return this.min_day_overflow;
a561b882436d create module bundu (Betrieb & Unterhaltung)
gernotbelger
parents:
diff changeset
102 }
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
103
9443
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9403
diff changeset
104 public static String getLocalizedVegetationTypeName(final CallContext context, final VegetationType zonetype) {
9661
9b8ba3b83a15 Importer (s/u-info) vegetation zones: new database column in vegetation_type table for german type name,
mschaefer
parents: 9523
diff changeset
105 return zonetype.getLocalizedName(Resources.getLocale(context.getMeta()));
9443
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9403
diff changeset
106 }
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9403
diff changeset
107
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
108 public static final List<VegetationZoneServerClientXChange> getStandardList(final River river, final CallContext context) {
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
109
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
110 final List<VegetationZoneServerClientXChange> list = new ArrayList<>();
9443
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9403
diff changeset
111 for (final VegetationZone vz : VegetationZone.getValues(river)) {
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9403
diff changeset
112 final String zn = getLocalizedVegetationTypeName(context, vz.getVegetationType());
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
113 list.add(new VegetationZoneServerClientXChange(zn, vz.getMin_overflow_days(), vz.getMax_overflow_days(), vz.getColor()));
9402
e511eb935ccd Changed hard coded standard vegetation zone table to fetching it from the database, i18n for the standard zone names
mschaefer
parents: 9260
diff changeset
114 }
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
115 return list;
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
116 }
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
117
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
118 public static final String parseListToDataString(final List<VegetationZoneServerClientXChange> list) {
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
119
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
120 java.util.Collections.sort(list);
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
121 final StringBuilder builder = new StringBuilder();
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
122 for (final VegetationZoneServerClientXChange zone : list) {
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
123 builder.append(zone.getZoneName());
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
124 builder.append(TABLE_CELL_SEPARATOR);
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
125 builder.append(zone.getMin_day_overflow());
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
126 builder.append(TABLE_CELL_SEPARATOR);
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
127 builder.append(zone.getMax_day_overflow());
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
128 builder.append(TABLE_CELL_SEPARATOR);
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
129 builder.append(zone.getHexColor());
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
130 builder.append(TABLE_ROW_SEPARATOR);
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
131 }
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
132 return builder.toString();
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
133
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
134 }
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
135
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
136 @Override
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
137 public int compareTo(final VegetationZoneServerClientXChange o) {
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
138 final int basicCompare = Integer.valueOf(this.getMin_day_overflow()).compareTo(o.getMin_day_overflow());
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
139 if (basicCompare == 0)
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
140 return Integer.valueOf(this.getMax_day_overflow()).compareTo(o.getMax_day_overflow()); // wenn min==min && max==max, alphabetisch sortieren?
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
141
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
142 if (basicCompare == 0) {
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
143 return 1; // for treeSet
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
144 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
145
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
146 return basicCompare;
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
147 }
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9071
diff changeset
148
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
149 public static final boolean zonesAreOverlapping(final List<VegetationZoneServerClientXChange> list) {
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
150 for (final VegetationZoneServerClientXChange zone : list) {
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
151 for (final VegetationZoneServerClientXChange zoneOther : list) {
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
152 if (zone != zoneOther) {
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
153 final boolean overlaps = zone.overlaps(zoneOther);
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
154 if (overlaps) {
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
155 return overlaps; // cancel. only one zone has to overlap
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
156 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
157 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
158 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
159 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
160
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
161 return false;
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
162 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
163
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
164 public static final boolean hasGaps(final List<VegetationZoneServerClientXChange> list, final int lower, final int upper) {
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
165
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
166 if ((upper - lower) == 0)
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
167 return true;
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
168
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
169 final TreeSet<VegetationZoneServerClientXChange> treeList = new TreeSet<>();
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
170 treeList.addAll(list);
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
171 int lowerCompare = lower;
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
172 for (final VegetationZoneServerClientXChange zone : treeList) {
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
173 if (zone.getLowerFromTo() > (lowerCompare)) { // nicht inklusiv
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
174 return true;
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
175 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
176 lowerCompare = zone.getUpperFromTo();
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
177 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
178 if ((lowerCompare) < upper)
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
179 return true; // am Ende nicht geschlossen
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
180
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
181 return false;
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
182 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
183
9403
e2da9c8a7c57 VegetationZone umbenennen
gernotbelger
parents: 9402
diff changeset
184 private boolean overlaps(final VegetationZoneServerClientXChange otherZone) {
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
185 final int otherLower = otherZone.getLowerFromTo();
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
186 final int otherUpper = otherZone.getUpperFromTo();
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
187
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
188 final int upper = getUpperFromTo();
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
189 final int lower = getLowerFromTo();
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
190 if ((otherUpper <= upper && otherUpper > lower)) {
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
191 return true;
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
192 } else if (otherLower >= lower && otherLower < upper) {
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
193 return true;
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
194 } else if (otherLower == lower && otherUpper == upper) {
9260
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
195 return true;
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
196 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
197 return false;
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
198 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
199
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
200 public Integer getLowerFromTo() {
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
201 return this.min_day_overflow < this.max_day_overflow ? this.min_day_overflow : this.max_day_overflow; // Math. is forbidden :-(
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
202 }
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
203
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
204 public Integer getUpperFromTo() {
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
205 return this.min_day_overflow > this.max_day_overflow ? this.min_day_overflow : this.max_day_overflow;// Math. is forbidden :-(
b570b6fcc052 VegetationZone color added and disabled
gernotbelger
parents: 9118
diff changeset
206 }
9523
d421c2bf0195 Allow to edit colors in vegetation zones
gernotbelger
parents: 9443
diff changeset
207 }

http://dive4elements.wald.intevation.org