# HG changeset patch # User Raimund Renkert # Date 1432300253 -7200 # Node ID 12f859395c4a178cf2675604899a61a1cb46b93b # Parent 196e8c67b8a0125788e9e9cb173172a1409e2d4c Create SOrt objects in importer and removed plain sql statements. diff -r 196e8c67b8a0 -r 12f859395c4a src/main/java/de/intevation/lada/importer/laf/OrtCreator.java --- a/src/main/java/de/intevation/lada/importer/laf/OrtCreator.java Fri May 22 15:10:16 2015 +0200 +++ b/src/main/java/de/intevation/lada/importer/laf/OrtCreator.java Fri May 22 15:10:53 2015 +0200 @@ -8,14 +8,20 @@ package de.intevation.lada.importer.laf; import java.math.BigInteger; +import java.util.ArrayList; import java.util.List; import javax.inject.Inject; -import javax.persistence.Query; +import org.apache.log4j.Logger; + +import de.intevation.lada.importer.ReportItem; import de.intevation.lada.model.land.LOrt; import de.intevation.lada.model.stamm.SOrt; +import de.intevation.lada.model.stamm.Staat; +import de.intevation.lada.model.stamm.Verwaltungseinheit; import de.intevation.lada.util.annotation.RepositoryConfig; +import de.intevation.lada.util.data.QueryBuilder; import de.intevation.lada.util.data.Repository; import de.intevation.lada.util.data.RepositoryType; @@ -27,9 +33,22 @@ public class OrtCreator { @Inject + private Logger logger; + + @Inject @RepositoryConfig(type=RepositoryType.RW) private Repository repository; + /** + * List of warnings. + */ + private List warnings; + + /** + * List of errors. + */ + private List errors; + private Integer probeId; private Integer ortId; private String ortCode; @@ -52,6 +71,22 @@ public OrtCreator() { this.ortId = null; + this.warnings = new ArrayList(); + this.errors = new ArrayList(); + } + + /** + * @return the warnings + */ + public List getWarnings() { + return warnings; + } + + /** + * @return the errors + */ + public List getErrors() { + return errors; } /** @@ -370,16 +405,16 @@ if (this.ortCode != null && this.ortCode.length() > 0) { return null; } + logger.debug("create a new ort"); SOrt ort = new SOrt(); - // TODO USE NATIVE QUERY... - //repository.create(ort, "land"); + repository.create(ort, "stamm"); this.ortId = ort.getId(); boolean koord = true; if (this.koordinatenS != null && this.koordinatenS.length() > 0) { ort = setKoordinatenS(ort); koord = false; if (this.koordinaten != null && this.koordinaten.length() > 0) { - //TODO: add warning. + this.warnings.add(new ReportItem("koodinaten", null, 631)); } } else if (this.koordinaten != null && this.koordinaten.length() > 0) { @@ -391,7 +426,7 @@ ort = setGemeindeS(ort, koord); koord = false; if(this.gemName != null && this.gemName.length() > 0) { - //TODO: add warning. + this.warnings.add(new ReportItem("gemName", null, 631)); } } else if (this.gemName != null && this.gemName.length() > 0) { @@ -402,24 +437,24 @@ ort = setLandS(ort, koord); koord = false; if (this.landLang != null && this.landLang.length() > 0) { - //TODO: add warning. + this.warnings.add(new ReportItem("landLang", null, 631)); } if (this.landKurz != null && this.landKurz.length() > 0) { - //TODO: add warning. + this.warnings.add(new ReportItem("landKurz", null, 631)); } } else if (this.landKurz != null && this.landKurz.length() > 0) { ort = setLandKurz(ort, koord); koord = false; if (this.landLang != null && this.landLang.length() > 0) { - //TODO: add warning. + this.warnings.add(new ReportItem("landLang", null, 631)); } } else if (this.landLang != null && this.landLang.length() > 0) { ort = setLandLang(ort, koord); } if (koord) { - //TODO: add warning. + this.warnings.add(new ReportItem("koordinaten", null, 631)); return null; } if (this.nuts != null && this.nuts.length() > 0) { @@ -428,19 +463,25 @@ else if (ort.getVerwaltungseinheitId() != null && ort.getVerwaltungseinheitId().length() > 0) { - String nativeQuery = "select nuts from stammdaten.verwaltungseinheit where gem_id = '"; - nativeQuery += ort.getVerwaltungseinheitId() + "'"; - Query query = repository.entityManager("land").createNativeQuery(nativeQuery); - List result = query.getResultList(); + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Verwaltungseinheit.class); + builder.and("id", ort.getVerwaltungseinheitId()); + List einheit = + (List)repository.filter( + builder.getQuery(), + "stamm").getData(); - ort.setNutsCode(result.get(0)[0].toString()); + if (!einheit.isEmpty()) { + ort.setNutsCode(einheit.get(0).getNuts()); + } } ort.setBeschreibung(beschreibung); if (this.hoehe != null) { ort.setHoeheLand(Float.valueOf(hoehe)); } - //TODO USE NATIVE QUERY... - //repository.update(ort, "land"); + repository.update(ort, "stamm"); return ort; } @@ -453,19 +494,24 @@ * @return The Ort object. */ private SOrt setLandLang(SOrt ort, boolean koord) { - String nativeQuery = "select id, koord_x_extern, koord_y_extern from stammdaten.staat where staat = '"; - nativeQuery += this.landLang + "'"; - Query query = repository.entityManager("land").createNativeQuery(nativeQuery); - List result = query.getResultList(); + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Staat.class); + builder.and("staat", this.landLang); + List staat = + (List)repository.filter( + builder.getQuery(), + "stamm").getData(); - if (result.isEmpty()) { - //TODO: add warning. + if (staat.isEmpty()) { + this.warnings.add(new ReportItem("landLang", null, 631)); return ort; } - ort.setStaatId(Integer.valueOf(result.get(0)[0].toString())); + ort.setStaatId(staat.get(0).getId()); if (koord) { - ort.setKoordXExtern(result.get(0)[1].toString()); - ort.setKoordYExtern(result.get(0)[2].toString()); + ort.setKoordXExtern(staat.get(0).getKoordXExtern()); + ort.setKoordYExtern(staat.get(0).getKoordYExtern()); } return ort; } @@ -479,19 +525,24 @@ * @return The Ort object. */ private SOrt setLandKurz(SOrt ort, boolean koord) { - String nativeQuery = "select id, koord_x_extern, koord_y_extern from stammdaten.staat where staat_kurz = '"; - nativeQuery += this.landKurz + "'"; - Query query = repository.entityManager("land").createNativeQuery(nativeQuery); - List result = query.getResultList(); + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Staat.class); + builder.and("staatKurz", this.landKurz); + List staat = + (List)repository.filter( + builder.getQuery(), + "stamm").getData(); - if (result.isEmpty()) { - //TODO add warning. + if (staat.isEmpty()) { + this.warnings.add(new ReportItem("landKurz", null, 631)); return ort; } - ort.setStaatId((Integer)result.get(0)[0]); + ort.setStaatId(staat.get(0).getId()); if (koord) { - ort.setKoordXExtern(result.get(0)[1].toString()); - ort.setKoordYExtern(result.get(0)[2].toString()); + ort.setKoordXExtern(staat.get(0).getKoordXExtern()); + ort.setKoordYExtern(staat.get(0).getKoordYExtern()); } return ort; } @@ -507,18 +558,24 @@ private SOrt setLandS(SOrt ort, boolean koord) { ort.setStaatId(Integer.valueOf(this.landS)); if (koord) { - String nativeQuery = "select koord_x_extern, koord_y_extern from stammdaten.staat where id = '"; - nativeQuery += this.landS + "'"; - Query query = repository.entityManager("land").createNativeQuery(nativeQuery); - List result = query.getResultList(); - if (result.isEmpty()) { - //TODO: add warning. + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Staat.class); + builder.and("id", this.landS); + List staat = + (List)repository.filter( + builder.getQuery(), + "stamm").getData(); + + if (staat.isEmpty()) { + this.warnings.add(new ReportItem("staat", null, 631)); return ort; } - ort.setKoordXExtern(result.get(0)[0].toString()); - ort.setLongitude(Double.valueOf(result.get(0)[0].toString())); - ort.setKoordYExtern(result.get(0)[1].toString()); - ort.setLatitude(Double.valueOf(result.get(0)[1].toString())); + ort.setKoordXExtern(staat.get(0).getKoordXExtern()); + ort.setLongitude(Double.valueOf(staat.get(0).getKoordXExtern())); + ort.setKoordYExtern(staat.get(0).getKoordYExtern()); + ort.setLatitude(Double.valueOf(staat.get(0).getKoordYExtern())); } return ort; } @@ -532,18 +589,23 @@ * @return The Ort object. */ private SOrt setGemeinde(SOrt ort, boolean koord) { - String nativeQuery = "select id, koord_x_extern, koord_y_extern from stammdaten.verwaltungseinheit where bezeichnung = '"; - nativeQuery += this.gemName + "'"; - Query query = repository.entityManager("land").createNativeQuery(nativeQuery); - List result = query.getResultList(); - if (result.isEmpty()) { - //TODO: add warning. + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Verwaltungseinheit.class); + builder.and("bezeichnung", this.gemName); + List einheit= + (List)repository.filter( + builder.getQuery(), + "stamm").getData(); + if (einheit.isEmpty()) { + this.warnings.add(new ReportItem("verwaltungseinheit", null, 631)); return ort; } - ort.setVerwaltungseinheitId(result.get(0)[0].toString()); + ort.setVerwaltungseinheitId(einheit.get(0).getId()); if (koord) { - ort.setKoordXExtern(result.get(0)[1].toString()); - ort.setKoordYExtern(result.get(0)[2].toString()); + ort.setKoordXExtern(einheit.get(0).getKoordXExtern()); + ort.setKoordYExtern(einheit.get(0).getKoordYExtern()); } return ort; } @@ -559,16 +621,21 @@ private SOrt setGemeindeS(SOrt ort, boolean koord) { ort.setVerwaltungseinheitId(this.gemSchluessel); if (koord) { - String nativeQuery = "select koord_x_extern, koord_y_extern from stammdaten.verwaltungseinheit where bezeichnung = '"; - nativeQuery += this.gemName + "'"; - Query query = repository.entityManager("land").createNativeQuery(nativeQuery); - List result = query.getResultList(); - if (result.isEmpty()) { - // TODO: add warning. + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Verwaltungseinheit.class); + builder.and("bezeichnung", this.gemName); + List einheit= + (List)repository.filter( + builder.getQuery(), + "stamm").getData(); + if (einheit.isEmpty()) { + this.warnings.add(new ReportItem("verwaltungseinheit", null, 631)); return ort; } - ort.setKoordXExtern(result.get(0)[0].toString()); - ort.setKoordYExtern(result.get(0)[1].toString()); + ort.setKoordXExtern(einheit.get(0).getKoordXExtern()); + ort.setKoordYExtern(einheit.get(0).getKoordYExtern()); } return ort; } @@ -671,12 +738,17 @@ return null; } if(this.ortCode != null && this.ortCode.length() > 0) { - String nativeQuery = "select id from stammdaten.ort where bezeichnung = '"; - nativeQuery += this.ortCode + "'"; - Query query = repository.entityManager("land").createNativeQuery(nativeQuery); - List result = query.getResultList(); - if (result != null && !result.isEmpty()) { - this.ortId = result.get(0); + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + SOrt.class); + builder.and("bezeichnung", this.ortCode); + List orte= + (List)repository.filter( + builder.getQuery(), + "stamm").getData(); + if (orte != null && !orte.isEmpty()) { + this.ortId = orte.get(0).getId(); } } LOrt ort = new LOrt();