Tony CHEMIT pushed to branch develop at ultreia.io / ird-observe

Commits:

2 changed files:

Changes:

  • 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;
    28 28
     import fr.ird.observe.services.binder.BinderEngine;
    
    29 29
     import fr.ird.observe.services.binder.referential.ReferentialBinderSupport;
    
    30 30
     import fr.ird.observe.services.dto.reference.ReferentialReference;
    
    31
    -import fr.ird.observe.services.dto.referential.ReferentialDto;
    
    31
    +import fr.ird.observe.services.dto.referential.*;
    
    32 32
     import fr.ird.observe.services.service.LastUpdateDateService;
    
    33 33
     import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService;
    
    34 34
     import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeRequest;
    
    ... ... @@ -145,8 +145,30 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser
    145 145
     
    
    146 146
                 DeleteSqlStatementGenerator sqlStatementGenerator = new DeleteSqlStatementGenerator(metadataEntity);
    
    147 147
                 for (String id : request.getReferentialToRemove()) {
    
    148
    -                String sql = sqlStatementGenerator.generateSql(id);
    
    149
    -                result.add(sql);
    
    148
    +                if (SpeciesDto.class.equals(request.getReferentialName())) {
    
    149
    +
    
    150
    +                    // also remove ocean_species association
    
    151
    +                    result.add(sqlStatementGenerator.generateAssociationSql("ocean_species","species", id));
    
    152
    +
    
    153
    +                    // also remove species_specieslist association
    
    154
    +                    result.add(sqlStatementGenerator.generateAssociationSql("species_specieslist","species", id));
    
    155
    +                }
    
    156
    +                if (OceanDto.class.equals(request.getReferentialName())) {
    
    157
    +
    
    158
    +                    // also remove ocean_species association
    
    159
    +                    result.add(sqlStatementGenerator.generateAssociationSql("ocean_species","ocean", id));
    
    160
    +                }
    
    161
    +                if (GearDto.class.equals(request.getReferentialName())) {
    
    162
    +
    
    163
    +                    // also remove gear_gearcaracteristic association
    
    164
    +                    result.add(sqlStatementGenerator.generateAssociationSql("gear_gearcaracteristic","gear", id));
    
    165
    +                }
    
    166
    +                if (GearCaracteristicDto.class.equals(request.getReferentialName())) {
    
    167
    +
    
    168
    +                    // also remove gear_gearcaracteristic association
    
    169
    +                    result.add(sqlStatementGenerator.generateAssociationSql("gear_gearcaracteristic","gearcaracteristic", id));
    
    170
    +                }
    
    171
    +                result.add(sqlStatementGenerator.generateSql(id));
    
    150 172
                 }
    
    151 173
     
    
    152 174
             }
    

  • 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> {
    40 40
         private static final Log log = LogFactory.getLog(DeleteSqlStatementGenerator.class);
    
    41 41
     
    
    42 42
         private static final String DELETE_STATEMENT = "DELETE FROM %s.%s WHERE topiaId = '%s';\n";
    
    43
    +    private static final String DELETE_ASSOCIATION_STATEMENT = "DELETE FROM %s.%s WHERE %s = '%s';\n";
    
    43 44
     
    
    44 45
         private final String schemaName;
    
    45 46
         private final String tableName;
    
    ... ... @@ -61,4 +62,16 @@ public class DeleteSqlStatementGenerator<R extends ReferentialDto> {
    61 62
     
    
    62 63
         }
    
    63 64
     
    
    65
    +    public String generateAssociationSql(String tableName, String columnName, String id) {
    
    66
    +
    
    67
    +        String result = String.format(DELETE_ASSOCIATION_STATEMENT, schemaName, tableName, columnName, id);
    
    68
    +
    
    69
    +        if (log.isDebugEnabled()) {
    
    70
    +            log.debug("sql: " + result);
    
    71
    +        }
    
    72
    +
    
    73
    +        return result;
    
    74
    +
    
    75
    +    }
    
    76
    +
    
    64 77
     }