1 package fr.ifremer.quadrige3.ui.swing.synchro.action;
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
27 import fr.ifremer.quadrige3.core.security.SecurityContextHelper;
28 import fr.ifremer.quadrige3.core.service.ClientServiceLocator;
29 import fr.ifremer.quadrige3.synchro.service.client.SynchroClientService;
30 import fr.ifremer.quadrige3.synchro.service.client.vo.SynchroClientImportResult;
31 import fr.ifremer.quadrige3.synchro.vo.SynchroImportContextVO;
32 import fr.ifremer.quadrige3.synchro.vo.SynchroProgressionStatus;
33 import fr.ifremer.quadrige3.ui.swing.Screen;
34 import fr.ifremer.quadrige3.ui.swing.action.AbstractChangeScreenAction;
35 import fr.ifremer.quadrige3.ui.swing.content.AbstractMainUIHandler;
36 import fr.ifremer.quadrige3.ui.swing.synchro.SynchroUIContext;
37 import fr.ifremer.quadrige3.ui.swing.synchro.SynchroUIHandler;
38 import fr.ifremer.quadrige3.ui.swing.synchro.resolver.SynchroRejectedRowUIResolver;
39 import org.apache.commons.logging.Log;
40 import org.apache.commons.logging.LogFactory;
41
42 import static org.nuiton.i18n.I18n.t;
43
44
45
46
47
48
49 public class ImportSynchroDirectAction extends AbstractChangeScreenAction {
50
51 private static final Log log = LogFactory.getLog(ImportSynchroDirectAction.class);
52
53 private boolean silent = false;
54 private boolean needAuthentication = false;
55
56
57
58
59
60
61 public ImportSynchroDirectAction(AbstractMainUIHandler handler) {
62 super(handler, true, Screen.HOME);
63 setActionDescription(t("quadrige3.action.synchro.import.title"));
64 }
65
66 private SynchroUIContext getSynchroUIContext() {
67 return getContext().getSynchroContext();
68 }
69
70 private SynchroUIHandler getSynchroHandler() {
71 return getContext().getSynchroHandler();
72 }
73
74
75
76
77
78
79 public void setSilent(boolean silent) {
80 this.silent = silent;
81 }
82
83
84 @Override
85 public boolean prepareAction() throws Exception {
86 super.prepareAction();
87
88 getSynchroHandler().hidePopup();
89
90 return true;
91 }
92
93
94 @Override
95 public void doAction() throws Exception {
96
97 createProgressionUIModel(103);
98
99 SynchroClientService service = ClientServiceLocator.instance().getSynchroClientService();
100 SynchroImportContextVO contextVO = getSynchroUIContext().getSynchroImportContext();
101 SynchroClientImportResult result = service.importFromServerDatabase(
102 SecurityContextHelper.getQuadrigeUserId(),
103 contextVO,
104 new SynchroRejectedRowUIResolver(getContext().getDialogHelper(), true ),
105 getProgressionUIModel(),
106 100);
107
108
109 {
110 if (log.isInfoEnabled()) {
111 log.info("Reset all caches.");
112 }
113 getProgressionUIModel().setMessage(t("quadrige3.synchro.progress.resetCache"));
114 getContext().reloadDbCache(getProgressionUIModel());
115 }
116
117 if (!getContext().isAuthenticated()) {
118
119
120 needAuthentication = true;
121 if (log.isInfoEnabled()) {
122 log.warn(t("quadrige3.action.synchro.import.success.notAuthenticated"));
123 }
124
125 getSynchroUIContext().resetImportContext();
126 getProgressionUIModel().increments(1);
127 } else {
128 getProgressionUIModel().increments(t("quadrige3.synchro.progress.saveContext"));
129
130
131 getSynchroUIContext().resetImportContext();
132
133
134 if (getSynchroUIContext().isImportReferential()) {
135 getSynchroUIContext().setImportReferentialUpdateDate(result.getReferentialSynchronizationDate());
136 }
137
138
139 if (getSynchroUIContext().isImportData()) {
140
141 getSynchroUIContext().setImportDataUpdateDate(result.getDataSynchronizationDate());
142 }
143
144 getSynchroUIContext().saveImportContext(true, true);
145 }
146
147 getProgressionUIModel().increments(1);
148
149
150 if (!silent) {
151 super.doAction();
152 }
153 }
154
155
156 @Override
157 public void postSuccessAction() {
158 super.postSuccessAction();
159
160 getHandler().reloadDbManagerText();
161
162 getSynchroHandler().report(needAuthentication
163 ? t("quadrige3.action.synchro.import.success.notAuthenticated")
164 : t("quadrige3.action.synchro.import.success"), !silent);
165
166 if (log.isInfoEnabled()) {
167 log.info("Synchronization import success");
168 }
169
170 }
171
172
173 @Override
174 public void postFailedAction(Throwable error) {
175 if (!silent) {
176 super.postFailedAction(error);
177 }
178
179 getSynchroHandler().report(t("quadrige3.synchro.report.failed"), !silent);
180 getSynchroUIContext().setStatus(SynchroProgressionStatus.FAILED);
181
182 log.error("Synchronization import failed");
183 }
184
185 @Override
186 protected void releaseAction() {
187 super.releaseAction();
188
189 silent = false;
190 needAuthentication = false;
191 }
192 }