1 package fr.ifremer.tutti.service.genericformat;
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.tutti.persistence.entities.data.Cruise;
28 import fr.ifremer.tutti.service.PersistenceService;
29 import fr.ifremer.tutti.service.TuttiServiceContext;
30 import fr.ifremer.tutti.service.genericformat.exportactions.CheckDataAction;
31 import fr.ifremer.tutti.service.genericformat.exportactions.CreateAccidentalCatchRowsAction;
32 import fr.ifremer.tutti.service.genericformat.exportactions.CreateCatchBatchRowsAction;
33 import fr.ifremer.tutti.service.genericformat.exportactions.CreateIndividualObservationRowsAction;
34 import fr.ifremer.tutti.service.genericformat.exportactions.CreateMarineLitterRowsAction;
35 import fr.ifremer.tutti.service.genericformat.exportactions.CreateOperationRowsAction;
36 import fr.ifremer.tutti.service.genericformat.exportactions.CreateParameterRowsAction;
37 import fr.ifremer.tutti.service.genericformat.exportactions.ExportCruiseActionSupport;
38 import fr.ifremer.tutti.service.genericformat.exportactions.ExportFishingOperationActionSupport;
39 import fr.ifremer.tutti.service.genericformat.exportactions.ExportGearCaracteristicAction;
40 import fr.ifremer.tutti.service.genericformat.exportactions.ExportProtocolAction;
41 import fr.ifremer.tutti.service.genericformat.exportactions.ExportReferentialGearAction;
42 import fr.ifremer.tutti.service.genericformat.exportactions.ExportReferentialPersonAction;
43 import fr.ifremer.tutti.service.genericformat.exportactions.ExportReferentialSpeciesAction;
44 import fr.ifremer.tutti.service.genericformat.exportactions.ExportReferentialVesselAction;
45 import fr.ifremer.tutti.service.genericformat.exportactions.ExportSampleCategoryModelAction;
46 import fr.ifremer.tutti.service.genericformat.exportactions.ExportSpeciesUsedAction;
47 import fr.ifremer.tutti.service.genericformat.exportactions.ExportSurveyAction;
48 import fr.ifremer.tutti.service.genericformat.exportactions.ExportTechnicalActionSupport;
49 import fr.ifremer.tutti.service.genericformat.exportactions.FinalizeExportAction;
50 import fr.ifremer.tutti.service.genericformat.exportactions.FlushOperationAction;
51 import fr.ifremer.tutti.service.genericformat.exportactions.GenerateExportArchiveAction;
52 import fr.ifremer.tutti.service.genericformat.exportactions.LoadDataAction;
53 import fr.ifremer.tutti.service.protocol.ProtocolImportExportService;
54 import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService;
55 import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService;
56 import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService;
57 import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService;
58 import org.apache.commons.logging.Log;
59 import org.apache.commons.logging.LogFactory;
60
61 import java.util.ArrayList;
62 import java.util.List;
63
64
65
66
67
68
69
70 public class GenericFormatExportActionEngine {
71
72
73 private static final Log log = LogFactory.getLog(GenericFormatExportActionEngine.class);
74
75 private final List<ExportCruiseActionSupport> cruiseActions;
76
77 private final List<ExportFishingOperationActionSupport> fishingOperationsActions;
78
79 private final List<ExportTechnicalActionSupport> loadActions;
80
81 private final List<ExportTechnicalActionSupport> technicalActions;
82
83 public GenericFormatExportActionEngine(TuttiServiceContext serviceContext) {
84
85 this.loadActions = createLoadActions(serviceContext);
86 this.cruiseActions = createCruiseActions(serviceContext);
87 this.fishingOperationsActions = createFishingOperationActions(serviceContext);
88 this.technicalActions = createTechnicalActions(serviceContext);
89
90 }
91
92 public void executeLoadActions(GenericFormatExportContext exportContext) {
93
94 for (ExportTechnicalActionSupport action : loadActions) {
95
96 if (log.isInfoEnabled()) {
97 log.info("Execute " + action.getClass().getSimpleName());
98 }
99
100 action.execute(exportContext);
101
102 }
103
104 }
105
106 public void executeCruiseActions(GenericFormatExportContext exportContext, Cruise cruise) {
107
108 for (ExportCruiseActionSupport action : cruiseActions) {
109
110 if (log.isInfoEnabled()) {
111 log.info("Execute " + action.getClass().getSimpleName() + " on cruise " + cruise.getId());
112 }
113 action.execute(exportContext, cruise);
114
115 }
116
117 }
118
119 public void executeOperationActions(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) {
120
121 for (ExportFishingOperationActionSupport action : fishingOperationsActions) {
122
123 if (action.doExecute(exportContext, operationContext)) {
124
125 if (log.isInfoEnabled()) {
126 log.info("Execute " + action.getClass().getSimpleName() + " on operation " + operationContext.getOperation().getId());
127 }
128 action.execute(exportContext, operationContext);
129
130 } else {
131
132 if (log.isInfoEnabled()) {
133 log.info("Skip " + action.getClass().getSimpleName() + " on operation " + operationContext.getOperation().getId());
134 }
135
136 }
137
138 }
139
140 }
141
142 public void executeTechnicalActions(GenericFormatExportContext exportContext) {
143
144 for (ExportTechnicalActionSupport action : technicalActions) {
145
146 if (log.isInfoEnabled()) {
147 log.info("Execute " + action.getClass().getSimpleName());
148 }
149
150 action.execute(exportContext);
151
152 }
153
154 }
155
156 private List<ExportTechnicalActionSupport> createLoadActions(TuttiServiceContext serviceContext) {
157
158 List<ExportTechnicalActionSupport> actions = new ArrayList<>();
159
160 actions.add(new LoadDataAction(serviceContext.getService(PersistenceService.class)));
161 actions.add(new CheckDataAction(serviceContext.getService(GenericFormatCheckDataService.class)));
162
163 return actions;
164
165 }
166
167
168 private List<ExportCruiseActionSupport> createCruiseActions(TuttiServiceContext serviceContext) {
169
170 PersistenceService persistenceService = serviceContext.getService(PersistenceService.class);
171 String countryId = serviceContext.getConfig().getExportCountryId();
172
173 List<ExportCruiseActionSupport> actions = new ArrayList<>();
174
175 actions.add(new ExportSurveyAction(persistenceService, countryId));
176 actions.add(new ExportGearCaracteristicAction(persistenceService));
177
178 return actions;
179
180 }
181
182 private List<ExportFishingOperationActionSupport> createFishingOperationActions(TuttiServiceContext serviceContext) {
183
184 PersistenceService persistenceService = serviceContext.getService(PersistenceService.class);
185
186 List<ExportFishingOperationActionSupport> actions = new ArrayList<>();
187
188 actions.add(new CreateOperationRowsAction(persistenceService));
189 actions.add(new CreateParameterRowsAction());
190 actions.add(new CreateCatchBatchRowsAction(persistenceService));
191 actions.add(new CreateMarineLitterRowsAction(persistenceService));
192 actions.add(new CreateIndividualObservationRowsAction(persistenceService));
193 actions.add(new CreateAccidentalCatchRowsAction(persistenceService));
194 actions.add(new FlushOperationAction());
195
196 return actions;
197
198 }
199
200 private List<ExportTechnicalActionSupport> createTechnicalActions(TuttiServiceContext serviceContext) {
201
202 List<ExportTechnicalActionSupport> actions = new ArrayList<>();
203
204 actions.add(new ExportProtocolAction(serviceContext.getService(ProtocolImportExportService.class)));
205 actions.add(new ExportSampleCategoryModelAction());
206 actions.add(new ExportSpeciesUsedAction());
207 actions.add(new ExportReferentialGearAction(serviceContext.getService(ReferentialTemporaryGearService.class)));
208 actions.add(new ExportReferentialPersonAction(serviceContext.getService(ReferentialTemporaryPersonService.class)));
209 actions.add(new ExportReferentialSpeciesAction(serviceContext.getService(ReferentialTemporarySpeciesService.class)));
210 actions.add(new ExportReferentialVesselAction(serviceContext.getService(ReferentialTemporaryVesselService.class)));
211 actions.add(new FinalizeExportAction());
212 actions.add(new GenerateExportArchiveAction());
213
214 return actions;
215
216 }
217
218 }