mschaefer@9014: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde mschaefer@9014: * Software engineering by mschaefer@9014: * Björnsen Beratende Ingenieure GmbH mschaefer@9014: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt mschaefer@9014: * mschaefer@9014: * This file is Free Software under the GNU AGPL (>=v3) mschaefer@9014: * and comes with ABSOLUTELY NO WARRANTY! Check out the mschaefer@9014: * documentation coming with Dive4Elements River for details. mschaefer@9014: */ mschaefer@9014: mschaefer@9014: package org.dive4elements.river.importer.uinfo.importitem; mschaefer@9014: mschaefer@9014: import java.util.List; mschaefer@9014: mschaefer@9014: import org.apache.log4j.Logger; mschaefer@9014: import org.dive4elements.river.importer.ImporterSession; mschaefer@9014: import org.dive4elements.river.model.uinfo.VegetationType; mschaefer@9014: import org.hibernate.Query; mschaefer@9014: import org.hibernate.Session; mschaefer@9014: mschaefer@9014: /** mschaefer@9014: * Imported vegetation zone type mschaefer@9014: * mschaefer@9014: * @author Matthias Schäfer mschaefer@9014: * mschaefer@9014: */ mschaefer@9014: public class VegetationTypeImport implements Comparable { mschaefer@9014: mschaefer@9014: /***** FIELDS *****/ mschaefer@9014: mschaefer@9014: private static final Logger log = Logger.getLogger(VegetationTypeImport.class); mschaefer@9014: mschaefer@9014: protected Integer id; mschaefer@9014: mschaefer@9014: protected String name; mschaefer@9014: mschaefer@9014: protected VegetationType peer; mschaefer@9014: mschaefer@9014: /***** CONSTRUCTOR *****/ mschaefer@9014: mschaefer@9014: public VegetationTypeImport() { mschaefer@9014: } mschaefer@9014: mschaefer@9014: public VegetationTypeImport(final int id) { mschaefer@9014: this.id = Integer.valueOf(id); mschaefer@9014: } mschaefer@9014: mschaefer@9014: /***** METHODS *****/ mschaefer@9014: mschaefer@9014: @Override mschaefer@9014: public int compareTo(final VegetationTypeImport other) { mschaefer@9014: return this.id.compareTo(other.getId()); mschaefer@9014: } mschaefer@9014: mschaefer@9014: @Override mschaefer@9014: public int hashCode() { mschaefer@9014: return this.id; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public Integer getId() { mschaefer@9014: return this.id; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public void setId(final Integer id) { mschaefer@9014: this.id = id; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public String getName() { mschaefer@9014: return this.name; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public void setName(final String name) { mschaefer@9014: this.name = name; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public VegetationType getPeer() { mschaefer@9014: if (this.peer != null) mschaefer@9014: return this.peer; mschaefer@9014: final Session session = ImporterSession.getInstance().getDatabaseSession(); mschaefer@9014: final Query query = session.createQuery("FROM VegetationType WHERE id=:id"); mschaefer@9014: query.setParameter("id", this.id); mschaefer@9014: final List types = query.list(); mschaefer@9014: if (types.isEmpty()) { mschaefer@9014: // Type table is not modifiable by the importer mschaefer@9014: // this.peer = new VegetationType(this.name); mschaefer@9014: // session.save(this.peer); mschaefer@9014: // log.info(String.format("Create new database instance: %d, '%s'", this.peer.getId(), this.name)); mschaefer@9014: } mschaefer@9014: else { mschaefer@9014: this.peer = types.get(0); mschaefer@9014: } mschaefer@9014: return this.peer; mschaefer@9014: } mschaefer@9014: }