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