Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 9157663c by Tony Chemit at 2020-12-28T13:36:00+01:00 Il reste quelques optimisations à réaliser sur la couche de persistence - See #1664 Sanitize longline observations elements - - - - - 3 changed files: - models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetTopiaDao.java - models/persistence/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_8_0.java - tests/test/src/main/resources/db/8.0/dataForTestLongline.sql.gz Changes: ===================================== models/persistence/src/main/java/fr/ird/observe/entities/data/ll/observation/SetTopiaDao.java ===================================== @@ -22,6 +22,7 @@ package fr.ird.observe.entities.data.ll.observation; * #L% */ +import com.google.common.base.Joiner; import com.google.common.collect.ImmutableSet; import fr.ird.observe.spi.context.DataDtoEntityContext; @@ -36,6 +37,17 @@ import java.util.List; public class SetTopiaDao extends AbstractSetTopiaDao<Set> { private static final String SQL_PATTERN = "SELECT DISTINCT(%1$s) FROM %2$s WHERE set = '%3$s' AND %1$s IS NOT NULL"; + private static final String SANITIZE_BASKET_SQL_PATTERN = "UPDATE %1$s SET basket = NULL WHERE branchline IS NOT NULL;"; + private static final String SANITIZE_SECTION_SQL_PATTERN = "UPDATE %1$s SET section = NULL WHERE basket IS NOT NULL OR branchline IS NOT NULL;"; + + public static ImmutableSet<String> generateSanitizeLonglineElementsStatements() { + return ImmutableSet.of( + String.format(SANITIZE_BASKET_SQL_PATTERN, "ll_observation.tdr"), + String.format(SANITIZE_SECTION_SQL_PATTERN, "ll_observation.tdr"), + String.format(SANITIZE_BASKET_SQL_PATTERN, "ll_observation.catch"), + String.format(SANITIZE_SECTION_SQL_PATTERN, "ll_observation.catch") + ); + } public ImmutableSet<String> getSectionUsed(String setId) { ImmutableSet.Builder<String> builder = ImmutableSet.builder(); @@ -58,6 +70,13 @@ public class SetTopiaDao extends AbstractSetTopiaDao<Set> { return builder.build(); } + //FIXME Use this in next consolidate ll action + @SuppressWarnings("unused") + public void sanitizeLonglineElements() { + ImmutableSet<String> requests = generateSanitizeLonglineElementsStatements(); + topiaSqlSupport.executeSql(Joiner.on("\n").join(requests)); + } + protected void getUsages(DataDtoEntityContext<?, ?, ?, ?> spi, String propertyName, String setId, ImmutableSet.Builder<String> ids) { List<String> newIds = topiaSqlSupport.findMultipleResult(String.format(SQL_PATTERN, propertyName, spi.getEntitySqlDescriptor().getTable().getSchemaAndTableName(), setId), r -> r.getString(1)); ids.addAll(newIds); ===================================== models/persistence/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_8_0.java ===================================== @@ -23,6 +23,7 @@ package fr.ird.observe.entities.migration; */ import com.google.auto.service.AutoService; +import fr.ird.observe.entities.data.ll.observation.SetTopiaDao; import org.nuiton.topia.persistence.support.TopiaSqlQuery; import org.nuiton.topia.service.migration.resources.MigrationVersionResource; import org.nuiton.topia.service.migration.resources.MigrationVersionResourceExecutor; @@ -43,7 +44,7 @@ import java.util.List; public class DataSourceMigrationForVersion_8_0 extends MigrationVersionResource { public DataSourceMigrationForVersion_8_0() { - super(Versions.valueOf("8.0")); + super(Versions.valueOf("8.0"), true); ObserveTopiaMigrationServiceAskUserToMigrate.createResourceScriptVariables(this, "2020-10-01", "2020-10-01 00:00:00.000000"); } @@ -85,6 +86,11 @@ public class DataSourceMigrationForVersion_8_0 extends MigrationVersionResource executor.executeForPG(this::fixPostgisTriggers); } + @Override + public void generateFinalizeSqlScript(MigrationVersionResourceExecutor executor) { + SetTopiaDao.generateSanitizeLonglineElementsStatements().forEach(executor::writeSql); + } + private void processSchema(MigrationVersionResourceExecutor executor, boolean withIds, String order, String schemaName) { if (withIds) { executor.addScript(order, schemaName + "_fill"); ===================================== tests/test/src/main/resources/db/8.0/dataForTestLongline.sql.gz ===================================== Binary files a/tests/test/src/main/resources/db/8.0/dataForTestLongline.sql.gz and b/tests/test/src/main/resources/db/8.0/dataForTestLongline.sql.gz differ View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/9157663c0b07dc9aa39f09d0f8... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/9157663c0b07dc9aa39f09d0f8... You're receiving this email because of your account on gitlab.com.