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.data.Attachment;
29 import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
30 import fr.ifremer.tutti.service.PersistenceService;
31 import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext;
32 import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext;
33 import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow;
34 import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow;
35 import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment;
36
37 import java.util.ArrayList;
38 import java.util.List;
39
40
41
42
43
44
45
46 public class CreateIndividualObservationRowsAction extends ExportFishingOperationActionSupport {
47
48 private final PersistenceService persistenceService;
49
50 public CreateIndividualObservationRowsAction(PersistenceService persistenceService) {
51 this.persistenceService = persistenceService;
52 }
53
54 @Override
55 public boolean doExecute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) {
56 return exportContext.isExportIndividualObservation() && operationContext.isWithCatchBatch();
57 }
58
59 @Override
60 public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) {
61
62 List<IndividualObservationRow> individualObservationRows = exportContext.getProducerForIndividualObservation().getDataToExport(operationContext);
63 operationContext.setIndividualObservationRows(individualObservationRows);
64 exportContext.getProducerForSpecies().prepareIndividualRows(individualObservationRows);
65
66 if (exportContext.isExportAttachments()) {
67
68 List<AttachmentRow> attachmentRows = getAttachmentRows(exportContext, operationContext.getIndividualObservations());
69 operationContext.addAttachmentRows(attachmentRows);
70
71 }
72
73 }
74
75 public List<AttachmentRow> getAttachmentRows(GenericFormatExportContext exportContext, List<IndividualObservationBatch> individualObservationBatches) {
76
77 CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment();
78
79 List<AttachmentRow> attachmentRows = new ArrayList<>();
80
81 for (IndividualObservationBatch individualObservationBatch : individualObservationBatches) {
82 List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.SAMPLE, individualObservationBatch.getIdAsInt());
83 producerForAttachment.addAttachments(attachments, attachmentRows);
84 }
85
86 return attachmentRows;
87
88 }
89 }