[Git][ultreia.io/ird-observe][develop] report from 5.x (See #744)
Tony CHEMIT pushed to branch develop at ultreia.io / ird-observe Commits: fb928aa1 by Tony CHEMIT at 2017-03-10T16:44:54+01:00 report from 5.x (See #744) - - - - - 2 changed files: - services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java - services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/sql/DeleteSqlStatementGenerator.java Changes: ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java @@ -28,7 +28,7 @@ import fr.ird.observe.persistence.ObserveEntityEnum; import fr.ird.observe.services.binder.BinderEngine; import fr.ird.observe.services.binder.referential.ReferentialBinderSupport; import fr.ird.observe.services.dto.reference.ReferentialReference; -import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.*; import fr.ird.observe.services.service.LastUpdateDateService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeRequest; @@ -145,8 +145,30 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser DeleteSqlStatementGenerator sqlStatementGenerator = new DeleteSqlStatementGenerator(metadataEntity); for (String id : request.getReferentialToRemove()) { - String sql = sqlStatementGenerator.generateSql(id); - result.add(sql); + if (SpeciesDto.class.equals(request.getReferentialName())) { + + // also remove ocean_species association + result.add(sqlStatementGenerator.generateAssociationSql("ocean_species","species", id)); + + // also remove species_specieslist association + result.add(sqlStatementGenerator.generateAssociationSql("species_specieslist","species", id)); + } + if (OceanDto.class.equals(request.getReferentialName())) { + + // also remove ocean_species association + result.add(sqlStatementGenerator.generateAssociationSql("ocean_species","ocean", id)); + } + if (GearDto.class.equals(request.getReferentialName())) { + + // also remove gear_gearcaracteristic association + result.add(sqlStatementGenerator.generateAssociationSql("gear_gearcaracteristic","gear", id)); + } + if (GearCaracteristicDto.class.equals(request.getReferentialName())) { + + // also remove gear_gearcaracteristic association + result.add(sqlStatementGenerator.generateAssociationSql("gear_gearcaracteristic","gearcaracteristic", id)); + } + result.add(sqlStatementGenerator.generateSql(id)); } } ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/sql/DeleteSqlStatementGenerator.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/sql/DeleteSqlStatementGenerator.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/sql/DeleteSqlStatementGenerator.java @@ -40,6 +40,7 @@ public class DeleteSqlStatementGenerator<R extends ReferentialDto> { private static final Log log = LogFactory.getLog(DeleteSqlStatementGenerator.class); private static final String DELETE_STATEMENT = "DELETE FROM %s.%s WHERE topiaId = '%s';\n"; + private static final String DELETE_ASSOCIATION_STATEMENT = "DELETE FROM %s.%s WHERE %s = '%s';\n"; private final String schemaName; private final String tableName; @@ -61,4 +62,16 @@ public class DeleteSqlStatementGenerator<R extends ReferentialDto> { } + public String generateAssociationSql(String tableName, String columnName, String id) { + + String result = String.format(DELETE_ASSOCIATION_STATEMENT, schemaName, tableName, columnName, id); + + if (log.isDebugEnabled()) { + log.debug("sql: " + result); + } + + return result; + + } + } View it on GitLab: https://gitlab.com/ultreia.io/ird-observe/commit/fb928aa16ad9c2b5886cb5b23da...
participants (1)
-
Tony CHEMIT