Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/importer/ImportSQRelation.java @ 3329:cc8fc6b29649
Store sq relations into database after parsing.
flys-backend/trunk@4647 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 13 Jun 2012 08:12:00 +0000 |
parents | a41f279a66e2 |
children | 0d27d02b1208 |
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/importer/ImportSQRelation.java Wed Jun 13 06:22:04 2012 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportSQRelation.java Wed Jun 13 08:12:00 2012 +0000 @@ -6,10 +6,13 @@ import org.apache.log4j.Logger; +import org.hibernate.Query; +import org.hibernate.Session; import org.hibernate.exception.ConstraintViolationException; import de.intevation.flys.model.River; import de.intevation.flys.model.SQRelation; +import de.intevation.flys.model.TimeInterval; public class ImportSQRelation { @@ -19,6 +22,8 @@ private ImportTimeInterval timeInterval; + private String description; + private List<ImportSQRelationValue> values; private SQRelation peer; @@ -33,21 +38,76 @@ throws SQLException, ConstraintViolationException { log.info("store dependencies"); - log.warn("TODO: IMPLEMENT 'storeDependencies()'"); + + SQRelation peer = getPeer(river); + + timeInterval.getPeer(); + + int count = 0; + + for (ImportSQRelationValue value: values) { + try { + value.storeDependencies(peer); + count++; + } + catch (SQLException sqle) { + log.warn("Unable to store sq relation value.", sqle); + } + catch (ConstraintViolationException cve) { + log.warn("Unable to store sq relation value.", cve); + } + } + + log.info("stored " + count + " sq relation values."); } - public SQRelation getPeer() { + public SQRelation getPeer(River river) { log.debug("getPeer()"); if (peer == null) { - // TODO + TimeInterval timeInter = timeInterval.getPeer(); + + if (timeInter == null) { + log.warn("Cannot determine sq relation without time interval"); + return null; + } + + Session session = ImporterSession.getInstance().getDatabaseSession(); + + Query query = session.createQuery( + "FROM SQRelation WHERE river=:river AND timeInterval=:timeInter" + ); + + query.setParameter("river", river); + query.setParameter("timeInter", timeInter); + + List<SQRelation> sq = query.list(); + + if (sq.isEmpty()) { + log.info("create new SQ relation '" + description + "'"); + + peer = new SQRelation( + river, + timeInter, + description + ); + session.save(peer); + } + else { + peer = sq.get(0); + } } return peer; } + public void setDescription(String description) { + this.description = description; + } + + public void setTimeInterval(ImportTimeInterval timeInterval) { this.timeInterval = timeInterval; }