View Javadoc
1   package fr.ifremer.tutti.service.genericformat.csv;
2   
3   /*
4    * #%L
5    * Tutti :: Service
6    * %%
7    * Copyright (C) 2012 - 2014 Ifremer
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as
11   * published by the Free Software Foundation, either version 3 of the 
12   * License, or (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU General Public 
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/gpl-3.0.html>.
22   * #L%
23   */
24  
25  import fr.ifremer.tutti.persistence.entities.data.Cruise;
26  import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
27  import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
28  import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel;
29  import fr.ifremer.tutti.service.csv.TuttiCsvUtil;
30  import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory;
31  
32  /**
33   * Model of a individual observation export.
34   *
35   * @author Tony Chemit - chemit@codelutin.com
36   * @since 2.0.1
37   */
38  public class IndividualObservationModel extends AbstractTuttiImportExportModel<IndividualObservationRow> {
39  
40      public static IndividualObservationModel forExport(char separator) {
41  
42          IndividualObservationModel exportModel = new IndividualObservationModel(separator);
43          exportModel.forExport();
44          return exportModel;
45  
46      }
47  
48      public static IndividualObservationModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) {
49  
50          IndividualObservationModel importModel = new IndividualObservationModel(separator);
51          importModel.forImport(parserFactory);
52          return importModel;
53  
54      }
55  
56      @Override
57      public IndividualObservationRow newEmptyInstance() {
58  
59          return IndividualObservationRow.newEmptyInstance();
60  
61      }
62  
63      protected IndividualObservationModel(char separator) {
64          super(separator);
65      }
66  
67      protected void forExport() {
68  
69          newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
70          newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER);
71          newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
72  
73          newColumnForExport("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER);
74          newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
75          newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
76  
77          newColumnForExport("Id_Lot", IndividualObservationBatch.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
78          newColumnForExport("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER);
79          newColumnForExport("Nom_Scientifique", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER);
80  
81          newColumnForExport("Id_Echantillon", IndividualObservationBatch.PROPERTY_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
82          newColumnForExport("Numero_Ordre", IndividualObservationBatch.PROPERTY_RANK_ORDER, TuttiCsvUtil.PRIMITIVE_INTEGER);
83          newColumnForExport("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER);
84          newColumnForExport("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER);
85          newColumnForExport("Libelle_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER);
86          newColumnForExport("Valeur", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
87  
88          newColumnForExport("Serie_Id", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_TECHNICAL_FORMATTER);
89          newColumnForExport("Valeur_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER);
90  
91  
92      }
93  
94      protected void forImport(GenericFormatImportEntityParserFactory parserFactory) {
95  
96          newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
97          newIgnoredColumn("Serie");
98          newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
99  
100         newMandatoryColumn("Code_Station", FishingOperation.PROPERTY_STATION_NUMBER);
101         newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
102         newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
103 
104         newMandatoryColumn("Id_Lot", IndividualObservationBatch.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
105         newMandatoryColumn("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser());
106         newIgnoredColumn("Nom_Scientifique");
107 
108         newMandatoryColumn("Id_Echantillon", IndividualObservationBatch.PROPERTY_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
109         newMandatoryColumn("Numero_Ordre", IndividualObservationBatch.PROPERTY_RANK_ORDER, TuttiCsvUtil.PRIMITIVE_INTEGER);
110         newMandatoryColumn("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER);
111         newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicWithProtectedParser());
112         newIgnoredColumn("Libelle_PMFM");
113         newIgnoredColumn("Valeur");
114 
115         newMandatoryColumn("Serie_Id", Cruise.PROPERTY_PROGRAM, parserFactory.getProgramParser());
116         newMandatoryColumn("Valeur_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE);
117 
118     }
119 
120 }