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 com.google.common.collect.Lists;
28 import com.google.common.collect.Maps;
29 import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
30 import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
31 import fr.ifremer.tutti.persistence.entities.referential.Species;
32 import fr.ifremer.tutti.service.csv.CsvProducer;
33 import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow;
34 import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow;
35 import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportModel;
36 import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow;
37
38 import java.nio.file.Path;
39 import java.util.Collections;
40 import java.util.List;
41 import java.util.Map;
42
43
44
45
46
47
48
49 public class CsvProducerForSpecies extends CsvProducer<SpeciesExportRow, SpeciesExportModel> {
50
51 final Map<String, Species> speciesByReferenceTaxonId;
52
53 final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap();
54
55 public CsvProducerForSpecies(Path file, SpeciesExportModel model, Map<String, Species> speciesByReferenceTaxonId) {
56 super(file, model);
57 this.speciesByReferenceTaxonId = speciesByReferenceTaxonId;
58 }
59
60 public void prepareSpeciesBatchRows(BatchContainer<SpeciesBatch> rootSpeciesBatch) {
61
62 for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) {
63 addSpecies(speciesBatch.getSpecies());
64 }
65
66 }
67
68 public void prepareBenthosBatchRows(BatchContainer<SpeciesBatch> rootBenthosBatch) {
69
70 for (SpeciesBatch benthosBatch : rootBenthosBatch.getChildren()) {
71 addSpecies(benthosBatch.getSpecies());
72 }
73
74 }
75
76 public void prepareIndividualRows(List<IndividualObservationRow> rows) {
77
78 for (IndividualObservationRow row : rows) {
79 addSpecies(row.getSpecies());
80 }
81
82 }
83
84 public void prepareAccidentalRows(List<AccidentalCatchRow> rows) {
85
86 for (AccidentalCatchRow row : rows) {
87 addSpecies(row.getSpecies());
88 }
89
90 }
91
92 public List<SpeciesExportRow> getDataToExport() {
93
94 List<SpeciesExportRow> result = Lists.newArrayList(speciesToExport.values());
95
96 Collections.sort(result, (o1, o2) -> o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId()));
97 return result;
98
99 }
100
101 public void addSpecies(Species species) {
102
103 String speciesId = String.valueOf(species.getReferenceTaxonId());
104
105 if (!speciesToExport.containsKey(speciesId)) {
106
107
108 Species fullSpecies = speciesByReferenceTaxonId.get(speciesId);
109 SpeciesExportRow row = new SpeciesExportRow();
110 row.setSpecies(fullSpecies);
111 speciesToExport.put(speciesId, row);
112
113 species.setSurveyCode(fullSpecies.getSurveyCode());
114 }
115 }
116
117 }