[Dive4elements-commits] [PATCH] Add kind_id to river_axes table and add AxisKind object to model
Wald Commits
scm-commit at wald.intevation.org
Thu Feb 28 18:04:24 CET 2013
# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1362071059 -3600
# Node ID d4fdd98a04f76d560bc013e7e504ce91421fc81b
# Parent 801175535406c86feb0c8221a47f3e677ee0a7c3
Add kind_id to river_axes table and add AxisKind object to model
There are currently three kinds: 0 for unkown, 1 for current,
2 for everything else.
Only current is used for calculation
diff -r 801175535406 -r d4fdd98a04f7 flys-backend/contrib/shpimporter/axis.py
--- a/flys-backend/contrib/shpimporter/axis.py Thu Feb 28 17:12:46 2013 +0100
+++ b/flys-backend/contrib/shpimporter/axis.py Thu Feb 28 18:04:19 2013 +0100
@@ -32,7 +32,7 @@
ogr.wkbMultiLineString]
def isShapeRelevant(self, name, path):
- return "achse" in name.lower()
+ return "km.shp" not in path.lower()
def createNewFeature(self, featureDef, feat, **args):
@@ -45,12 +45,10 @@
else:
riverId = self.river_id
- if self.IsFieldSet(feat, "kind"):
- kind = feat.GetField("kind")
+ newFeat.SetField("river_id", riverId)
+ if args.get("name", "").lower() == "achse":
+ newFeat.SetField("kind_id", 1) # 1 is Current
else:
- kind = 0
-
- newFeat.SetField("river_id", riverId)
- newFeat.SetField("kind", kind)
+ newFeat.SetField("kind_id", 2) # 2 Is Other
return utils.convertToMultiLine(newFeat)
diff -r 801175535406 -r d4fdd98a04f7 flys-backend/doc/schema/oracle-drop-spatial.sql
--- a/flys-backend/doc/schema/oracle-drop-spatial.sql Thu Feb 28 17:12:46 2013 +0100
+++ b/flys-backend/doc/schema/oracle-drop-spatial.sql Thu Feb 28 18:04:19 2013 +0100
@@ -71,4 +71,5 @@
DROP TABLE sectie_kinds;
DROP TABLE sobek_kinds;
DROP TABLE fed_states;
+DROP TABLE axis_kinds;
DROP TABLE boundary_kinds;
diff -r 801175535406 -r d4fdd98a04f7 flys-backend/doc/schema/oracle-spatial.sql
--- a/flys-backend/doc/schema/oracle-spatial.sql Thu Feb 28 17:12:46 2013 +0100
+++ b/flys-backend/doc/schema/oracle-spatial.sql Thu Feb 28 18:04:19 2013 +0100
@@ -1,11 +1,20 @@
WHENEVER SQLERROR EXIT;
+
+CREATE TABLE axis_kinds(
+ id NUMBER PRIMARY KEY NOT NULL,
+ name VARCHAR(64)
+);
+INSERT INTO axis_kinds(id, name, use_for_caclulation) VALUES (0, 'Unbekannt');
+INSERT INTO axis_kinds(id, name, use_for_caclulation) VALUES (1, 'Aktuell');
+INSERT INTO axis_kinds(id, name, use_for_caclulation) VALUES (2, 'Sonstige');
+
-- Geodaesie/Flussachse+km/achse
CREATE SEQUENCE RIVER_AXES_ID_SEQ;
CREATE TABLE river_axes(
OGR_FID NUMBER(38),
GEOM MDSYS.SDO_GEOMETRY,
river_id NUMBER(38) REFERENCES rivers(id) ON DELETE CASCADE,
- kind NUMBER(38) DEFAULT 0 NOT NULL,
+ kind_id NUMBER(38) REFERENCES axis_kinds(id) NOT NULL,
name VARCHAR(64),
path VARCHAR(256),
ID NUMBER PRIMARY KEY NOT NULL
diff -r 801175535406 -r d4fdd98a04f7 flys-backend/doc/schema/postgresql-drop-spatial.sql
--- a/flys-backend/doc/schema/postgresql-drop-spatial.sql Thu Feb 28 17:12:46 2013 +0100
+++ b/flys-backend/doc/schema/postgresql-drop-spatial.sql Thu Feb 28 18:04:19 2013 +0100
@@ -44,5 +44,6 @@
DROP TABLE sobek_kinds;
DROP TABLE sectie_kinds;
DROP TABLE boundary_kinds;
+DROP TABLE axis_kinds;
COMMIT;
diff -r 801175535406 -r d4fdd98a04f7 flys-backend/doc/schema/postgresql-spatial.sql
--- a/flys-backend/doc/schema/postgresql-spatial.sql Thu Feb 28 17:12:46 2013 +0100
+++ b/flys-backend/doc/schema/postgresql-spatial.sql Thu Feb 28 18:04:19 2013 +0100
@@ -1,11 +1,19 @@
BEGIN;
+CREATE TABLE axis_kinds(
+ id int PRIMARY KEY NOT NULL,
+ name VARCHAR(64)
+);
+INSERT INTO axis_kinds(id, name) VALUES (0, 'Unbekannt');
+INSERT INTO axis_kinds(id, name) VALUES (1, 'Aktuell');
+INSERT INTO axis_kinds(id, name) VALUES (2, 'Sonstige');
+
-- Geodaesie/Flussachse+km/achse
CREATE SEQUENCE RIVER_AXES_ID_SEQ;
CREATE TABLE river_axes (
id int PRIMARY KEY NOT NULL,
river_id int REFERENCES rivers(id) ON DELETE CASCADE,
- kind int NOT NULL DEFAULT 0,
+ kind_id int REFERENCES axis_kinds(id) NOT NULL DEFAULT 0,
name VARCHAR(64),
path VARCHAR(256)
);
diff -r 801175535406 -r d4fdd98a04f7 flys-backend/src/main/java/de/intevation/flys/backend/FLYSCredentials.java
--- a/flys-backend/src/main/java/de/intevation/flys/backend/FLYSCredentials.java Thu Feb 28 17:12:46 2013 +0100
+++ b/flys-backend/src/main/java/de/intevation/flys/backend/FLYSCredentials.java Thu Feb 28 18:04:19 2013 +0100
@@ -5,6 +5,7 @@
import de.intevation.flys.model.Annotation;
import de.intevation.flys.model.AnnotationType;
import de.intevation.flys.model.Attribute;
+import de.intevation.flys.model.AxisKind;
import de.intevation.flys.model.BedHeightEpoch;
import de.intevation.flys.model.BedHeightEpochValue;
import de.intevation.flys.model.BedHeightSingle;
@@ -120,6 +121,7 @@
Annotation.class,
AnnotationType.class,
Attribute.class,
+ AxisKind.class,
BedHeightEpoch.class,
BedHeightEpochValue.class,
BedHeightSingle.class,
diff -r 801175535406 -r d4fdd98a04f7 flys-backend/src/main/java/de/intevation/flys/model/AxisKind.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-backend/src/main/java/de/intevation/flys/model/AxisKind.java Thu Feb 28 18:04:19 2013 +0100
@@ -0,0 +1,44 @@
+package de.intevation.flys.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+ at Entity
+ at Table(name = "axis_kinds")
+public class AxisKind implements Serializable {
+ private Integer id;
+ private String name;
+
+ @Id
+ @Column(name = "id")
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ /**
+ * Get name.
+ *
+ * @return The display Name of the kind as String.
+ */
+ @Column(name = "name")
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Set name.
+ *
+ * @param name the value to set.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff -r 801175535406 -r d4fdd98a04f7 flys-backend/src/main/java/de/intevation/flys/model/RiverAxis.java
--- a/flys-backend/src/main/java/de/intevation/flys/model/RiverAxis.java Thu Feb 28 17:12:46 2013 +0100
+++ b/flys-backend/src/main/java/de/intevation/flys/model/RiverAxis.java Thu Feb 28 18:04:19 2013 +0100
@@ -17,14 +17,13 @@
import com.vividsolutions.jts.geom.MultiLineString;
import de.intevation.flys.backend.SessionHolder;
+import de.intevation.flys.model.AxisKind;
/**
- * There is a modeling problem with the RiverAxis. The initial idea was, that a
- * river can have a riveraxis that consist of exact one geometry. Now, it has
- * turned out, that a single geometry is not enough for a riveraxis (arm of a
- * river, inflows, ...). As workaround, we now expect, that a river can just
- * have a single riveraxis.
+ * A river has one axis that is used for calculation.
+ * Additional axes of a river can be used to be painted int maps etc.
+ * which one is the main river axis can be determined over the axis kind.
*/
@Entity
@Table(name = "river_axes")
@@ -32,14 +31,13 @@
implements Serializable
{
private Integer id;
- private Integer kind;
+ private AxisKind kind;
private River river;
private MultiLineString geom;
- public static final int DEFAULT_KIND = 0;
-
- public static final int KIND_OFFICIAL = 1;
- public static final int KIND_OUTSOURCED = 2;
+ public static final int KIND_UNKOWN = 0;
+ public static final int KIND_CURRENT = 1;
+ public static final int KIND_OTHER = 2;
public RiverAxis() {
}
@@ -69,13 +67,23 @@
}
- @Column(name = "kind")
- public Integer getKind() {
+ /**
+ * Get kind.
+ *
+ * @return kind as AxisKind.
+ */
+ @OneToOne
+ @JoinColumn(name = "kind_id")
+ public AxisKind getKind() {
return kind;
}
-
- public void setKind(Integer kind) {
+ /**
+ * Set kind.
+ *
+ * @param kind the value to set.
+ */
+ public void setKind(AxisKind kind) {
this.kind = kind;
}
@@ -93,14 +101,14 @@
public static List<RiverAxis> getRiverAxis(String river) {
- return getRiverAxis(river, DEFAULT_KIND);
+ return getRiverAxis(river, KIND_CURRENT);
}
public static List<RiverAxis> getRiverAxis(String river, int kind) {
Session session = SessionHolder.HOLDER.get();
Query query = session.createQuery(
- "from RiverAxis where river.name =:river AND kind =:kind");
+ "from RiverAxis where river.name =:river AND kind.id =:kind");
query.setParameter("river", river);
query.setParameter("kind", kind);
More information about the Dive4elements-commits
mailing list