This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit f106ec97bef3d6df0bff3732a1d17ec9e75171c2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 10 21:24:45 2015 +0200 Regeneration des topiaIds des mises en oeuvre d'equipement sur la seine (refs #7350) --- .../DataSourceMigrationForVersion_4_0_1.java | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/migration/versions/DataSourceMigrationForVersion_4_0_1.java b/observe-entities/src/main/java/fr/ird/observe/entities/migration/versions/DataSourceMigrationForVersion_4_0_1.java index 7e7f3c1..0d582e2 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/migration/versions/DataSourceMigrationForVersion_4_0_1.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/migration/versions/DataSourceMigrationForVersion_4_0_1.java @@ -22,13 +22,24 @@ package fr.ird.observe.entities.migration.versions; * #L% */ +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; import fr.ird.observe.entities.migration.AbstractDataSourceMigration; import fr.ird.observe.entities.migration.AbstractObserveMigrationCallBack; import fr.ird.observe.entities.migration.H2DataSourceMigration; import fr.ird.observe.entities.migration.PGDataSourceMigration; +import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; +import fr.ird.observe.entities.seine.GearUseFeaturesSeine; +import org.hibernate.jdbc.Work; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.topia.persistence.TopiaId; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collection; import java.util.List; /** @@ -58,6 +69,55 @@ public abstract class DataSourceMigrationForVersion_4_0_1 extends AbstractObserv removeForeignKeys(tx, queries); addScript("add-missing-fk", queries); + // See https://forge.codelutin.com/issues/7350 + migrateGearUseFeaturesSeineMeasurementIds(tx, queries); + + } + + protected void migrateGearUseFeaturesSeineMeasurementIds(TopiaContextImplementor tx, List<String> queries) { + + final Multimap<String, String> gearUseFeaturesSeineAndMeasurementIds = LinkedHashMultimap.create(); + tx.getHibernate().doWork(new Work() { + + @Override + public void execute(Connection connection) throws SQLException { + String sql = "SELECT GEARUSEFEATURES, topiaId FROM OBSERVE_SEINE.GEARUSEFEATURESMEASUREMENT;"; + PreparedStatement ps = connection.prepareStatement(sql); + try { + ResultSet set = ps.executeQuery(); + while (set.next()) { + String gearUseFeaturesSeineId = set.getString(1); + String gearUseFeaturesMeasurementSeineId = set.getString(2); + gearUseFeaturesSeineAndMeasurementIds.put(gearUseFeaturesSeineId, gearUseFeaturesMeasurementSeineId); + } + } catch (Exception e) { + throw new SQLException("Could not obtain GEARUSEFEATURESMEASUREMENT ids", e); + } finally { + ps.close(); + } + } + }); + + for (String gearUseFeaturesSeineId : gearUseFeaturesSeineAndMeasurementIds.keySet()) { + + String newGearUseFeaturesSeineId = TopiaId.create(GearUseFeaturesSeine.class); + + queries.add(String.format("INSERT INTO OBSERVE_SEINE.GEARUSEFEATURES(TOPIAID, TOPIAVERSION, TOPIACREATEDATE, GEAR, NUMBER) VALUES ('%s', 0, TIMESTAMP '2015-03-24 00:00:00.00', 'fr.ird.observe.entities.referentiel.Gear#1239832686125#0.20', 1)", newGearUseFeaturesSeineId)); + queries.add(String.format("UPDATE OBSERVE_SEINE.GEARUSEFEATURES SET TRIP = (SELECT TRIP FROM OBSERVE_SEINE.GEARUSEFEATURES WHERE topiaId='%s') WHERE topiaId='%s';", gearUseFeaturesSeineId, newGearUseFeaturesSeineId)); + + Collection<String> gearUseFeaturesMeasurementSeineIds = gearUseFeaturesSeineAndMeasurementIds.get(gearUseFeaturesSeineId); + + for (String gearUseFeaturesMeasurementSeineId : gearUseFeaturesMeasurementSeineIds) { + + String newGearUseFeaturesMeasurementSeineId = TopiaId.create(GearUseFeaturesMeasurementSeine.class); + queries.add(String.format("UPDATE OBSERVE_SEINE.GEARUSEFEATURESMEASUREMENT SET GEARUSEFEATURES = '%s', topiaid = '%s' WHERE topiaid='%s'", newGearUseFeaturesSeineId, newGearUseFeaturesMeasurementSeineId, gearUseFeaturesMeasurementSeineId)); + + } + + queries.add(String.format("DELETE FROM OBSERVE_SEINE.GEARUSEFEATURES WHERE topiaId='%s'", gearUseFeaturesSeineId)); + + } + } public static class H2DataSourceMigrationForVersion extends DataSourceMigrationForVersion_4_0_1 { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.