Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
e4cc531a
by tchemit at 2019-09-12T10:46:48Z
3 changed files:
- services-local/src/main/java/fr/ird/observe/services/local/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceLocal.java
- services-local/src/main/java/fr/ird/observe/services/local/service/actions/synchro/referential/sql/UpdateSqlStatementGenerator.java
- services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequest.java
Changes:
| ... | ... | @@ -55,12 +55,14 @@ public class ReferentialSynchronizeServiceLocal extends ObserveServiceLocal impl |
| 55 | 55 |
byte[] insertSqlCode = oppositeSqlsRequest.getInsertSqlCode();
|
| 56 | 56 |
byte[] insertAssociationSqlCode = oppositeSqlsRequest.getInsertAssociationSqlCode();
|
| 57 | 57 |
byte[] updateSqlCode = oppositeSqlsRequest.getUpdateSqlCode();
|
| 58 |
+ byte[] updateAssociationSqlCode = oppositeSqlsRequest.getUpdateAssociationSqlCode();
|
|
| 58 | 59 |
byte[] deleteSqlCode = request.getDeleteSqlCode();
|
| 59 | 60 |
byte[] desactivateSqlCode = request.getDesactivateSqlCode();
|
| 60 | 61 |
getTopiaPersistenceContext().executeSqlScripts(deleteAssociationSqlCode,
|
| 61 | 62 |
insertSqlCode,
|
| 62 | 63 |
insertAssociationSqlCode,
|
| 63 | 64 |
updateSqlCode,
|
| 65 |
+ updateAssociationSqlCode,
|
|
| 64 | 66 |
desactivateSqlCode,
|
| 65 | 67 |
deleteSqlCode);
|
| 66 | 68 |
timeLog.log(startTime, "executeSqlsRequests");
|
| ... | ... | @@ -158,7 +158,7 @@ public class UpdateSqlStatementGenerator<D extends ReferentialDto> { |
| 158 | 158 |
String id = referentialDto.getId();
|
| 159 | 159 |
for (TopiaMetadataAssociation association : associations) {
|
| 160 | 160 |
// On commence toujours par supprimer toutes les anciennes associations, elles seront ré-ajoutées juste après
|
| 161 |
- String deleteSql = TopiaSqlStatements.generateAssociationDeleteStatement(association, id);
|
|
| 161 |
+ String deleteSql = TopiaSqlStatements.generateManyToManyAssociationDeleteStatement(association, id);
|
|
| 162 | 162 |
result.add(TopiaSqlStatements.boxAssociationStatement(deleteSql));
|
| 163 | 163 |
|
| 164 | 164 |
Collection<ReferentialDtoReference<?, ?>> associationValues = binder.obtainSourceProperty(referentialDto, association.getTargetPropertyName());
|
| ... | ... | @@ -40,6 +40,7 @@ public class ReferentialSynchronizeSqlsRequest implements ObserveDto { |
| 40 | 40 |
private final byte[] insertAssociationSqlCode;
|
| 41 | 41 |
private final byte[] insertSqlCode;
|
| 42 | 42 |
private final byte[] updateSqlCode;
|
| 43 |
+ private final byte[] updateAssociationSqlCode;
|
|
| 43 | 44 |
private final byte[] deleteAssociationSqlCode;
|
| 44 | 45 |
private final byte[] deleteSqlCode;
|
| 45 | 46 |
private final byte[] desactivateSqlCode;
|
| ... | ... | @@ -47,12 +48,14 @@ public class ReferentialSynchronizeSqlsRequest implements ObserveDto { |
| 47 | 48 |
private ReferentialSynchronizeSqlsRequest(String insertSqlCode,
|
| 48 | 49 |
String insertAssociationSqlCode,
|
| 49 | 50 |
String updateSqlCode,
|
| 51 |
+ String updateAssociationSqlCode,
|
|
| 50 | 52 |
String deleteSqlCode,
|
| 51 | 53 |
String deleteAssociationSqlCode,
|
| 52 | 54 |
String desactivateSqlCode) {
|
| 53 | 55 |
this.insertSqlCode = insertSqlCode.getBytes();
|
| 54 | 56 |
this.insertAssociationSqlCode = insertAssociationSqlCode.getBytes();
|
| 55 | 57 |
this.updateSqlCode = updateSqlCode.getBytes();
|
| 58 |
+ this.updateAssociationSqlCode= updateAssociationSqlCode.getBytes();
|
|
| 56 | 59 |
this.deleteSqlCode = deleteSqlCode.getBytes();
|
| 57 | 60 |
this.deleteAssociationSqlCode = deleteAssociationSqlCode.getBytes();
|
| 58 | 61 |
this.desactivateSqlCode = desactivateSqlCode.getBytes();
|
| ... | ... | @@ -78,6 +81,10 @@ public class ReferentialSynchronizeSqlsRequest implements ObserveDto { |
| 78 | 81 |
return insertAssociationSqlCode;
|
| 79 | 82 |
}
|
| 80 | 83 |
|
| 84 |
+ public byte[] getUpdateAssociationSqlCode() {
|
|
| 85 |
+ return updateAssociationSqlCode;
|
|
| 86 |
+ }
|
|
| 87 |
+ |
|
| 81 | 88 |
public byte[] getDeleteAssociationSqlCode() {
|
| 82 | 89 |
return deleteAssociationSqlCode;
|
| 83 | 90 |
}
|
| ... | ... | @@ -91,6 +98,7 @@ public class ReferentialSynchronizeSqlsRequest implements ObserveDto { |
| 91 | 98 |
private final StringBuilder addAssociationTasksBuilder = new StringBuilder();
|
| 92 | 99 |
private final StringBuilder addTasksBuilder = new StringBuilder();
|
| 93 | 100 |
private final StringBuilder updateTasksBuilder = new StringBuilder();
|
| 101 |
+ private final StringBuilder updateAssociationTasksBuilder = new StringBuilder();
|
|
| 94 | 102 |
private final StringBuilder deleteTasksBuilder = new StringBuilder();
|
| 95 | 103 |
private final StringBuilder deleteAssociationTasksBuilder = new StringBuilder();
|
| 96 | 104 |
private final StringBuilder desactivateTasksBuilder = new StringBuilder();
|
| ... | ... | @@ -99,6 +107,7 @@ public class ReferentialSynchronizeSqlsRequest implements ObserveDto { |
| 99 | 107 |
return new ReferentialSynchronizeSqlsRequest(addTasksBuilder.toString(),
|
| 100 | 108 |
addAssociationTasksBuilder.toString(),
|
| 101 | 109 |
updateTasksBuilder.toString(),
|
| 110 |
+ updateAssociationTasksBuilder.toString(),
|
|
| 102 | 111 |
deleteTasksBuilder.toString(),
|
| 103 | 112 |
deleteAssociationTasksBuilder.toString(),
|
| 104 | 113 |
desactivateTasksBuilder.toString());
|
| ... | ... | @@ -116,7 +125,11 @@ public class ReferentialSynchronizeSqlsRequest implements ObserveDto { |
| 116 | 125 |
|
| 117 | 126 |
public Builder addUpdateStatement(String sql) {
|
| 118 | 127 |
log.info("Add update sql: " + sql);
|
| 119 |
- updateTasksBuilder.append(sql);
|
|
| 128 |
+ if (sql.startsWith(TopiaSqlStatements.ASSOCIATION_STATEMENT_PREFIX)) {
|
|
| 129 |
+ updateAssociationTasksBuilder.append(TopiaSqlStatements.unboxAssociationStatement(sql));
|
|
| 130 |
+ } else {
|
|
| 131 |
+ updateTasksBuilder.append(sql);
|
|
| 132 |
+ }
|
|
| 120 | 133 |
return this;
|
| 121 | 134 |
}
|
| 122 | 135 |
|