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@2838: ingo@2838: import java.util.List; ingo@2838: ingo@2838: import org.apache.log4j.Logger; ingo@2838: ingo@2838: import org.hibernate.Session; ingo@2838: import org.hibernate.Query; ingo@2838: teichmann@5829: import org.dive4elements.river.model.GrainFraction; ingo@2838: ingo@2838: ingo@2838: public class ImportGrainFraction { ingo@2838: ingo@2838: private static final Logger log = ingo@2838: Logger.getLogger(ImportGrainFraction.class); ingo@2838: ingo@2838: private String name; ingo@2838: ingo@2838: private Double lower; ingo@2838: private Double upper; ingo@2838: ingo@2838: private GrainFraction peer; ingo@2838: ingo@2838: ingo@2840: public ImportGrainFraction(String name) { ingo@2840: this.name = name; ingo@2840: } ingo@2840: ingo@2840: ingo@2838: public ImportGrainFraction( ingo@2838: String name, ingo@2838: Double lower, tom@5439: Double upper ingo@2838: ) { ingo@2838: this.name = name; ingo@2838: this.lower = lower; ingo@2838: this.upper = upper; ingo@2838: } ingo@2838: ingo@2838: ingo@2838: public void storeDependencies() { ingo@2838: log.debug("store dependencies"); ingo@2838: ingo@2838: getPeer(); ingo@2838: } ingo@2838: ingo@2838: ingo@2838: public GrainFraction getPeer() { ingo@2838: log.debug("get peer"); ingo@2838: ingo@2838: if (peer == null) { ingo@2838: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@2838: Query query = session.createQuery( ingo@2838: "from GrainFraction where " + ingo@2838: " name=:name and " + ingo@2838: " lower=:lower and " + tom@5439: " upper=:upper" ingo@2838: ); ingo@2838: ingo@2838: query.setParameter("name", name); ingo@2838: query.setParameter("lower", lower); ingo@2838: query.setParameter("upper", upper); ingo@2838: ingo@2838: List fractions = query.list(); ingo@2838: if (fractions.isEmpty()) { ingo@2838: log.info("create new GrainFraction"); ingo@2838: tom@5439: peer = new GrainFraction(name, lower, upper); ingo@2838: session.save(peer); ingo@2838: } ingo@2838: else { ingo@2838: peer = fractions.get(0); ingo@2838: } ingo@2838: } ingo@2838: ingo@2838: return peer; ingo@2838: } ingo@2838: } ingo@2838: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :