Mercurial > dive4elements > river
changeset 4093:7bddd4601707
Copy over W/Q values from AFT to FLYS for new discharge tables.
flys-aft/trunk@3603 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 05 Jan 2012 17:46:18 +0000 (2012-01-05) |
parents | b3fc044f75ba |
children | b20b710aa86f |
files | flys-aft/ChangeLog flys-aft/src/main/java/de/intevation/aft/DischargeTable.java flys-aft/src/main/java/de/intevation/aft/River.java |
diffstat | 3 files changed, 75 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-aft/ChangeLog Thu Jan 05 17:06:29 2012 +0000 +++ b/flys-aft/ChangeLog Thu Jan 05 17:46:18 2012 +0000 @@ -1,4 +1,4 @@ -2012-01-04 Sascha L. Teichmann <sascha.teichmann@inteavtion.de> +2012-01-05 Sascha L. Teichmann <sascha.teichmann@inteavtion.de> * src/main/java/de/intevation/aft/DischargeTable.java: Store W/Q values to FLYS. @@ -6,7 +6,7 @@ * src/main/resources/sql/flys-common.properties: Added statements to store W/Q values into FLYS database. -2012-01-04 Sascha L. Teichmann <sascha.teichmann@inteavtion.de> +2012-01-05 Sascha L. Teichmann <sascha.teichmann@inteavtion.de> * src/main/java/de/intevation/aft/WQ.java: New. W/Q model used for AFT and FLYS.
--- a/flys-aft/src/main/java/de/intevation/aft/DischargeTable.java Thu Jan 05 17:06:29 2012 +0000 +++ b/flys-aft/src/main/java/de/intevation/aft/DischargeTable.java Thu Jan 05 17:46:18 2012 +0000 @@ -73,6 +73,10 @@ this.description = description; } + public void clearValues() { + values.clear(); + } + protected void loadValues(SymbolicStatement.Instance query) throws SQLException {
--- a/flys-aft/src/main/java/de/intevation/aft/River.java Thu Jan 05 17:06:29 2012 +0000 +++ b/flys-aft/src/main/java/de/intevation/aft/River.java Thu Jan 05 17:46:18 2012 +0000 @@ -191,16 +191,36 @@ { log.info("create discharge tables"); - boolean debug = log.isDebugEnabled(); + // Load the discharge tables from AFT. + List<DischargeTable> dts = loadAftDischargeTables( + context, officialNumber, gauge); - ConnectedStatements flysStatements = context.getFlysStatements(); - ConnectedStatements aftStatements = context.getAftStatements(); + // Persist the time intervals. + persistFlysTimeIntervals(context, dts); + + // Persist the discharge tables + int [] flysDTIds = persistFlysDischargeTables(context, dts); + + // Copy over the W/Q values + copyWQsFromAftToFlys(context, dts, flysDTIds); + } + + protected List<DischargeTable> loadAftDischargeTables( + SyncContext context, + Long officialNumber, + DIPSGauge gauge + ) + throws SQLException + { + boolean debug = log.isDebugEnabled(); List<DischargeTable> dts = new ArrayList<DischargeTable>(); ResultSet rs = null; try { - rs = aftStatements.getStatement("select.abflusstafel") + rs = context + .getAftStatements() + .getStatement("select.abflusstafel") .clearParameters() .setString("number", "%" + officialNumber). executeQuery(); @@ -230,6 +250,7 @@ : new TimeInterval(from, to); DischargeTable dt = new DischargeTable( + dtId, gauge.getFlysId(), timeInterval, description); @@ -243,7 +264,15 @@ } } - // Persist the time intervals. + return dts; + } + + protected void persistFlysTimeIntervals( + SyncContext context, + List<DischargeTable> dts + ) + throws SQLException + { for (DischargeTable dt: dts) { TimeInterval timeInterval = dt.getTimeInterval(); if (timeInterval != null) { @@ -251,21 +280,37 @@ context.fetchOrCreateFLYSTimeInterval(timeInterval)); } } + } - // Persist the discharge tables + protected int [] persistFlysDischargeTables( + SyncContext context, + List<DischargeTable> dts + ) + throws SQLException + { + boolean debug = log.isDebugEnabled(); + + int [] flysDTIds = new int[dts.size()]; + + ResultSet rs = null; try { + ConnectedStatements flysStatements = + context.getFlysStatements(); + SymbolicStatement.Instance nextId = flysStatements.getStatement("next.discharge.id"); SymbolicStatement.Instance insertDT = flysStatements.getStatement("insert.dischargetable"); - for (DischargeTable dt: dts) { + for (int i = 0; i < flysDTIds.length; ++i) { rs = nextId.executeQuery(); rs.next(); int id = rs.getInt("discharge_table_id"); + flysDTIds[i] = id; rs.close(); rs = null; + DischargeTable dt = dts.get(i); insertDT.clearParameters() .setInt("id", id) .setInt("gauge_id", dt.getGaugeId()) @@ -291,6 +336,23 @@ rs = null; } } + + return flysDTIds; + } + + protected void copyWQsFromAftToFlys( + SyncContext context, + List<DischargeTable> dts, + int [] flysDTIds + ) + throws SQLException + { + for (int i = 0; i < flysDTIds.length; ++i) { + DischargeTable dt = dts.get(i); + dt.loadAftValues(context); + dt.storeFlysValues(context, flysDTIds[i]); + dt.clearValues(); // To save memory. + } } public String toString() {