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.exception.QuadrigeTechnicalException;
28 import fr.ifremer.quadrige3.core.security.AuthenticationInfo;
29 import fr.ifremer.quadrige3.core.service.ClientServiceLocator;
30 import fr.ifremer.quadrige3.synchro.service.client.SynchroRestClientService;
31 import fr.ifremer.quadrige3.synchro.vo.SynchroProgressionStatus;
32 import fr.ifremer.quadrige3.synchro.vo.SynchroProgressionVO;
33 import fr.ifremer.quadrige3.ui.swing.synchro.SynchroUIHandler;
34 import org.apache.commons.logging.Log;
35 import org.apache.commons.logging.LogFactory;
36 import org.nuiton.i18n.I18n;
37
38
39
40
41
42
43 public class ExportSynchroStartAction extends AbstractSynchroAction {
44
45 private static final Log log = LogFactory.getLog(ExportSynchroStartAction.class);
46
47
48
49
50
51
52 public ExportSynchroStartAction(SynchroUIHandler handler) {
53 super(handler);
54 }
55
56
57 @Override
58 public boolean initAction() {
59 super.initAction();
60
61 getModel().getProgressionModel().clear();
62 getModel().getProgressionModel().setTotal(100);
63 getHandler().showProgressCard();
64
65 return true;
66 }
67
68
69 @Override
70 public void doAction() {
71
72 if (log.isDebugEnabled()) {
73 log.debug(String.format("try to connect to synchronization site : %s", getBaseUri()));
74 }
75
76 boolean silentIfErrorOrNoData = getModel().getExportJobId() != null;
77
78
79 AuthenticationInfo authenticationInfo = !getContext().isAuthenticated() || getContext().isAuthenticatedAsLocalUser()
80 ? null
81 : getContext().getAuthenticationInfo();
82
83 SynchroRestClientService service = ClientServiceLocator.instance().getSynchroRestClientService();
84
85 SynchroProgressionVO serverExportResult = service.startExport(
86 authenticationInfo,
87 getModel().getSynchroExportContext(),
88 getModel().getProgressionModel());
89
90 SynchroProgressionStatus serverExportStatus = SynchroProgressionStatus.valueOf(serverExportResult.getStatus());
91
92 if (log.isTraceEnabled()) {
93 log.trace(String.format("serverExportStatus : %s | model status : %s ", serverExportStatus.name(), getModel().getStatus().name()));
94 }
95
96
97 if (silentIfErrorOrNoData
98 && serverExportStatus == SynchroProgressionStatus.FAILED) {
99
100
101 getModel().resetExportContext();
102 getModel().saveExportContext();
103 }
104
105
106 else if (serverExportStatus == SynchroProgressionStatus.FAILED) {
107 throw new SynchroException(I18n.t("quadrige3.error.synchro.status", getModel().getProgressionModel().getMessage()));
108 }
109
110
111 else if (getModel().getStatus() == SynchroProgressionStatus.RUNNING) {
112 getModel().setStatus(serverExportStatus);
113 getModel().setExportJobId(serverExportResult.getJobId());
114 }
115
116
117 else {
118 getModel().setStatus(serverExportStatus);
119 }
120 }
121
122
123 @Override
124 public void doneAction() {
125
126 getModel().saveExportContext();
127
128 }
129
130
131 @Override
132 public void failedAction(Throwable ex) {
133
134 throw new QuadrigeTechnicalException(I18n.t("quadrige3.error.execute.action"), ex);
135
136 }
137
138 }