Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/importer/ImportSedimentDensity.java @ 2817:8979f2294af9
Finished parsing MINFO specific sediment density.
flys-backend/trunk@4234 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 13 Apr 2012 11:45:29 +0000 |
parents | 70b4a31a3306 |
children | aed7aba93718 |
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/importer/ImportSedimentDensity.java Fri Apr 13 10:59:15 2012 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportSedimentDensity.java Fri Apr 13 11:45:29 2012 +0000 @@ -1,10 +1,16 @@ package de.intevation.flys.importer; +import java.sql.SQLException; + import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; +import org.hibernate.Session; +import org.hibernate.Query; +import org.hibernate.exception.ConstraintViolationException; + import de.intevation.flys.model.River; import de.intevation.flys.model.SedimentDensity; @@ -20,11 +26,19 @@ protected ImportUnit unit; + protected String description; + protected List<ImportSedimentDensityValue> values; - public ImportSedimentDensity() { - values = new ArrayList<ImportSedimentDensityValue>(); + public ImportSedimentDensity(String description) { + this.description = description; + this.values = new ArrayList<ImportSedimentDensityValue>(); + } + + + public String getDescription() { + return description; } @@ -43,15 +57,60 @@ } - public void storeDependencies(River river) { + public void storeDependencies(River river) + throws SQLException, ConstraintViolationException + { log.info("store dependencies"); + + if (depth != null) { + depth.storeDependencies(); + } + + log.info("store sediment density values."); + + SedimentDensity peer = getPeer(river); + + for (ImportSedimentDensityValue value: values) { + value.storeDependencies(peer); + } } public SedimentDensity getPeer(River river) { log.info("get peer"); - return null; + if (peer == null) { + Session session = ImporterSession.getInstance().getDatabaseSession(); + + Query query = session.createQuery( + "from SedimentDensity where " + + " river=:river and " + + " depth=:depth and " + + " unit=:unit"); + + query.setParameter("river", river); + query.setParameter("depth", depth.getPeer()); + query.setParameter("unit", unit.getPeer()); + + List<SedimentDensity> density = query.list(); + + if (density.isEmpty()) { + log.debug("Create new SedimentDensity DB instance."); + + peer = new SedimentDensity( + river, + depth.getPeer(), + unit.getPeer(), + description); + + session.save(peer); + } + else { + peer = density.get(0); + } + } + + return peer; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :