Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/importer/ImportPorosityValue.java @ 7840:02711de579cc
Added model, parser and importer for porosities.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 30 Apr 2014 14:11:29 +0200 |
parents | |
children | cdef048c4ac5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/backend/src/main/java/org/dive4elements/river/importer/ImportPorosityValue.java Wed Apr 30 14:11:29 2014 +0200 @@ -0,0 +1,102 @@ +/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde + * Software engineering by Intevation GmbH + * + * This file is Free Software under the GNU AGPL (>=v3) + * and comes with ABSOLUTELY NO WARRANTY! Check out the + * documentation coming with Dive4Elements River for details. + */ + +package org.dive4elements.river.importer; + +import java.math.BigDecimal; + +import java.util.List; + +import org.apache.log4j.Logger; + +import org.hibernate.Session; +import org.hibernate.Query; + +import org.dive4elements.river.model.Porosity; +import org.dive4elements.river.model.PorosityValue; + + +public class ImportPorosityValue { + + private static final Logger log = + Logger.getLogger(ImportPorosityValue.class); + + + protected PorosityValue peer; + + protected BigDecimal station; + + protected BigDecimal shoreOffset; + + protected BigDecimal porosity; + + protected String description; + + + public ImportPorosityValue( + BigDecimal station, + BigDecimal shoreOffset, + BigDecimal porosity, + String description + ) { + this.station = station; + this.shoreOffset = shoreOffset; + this.porosity = porosity; + this.description = description; + } + + + public void storeDependencies(Porosity porosity) { + log.info("store dependencies"); + + getPeer(porosity); + } + + + public PorosityValue getPeer(Porosity porosity) { + log.info("get peer"); + + if (peer == null) { + Session session = ImporterSession.getInstance().getDatabaseSession(); + + Query query = session.createQuery( + "from PorosityValue where " + + " porosity=:porosity and " + + " station=:station and " + + " shoreOffset=:shoreOffset and " + + " porosityValue=:poros and " + + " description=:description"); + + query.setParameter("porosity", porosity); + query.setParameter("station", station); + query.setParameter("shoreOffset", shoreOffset); + query.setParameter("poros", this.porosity); + query.setParameter("description", description); + + List<PorosityValue> values = query.list(); + if (values.isEmpty()) { + log.debug("Create new PorosityValue DB instance."); + + peer = new PorosityValue( + porosity, + station, + shoreOffset, + this.porosity, + description); + + session.save(peer); + } + else { + peer = values.get(0); + } + } + + return peer; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :