annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTablePanel.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 8b7bf26b8782
children
rev   line source
9066
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
2 * Software engineering by Intevation GmbH
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
3 *
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
7 */
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
8
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
9 package org.dive4elements.river.client.client.ui.uinfo;
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
10
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
11 import java.util.List;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
12
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
13 import org.dive4elements.river.client.client.ui.DatacageWidget;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
14 import org.dive4elements.river.client.client.ui.DatacageWidgetData;
9066
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
15 import org.dive4elements.river.client.shared.model.DataList;
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
16 import org.dive4elements.river.client.shared.model.User;
9066
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
17
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
18 import com.smartgwt.client.util.SC;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
19 import com.smartgwt.client.widgets.Button;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
20 import com.smartgwt.client.widgets.Canvas;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
21 import com.smartgwt.client.widgets.events.ClickEvent;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
22 import com.smartgwt.client.widgets.events.ClickHandler;
9107
41f4bc83aa7a vegzones improved
gernotbelger
parents: 9070
diff changeset
23 import com.smartgwt.client.widgets.layout.Layout;
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
24 import com.smartgwt.client.widgets.layout.VLayout;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
25 import com.smartgwt.client.widgets.tree.TreeNode;
9066
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
26
9070
611a523fc42f VegetationZoneAccessHelper, VegetationTablePanels verbessert
gernotbelger
parents: 9069
diff changeset
27 public class VegetationzonesTablePanel extends AbstractVegZonesTablePanel {
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9066
diff changeset
28
9066
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
29 private static final long serialVersionUID = 1L;
9310
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
30
9506
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
31 // private final static Double DELTA = 0.0000001;
9310
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
32
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
33 private final User user;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
34
9310
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
35 // private double lowerKm = 0.0;
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
36 // private double upperKm = 0.0;
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
37 // private final Double vegZoneFrom = null;
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
38 // private final Double vegZoneTo = null;
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
39 // private final Label kmOverlapLabel = new Label();
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
40
9506
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
41 // REMARK:: in der LV steht, dass eine Warnung herausgegeben werden soll, wenn der kmBereich der ausgewählten
9310
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
42 // Vegetationszone NICHT überlappt.
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
43 // Derzeit werden durch den XPathQuery (siehe meta-data.xml usw) solche Vegetationszonen ohnehin gefiltert (nicht
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
44 // angezeigt) - so wie es bisher überall standard ist, sodass
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
45 // die Warnfunktion obsolet ist. Sollte der AG auf die LV bestehen, müsste der Query angepasst werden und hier alles
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
46 // wieder einkommentiert werden
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
47
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
48 public VegetationzonesTablePanel(final User user) {
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
49 super();
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
50 this.user = user;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
51 }
9066
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
52
9068
a5cf8d7bff3c access uinfo.salx; tablePanel edit/non-edit merge
gernotbelger
parents: 9066
diff changeset
53 @Override
9107
41f4bc83aa7a vegzones improved
gernotbelger
parents: 9070
diff changeset
54 public void createWidget(final Layout root, final DataList data) {
9118
431f1c269be5 Veg-Zone Table improved, State change data recovery;
gernotbelger
parents: 9107
diff changeset
55 createTable(root, data, "420", false);
9310
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
56 // this.kmOverlapLabel.getElement().getStyle().setColor("red");
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
57 // root.addMember(this.kmOverlapLabel);
9066
b5d7a9d79837 uinfo.inundation_duration ui
gernotbelger
parents:
diff changeset
58 }
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
59
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
60 @Override
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
61 protected Canvas createHelper(final DataList dataList) {
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
62
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
63 final DatacageWidgetData data = new DatacageWidgetData(this.artifact, this.user, "uinfo.inundation_duration.vegZoneSelect", "load-system:true", false);
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
64
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
65 final DatacageWidget datacage = new DatacageWidget(data);
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
66
9310
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
67 // for (final DataList item : artifact.getOldData()) {
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
68 // if (item.getState().equals("state.uinfo.inundationduration.distance_only")) {
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
69 // for (final Data fromTo : item.getAll()) {
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
70 // if (fromTo.getLabel().equals("ld_from")) {
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
71 // this.lowerKm = Double.valueOf(fromTo.getStringValue());
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
72 // } else if (fromTo.getLabel().equals("ld_to")) {
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
73 // this.upperKm = Double.valueOf(fromTo.getStringValue());
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
74 // }
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
75 //
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
76 // }
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
77 // }
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
78 // }
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
79 // final double lowerKmTmp = this.lowerKm < this.upperKm ? this.lowerKm : this.upperKm;
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
80 // this.upperKm = this.upperKm > this.lowerKm ? this.upperKm : this.lowerKm;
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
81 // this.lowerKm = lowerKmTmp;
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
82 final Button plusBtn = new Button(this.MSG.uinfo_inundation_duration_set_vegetation_zone());
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
83 plusBtn.setAutoFit(true);
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
84 plusBtn.addClickHandler(new ClickHandler() {
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
85 @Override
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
86 public void onClick(final ClickEvent event) {
9506
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
87 handlePlusClicked(datacage);
9299
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
88 }
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
89 });
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
90
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
91 final VLayout helperLayout = new VLayout();
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
92 helperLayout.addMember(datacage);
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
93 helperLayout.addMember(plusBtn);
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
94
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
95 return helperLayout;
4a6cc7c6716a uinfo.inundation_duration veg'zone select
gernotbelger
parents: 9118
diff changeset
96 }
9310
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
97
9506
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
98 protected void handlePlusClicked(final DatacageWidget datacage) {
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
99 final List<TreeNode> selection = datacage.getPlainSelection();
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
100 if (selection == null || selection.isEmpty()) {
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
101 SC.say(VegetationzonesTablePanel.this.MSG.warning());
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
102 return;
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
103 }
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
104
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
105 final TreeNode selectedNode = selection.get(0);
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
106
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
107 /*
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
108 * the encoded veg-zones is either in 'data' or 'ids'. We need both, because we have the cases of stadnard vegzones and
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
109 * user-defined vegzones.
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
110 */
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
111 final String dataAttribute = selectedNode.getAttribute("data");
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
112 final String idsAttribute = selectedNode.getAttribute("ids");
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
113 final String vegZoneData = (dataAttribute == null || dataAttribute.trim().length() == 0) ? idsAttribute : dataAttribute;
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
114
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
115 // final String vegZoneFromStr = selection.get(0).getAttribute("from_km");
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
116 // final String vegZoneToStr = selection.get(0).getAttribute("to_km");
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
117 // if (vegZoneFromStr != null && vegZoneToStr != null) {
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
118 // VegetationzonesTablePanel.this.vegZoneFrom = Double.valueOf(vegZoneFromStr);
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
119 // VegetationzonesTablePanel.this.vegZoneTo = Double.valueOf(vegZoneToStr);
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
120 // } else {
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
121 // VegetationzonesTablePanel.this.vegZoneFrom = null;
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
122 // VegetationzonesTablePanel.this.vegZoneTo = null;
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
123 // }
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
124 createTableFromDataStr(vegZoneData);
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
125 updateValidationMsgLabel();
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
126 // updateKmOverlapValidationLabel();
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
127 }
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
128
9310
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
129 // private void updateKmOverlapValidationLabel() {
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
130 // this.kmOverlapLabel.setText("MÖP");
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
131 // if (this.vegZoneFrom != null && this.vegZoneTo != null) { // standardvegetationstabelle prüfung deaktiviert, da keine
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
132 // km-range angegeben ist
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
133 // if (!(this.vegZoneFrom > this.lowerKm - DELTA && this.vegZoneFrom < this.upperKm + DELTA || //
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
134 // this.vegZoneTo > this.lowerKm - DELTA && this.vegZoneTo < this.upperKm + DELTA)) {
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
135 //
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
136 // this.kmOverlapLabel.setText("Warnung: Der Km-Bereich der gewählten Vegetationstabelle überlappt nicht mit dem hier
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
137 // angegebenen Km-Bereich.");
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
138 // }
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
139 // }
819dbd073624 vegZone no-overlap warning
gernotbelger
parents: 9301
diff changeset
140 // }
9506
8b7bf26b8782 Predefined artifact for standard vegetation zones.
gernotbelger
parents: 9310
diff changeset
141 }

http://dive4elements.wald.intevation.org