Mercurial > lada > lada-server
changeset 1262:9dfb52db6a0f
Make use of the ort factory in ort service.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 27 Jan 2017 15:10:01 +0100 |
parents | dc7dde59bb54 |
children | e36e42cbd1d8 |
files | db_schema/lada_schema.sql src/main/java/de/intevation/lada/factory/ProbeFactory.java src/main/java/de/intevation/lada/rest/stamm/OrtService.java |
diffstat | 3 files changed, 45 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/db_schema/lada_schema.sql Fri Jan 27 15:00:31 2017 +0100 +++ b/db_schema/lada_schema.sql Fri Jan 27 15:10:01 2017 +0100 @@ -151,7 +151,6 @@ datenbasis_id integer NOT NULL REFERENCES stammdaten.datenbasis, ba_id integer DEFAULT 1 REFERENCES stammdaten.betriebsart, gem_id character varying(8) REFERENCES stammdaten.verwaltungseinheit, - ort_id integer NOT NULL REFERENCES stammdaten.ort, media_desk character varying(100) CHECK(media_desk LIKE '% %'), umw_id character varying(3) REFERENCES stammdaten.umwelt, probenart_id integer NOT NULL REFERENCES stammdaten.probenart, @@ -285,6 +284,21 @@ CREATE TRIGGER letzte_aenderung_ortszuordnung BEFORE UPDATE ON ortszuordnung FOR EACH ROW EXECUTE PROCEDURE update_letzte_aenderung(); CREATE TRIGGER tree_modified_ortszuordnung BEFORE UPDATE ON ortszuordnung FOR EACH ROW EXECUTE PROCEDURE update_tree_modified(); +-- +-- Name: ortszuordnung_mp; Type: TABLE; Schema: land; Owner: -; Tablespace: +-- + +CREATE TABLE ortszuordnung_mp ( + id serial PRIMARY KEY, + messprogramm_id integer NOT NULL REFERENCES messprogramm ON DELETE CASCADE, + ort_id integer NOT NULL REFERENCES stammdaten.ort, + ortszuordnung_typ character varying(1) REFERENCES stammdaten.ortszuordnung_typ, + ortszusatztext character varying(100), + letzte_aenderung timestamp without time zone DEFAULT now(), + tree_modified timestamp without time zone DEFAULT now(), + EXCLUDE (messprogramm_id WITH =) WHERE (ortszuordnung_typ = 'E') +); +CREATE TRIGGER letzte_aenderung_ortszuordnung_mp BEFORE UPDATE ON ortszuordnung_mp FOR EACH ROW EXECUTE PROCEDURE update_letzte_aenderung(); -- -- Name: zusatz_wert; Type: TABLE; Schema: land; Owner: -; Tablespace: @@ -362,7 +376,6 @@ CREATE TRIGGER letzte_aenderung_messwert BEFORE UPDATE ON messwert FOR EACH ROW EXECUTE PROCEDURE update_letzte_aenderung(); CREATE TRIGGER tree_modified_messwert BEFORE UPDATE ON messwert FOR EACH ROW EXECUTE PROCEDURE update_tree_modified(); - -- -- Name: status_protokoll; Type: TABLE; Schema: land; Owner: -; Tablespace: --
--- a/src/main/java/de/intevation/lada/factory/ProbeFactory.java Fri Jan 27 15:00:31 2017 +0100 +++ b/src/main/java/de/intevation/lada/factory/ProbeFactory.java Fri Jan 27 15:10:01 2017 +0100 @@ -25,6 +25,7 @@ import de.intevation.lada.model.land.Messung; import de.intevation.lada.model.land.Messwert; import de.intevation.lada.model.land.Ortszuordnung; +import de.intevation.lada.model.land.OrtszuordnungMp; import de.intevation.lada.model.land.StatusProtokoll; import de.intevation.lada.model.stammdaten.DeskriptorUmwelt; import de.intevation.lada.model.stammdaten.Deskriptoren; @@ -60,16 +61,16 @@ int[] J = { Calendar.YEAR, Calendar.DAY_OF_YEAR, 1 }; - this.fieldsTable = new Hashtable<String, int[]>(); + fieldsTable = new Hashtable<String, int[]>(); - this.fieldsTable.put("T", T); - this.fieldsTable.put("W", W); - this.fieldsTable.put("W2", W2); - this.fieldsTable.put("W4", W4); - this.fieldsTable.put("M", M); - this.fieldsTable.put("Q", Q); - this.fieldsTable.put("H", H); - this.fieldsTable.put("J", J); + fieldsTable.put("T", T); + fieldsTable.put("W", W); + fieldsTable.put("W2", W2); + fieldsTable.put("W4", W4); + fieldsTable.put("M", M); + fieldsTable.put("Q", Q); + fieldsTable.put("H", H); + fieldsTable.put("J", J); } private class Intervall { @@ -356,7 +357,8 @@ Response response = repository.filter(builder.getQuery(), "land"); @SuppressWarnings("unchecked") List<MessprogrammMmt> mmts = (List<MessprogrammMmt>)response.getData(); - for (MessprogrammMmt mmt : mmts) { + for (int i = 0; i < mmts.size(); i++) { + MessprogrammMmt mmt = mmts.get(i); Messung messung = new Messung(); messung.setFertig(false); messung.setGeplant(true); @@ -375,22 +377,19 @@ repository.create(wert, "land"); } } - if (messprogramm.getOrtId() != null && - !messprogramm.getOrtId().equals("")) { - Ortszuordnung ort = new Ortszuordnung(); - ort.setOrtszuordnungTyp("E"); - ort.setProbeId(probe.getId()); - QueryBuilder<Ort> ortBuilder = new QueryBuilder<Ort>( - repository.entityManager("stamm"), Ort.class); - ortBuilder.and("id", messprogramm.getOrtId()); - Response ortResponse = repository.filter( - ortBuilder.getQuery(), "stamm"); - @SuppressWarnings("unchecked") - List<Ort> orte = (List<Ort>) ortResponse.getData(); - if (orte != null && !orte.isEmpty()) { - ort.setOrtId(orte.get(0).getId()); - } - repository.create(ort, "land"); + QueryBuilder<OrtszuordnungMp> builderOrt = + new QueryBuilder<OrtszuordnungMp>( + repository.entityManager("land"), + OrtszuordnungMp.class); + List<OrtszuordnungMp> orte = + repository.filterPlain(builderOrt.getQuery(), "land"); + for (OrtszuordnungMp ort : orte) { + Ortszuordnung ortP = new Ortszuordnung(); + ortP.setOrtszuordnungTyp(ort.getOrtszuordnungTyp()); + ortP.setProbeId(probe.getId()); + ortP.setOrtId(ort.getOrtId()); + ortP.setOrtszusatztext(ort.getOrtszusatztext()); + repository.create(ortP, "land"); } // Reolad the probe to have the old id probe = (Probe)repository.getById(
--- a/src/main/java/de/intevation/lada/rest/stamm/OrtService.java Fri Jan 27 15:00:31 2017 +0100 +++ b/src/main/java/de/intevation/lada/rest/stamm/OrtService.java Fri Jan 27 15:10:01 2017 +0100 @@ -271,7 +271,7 @@ return new Response(false, 699, ort); } - ortFactory.transformCoordinates(ort); + ort = ortFactory.completeOrt(ort); if (ortFactory.hasErrors()) { Violation factoryErrs = new Violation(); for (ReportItem err : ortFactory.getErrors()) { @@ -290,7 +290,10 @@ return response; } - Response response = repository.create(ort, "stamm"); + Response response = new Response(true, 201, ort); + if (ort.getId() == null) { + response = repository.create(ort, "stamm"); + } if(violation.hasWarnings()) { response.setWarnings(violation.getWarnings()); }