ingo@3328: package de.intevation.flys.importer; ingo@3328: ingo@3328: import java.sql.SQLException; ingo@3329: import java.util.List; ingo@3328: ingo@3328: import org.apache.log4j.Logger; ingo@3328: ingo@3329: import org.hibernate.Query; ingo@3329: import org.hibernate.Session; ingo@3328: import org.hibernate.exception.ConstraintViolationException; ingo@3328: ingo@3328: import de.intevation.flys.model.SQRelation; ingo@3328: import de.intevation.flys.model.SQRelationValue; ingo@3328: ingo@3328: ingo@3328: public class ImportSQRelationValue { ingo@3328: ingo@3328: private static Logger log = Logger.getLogger(ImportSQRelationValue.class); ingo@3328: ingo@3328: ingo@3328: private SQRelationValue peer; ingo@3328: ingo@3328: private String parameter; ingo@3328: private String fraction; ingo@3328: private String function; ingo@3328: ingo@3328: private double km; ingo@3328: private double a; ingo@3328: private double b; ingo@3328: ingo@3328: ingo@3328: public ImportSQRelationValue( ingo@3328: String parameter, ingo@3328: String fraction, ingo@3328: String function, ingo@3328: double km, ingo@3328: double a, ingo@3328: double b ingo@3328: ) { ingo@3328: this.parameter = parameter; ingo@3328: this.fraction = fraction; ingo@3328: this.function = function; ingo@3328: this.km = km; ingo@3328: this.a = a; ingo@3328: this.b = b; ingo@3328: } ingo@3328: ingo@3328: ingo@3328: public void storeDependencies(SQRelation owner) ingo@3328: throws SQLException, ConstraintViolationException ingo@3328: { ingo@3329: getPeer(owner); ingo@3328: } ingo@3328: ingo@3328: ingo@3329: public SQRelationValue getPeer(SQRelation owner) { ingo@3329: if (peer == null) { ingo@3329: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@3328: ingo@3329: Query query = session.createQuery( ingo@3329: "from SQRelationValue " + ingo@3329: " where sqRelation=:owner " + ingo@3329: " and parameter=:parameter" + ingo@3329: " and fraction=:fraction" + ingo@3329: " and function=:function" + ingo@3329: " and km=:km"); ingo@3329: ingo@3329: query.setParameter("owner", owner); ingo@3329: query.setString("parameter", parameter); ingo@3329: query.setString("fraction", fraction); ingo@3329: query.setString("function", function); ingo@3329: query.setDouble("km", km); ingo@3329: ingo@3329: List values = query.list(); ingo@3329: ingo@3329: if (values.isEmpty()) { ingo@3329: peer = new SQRelationValue( ingo@3329: owner, ingo@3329: parameter, ingo@3329: fraction, ingo@3329: function, ingo@3329: km, ingo@3329: a, ingo@3329: b ingo@3329: ); ingo@3329: ingo@3329: session.save(peer); ingo@3329: } ingo@3329: else { ingo@3329: peer = values.get(0); ingo@3329: } ingo@3328: } ingo@3328: ingo@3328: return peer; ingo@3328: } ingo@3328: } ingo@3328: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :