Tony CHEMIT pushed to branch develop-5.x at ultreia.io / ird-observe
Commits:
-
d6ac3871
by Tony CHEMIT at 2017-03-10T15:48:57+01:00
3 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
- services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java
Changes:
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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 |
}
|
| ... | ... | @@ -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 |
|