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 f46781d2228f77a52fe9b63928c0fdbdd5cf65ea Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 11 08:25:48 2015 +0200 On regénère les haulingId poru les opérations de pêche palangre quand c'est possible (refs #7328) --- .../DataSourceMigrationForVersion_4_0_1.java | 54 ++++++++++++++++++++++ 1 file changed, 54 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 0d582e2..f15ec4b 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 @@ -40,7 +40,9 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; /** * Created on 6/8/15. @@ -72,6 +74,58 @@ public abstract class DataSourceMigrationForVersion_4_0_1 extends AbstractObserv // See https://forge.codelutin.com/issues/7350 migrateGearUseFeaturesSeineMeasurementIds(tx, queries); + // See https://forge.codelutin.com/issues/7328 + recomputeLonglineHaulingIds(tx, queries); + + } + + protected void recomputeLonglineHaulingIds(TopiaContextImplementor tx, List<String> queries) { + + class SetData { + + String id; + + int totalSectionsCount; + + int basketsPerSectionCount; + + int branchlinesPerBasketCount; + + } + + // L'ensemble des opérations de pêche où l'on doit regénerer les générer les haulingIds + final Set<SetData> setIds = new LinkedHashSet<SetData>(); + tx.getHibernate().doWork(new Work() { + + @Override + public void execute(Connection connection) throws SQLException { + String sql = "SELECT topiaId, totalSectionsCount, basketsPerSectionCount, branchlinesPerBasketCount FROM OBSERVE_LONGLINE.SET WHERE HAULINGBREAKS = 0 AND haulingDirectionSameAsSetting IS FALSE;"; + PreparedStatement ps = connection.prepareStatement(sql); + try { + ResultSet set = ps.executeQuery(); + while (set.next()) { + SetData setData = new SetData(); + setData.id = set.getString(1); + setData.totalSectionsCount = set.getInt(2); + setData.basketsPerSectionCount = set.getInt(3); + setData.branchlinesPerBasketCount = set.getInt(4); + setIds.add(setData); + } + } catch (Exception e) { + throw new SQLException("Could not obtain SET data", e); + } finally { + ps.close(); + } + } + }); + + for (SetData setData : setIds) { + + queries.add(String.format("UPDATE OBSERVE_LONGLINE.SECTION SET haulingIdentifier = (%s - settingIdentifier + 1 ) WHERE set = '%s'", setData.totalSectionsCount, setData.id)); + queries.add(String.format("UPDATE OBSERVE_LONGLINE.BASKET SET haulingIdentifier = (%s - settingIdentifier + 1 ) WHERE section IN ( SELECT topiaid FROM OBSERVE_LONGLINE.SECTION WHERE set ='%s' )", setData.basketsPerSectionCount, setData.id)); + queries.add(String.format("UPDATE OBSERVE_LONGLINE.BRANCHLINE SET haulingIdentifier = (%s - settingIdentifier + 1 ) WHERE basket IN ( SELECT distinct b.topiaid FROM OBSERVE_LONGLINE.BASKET b, OBSERVE_LONGLINE.SECTION s WHERE b.section = s.topiaid AND s.set = '%s' )", setData.branchlinesPerBasketCount, setData.id)); + + } } protected void migrateGearUseFeaturesSeineMeasurementIds(TopiaContextImplementor tx, List<String> queries) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.