[PATCH 1 of 2] Added color fields to the vegetation zone database table and importer, max days field changed from exclusive to inclusive
Wald Commits
scm-commit at wald.intevation.org
Tue Aug 14 14:04:24 CEST 2018
# HG changeset patch
# User mschaefer
# Date 1534248146 -7200
# Node ID 361de818f76e354136bb7afaf990a4e4b741d81f
# Parent 8e100593aec301af71f305c965ed30ad3d523b2d
Added color fields to the vegetation zone database table and importer, max days field changed from exclusive to inclusive
diff -r 8e100593aec3 -r 361de818f76e backend/doc/schema/oracle-sinfo-uinfo.sql
--- a/backend/doc/schema/oracle-sinfo-uinfo.sql Tue Aug 14 11:06:00 2018 +0200
+++ b/backend/doc/schema/oracle-sinfo-uinfo.sql Tue Aug 14 14:02:26 2018 +0200
@@ -461,11 +461,17 @@
vegetation_id NUMBER(9,0) NOT NULL CONSTRAINT cVegetationZoneVegetation REFERENCES vegetation(id) ON DELETE CASCADE,
vegetation_type_id NUMBER(9,0) NOT NULL CONSTRAINT cVegetationZoneVegetationType REFERENCES vegetation_type(id) ON DELETE CASCADE,
min_overflow_days NUMBER(3,0) NOT NULL,
- max_overflow_days NUMBER(3,0) NOT NULL
+ max_overflow_days NUMBER(3,0) NOT NULL,
+ color_r NUMBER(3,0) NOT NULL,
+ color_g NUMBER(3,0) NOT NULL,
+ color_b NUMBER(3,0) NOT NULL
);
COMMENT ON TABLE vegetation_zone IS 'Vegetation zone of a river station' ;
COMMENT ON COLUMN vegetation_zone.min_overflow_days IS 'Minimum number (inclusive) of overflow days in a year for the zone type' ;
-COMMENT ON COLUMN vegetation_zone.max_overflow_days IS 'Maximum number (exclusive) of overflow days in a year for the zone type' ;
+COMMENT ON COLUMN vegetation_zone.max_overflow_days IS 'Maximum number (inclusive) of overflow days in a year for the zone type' ;
+COMMENT ON COLUMN vegetation_zone.color_r IS 'Red value (0-255) of the zone color' ;
+COMMENT ON COLUMN vegetation_zone.color_g IS 'Green value (0-255) of the zone color' ;
+COMMENT ON COLUMN vegetation_zone.color_b IS 'Blue value (0-255) of the zone color' ;
CREATE SEQUENCE VEGETATION_ZONE_ID_SEQ ;
diff -r 8e100593aec3 -r 361de818f76e backend/doc/schema/postgresql-sinfo-uinfo.sql
--- a/backend/doc/schema/postgresql-sinfo-uinfo.sql Tue Aug 14 11:06:00 2018 +0200
+++ b/backend/doc/schema/postgresql-sinfo-uinfo.sql Tue Aug 14 14:02:26 2018 +0200
@@ -457,12 +457,18 @@
vegetation_id NUMERIC(9,0) NOT NULL CONSTRAINT cVegetationZoneVegetation REFERENCES vegetation(id) ON DELETE CASCADE,
vegetation_type_id NUMERIC(9,0) NOT NULL CONSTRAINT cVegetationZoneVegetationType REFERENCES vegetation_type(id) ON DELETE CASCADE,
min_overflow_days NUMERIC(3,0) NOT NULL,
- max_overflow_days NUMERIC(3,0) NOT NULL
+ max_overflow_days NUMERIC(3,0) NOT NULL,
+ color_r NUMERIC(3,0) NOT NULL,
+ color_g NUMERIC(3,0) NOT NULL,
+ color_b NUMERIC(3,0) NOT NULL
);
COMMENT ON TABLE vegetation_zone IS 'Vegetation zone of a river station' ;
COMMENT ON COLUMN vegetation_zone.min_overflow_days IS 'Minimum number (inclusive) of overflow days in a year for the zone type' ;
-COMMENT ON COLUMN vegetation_zone.max_overflow_days IS 'Maximum number (exclusive) of overflow days in a year for the zone type' ;
+COMMENT ON COLUMN vegetation_zone.max_overflow_days IS 'Maximum number (inclusive) of overflow days in a year for the zone type' ;
+COMMENT ON COLUMN vegetation_zone.color_r IS 'Red value (0-255) of the zone color' ;
+COMMENT ON COLUMN vegetation_zone.color_g IS 'Green value (0-255) of the zone color' ;
+COMMENT ON COLUMN vegetation_zone.color_b IS 'Blue value (0-255) of the zone color' ;
CREATE SEQUENCE VEGETATION_ZONE_ID_SEQ ;
diff -r 8e100593aec3 -r 361de818f76e backend/src/main/java/org/dive4elements/river/importer/uinfo/importitem/VegetationZoneImport.java
--- a/backend/src/main/java/org/dive4elements/river/importer/uinfo/importitem/VegetationZoneImport.java Tue Aug 14 11:06:00 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/uinfo/importitem/VegetationZoneImport.java Tue Aug 14 14:02:26 2018 +0200
@@ -38,14 +38,23 @@
private final Integer maxOverflowDays;
+ private final Integer color_r;
+
+ private final Integer color_g;
+
+ private final Integer color_b;
/***** CONSTRUCTOR *****/
- public VegetationZoneImport(final int vegetationTypeId, final Integer minOverflowDays, final Integer maxOverflowDays) {
+ public VegetationZoneImport(final int vegetationTypeId, final int minOverflowDays, final int maxOverflowDays, final int color_r,
+ final int color_g, final int color_b) {
super(Double.NaN);
this.vegetationType = new VegetationTypeImport(vegetationTypeId);
- this.minOverflowDays = minOverflowDays;
- this.maxOverflowDays = maxOverflowDays;
+ this.minOverflowDays = Integer.valueOf(minOverflowDays);
+ this.maxOverflowDays = Integer.valueOf(maxOverflowDays);
+ this.color_r = Integer.valueOf(color_r);
+ this.color_g = Integer.valueOf(color_g);
+ this.color_b = Integer.valueOf(color_b);
}
@@ -72,6 +81,6 @@
log.error("Unknown vegetation zone class " + this.vegetationType.getId());
return null;
}
- return new VegetationZone(parent, type, this.minOverflowDays, this.maxOverflowDays);
+ return new VegetationZone(parent, type, this.minOverflowDays, this.maxOverflowDays, this.color_r, this.color_g, this.color_b);
}
}
diff -r 8e100593aec3 -r 361de818f76e backend/src/main/java/org/dive4elements/river/importer/uinfo/parsers/VegetationParser.java
--- a/backend/src/main/java/org/dive4elements/river/importer/uinfo/parsers/VegetationParser.java Tue Aug 14 11:06:00 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/importer/uinfo/parsers/VegetationParser.java Tue Aug 14 14:02:26 2018 +0200
@@ -45,7 +45,10 @@
private enum ColTitlePattern {
OVERFLOW_LIMIT("((.)|(Ue))berflutungsdauer-bis\\s*\\[(.*)\\].*"), //
- CLASSNO("Vegetationsklasse.*");
+ CLASSNO("Vegetationsklasse.*"), //
+ COLOR_R("Rot"), //
+ COLOR_G("Gr((.)|(ue))n"), //
+ COLOR_B("Blau");
private final Pattern pattern;
@@ -153,13 +156,13 @@
return true;
}
this.previousClassNo = 0;
- this.previousDaysLimit = 0;
+ this.previousDaysLimit = -1;
return true;
}
@Override
protected VegetationZoneImport createKmLineImport(final Double km, final String[] values) {
- int daysLimit = 365;
+ int daysLimit = 366;
int classNo = 0;
try {
if (!values[this.cols.get(ColTitlePattern.OVERFLOW_LIMIT)].trim().isEmpty())
@@ -180,8 +183,11 @@
// return null;
// }
this.previousClassNo = classNo;
- final Integer minDays = Integer.valueOf(this.previousDaysLimit);
- this.previousDaysLimit = daysLimit + 1;
- return new VegetationZoneImport(classNo, minDays, Integer.valueOf(this.previousDaysLimit));
+ final int minDays = this.previousDaysLimit + 1;
+ this.previousDaysLimit = daysLimit;
+ final int red = (this.cols.get(ColTitlePattern.COLOR_R) >= 0) ? Integer.parseInt(values[this.cols.get(ColTitlePattern.COLOR_R)]) : 0;
+ final int green = (this.cols.get(ColTitlePattern.COLOR_G) >= 0) ? Integer.parseInt(values[this.cols.get(ColTitlePattern.COLOR_G)]) : 0;
+ final int blue = (this.cols.get(ColTitlePattern.COLOR_B) >= 0) ? Integer.parseInt(values[this.cols.get(ColTitlePattern.COLOR_B)]) : 0;
+ return new VegetationZoneImport(classNo, minDays, daysLimit, red, green, blue);
}
}
diff -r 8e100593aec3 -r 361de818f76e backend/src/main/java/org/dive4elements/river/model/uinfo/Vegetation.java
--- a/backend/src/main/java/org/dive4elements/river/model/uinfo/Vegetation.java Tue Aug 14 11:06:00 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/model/uinfo/Vegetation.java Tue Aug 14 14:02:26 2018 +0200
@@ -69,6 +69,7 @@
this.values = new ArrayList<>();
}
+
/***** METHODS *****/
@Id
diff -r 8e100593aec3 -r 361de818f76e backend/src/main/java/org/dive4elements/river/model/uinfo/VegetationType.java
--- a/backend/src/main/java/org/dive4elements/river/model/uinfo/VegetationType.java Tue Aug 14 11:06:00 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/model/uinfo/VegetationType.java Tue Aug 14 14:02:26 2018 +0200
@@ -71,8 +71,9 @@
public void setName(final String name) {
this.name = name;
}
+
/**
- * Queries all salix ranks from the database, orders by id
+ * Queries all vegetation types from the database, ordered by id
*/
public static List<VegetationType> getTypes() {
final Session session = SessionHolder.HOLDER.get();
diff -r 8e100593aec3 -r 361de818f76e backend/src/main/java/org/dive4elements/river/model/uinfo/VegetationZone.java
--- a/backend/src/main/java/org/dive4elements/river/model/uinfo/VegetationZone.java Tue Aug 14 11:06:00 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/model/uinfo/VegetationZone.java Tue Aug 14 14:02:26 2018 +0200
@@ -11,6 +11,7 @@
package org.dive4elements.river.model.uinfo;
import java.io.Serializable;
+import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -21,6 +22,12 @@
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.dive4elements.river.backend.SessionHolder;
+import org.dive4elements.river.model.River;
+import org.hibernate.Query;
+import org.hibernate.Session;
/**
@@ -47,17 +54,27 @@
private Integer max_overflow_days;
+ private Integer color_r;
+
+ private Integer color_g;
+
+ private Integer color_b;
/***** CONSTRUCTORS *****/
public VegetationZone() {
}
- public VegetationZone(final Vegetation vegetation, final VegetationType vegetationType, final Integer min_overflow_days, final Integer max_overflow_days) {
+ public VegetationZone(final Vegetation vegetation, final VegetationType vegetationType, final Integer min_overflow_days, final Integer max_overflow_days,
+ final Integer color_r,
+ final Integer color_g, final Integer color_b) {
this.vegetation = vegetation;
this.vegetationType = vegetationType;
this.min_overflow_days = min_overflow_days;
this.max_overflow_days = max_overflow_days;
+ this.color_r = color_r;
+ this.color_g = color_g;
+ this.color_b = color_b;
}
@@ -112,4 +129,49 @@
public void setMax_overflow_days(final Integer max_overflow_days) {
this.max_overflow_days = max_overflow_days;
}
+
+ @Column(name = "color_r")
+ public Integer getColor_r() {
+ return this.color_r;
+ }
+
+ public void setColor_r(final Integer color_r) {
+ this.color_r = color_r;
+ }
+
+ @Column(name = "color_g")
+ public Integer getColor_g() {
+ return this.color_g;
+ }
+
+ public void setColor_g(final Integer color_g) {
+ this.color_g = color_g;
+ }
+
+ @Column(name = "color_b")
+ public Integer getColor_b() {
+ return this.color_b;
+ }
+
+ public void setColor_b(final Integer color_b) {
+ this.color_b = color_b;
+ }
+
+ @Transient
+ public String getColor() {
+ return String.format("#%02x%02x%02x", getColor_r(), getColor_g(), getColor_b());
+ }
+
+ /**
+ * Selects from the database the vegetation zones of a river
+ */
+ public static List<VegetationZone> getValues(final River river) {
+ final Session session = SessionHolder.HOLDER.get();
+ final Query query = session.createQuery("SELECT v"
+ + " FROM VegetationZone AS v JOIN v.vegetation AS s"
+ + " WHERE (s.river.id=:riverid)"
+ + " ORDER BY v.vegetationType.id");
+ query.setParameter("riverid", river.getId());
+ return query.list();
+ }
}
More information about the Dive4Elements-commits
mailing list