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.Program;
27  import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel;
28  import fr.ifremer.tutti.service.csv.TuttiCsvUtil;
29  import fr.ifremer.tutti.service.genericformat.GenericFormatImportEntityParserFactory;
30  
31  /**
32   * Model of a survey export.
33   *
34   * @author Tony Chemit - chemit@codelutin.com
35   * @since 1.3
36   */
37  public class SurveyModel extends AbstractTuttiImportExportModel<SurveyRow> {
38  
39      public static SurveyModel forExport(char separator) {
40  
41          SurveyModel exportModel = new SurveyModel(separator);
42          exportModel.forExport();
43          return exportModel;
44  
45      }
46  
47      public static SurveyModel forImport(char separator, GenericFormatImportEntityParserFactory parserFactory) {
48  
49          SurveyModel importModel = new SurveyModel(separator);
50          importModel.forImport(parserFactory);
51          return importModel;
52  
53      }
54  
55      @Override
56      public SurveyRow newEmptyInstance() {
57  
58          return SurveyRow.newEmptyInstance();
59  
60      }
61  
62      protected SurveyModel(char separator) {
63          super(separator);
64      }
65  
66      protected void forExport() {
67  
68          newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
69          newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_FORMATTER);
70          newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
71          newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_FORMATTER);
72          newColumnForExport("Nombre_Poches", Cruise.PROPERTY_MULTIRIG_NUMBER, TuttiCsvUtil.PRIMITIVE_INTEGER);
73          newColumnForExport("Pays", SurveyRow.PROPERTY_COUNTRY, TuttiCsvUtil.COUNTRY_FORMATTER);
74          newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiCsvUtil.PROGRAM_ZONE_FORMATTER);
75          newColumnForExport("Campagne", Cruise.PROPERTY_NAME);
76          newColumnForExport("Id_Sismer", SurveyRow.PROPERTY_ID_SISMER);
77          newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
78          newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiCsvUtil.HARBOUR_FORMATTER);
79          newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
80          newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiCsvUtil.HARBOUR_FORMATTER);
81          newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.PERSON_LIST_FORMATTER);
82          newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.PERSON_LIST_FORMATTER);
83          newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER);
84  
85          newColumnForExport("Serie_Id", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_TECHNICAL_FORMATTER);
86          newColumnForExport("Campagne_Id", SurveyRow.PROPERTY_OBJECT_ID, TuttiCsvUtil.INTEGER);
87          newColumnForExport("Navire_Id", Cruise.PROPERTY_VESSEL, TuttiCsvUtil.VESSEL_TECHNICAL_FORMATTER);
88          newColumnForExport("Engin_Id", Cruise.PROPERTY_GEAR, TuttiCsvUtil.GEAR_LIST_TECHNICAL_FORMATTER);
89          newColumnForExport("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiCsvUtil.HARBOUR_TECHNICAL_FORMATTER);
90          newColumnForExport("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, TuttiCsvUtil.HARBOUR_TECHNICAL_FORMATTER);
91          newColumnForExport("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.PERSON_LIST_TECHNICAL_FORMATTER);
92          newColumnForExport("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.PERSON_LIST_TECHNICAL_FORMATTER);
93  
94      }
95  
96      protected void forImport(GenericFormatImportEntityParserFactory parserFactory) {
97  
98          newMandatoryColumn("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
99          newIgnoredColumn("Serie");
100         newMandatoryColumn("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
101         newIgnoredColumn("Navire");
102         newMandatoryColumn("Nombre_Poches", Cruise.PROPERTY_MULTIRIG_NUMBER, TuttiCsvUtil.PRIMITIVE_INTEGER);
103         newIgnoredColumn("Pays");
104         newIgnoredColumn("Zone_Etude");
105         newMandatoryColumn("Campagne", Cruise.PROPERTY_NAME);
106         newIgnoredColumn("Id_Sismer");
107         newMandatoryColumn("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
108         newIgnoredColumn("Port_Deb_Campagne");
109         newMandatoryColumn("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
110         newIgnoredColumn("Port_Fin_Campagne");
111         newIgnoredColumn("Chef_Mission");
112         newIgnoredColumn("Resp_Salle_Tri");
113         newMandatoryColumn("Commentaire", Cruise.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER);
114 
115         newMandatoryColumn("Serie_Id", Cruise.PROPERTY_PROGRAM, parserFactory.getProgramParser());
116         newMandatoryColumn("Campagne_Id", SurveyRow.PROPERTY_OBJECT_ID, TuttiCsvUtil.INTEGER);
117         newMandatoryColumn("Navire_Id", Cruise.PROPERTY_VESSEL, parserFactory.getVesselParser());
118         newMandatoryColumn("Engin_Id", Cruise.PROPERTY_GEAR, parserFactory.getGearListParser());
119         newMandatoryColumn("Port_Deb_Campagne_Id", Cruise.PROPERTY_DEPARTURE_LOCATION, parserFactory.getHarbourParser());
120         newMandatoryColumn("Port_Fin_Campagne_Id", Cruise.PROPERTY_RETURN_LOCATION, parserFactory.getHarbourParser());
121         newMandatoryColumn("Chef_Mission_Id", Cruise.PROPERTY_HEAD_OF_MISSION, parserFactory.getPersonListParser());
122         newMandatoryColumn("Resp_Salle_Tri_Id", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, parserFactory.getPersonListParser());
123 
124     }
125 
126 }