Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

2 changed files:

Changes:

  • core/persistence/java/src/main/resources/META-INF/persistence/Observe/TopiaEntitySqlScriptModel.json
    ... ... @@ -1116,7 +1116,8 @@
    1116 1116
           "UPDATE ps_common.trip SET captain = '%3$s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%1$s'::timestamp WHERE captain = '%2$s';",
    
    1117 1117
           "UPDATE ps_common.trip SET observationsDataEntryOperator = '%3$s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%1$s'::timestamp WHERE observationsDataEntryOperator = '%2$s';",
    
    1118 1118
           "UPDATE ps_common.trip SET logbookDataEntryOperator = '%3$s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%1$s'::timestamp WHERE logbookDataEntryOperator = '%2$s';",
    
    1119
    -      "UPDATE ps_logbook.sample_person SET person = '%3$s' WHERE person = '%2$s';"
    
    1119
    +      "UPDATE ps_logbook.sample_person SET person = '%3$s' WHERE person = '%2$s' AND (SELECT COUNT(s.person) FROM ps_logbook.sample_person s WHERE s.person = '%3$s') = 0;",
    
    1120
    +      "DELETE FROM ps_logbook.sample_person WHERE person = '%2$s';"
    
    1120 1121
         ],
    
    1121 1122
         "org.nuiton.topia.service.sql.script.DeleteReferentialScript": [
    
    1122 1123
           "DELETE FROM common.person WHERE topiaId = '%1$s';"
    
    ... ... @@ -1239,10 +1240,14 @@
    1239 1240
           "UPDATE ps_localmarket.batch SET species = '%3$s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%1$s'::timestamp WHERE species = '%2$s';",
    
    1240 1241
           "UPDATE ps_localmarket.surveyPart SET species = '%3$s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%1$s'::timestamp WHERE species = '%2$s';",
    
    1241 1242
           "UPDATE ps_localmarket.sampleSpecies SET species = '%3$s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%1$s'::timestamp WHERE species = '%2$s';",
    
    1242
    -      "UPDATE ll_common.trip_species SET species = '%3$s' WHERE species = '%2$s';",
    
    1243
    -      "UPDATE ll_observation.catch_predator SET species = '%3$s' WHERE species = '%2$s';",
    
    1244
    -      "UPDATE ll_observation.tdr_species SET species = '%3$s' WHERE species = '%2$s';",
    
    1245
    -      "UPDATE ll_logbook.catch_predator SET species = '%3$s' WHERE species = '%2$s';"
    
    1243
    +      "UPDATE ll_common.trip_species SET species = '%3$s' WHERE species = '%2$s' AND (SELECT COUNT(s.species) FROM ll_common.trip_species s WHERE s.species = '%3$s') = 0;",
    
    1244
    +      "DELETE FROM ll_common.trip_species WHERE species = '%2$s';",
    
    1245
    +      "UPDATE ll_observation.catch_predator SET species = '%3$s' WHERE species = '%2$s' AND (SELECT COUNT(s.species) FROM ll_observation.catch_predator s WHERE s.species = '%3$s') = 0;",
    
    1246
    +      "DELETE FROM ll_observation.catch_predator WHERE species = '%2$s';",
    
    1247
    +      "UPDATE ll_observation.tdr_species SET species = '%3$s' WHERE species = '%2$s' AND (SELECT COUNT(s.species) FROM ll_observation.tdr_species s WHERE s.species = '%3$s') = 0;",
    
    1248
    +      "DELETE FROM ll_observation.tdr_species WHERE species = '%2$s';",
    
    1249
    +      "UPDATE ll_logbook.catch_predator SET species = '%3$s' WHERE species = '%2$s' AND (SELECT COUNT(s.species) FROM ll_logbook.catch_predator s WHERE s.species = '%3$s') = 0;",
    
    1250
    +      "DELETE FROM ll_logbook.catch_predator WHERE species = '%2$s';"
    
    1246 1251
         ],
    
    1247 1252
         "org.nuiton.topia.service.sql.script.ReplaceReferentialInReferentialScript": [
    
    1248 1253
           "UPDATE ps_common.weightCategory SET species = '%3$s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%1$s'::timestamp WHERE species = '%2$s';",
    
    ... ... @@ -1615,8 +1620,10 @@
    1615 1620
           "UPDATE common.lastUpdateDate SET lastUpdateDate = '%1$s'::timestamp WHERE type ='fr.ird.observe.entities.referential.ll.common.MitigationType';"
    
    1616 1621
         ],
    
    1617 1622
         "org.nuiton.topia.service.sql.script.ReplaceReferentialInDataScript": [
    
    1618
    -      "UPDATE ll_observation.set_mitigationType SET mitigationType = '%3$s' WHERE mitigationType = '%2$s';",
    
    1619
    -      "UPDATE ll_logbook.set_mitigationType SET mitigationType = '%3$s' WHERE mitigationType = '%2$s';"
    
    1623
    +      "UPDATE ll_observation.set_mitigationType SET mitigationType = '%3$s' WHERE mitigationType = '%2$s' AND (SELECT COUNT(s.mitigationType) FROM ll_observation.set_mitigationType s WHERE s.mitigationType = '%3$s') = 0;",
    
    1624
    +      "DELETE FROM ll_observation.set_mitigationType WHERE mitigationType = '%2$s';",
    
    1625
    +      "UPDATE ll_logbook.set_mitigationType SET mitigationType = '%3$s' WHERE mitigationType = '%2$s' AND (SELECT COUNT(s.mitigationType) FROM ll_logbook.set_mitigationType s WHERE s.mitigationType = '%3$s') = 0;",
    
    1626
    +      "DELETE FROM ll_logbook.set_mitigationType WHERE mitigationType = '%2$s';"
    
    1620 1627
         ],
    
    1621 1628
         "org.nuiton.topia.service.sql.script.DeleteReferentialScript": [
    
    1622 1629
           "DELETE FROM ll_common.mitigationType WHERE topiaId = '%1$s';"
    
    ... ... @@ -2043,8 +2050,10 @@
    2043 2050
           "UPDATE common.lastUpdateDate SET lastUpdateDate = '%1$s'::timestamp WHERE type ='fr.ird.observe.entities.referential.ps.common.ObservedSystem';"
    
    2044 2051
         ],
    
    2045 2052
         "org.nuiton.topia.service.sql.script.ReplaceReferentialInDataScript": [
    
    2046
    -      "UPDATE ps_observation.activity_observedSystem SET observedSystem = '%3$s' WHERE observedSystem = '%2$s';",
    
    2047
    -      "UPDATE ps_logbook.activity_observedSystem SET observedSystem = '%3$s' WHERE observedSystem = '%2$s';"
    
    2053
    +      "UPDATE ps_observation.activity_observedSystem SET observedSystem = '%3$s' WHERE observedSystem = '%2$s' AND (SELECT COUNT(s.observedSystem) FROM ps_observation.activity_observedSystem s WHERE s.observedSystem = '%3$s') = 0;",
    
    2054
    +      "DELETE FROM ps_observation.activity_observedSystem WHERE observedSystem = '%2$s';",
    
    2055
    +      "UPDATE ps_logbook.activity_observedSystem SET observedSystem = '%3$s' WHERE observedSystem = '%2$s' AND (SELECT COUNT(s.observedSystem) FROM ps_logbook.activity_observedSystem s WHERE s.observedSystem = '%3$s') = 0;",
    
    2056
    +      "DELETE FROM ps_logbook.activity_observedSystem WHERE observedSystem = '%2$s';"
    
    2048 2057
         ],
    
    2049 2058
         "org.nuiton.topia.service.sql.script.DeleteReferentialScript": [
    
    2050 2059
           "DELETE FROM ps_common.observedSystem WHERE topiaId = '%1$s';"
    

  • toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/entity/ReplaceReferentialScriptGenerator.java
    ... ... @@ -22,6 +22,7 @@ package fr.ird.observe.toolkit.templates.entity;
    22 22
      * #L%
    
    23 23
      */
    
    24 24
     
    
    25
    +import fr.ird.observe.spi.referential.SqlStatements;
    
    25 26
     import org.nuiton.topia.service.sql.metadata.TopiaMetadataAssociation;
    
    26 27
     import org.nuiton.topia.service.sql.metadata.TopiaMetadataComposition;
    
    27 28
     import org.nuiton.topia.service.sql.metadata.TopiaMetadataEntity;
    
    ... ... @@ -55,11 +56,11 @@ public class ReplaceReferentialScriptGenerator {
    55 56
         /**
    
    56 57
          * To update a reference of a composition relation.
    
    57 58
          */
    
    58
    -    public static final String COMPOSITION_UPDATE_STATEMENT = "UPDATE %s.%s SET %s = '%s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%s'::timestamp WHERE %s = '%s';";
    
    59
    +    public static final String COMPOSITION_UPDATE_STATEMENT = "UPDATE %1$s.%2$s SET %3$s = '%4$s', topiaVersion = topiaVersion + 1, lastUpdateDate = '%5$s'::timestamp WHERE %3$s = '%6$s';";
    
    59 60
         /**
    
    60 61
          * To update a reference of an association relation.
    
    61 62
          */
    
    62
    -    private static final String ASSOCIATION_UPDATE_STATEMENT = "UPDATE %s.%s SET %s = '%s' WHERE %s = '%s';";
    
    63
    +    private static final String ASSOCIATION_UPDATE_STATEMENT = "UPDATE %1$s.%2$s SET %3$s = '%4$s' WHERE %3$s = '%5$s' AND (SELECT COUNT(s.%3$s) FROM %1$s.%2$s s WHERE s.%3$s = '%4$s') = 0;";
    
    63 64
         /**
    
    64 65
          * All reverse relation many-to-one.
    
    65 66
          */
    
    ... ... @@ -96,6 +97,8 @@ public class ReplaceReferentialScriptGenerator {
    96 97
                 }
    
    97 98
                 String sql = generateAssociationUpdateStatement(replacementStruct, sourceId, replacementId);
    
    98 99
                 builder.add(sql);
    
    100
    +            sql = generateAssociationDeleteStatement(replacementStruct, sourceId);
    
    101
    +            builder.add(sql);
    
    99 102
             }
    
    100 103
             return builder;
    
    101 104
         }
    
    ... ... @@ -107,7 +110,6 @@ public class ReplaceReferentialScriptGenerator {
    107 110
                                  composition.getTargetDbName(),
    
    108 111
                                  replacementId,
    
    109 112
                                  lastUpdateDate,
    
    110
    -                             composition.getTargetDbName(),
    
    111 113
                                  sourceId);
    
    112 114
         }
    
    113 115
     
    
    ... ... @@ -117,7 +119,14 @@ public class ReplaceReferentialScriptGenerator {
    117 119
                                  association.getTableName(),
    
    118 120
                                  association.getTargetDbName(),
    
    119 121
                                  replacementId,
    
    120
    -                             association.getTargetDbName(),
    
    121 122
                                  sourceId);
    
    122 123
         }
    
    124
    +
    
    125
    +    private String generateAssociationDeleteStatement(TopiaMetadataAssociation association, String sourceId) {
    
    126
    +        return String.format(SqlStatements.ASSOCIATION_DELETE_STATEMENT,
    
    127
    +                             association.getOwner().getDbSchemaName(),
    
    128
    +                             association.getTableName(),
    
    129
    +                             association.getTargetDbName(),
    
    130
    +                             sourceId).trim();
    
    131
    +    }
    
    123 132
     }