1 package fr.ifremer.quadrige3.synchro.service.referential;
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.collect.Multimap;
27 import fr.ifremer.common.synchro.service.SynchroDatabaseConfiguration;
28 import fr.ifremer.quadrige3.core.dao.technical.Assert;
29 import fr.ifremer.quadrige3.synchro.meta.DatabaseColumns;
30 import fr.ifremer.quadrige3.synchro.meta.administration.MetaProgramSynchroTables;
31 import fr.ifremer.quadrige3.synchro.meta.administration.MoratoriumSynchroTables;
32 import fr.ifremer.quadrige3.synchro.meta.administration.ProgramStrategySynchroTables;
33 import fr.ifremer.quadrige3.synchro.meta.referential.ReferentialSynchroTables;
34 import fr.ifremer.quadrige3.synchro.meta.system.RuleSynchroTables;
35 import fr.ifremer.quadrige3.synchro.service.AbstractSynchroDatabaseConfiguration;
36 import fr.ifremer.quadrige3.synchro.service.SynchroDirection;
37
38 import java.io.File;
39 import java.util.Properties;
40 import java.util.Set;
41
42
43
44
45
46
47
48 public class ReferentialSynchroDatabaseConfiguration extends AbstractSynchroDatabaseConfiguration {
49
50
51
52
53 private static final String IS_TEMPORARY_DATABASE = "quadrige3.synchro.database.isTemporary";
54
55 private final ReferentialSynchroContext context;
56
57
58
59
60
61
62
63
64
65
66
67 public ReferentialSynchroDatabaseConfiguration(ReferentialSynchroContext context, SynchroDatabaseConfiguration otherBean) {
68 copy(otherBean);
69 Assert.notNull(context);
70 this.context = context;
71 }
72
73
74
75
76
77
78
79
80
81
82
83
84
85 public ReferentialSynchroDatabaseConfiguration(ReferentialSynchroContext context, Properties settings, boolean isTarget) {
86 super(settings, isTarget);
87 Assert.notNull(context);
88 this.context = context;
89 }
90
91
92
93
94
95
96
97
98 public Integer getUserId() {
99 return context.getUserId();
100 }
101
102
103
104
105
106
107
108
109
110 public void setIsTemporary(boolean isTemporayDatabase) {
111 setProperty(IS_TEMPORARY_DATABASE, String.valueOf(isTemporayDatabase));
112 }
113
114
115
116
117
118
119
120
121 public Multimap<String, String> getPkIncludes() {
122 return context.getPkIncludes();
123 }
124
125
126
127
128
129
130
131
132 public SynchroDirection getDirection() {
133 return context.getDirection();
134 }
135
136
137
138
139
140
141
142
143 public boolean isIntegrityConstraintEnable() {
144 return !isMirrorDatabase();
145 }
146
147
148
149
150
151
152
153
154 public Set<String> getStatusCodeIncludes() {
155 return context.getStatusCodeIncludes();
156 }
157
158
159
160
161
162
163
164
165 public File getChangeLogFile() {
166 return context.getChangeLogFile();
167 }
168
169
170
171
172
173
174
175
176 public Set<String> getProgramCodes() {
177 return context.getProgramCodes();
178 }
179
180
181
182
183
184
185
186
187 public Set<String> getTableNamesForced() {
188 return context.getTableNamesForced();
189 }
190
191 public void excludeUnusedColumns() {
192 addColumnExclude(ReferentialSynchroTables.MON_LOC_ORDER_ITEM.name(), DatabaseColumns.UPDATE_DT.name());
193 addColumnExclude(ReferentialSynchroTables.PMFM_QUAL_VALUE.name(), DatabaseColumns.UPDATE_DT.name());
194 addColumnExclude(ProgramStrategySynchroTables.MON_LOC_PROG.name(), DatabaseColumns.UPDATE_DT.name());
195 addColumnExclude(ReferentialSynchroTables.TAXON_INFORMATION.name(), DatabaseColumns.UPDATE_DT.name());
196 addColumnExclude(ReferentialSynchroTables.TAXON_INFORMATION_HISTORY.name(), DatabaseColumns.UPDATE_DT.name());
197 addColumnExclude(ReferentialSynchroTables.TAXON_GROUP_HISTORICAL_RECORD.name(), DatabaseColumns.UPDATE_DT.name());
198 addColumnExclude(ReferentialSynchroTables.TAXON_GROUP_INFORMATION.name(), DatabaseColumns.UPDATE_DT.name());
199 addColumnExclude(ReferentialSynchroTables.TAXON_GROUP_POSITION.name(), DatabaseColumns.UPDATE_DT.name());
200 addColumnExclude(ReferentialSynchroTables.PRIVILEGE_TRANSFER.name(), DatabaseColumns.UPDATE_DT.name());
201 addColumnExclude(ReferentialSynchroTables.TAXON_POSITION.name(), DatabaseColumns.UPDATE_DT.name());
202
203
204 addColumnExclude(MetaProgramSynchroTables.PMFM_MET.name(), DatabaseColumns.UPDATE_DT.name());
205 addColumnExclude(MetaProgramSynchroTables.MON_LOC_MET.name(), DatabaseColumns.UPDATE_DT.name());
206
207
208 addColumnExclude(MoratoriumSynchroTables.PMFM_MOR.name(), DatabaseColumns.UPDATE_DT.name());
209
210
211
212
213 addColumnExclude(ProgramStrategySynchroTables.PROG_QUSER_PROG_PRIV.name(), DatabaseColumns.UPDATE_DT.name());
214 addColumnExclude(ProgramStrategySynchroTables.PROG_DEP_PROG_PRIV.name(), DatabaseColumns.UPDATE_DT.name());
215
216
217
218 addColumnExclude(ReferentialSynchroTables.QUSER.name(), DatabaseColumns.QUSER_CRYPT_PASSWORD.name());
219 }
220
221 public void excludeUnusedColumnsForFileImport() {
222
223 addColumnExclude(ProgramStrategySynchroTables.STRATEGY.name(), DatabaseColumns.UPDATE_DT.name());
224 addColumnExclude(ProgramStrategySynchroTables.APPLIED_STRATEGY.name(), DatabaseColumns.UPDATE_DT.name());
225 addColumnExclude(ProgramStrategySynchroTables.APPLIED_PERIOD.name(), DatabaseColumns.UPDATE_DT.name());
226 addColumnExclude(ProgramStrategySynchroTables.PMFM_APPLIED_STRATEGY.name(), DatabaseColumns.UPDATE_DT.name());
227 addColumnExclude(ProgramStrategySynchroTables.PMFM_STRATEGY.name(), DatabaseColumns.UPDATE_DT.name());
228
229 addColumnExclude(MoratoriumSynchroTables.MORATORIUM.name(), DatabaseColumns.UPDATE_DT.name());
230
231
232 addColumnExclude(RuleSynchroTables.RULE.name(), DatabaseColumns.UPDATE_DT.name());
233 addColumnExclude(RuleSynchroTables.RULE_PARAMETER.name(), DatabaseColumns.UPDATE_DT.name());
234 addColumnExclude(RuleSynchroTables.RULE_PMFM.name(), DatabaseColumns.UPDATE_DT.name());
235 addColumnExclude(RuleSynchroTables.RULE_PRECONDITION.name(), DatabaseColumns.UPDATE_DT.name());
236 addColumnExclude(RuleSynchroTables.RULE_GROUP.name(), DatabaseColumns.UPDATE_DT.name());
237 }
238
239 public ReferentialSynchroDatabaseConfiguration getSource() {
240 return context.getSource();
241 }
242
243 public ReferentialSynchroDatabaseConfiguration getTarget() {
244 return context.getTarget();
245 }
246
247
248 @Override
249 public String toString() {
250 StringBuilder sb = new StringBuilder(super.toString());
251
252 sb.append("\n user: ").append(getUserId());
253 sb.append("\n pk includes: ").append(getPkIncludes());
254 sb.append("\n programs: ").append(getProgramCodes());
255
256 return sb.toString();
257 }
258
259 @Override
260 public void copy(SynchroDatabaseConfiguration otherBean) {
261 super.copy(otherBean);
262
263 if (otherBean instanceof ReferentialSynchroDatabaseConfiguration) {
264 ReferentialSynchroDatabaseConfiguration otherConfiguration = (ReferentialSynchroDatabaseConfiguration) otherBean;
265 this.context.copy(otherConfiguration.context);
266 }
267 }
268 }