raimund@610: package de.intevation.lada.importer.laf;
raimund@610:
raimund@610: import java.math.BigInteger;
raimund@610: import java.util.List;
raimund@610:
raimund@610: import javax.ejb.Stateless;
raimund@610: import javax.inject.Inject;
raimund@610: import javax.persistence.Query;
raimund@610:
raimund@610: import org.apache.log4j.Logger;
raimund@610:
raimund@610: import de.intevation.lada.model.land.LOrt;
raimund@610: import de.intevation.lada.model.stamm.SOrt;
raimund@610: import de.intevation.lada.util.annotation.RepositoryConfig;
raimund@610: import de.intevation.lada.util.data.Repository;
raimund@610: import de.intevation.lada.util.data.RepositoryType;
raimund@610:
raimund@610: /**
raimund@610: * Class to produce Ort/LOrt objects from a given set of attributes.
raimund@610: *
raimund@610: * @author Raimund Renkert
raimund@610: */
raimund@610: public class OrtCreator
raimund@610: {
raimund@610: @Inject
raimund@610: private Logger logger;
raimund@610:
raimund@610: @Inject
raimund@610: @RepositoryConfig(type=RepositoryType.RW)
raimund@610: private Repository repository;
raimund@610:
raimund@610: private Integer probeId;
raimund@610: private Integer ortId;
raimund@610: private String ortCode;
raimund@610: private String ortTyp;
raimund@610: private String zusatztext;
raimund@610: private String landLang;
raimund@610: private String landKurz;
raimund@610: private String landS;
raimund@610: private String gemSchluessel;
raimund@610: private String gemName;
raimund@610: private String koordArt;
raimund@610: private String koord;
raimund@610: private String koordS;
raimund@610: private String bezeichnung;
raimund@610: private String beschreibung;
raimund@610: private String nuts;
raimund@610: private String hoehe;
raimund@610: private String koordinaten;
raimund@610: private String koordinatenS;
raimund@610:
raimund@610: public OrtCreator() {
raimund@610: this.ortId = null;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the probeId
raimund@610: */
raimund@610: public Integer getProbeId() {
raimund@610: return this.probeId;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param probeId the probeId to set
raimund@610: */
raimund@610: public void setProbeId(Integer probeId) {
raimund@610: this.probeId = probeId;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the ortCode
raimund@610: */
raimund@610: public String getOrtCode() {
raimund@610: return ortCode;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param ortCode the ortCode to set
raimund@610: */
raimund@610: public void setOrtCode(String ortCode) {
raimund@610: logger.debug("ort code is " + ortCode);
raimund@610: this.ortCode = ortCode;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the ortTyp
raimund@610: */
raimund@610: public String getOrtTyp() {
raimund@610: return ortTyp;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param ortTyp the ortTyp to set
raimund@610: */
raimund@610: public void setOrtTyp(String ortTyp) {
raimund@610: this.ortTyp = ortTyp;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the zusatztext
raimund@610: */
raimund@610: public String getZusatztext() {
raimund@610: return zusatztext;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param zusatztext the zusatztext to set
raimund@610: */
raimund@610: public void setZusatztext(String zusatztext) {
raimund@610: this.zusatztext = zusatztext;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the landLang
raimund@610: */
raimund@610: public String getLandLang() {
raimund@610: return landLang;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param landLang the landLang to set
raimund@610: */
raimund@610: public void setLandLang(String landLang) {
raimund@610: this.landLang = landLang;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the landKurz
raimund@610: */
raimund@610: public String getLandKurz() {
raimund@610: return landKurz;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param landKurz the landKurz to set
raimund@610: */
raimund@610: public void setLandKurz(String landKurz) {
raimund@610: this.landKurz = landKurz;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the landS
raimund@610: */
raimund@610: public String getLandS() {
raimund@610: return landS;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param landS the landS to set
raimund@610: */
raimund@610: public void setLandS(String landS) {
raimund@610: this.landS = landS;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the gemSchluessel
raimund@610: */
raimund@610: public String getGemSchluessel() {
raimund@610: return gemSchluessel;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param gemSchluessel the gemSchluessel to set
raimund@610: */
raimund@610: public void setGemSchluessel(String gemSchluessel) {
raimund@610: this.gemSchluessel = gemSchluessel;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the koordArt
raimund@610: */
raimund@610: public String getKoordArt() {
raimund@610: return koordArt;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param koordArt the koordArt to set
raimund@610: */
raimund@610: public void setKoordArt(String koordArt) {
raimund@610: this.koordArt = koordArt;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the koord
raimund@610: */
raimund@610: public String getKoord() {
raimund@610: return koord;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param koord the koord to set
raimund@610: */
raimund@610: public void setKoord(String koord) {
raimund@610: this.koord = koord;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the koordS
raimund@610: */
raimund@610: public String getKoordS() {
raimund@610: return koordS;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param koordS the koordS to set
raimund@610: */
raimund@610: public void setKoordS(String koordS) {
raimund@610: this.koordS = koordS;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the nuts
raimund@610: */
raimund@610: public String getNuts() {
raimund@610: return nuts;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param nuts the nuts to set
raimund@610: */
raimund@610: public void setNuts(String nuts) {
raimund@610: this.nuts = nuts;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the hoehe
raimund@610: */
raimund@610: public String getHoehe() {
raimund@610: return hoehe;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param hoehe the hoehe to set
raimund@610: */
raimund@610: public void setHoehe(String hoehe) {
raimund@610: this.hoehe = hoehe;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the bezeichung
raimund@610: */
raimund@610: public String getBezeichnung() {
raimund@610: return bezeichnung;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param bezeichnung the bezeichnung to set
raimund@610: */
raimund@610: public void setBezeichnung(String bezeichnung) {
raimund@610: this.bezeichnung = bezeichnung;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the gemName
raimund@610: */
raimund@610: public String getGemName() {
raimund@610: return gemName;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param gemName the gemName to set
raimund@610: */
raimund@610: public void setGemName(String gemName) {
raimund@610: this.gemName = gemName;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the beschreibung
raimund@610: */
raimund@610: public String getBeschreibung() {
raimund@610: return beschreibung;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param beschreibung the beschreibung to set
raimund@610: */
raimund@610: public void setBeschreibung(String beschreibung) {
raimund@610: this.beschreibung = beschreibung;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the koordinaten
raimund@610: */
raimund@610: public String getKoordinaten() {
raimund@610: return koordinaten;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param koordinaten the koordinaten to set
raimund@610: */
raimund@610: public void setKoordinaten(String koordinaten) {
raimund@610: this.koordinaten = koordinaten;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @return the koordinatenS
raimund@610: */
raimund@610: public String getKoordinatenS() {
raimund@610: return koordinatenS;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * @param koordinatenS the koordinatenS to set
raimund@610: */
raimund@610: public void setKoordinatenS(String koordinatenS) {
raimund@610: this.koordinatenS = koordinatenS;
raimund@610: }
raimund@610:
raimund@610: /**
raimund@610: * Add an attribute to the OrtCreator. The creator is used to build the
raimund@610: * two objects Ort and LOrt.
raimund@610: *
raimund@610: * @param key The key mapping to a object member.
raimund@610: * @param value The value to set.
raimund@610: * @param ort The creator object.
raimund@610: * @return The updated creator object.
raimund@610: */
raimund@610: public void addAttribute(
raimund@610: String key,
raimund@610: Object value
raimund@610: ) {
raimund@610: logger.debug("# adding " + key + ": " + value);
raimund@610: if ("ort_code".equals(key)) {
raimund@610: this.setOrtCode(value.toString());
raimund@610: }
raimund@610: if ("ort_typ".equals(key)) {
raimund@610: this.setOrtTyp(value.toString());
raimund@610: }
raimund@610: if ("ort_zusatz".equals(key)) {
raimund@610: this.setZusatztext(value.toString());
raimund@610: }
raimund@610: if ("ort_land_lang".equals(key)) {
raimund@610: this.setLandLang(value.toString());
raimund@610: }
raimund@610: if ("ort_land_kurz".equals(key)) {
raimund@610: this.setLandKurz(value.toString());
raimund@610: }
raimund@610: if ("ort_land_s".equals(key)) {
raimund@610: this.setLandS(value.toString());
raimund@610: }
raimund@610: if ("ort_gemeindeschluessel".equals(key)) {
raimund@610: this.setGemSchluessel(value.toString());
raimund@610: }
raimund@610: if ("ort_bezeichnung".equals(key)) {
raimund@610: this.setBezeichnung(value.toString());
raimund@610: }
raimund@610: if ("ort_beschreibung".equals(key)) {
raimund@610: this.setBeschreibung(value.toString());
raimund@610: }
raimund@610: if ("ort_nuts_code".equals(key)) {
raimund@610: this.setNuts(value.toString());
raimund@610: }
raimund@610: if ("ort_hoehe_land".equals(key)) {
raimund@610: this.setHoehe(value.toString());
raimund@610: }
raimund@610: if ("ort_koordinaten".equals(key)) {
raimund@610: this.setKoordinaten(value.toString());
raimund@610: }
raimund@610: if ("ort_koordinaten_s".equals(key)) {
raimund@610: this.setKoordinatenS(value.toString());
raimund@610: }
raimund@610: }
raimund@610:
raimund@610:
raimund@610: /**
raimund@610: * Create the Ort object.
raimund@610: *
raimund@610: * @return The new Ort.
raimund@610: */
raimund@610: public SOrt toOrt() {
raimund@610: if (this.ortCode != null && this.ortCode.length() > 0) {
raimund@610: return null;
raimund@610: }
raimund@610: SOrt ort = new SOrt();
raimund@610: // TODO USE NATIVE QUERY...
raimund@610: //repository.create(ort, "land");
raimund@610: this.ortId = ort.getId();
raimund@610: boolean koord = true;
raimund@610: if (this.koordinatenS != null && this.koordinatenS.length() > 0) {
raimund@610: ort = setKoordinatenS(ort);
raimund@610: koord = false;
raimund@610: if (this.koordinaten != null && this.koordinaten.length() > 0) {
raimund@610: //TODO: add warning.
raimund@610: }
raimund@610: }
raimund@610: else if (this.koordinaten != null && this.koordinaten.length() > 0) {
raimund@610: ort = setKoordinaten(ort);
raimund@610: koord = false;
raimund@610: }
raimund@610: if (this.gemSchluessel != null &&
raimund@610: this.gemSchluessel.length() > 0){
raimund@610: ort = setGemeindeS(ort, koord);
raimund@610: koord = false;
raimund@610: if(this.gemName != null && this.gemName.length() > 0) {
raimund@610: //TODO: add warning.
raimund@610: }
raimund@610: }
raimund@610: else if (this.gemName != null && this.gemName.length() > 0) {
raimund@610: ort = setGemeinde(ort, koord);
raimund@610: koord = false;
raimund@610: }
raimund@610: if(this.landS != null && this.landS.length() > 0) {
raimund@610: ort = setLandS(ort, koord);
raimund@610: koord = false;
raimund@610: if (this.landLang != null && this.landLang.length() > 0) {
raimund@610: //TODO: add warning.
raimund@610: }
raimund@610: if (this.landKurz != null && this.landKurz.length() > 0) {
raimund@610: //TODO: add warning.
raimund@610: }
raimund@610: }
raimund@610: else if (this.landKurz != null && this.landKurz.length() > 0) {
raimund@610: ort = setLandKurz(ort, koord);
raimund@610: koord = false;
raimund@610: if (this.landLang != null && this.landLang.length() > 0) {
raimund@610: //TODO: add warning.
raimund@610: }
raimund@610: }
raimund@610: else if (this.landLang != null && this.landLang.length() > 0) {
raimund@610: ort = setLandLang(ort, koord);
raimund@610: }
raimund@610: if (koord) {
raimund@610: //TODO: add warning.
raimund@610: return null;
raimund@610: }
raimund@610: if (this.nuts != null && this.nuts.length() > 0) {
raimund@610: ort.setNutsCode(nuts);
raimund@610: }
raimund@610: else if (ort.getVerwaltungseinheitId() != null &&
raimund@610: ort.getVerwaltungseinheitId().length() > 0)
raimund@610: {
raimund@610: String nativeQuery = "select nuts from stammdaten.verwaltungseinheit where gem_id = '";
raimund@610: nativeQuery += ort.getVerwaltungseinheitId() + "'";
raimund@610: Query query = repository.entityManager("land").createNativeQuery(nativeQuery);
raimund@610: List