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

Commits:

3 changed files:

Changes:

  • services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java
    ... ... @@ -23,9 +23,13 @@ package fr.ird.observe.services.topia.service.actions.synchro.referential.legacy
    23 23
      */
    
    24 24
     
    
    25 25
     import fr.ird.observe.ObserveEntityEnum;
    
    26
    +import fr.ird.observe.entities.referentiel.Gear;
    
    27
    +import fr.ird.observe.entities.referentiel.GearCaracteristic;
    
    26 28
     import fr.ird.observe.entities.referentiel.ObserveReferentialEntity;
    
    29
    +import fr.ird.observe.services.dto.referential.OceanDto;
    
    27 30
     import fr.ird.observe.services.dto.referential.ReferentialDto;
    
    28 31
     import fr.ird.observe.services.dto.referential.ReferentialReference;
    
    32
    +import fr.ird.observe.services.dto.referential.SpeciesDto;
    
    29 33
     import fr.ird.observe.services.service.LastUpdateDateService;
    
    30 34
     import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService;
    
    31 35
     import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeRequest;
    
    ... ... @@ -144,8 +148,30 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser
    144 148
     
    
    145 149
                 DeleteSqlStatementGenerator sqlStatementGenerator = new DeleteSqlStatementGenerator(metadataEntity);
    
    146 150
                 for (String id : request.getReferentialToRemove()) {
    
    147
    -                String sql = sqlStatementGenerator.generateSql(id);
    
    148
    -                result.add(sql);
    
    151
    +                if (SpeciesDto.class.equals(request.getReferentialName())) {
    
    152
    +
    
    153
    +                    // also remove ocean_species association
    
    154
    +                    result.add(sqlStatementGenerator.generateAssociationSql("ocean_species","species", id));
    
    155
    +
    
    156
    +                    // also remove species_specieslist association
    
    157
    +                    result.add(sqlStatementGenerator.generateAssociationSql("species_specieslist","species", id));
    
    158
    +                }
    
    159
    +                if (OceanDto.class.equals(request.getReferentialName())) {
    
    160
    +
    
    161
    +                    // also remove ocean_species association
    
    162
    +                    result.add(sqlStatementGenerator.generateAssociationSql("ocean_species","ocean", id));
    
    163
    +                }
    
    164
    +                if (Gear.class.equals(request.getReferentialName())) {
    
    165
    +
    
    166
    +                    // also remove gear_gearcaracteristic association
    
    167
    +                    result.add(sqlStatementGenerator.generateAssociationSql("gear_gearcaracteristic","gear", id));
    
    168
    +                }
    
    169
    +                if (GearCaracteristic.class.equals(request.getReferentialName())) {
    
    170
    +
    
    171
    +                    // also remove gear_gearcaracteristic association
    
    172
    +                    result.add(sqlStatementGenerator.generateAssociationSql("gear_gearcaracteristic","gearcaracteristic", id));
    
    173
    +                }
    
    174
    +                result.add(sqlStatementGenerator.generateSql(id));
    
    149 175
                 }
    
    150 176
     
    
    151 177
             }
    

  • 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
     }

  • services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java
    ... ... @@ -102,7 +102,7 @@ public class UnidirectionalReferentialSynchronizeEngine {
    102 102
                 if (needCallback && callbackResults.containsReferentialName(referentialName)) {
    
    103 103
     
    
    104 104
                     // l'utilisateur a agit sur ce référentiel
    
    105
    -                UnidirectionalReferentialSynchronizeCallbackResult callbackResult = callbackResults.getCallbackResult(referentialName);
    
    105
    +                UnidirectionalReferentialSynchronizeCallbackResult<?> callbackResult = callbackResults.getCallbackResult(referentialName);
    
    106 106
     
    
    107 107
                     Map<String, String> ids = callbackResult.getIds();
    
    108 108