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