1 package fr.ifremer.quadrige3.synchro.intercept.data.internal;
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 fr.ifremer.common.synchro.dao.SynchroTableDao;
27 import fr.ifremer.common.synchro.intercept.SynchroInterceptorBase;
28 import fr.ifremer.common.synchro.intercept.SynchroOperationRepository;
29
30 import java.util.List;
31 import java.util.Map;
32
33
34
35
36
37
38
39 public class ReplaceColumnValuesInterceptor extends SynchroInterceptorBase {
40
41 private final int columnIndex;
42
43 private final Map<String, Object> valuesMap;
44
45
46
47
48
49
50
51
52
53
54
55 public ReplaceColumnValuesInterceptor(int columnIndex,
56 Map<String, Object> columnValuesMap) {
57 this.columnIndex = columnIndex;
58 this.valuesMap = columnValuesMap;
59 setEnableOnRead(true);
60 setEnableOnWrite(true);
61 }
62
63
64 @Override
65 public SynchroInterceptorBase clone() {
66 return new ReplaceColumnValuesInterceptor(columnIndex, valuesMap);
67 }
68
69
70 @Override
71 protected void doOnRead(Object[] data,
72 SynchroTableDao sourceDao,
73 SynchroTableDao targetDao) {
74
75 Object sourceValue = data[columnIndex];
76 if (sourceValue != null) {
77 Object targetValue = valuesMap.get(sourceValue.toString());
78 if (targetValue != null) {
79 data[columnIndex] = targetValue;
80 }
81 }
82 }
83
84
85 @Override
86 protected void doOnWrite(Object[] data, List<Object> pk, SynchroTableDao sourceDao, SynchroTableDao targetDao, SynchroOperationRepository buffer,
87 boolean insert) {
88
89 Object sourceValue = data[columnIndex];
90 if (sourceValue != null) {
91 Object targetValue = valuesMap.get(sourceValue.toString());
92 if (targetValue != null) {
93 data[columnIndex] = targetValue;
94 }
95 }
96 }
97
98 }