1 package fr.ifremer.quadrige2.synchro.service.data;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import com.google.common.base.Preconditions;
27 import com.google.common.collect.Multimap;
28 import fr.ifremer.common.synchro.service.SynchroDatabaseConfiguration;
29 import fr.ifremer.quadrige2.synchro.meta.DatabaseColumns;
30 import fr.ifremer.quadrige2.synchro.meta.data.DataSynchroTables;
31 import fr.ifremer.quadrige2.synchro.service.AbstractSynchroDatabaseConfiguration;
32 import fr.ifremer.quadrige2.synchro.service.SynchroDirection;
33 import fr.ifremer.quadrige2.synchro.vo.SynchroDateOperatorVO;
34
35 import java.io.File;
36 import java.util.Date;
37 import java.util.Map;
38 import java.util.Properties;
39 import java.util.Set;
40
41
42
43
44
45
46
47 public class DataSynchroDatabaseConfiguration extends AbstractSynchroDatabaseConfiguration {
48
49
50
51
52 public static String IS_TEMPORARY_DATABASE = "quadrige2.synchro.database.isTemporary";
53
54
55
56
57 public static String COLUMN_REMOTE_ID = "synchro.database.column.remoteId";
58
59
60
61
62 public static String COLUMN_SYNCHRONIZATION_STATUS = "synchro.database.column.synchronizationStatus";
63
64 private final DataSynchroContext context;
65
66 private String columnRemoteId;
67
68 private String columnSynchronizationStatus;
69
70
71
72
73
74
75
76
77
78
79
80 public DataSynchroDatabaseConfiguration(DataSynchroContext context, SynchroDatabaseConfiguration otherBean) {
81 copy(otherBean);
82 Preconditions.checkNotNull(context);
83 this.context = context;
84 }
85
86
87
88
89
90
91
92
93
94
95
96
97
98 public DataSynchroDatabaseConfiguration(DataSynchroContext context, Properties settings, boolean isTarget) {
99 super(settings, isTarget);
100 Preconditions.checkNotNull(context);
101 this.context = context;
102 }
103
104
105
106
107
108
109
110
111 public String getColumnRemoteId() {
112 return columnRemoteId;
113 }
114
115
116
117
118
119
120
121
122
123
124 public SynchroDatabaseConfiguration setColumnRemoteId(String columnName) {
125 this.columnRemoteId = columnName;
126 setProperty(COLUMN_REMOTE_ID, columnName);
127 return this;
128 }
129
130
131
132
133
134
135
136
137 public String getColumnSynchronizationStatus() {
138 return columnSynchronizationStatus;
139 }
140
141
142
143
144
145
146
147
148
149
150 public SynchroDatabaseConfiguration setColumnSynchronizationStatus(String columnName) {
151 this.columnSynchronizationStatus = columnName;
152 setProperty(COLUMN_SYNCHRONIZATION_STATUS, columnName);
153 return this;
154 }
155
156
157
158
159
160
161
162
163 public Integer getUserId() {
164 return context.getUserId();
165 }
166
167
168
169
170
171
172
173
174 public Set<String> getProgramCodes() {
175 return context.getProgramCodes();
176 }
177
178
179
180
181
182
183
184
185
186 public void setIsTemporary(boolean isTemporayDatabase) {
187 setProperty(IS_TEMPORARY_DATABASE, String.valueOf(isTemporayDatabase));
188 }
189
190
191
192
193
194
195
196
197 public Date getDataStartDate() {
198 return context.getDataStartDate();
199 }
200
201
202
203
204
205
206
207
208 public Date getDataEndDate() {
209 return context.getDataEndDate();
210 }
211
212
213
214
215
216
217
218
219 public SynchroDateOperatorVO getDateOperator() {
220 return context.getDateOperator();
221 }
222
223
224
225
226
227
228
229
230 public boolean isDirtyOnly() {
231 return context.isDirtyOnly();
232 }
233
234
235
236
237
238
239
240
241 public Multimap<String, String> getPkIncludes() {
242 return context.getPkIncludes();
243 }
244
245
246
247
248
249
250
251
252 public SynchroDirection getDirection() {
253 return context.getDirection();
254 }
255
256
257
258
259
260
261
262
263 public boolean isForceEditedRowOverride() {
264 return context.isForceEditedRowOverride();
265 }
266
267
268
269
270
271
272
273
274 public File getChangeLogFile() {
275 return context.getChangeLogFile();
276 }
277
278
279
280
281
282
283
284
285 public Map<String, Map<String, Map<String, Object>>> getRemapValues() {
286 return context.getRemapValues();
287 }
288
289
290
291
292
293
294
295
296 public boolean isForceDuplication() {
297 return context.isForceDuplication();
298 }
299
300
301
302
303
304
305
306 public void excludeUnusedColumns() {
307
308 addColumnExclude(getColumnSynchronizationStatus());
309 addColumnExclude(getColumnRemoteId());
310 }
311
312
313
314
315
316
317
318 public void excludeMeasurementUnusedColumns() {
319
320 addColumnExclude(DataSynchroTables.MEASUREMENT.name(), DatabaseColumns.PAR_CD.name());
321 addColumnExclude(DataSynchroTables.MEASUREMENT.name(), DatabaseColumns.FRACTION_ID.name());
322 addColumnExclude(DataSynchroTables.MEASUREMENT.name(), DatabaseColumns.METHOD_ID.name());
323 addColumnExclude(DataSynchroTables.MEASUREMENT.name(), DatabaseColumns.MATRIX_ID.name());
324
325
326 addColumnExclude(DataSynchroTables.TAXON_MEASUREMENT.name(), DatabaseColumns.PAR_CD.name());
327 addColumnExclude(DataSynchroTables.TAXON_MEASUREMENT.name(), DatabaseColumns.FRACTION_ID.name());
328 addColumnExclude(DataSynchroTables.TAXON_MEASUREMENT.name(), DatabaseColumns.METHOD_ID.name());
329 addColumnExclude(DataSynchroTables.TAXON_MEASUREMENT.name(), DatabaseColumns.MATRIX_ID.name());
330
331
332 addColumnExclude(DataSynchroTables.MEASUREMENT_FILE.name(), DatabaseColumns.PAR_CD.name());
333 addColumnExclude(DataSynchroTables.MEASUREMENT_FILE.name(), DatabaseColumns.FRACTION_ID.name());
334 addColumnExclude(DataSynchroTables.MEASUREMENT_FILE.name(), DatabaseColumns.METHOD_ID.name());
335 addColumnExclude(DataSynchroTables.MEASUREMENT_FILE.name(), DatabaseColumns.MATRIX_ID.name());
336 }
337
338
339 @Override
340 public String toString() {
341 StringBuilder sb = new StringBuilder(super.toString());
342
343 sb.append("\n direction : ").append(getDirection().name());
344 sb.append("\n start date: ").append(getDataStartDate());
345 sb.append("\n end date: ").append(getDataEndDate());
346 sb.append("\n programs: ").append(getProgramCodes());
347 sb.append("\n user: ").append(getUserId());
348 sb.append("\n change log file: ").append(getChangeLogFile() == null ? "disable" : getChangeLogFile());
349 sb.append("\n force duplication: ").append(isForceDuplication());
350
351 return sb.toString();
352 }
353 }