# HG changeset patch # User Sascha L. Teichmann # Date 1302883575 0 # Node ID 3570e4af8cb27215d4d329281db4af30b330cf4d # Parent f4afea9b753711a63c1620d3390ac502fcf42cfc Added 'position' column to wst_columns to allow order them by there column position in the original wst file. flys-backend/trunk@1710 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r f4afea9b7537 -r 3570e4af8cb2 flys-backend/ChangeLog --- a/flys-backend/ChangeLog Fri Apr 15 15:28:35 2011 +0000 +++ b/flys-backend/ChangeLog Fri Apr 15 16:06:15 2011 +0000 @@ -1,3 +1,27 @@ +2011-04-15 Sascha L. Teichmann + + * doc/schema/postgresql.sql: Added 'position' column to wst_columns + to allow order them by there column position in the original + wst file. + + Update existing database with: + + BEGIN; + ALTER TABLE wst_columns ADD COLUMN position int; + UPDATE wst_columns w SET + position = id - (SELECT min(id) FROM wst_columns WHERE wst_id = w.wst_id); + ALTER TABLE wst_columns ADD CONSTRAINT wst_columns_wst_id_position_key + UNIQUE (wst_id, position); + COMMIT; + + * src/main/java/de/intevation/flys/model/Wst.java, + src/main/java/de/intevation/flys/model/WstColumn.java: + Adjusted models. + + * src/main/java/de/intevation/flys/importer/ImportWst.java, + src/main/java/de/intevation/flys/importer/ImportWstColumn.java: + Adjusted importer. + 2011-04-15 Sascha L. Teichmann * doc/schema/postgresql.sql: Forget ',' in schema. diff -r f4afea9b7537 -r 3570e4af8cb2 flys-backend/doc/schema/postgresql.sql --- a/flys-backend/doc/schema/postgresql.sql Fri Apr 15 15:28:35 2011 +0000 +++ b/flys-backend/doc/schema/postgresql.sql Fri Apr 15 16:06:15 2011 +0000 @@ -153,10 +153,12 @@ wst_id int NOT NULL REFERENCES wsts(id), name VARCHAR(256) NOT NULL, description VARCHAR(256), + position int NOT NULL DEFAULT 0, time_interval_id int REFERENCES time_intervals(id), - UNIQUE (wst_id, name) + UNIQUE (wst_id, name), + UNIQUE (wst_id, position) ); -- w values in WST file column diff -r f4afea9b7537 -r 3570e4af8cb2 flys-backend/src/main/java/de/intevation/flys/importer/ImportWst.java --- a/flys-backend/src/main/java/de/intevation/flys/importer/ImportWst.java Fri Apr 15 15:28:35 2011 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportWst.java Fri Apr 15 16:06:15 2011 +0000 @@ -41,7 +41,7 @@ public ImportWstColumn getColumn(String name) { ImportWstColumn column = columns.get(name); if (column == null) { - column = new ImportWstColumn(this, name, null); + column = new ImportWstColumn(this, name, null, columns.size()); columns.put(name, column); } return column; diff -r f4afea9b7537 -r 3570e4af8cb2 flys-backend/src/main/java/de/intevation/flys/importer/ImportWstColumn.java --- a/flys-backend/src/main/java/de/intevation/flys/importer/ImportWstColumn.java Fri Apr 15 15:28:35 2011 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportWstColumn.java Fri Apr 15 16:06:15 2011 +0000 @@ -17,6 +17,7 @@ protected ImportWst wst; protected String name; protected String description; + protected Integer position; protected List columnQRanges; protected List columnValues; @@ -31,12 +32,14 @@ public ImportWstColumn( ImportWst wst, String name, - String description + String description, + Integer position ) { this(); this.wst = wst; this.name = name; this.description = description; + this.position = position; } public ImportWst getWst() { @@ -63,6 +66,14 @@ this.description = description; } + public Integer getPosition() { + return position; + } + + public void setPosition(Integer position) { + this.position = position; + } + public void addColumnValue(BigDecimal position, BigDecimal w) { columnValues.add( new ImportWstColumnValue(this, position, w)); @@ -89,13 +100,15 @@ Session session = Importer.sessionHolder.get(); Query query = session.createQuery( "from WstColumn where " + - "wst=:wst and name=:name and description=:description"); + "wst=:wst and name=:name and description=:description" + + " and position=:position"); query.setParameter("wst", w); query.setParameter("name", name); query.setParameter("description", description); + query.setParameter("position", position); List columns = query.list(); if (columns.isEmpty()) { - peer = new WstColumn(w, name, description, null); + peer = new WstColumn(w, name, description, position, null); session.save(peer); } else { diff -r f4afea9b7537 -r 3570e4af8cb2 flys-backend/src/main/java/de/intevation/flys/model/WstColumn.java --- a/flys-backend/src/main/java/de/intevation/flys/model/WstColumn.java Fri Apr 15 15:28:35 2011 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/model/WstColumn.java Fri Apr 15 16:06:15 2011 +0000 @@ -24,7 +24,9 @@ private Wst wst; private String name; private String description; + private Integer position; private TimeInterval timeInterval; + private List columnQRanges; private List columnValues; @@ -35,11 +37,13 @@ Wst wst, String name, String description, + Integer position, TimeInterval timeInterval ) { this.wst = wst; this.name = name; this.description = description; + this.position = position; this.timeInterval = timeInterval; } @@ -88,6 +92,15 @@ this.description = description; } + @Column(name = "position") + public Integer getPosition() { + return position; + } + + public void setPosition(Integer position) { + this.position = position; + } + @OneToOne @JoinColumn(name = "time_interval_id" ) public TimeInterval getTimeInterval() {