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@2827: ingo@2827: import java.math.BigDecimal; ingo@2827: import java.util.List; ingo@2827: ingo@2827: import org.apache.log4j.Logger; ingo@2827: ingo@2827: import org.hibernate.Session; ingo@2827: import org.hibernate.Query; ingo@2827: teichmann@5829: import org.dive4elements.river.model.DischargeZone; teichmann@5829: import org.dive4elements.river.model.River; ingo@2827: ingo@2827: ingo@2827: public class ImportDischargeZone { ingo@2827: ingo@2827: private static final Logger log = ingo@2827: Logger.getLogger(ImportDischargeZone.class); ingo@2827: ingo@2827: ingo@2827: private String gaugeName; ingo@2827: ingo@2833: private BigDecimal value; ingo@2827: ingo@2833: private String lowerDischarge; ingo@2833: private String upperDischarge; ingo@2827: ingo@2827: private DischargeZone peer; ingo@2827: ingo@2827: ingo@2827: public ImportDischargeZone( ingo@2833: String gaugeName, ingo@2833: BigDecimal value, ingo@2833: String lowerDischarge, ingo@2833: String upperDischarge ingo@2827: ) { ingo@2833: this.gaugeName = gaugeName; ingo@2833: this.value = value; ingo@2833: this.lowerDischarge = lowerDischarge; ingo@2833: this.upperDischarge = upperDischarge; ingo@2827: } ingo@2827: ingo@2827: tom@5416: public void storeDependencies(River river) { ingo@2827: log.debug("store dependencies"); ingo@2827: ingo@2827: getPeer(river); ingo@2827: } ingo@2827: ingo@2827: ingo@2827: public DischargeZone getPeer(River river) { ingo@2827: if (peer == null) { tom@8856: Session session = ImporterSession.getInstance() tom@8856: .getDatabaseSession(); ingo@2827: ingo@2827: Query query = session.createQuery( ingo@2827: "from DischargeZone where " + ingo@2833: " river=:river and " + ingo@2827: " gaugeName=:gaugeName and " + ingo@2833: " value=:value" ingo@2827: ); ingo@2827: ingo@2827: query.setParameter("river", river); ingo@2827: query.setParameter("gaugeName", gaugeName); ingo@2833: query.setParameter("value", value); ingo@2827: ingo@2827: List zone = query.list(); ingo@2827: ingo@2827: if (zone.isEmpty()) { ingo@2827: peer = new DischargeZone( ingo@2827: river, ingo@2833: gaugeName, ingo@2833: value, ingo@2833: lowerDischarge, ingo@2833: upperDischarge); ingo@2827: ingo@2827: session.save(peer); ingo@2827: } ingo@2827: else { ingo@2827: peer = zone.get(0); ingo@2827: } ingo@2827: } ingo@2827: ingo@2827: return peer; ingo@2827: } ingo@2827: } ingo@2827: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :