teichmann@5844: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5844: * Software engineering by Intevation GmbH teichmann@5844: * teichmann@5992: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5844: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5992: * documentation coming with Dive4Elements River for details. teichmann@5844: */ teichmann@5844: teichmann@5829: package org.dive4elements.river.importer; ingo@2819: ingo@2819: import java.math.BigDecimal; ingo@2819: ingo@2819: import java.util.List; ingo@2819: ingo@2819: import org.apache.log4j.Logger; ingo@2819: ingo@2819: import org.hibernate.Session; ingo@2819: import org.hibernate.Query; ingo@2819: teichmann@5829: import org.dive4elements.river.model.MorphologicalWidth; teichmann@5829: import org.dive4elements.river.model.MorphologicalWidthValue; ingo@2819: ingo@2819: ingo@2819: public class ImportMorphWidthValue { ingo@2819: ingo@2819: private static Logger log = Logger.getLogger(ImportMorphWidthValue.class); ingo@2819: ingo@2819: ingo@2819: protected MorphologicalWidthValue peer; ingo@2819: ingo@2819: protected BigDecimal station; ingo@2819: protected BigDecimal width; ingo@2819: ingo@2819: protected String description; ingo@2819: ingo@2819: ingo@2819: public ImportMorphWidthValue( ingo@2819: BigDecimal station, ingo@2819: BigDecimal width, ingo@2819: String description ingo@2819: ) { ingo@2819: this.station = station; ingo@2819: this.width = width; ingo@2819: this.description = description; ingo@2819: } ingo@2819: ingo@2819: ingo@2819: public void storeDependencies(MorphologicalWidth parent) { ingo@2819: getPeer(parent); ingo@2819: } ingo@2819: ingo@2819: ingo@2819: public MorphologicalWidthValue getPeer(MorphologicalWidth parent) { ingo@2819: if (peer == null) { ingo@2819: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@2819: ingo@2819: Query query = session.createQuery( ingo@2819: "from MorphologicalWidthValue where " + ingo@2819: " morphologicalWidth=:morphologicalWidth and " + ingo@2819: " station=:station and " + ingo@2819: " width=:width and " + ingo@2819: " description=:description"); ingo@2819: ingo@2819: query.setParameter("morphologicalWidth", parent); ingo@2819: query.setParameter("station", station); ingo@2819: query.setParameter("width", width); ingo@2819: query.setParameter("description", description); ingo@2819: ingo@2819: List values = query.list(); ingo@2819: ingo@2819: if (values.isEmpty()) { ingo@2819: peer = new MorphologicalWidthValue( ingo@2819: parent, ingo@2819: station, ingo@2819: width, ingo@2819: description ingo@2819: ); ingo@2819: ingo@2819: session.save(peer); ingo@2819: } ingo@2819: else { ingo@2819: peer = values.get(0); ingo@2819: } ingo@2819: } ingo@2819: ingo@2819: return peer; ingo@2819: } ingo@2819: } ingo@2819: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :