1 package fr.ifremer.tutti.service.genericformat.producer;
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.CaracteristicMap;
28 import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode;
29 import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
30 import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
31 import fr.ifremer.tutti.service.csv.CsvProducer;
32 import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext;
33 import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationModel;
34 import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow;
35 import org.apache.commons.collections4.CollectionUtils;
36 import org.apache.commons.collections4.MapUtils;
37
38 import java.io.Serializable;
39 import java.nio.file.Path;
40 import java.util.ArrayList;
41 import java.util.List;
42 import java.util.Map;
43 import java.util.Objects;
44
45
46
47
48
49
50
51 public class CsvProducerForIndividualObservation extends CsvProducer<IndividualObservationRow, IndividualObservationModel> {
52
53 public CsvProducerForIndividualObservation(Path file, IndividualObservationModel model) {
54 super(file, model);
55 }
56
57 public List<IndividualObservationRow> getDataToExport(GenericFormatExportOperationContext operationExportContext) {
58
59 List<IndividualObservationRow> rows = new ArrayList<>();
60 List<IndividualObservationBatch> individualObservations = operationExportContext.getIndividualObservations();
61
62 if (CollectionUtils.isNotEmpty(individualObservations)) {
63 for (IndividualObservationBatch child : individualObservations) {
64
65 addIndividualObservationBatch(operationExportContext, rows, child);
66 }
67 }
68
69 return rows;
70
71 }
72
73 protected void addIndividualObservationBatch(GenericFormatExportOperationContext operationExportContext,
74 List<IndividualObservationRow> rows,
75 IndividualObservationBatch child) {
76
77 addCaracteristicRow(operationExportContext,
78 rows,
79 child,
80 operationExportContext.getWeightMeasuredCaracteristic(),
81 child.getWeight());
82
83 addCaracteristicRow(operationExportContext,
84 rows,
85 child,
86 operationExportContext.getSampleCodeCaracteristic(),
87 child.getSamplingCode());
88
89 Caracteristic copyIndividualObservationModeCaracteristic = operationExportContext.getCopyIndividualObservationModeCaracteristic();
90 CopyIndividualObservationMode copyIndividualObservationMode = child.getCopyIndividualObservationMode();
91 Objects.requireNonNull(copyIndividualObservationMode, "Mode de recopie null sur l'observation individuelle " + child.getId());
92 addCaracteristicRow(operationExportContext,
93 rows,
94 child,
95 copyIndividualObservationModeCaracteristic,
96 copyIndividualObservationMode.getQualitativeValue(copyIndividualObservationModeCaracteristic));
97
98 if (child.getLengthStepCaracteristic() != null) {
99 addCaracteristicRow(operationExportContext,
100 rows,
101 child,
102 operationExportContext.getPmfmIdCaracteristic(),
103 child.getLengthStepCaracteristic().getIdAsInt());
104
105 addCaracteristicRow(operationExportContext,
106 rows,
107 child,
108 child.getLengthStepCaracteristic(),
109 child.getSize());
110 }
111
112 CaracteristicMap caracteristics = child.getCaracteristics();
113 if (MapUtils.isNotEmpty(caracteristics)) {
114 for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) {
115 addCaracteristicRow(operationExportContext,
116 rows,
117 child,
118 entry.getKey(),
119 entry.getValue());
120 }
121 }
122 }
123
124 protected void addCaracteristicRow(GenericFormatExportOperationContext operationExportContext,
125 List<IndividualObservationRow> rows,
126 IndividualObservationBatch individualObservationBatch,
127 Caracteristic caracteristic,
128 Serializable caracteristicValue) {
129 if (caracteristicValue != null) {
130
131 IndividualObservationRow row = new IndividualObservationRow();
132 row.setCruise(operationExportContext.getCruise());
133 row.setFishingOperation(operationExportContext.getOperation());
134
135 row.setComment(individualObservationBatch.getComment());
136 row.setSpecies(individualObservationBatch.getSpecies());
137 row.setId(individualObservationBatch.getIdAsInt());
138 row.setBatchId(individualObservationBatch.getBatchId());
139 row.setRankOrder(individualObservationBatch.getRankOrder());
140
141 row.setCaracteristic(caracteristic);
142 row.setCaracteristicValue(caracteristicValue);
143 rows.add(row);
144 }
145 }
146
147 }