1 package fr.ifremer.tutti.service.genericformat.exportactions;
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.adagio.core.dao.referential.ObjectTypeCode;
28 import fr.ifremer.tutti.persistence.entities.TuttiEntities;
29 import fr.ifremer.tutti.persistence.entities.data.Attachment;
30 import fr.ifremer.tutti.persistence.entities.data.Cruise;
31 import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
32 import fr.ifremer.tutti.service.PersistenceService;
33 import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext;
34 import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow;
35 import fr.ifremer.tutti.service.genericformat.csv.SurveyRow;
36 import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment;
37 import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey;
38 import org.nuiton.jaxx.application.ApplicationTechnicalException;
39
40 import java.util.ArrayList;
41 import java.util.List;
42
43 import static org.nuiton.i18n.I18n.t;
44
45
46
47
48
49
50
51 public class ExportSurveyAction extends ExportCruiseActionSupport {
52
53 private final String countryId;
54
55 public ExportSurveyAction(PersistenceService persistenceService, String countryId) {
56 super(persistenceService);
57 this.countryId = countryId;
58 }
59
60 @Override
61 public void execute(GenericFormatExportContext exportContext, Cruise cruise) {
62
63 exportContext.increments(t("tutti.service.genericFormat.exportCruise.exportSurvey", cruise.getName()));
64
65 List<TuttiLocation> allCountry = persistenceService.getAllCountry();
66
67 TuttiLocation country = TuttiEntities.splitById(allCountry).get(countryId);
68
69 try {
70
71 CsvProducerForSurvey producerForSurvey = exportContext.getProducerForSurvey();
72
73 SurveyRow surveyRow = producerForSurvey.getDataToExport(cruise, country);
74 producerForSurvey.write(surveyRow);
75
76 } catch (Exception e) {
77 throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.survey.error"), e);
78 }
79
80 if (exportContext.isExportAttachments()) {
81
82 exportAttachments(exportContext, cruise);
83
84 }
85
86 }
87
88 protected void exportAttachments(GenericFormatExportContext exportContext, Cruise cruise) {
89
90 List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.SCIENTIFIC_CRUISE, cruise.getIdAsInt());
91
92 CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment();
93 List<AttachmentRow> attachmentRows = new ArrayList<>();
94 producerForAttachment.addAttachments(attachments, attachmentRows);
95
96 try {
97 producerForAttachment.write(attachmentRows);
98 } catch (Exception e) {
99 throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.attachment.error"), e);
100 }
101 }
102
103 }