Tutti-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
April 2013
- 5 participants
- 210 discussions
08 Apr '13
08 Apr '13
Author: tchemit
Date: 2013-04-08 12:00:00 +0200 (Mon, 08 Apr 2013)
New Revision: 747
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/747
Log:
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (fix pmfm constant)
Modified:
trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
Modified: trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-07 12:56:47 UTC (rev 746)
+++ trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-08 10:00:00 UTC (rev 747)
@@ -376,11 +376,11 @@
QualitativeValueId.SORTING_TYPE_2_ALIVE_ITEMIZED=2160
# PSFM "Ouverture verticale (chalut ou drague)" (pour export operation)
-PmfmID.VERTICAL_OPENING=832
+PmfmId.VERTICAL_OPENING=832
# PSFM "Ouverture Horizontale aux pointes d'ailes" (pour export operation)
-PmfmID.HORIZONTAL_OPENING_WING=827
+PmfmId.HORIZONTAL_OPENING_WING=827
# PSFM "Ouverture horizontale aux panneaux" (pour export operation)
-PmfmID.HORIZONTAL_OPENING_DOOR=830
+PmfmId.HORIZONTAL_OPENING_DOOR=830
# (20=observateur volant, 95=Administrateur SIH) -> L'avantage du 20 est qu'il est inactif (=20), donc plus facilement detectable
PersonId.UNKNOWN_RECORDER_PERSON=20
1
0
07 Apr '13
Author: tchemit
Date: 2013-04-07 14:56:47 +0200 (Sun, 07 Apr 2013)
New Revision: 746
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/746
Log:
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (continue + add complete test (from the bottom method)
Modified:
trunk/pom.xml
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
trunk/tutti-service/pom.xml
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceContext.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/AbstractServiceTest.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/pom.xml 2013-04-07 12:56:47 UTC (rev 746)
@@ -131,9 +131,6 @@
<eugenePluginVersion>2.6.2-SNAPSHOT</eugenePluginVersion>
<hibernateVersion>3.6.10.Final</hibernateVersion>
- <h2Version>1.3.168</h2Version>
- <postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion>
- <licensePluginVersion>1.4</licensePluginVersion>
<jaxxVersion>2.5.16-SNAPSHOT</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
@@ -305,12 +302,6 @@
</exclusions>
</dependency>
- <!--dependency>
- <groupId>com.ezware.oxbow</groupId>
- <artifactId>swing-bits</artifactId>
- <version>0.5.0</version>
- </dependency-->
-
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
@@ -396,6 +387,13 @@
</dependency>
<dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>1.9.0</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock</artifactId>
<version>${jMockVersion}</version>
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -212,6 +212,12 @@
Caracteristic getMarineLitterSizeCategoryCaracteristic();
+ Caracteristic getVerticalOpeningCaracteristic();
+
+ Caracteristic getHorizontalOpeningWingCaracteristic();
+
+ Caracteristic getHorizontalOpeningDoorCaracteristic();
+
List<Gear> getAllScientificGear();
List<Gear> getAllFishingGear();
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -315,6 +315,21 @@
}
@Override
+ public Caracteristic getVerticalOpeningCaracteristic() {
+ return referentialService.getVerticalOpeningCaracteristic();
+ }
+
+ @Override
+ public Caracteristic getHorizontalOpeningWingCaracteristic() {
+ return referentialService.getHorizontalOpeningWingCaracteristic();
+ }
+
+ @Override
+ public Caracteristic getHorizontalOpeningDoorCaracteristic() {
+ return referentialService.getHorizontalOpeningDoorCaracteristic();
+ }
+
+ @Override
public List<Gear> getAllScientificGear() {
return referentialService.getAllScientificGear();
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -172,6 +172,21 @@
}
@Override
+ public Caracteristic getVerticalOpeningCaracteristic() {
+ throw new RuntimeException("method not implemented");
+ }
+
+ @Override
+ public Caracteristic getHorizontalOpeningWingCaracteristic() {
+ throw new RuntimeException("method not implemented");
+ }
+
+ @Override
+ public Caracteristic getHorizontalOpeningDoorCaracteristic() {
+ throw new RuntimeException("method not implemented");
+ }
+
+ @Override
public List<Gear> getAllScientificGear() {
throw new RuntimeException("method not implemented");
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -37,6 +37,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.cfg.Environment;
@@ -50,11 +51,14 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
+import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import static org.nuiton.i18n.I18n._;
+
/**
* Usefull method around tutti entities.
*
@@ -369,4 +373,17 @@
return result;
}
+ public static String getDuration(Date startDate,
+ Date endDate,
+ String format) {
+ String duration = "";
+ if (startDate != null && endDate != null && !startDate.after(endDate)) {
+ duration = DurationFormatUtils.formatPeriod(
+ startDate.getTime(),
+ endDate.getTime(),
+ format);
+ }
+ return duration;
+ }
+
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -206,6 +206,12 @@
Caracteristic getMarineLitterSizeCategoryCaracteristic();
+ Caracteristic getVerticalOpeningCaracteristic();
+
+ Caracteristic getHorizontalOpeningWingCaracteristic();
+
+ Caracteristic getHorizontalOpeningDoorCaracteristic();
+
List<Gear> getAllScientificGear();
List<Gear> getAllFishingGear();
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -548,6 +548,27 @@
}
@Override
+ public Caracteristic getVerticalOpeningCaracteristic() {
+ Integer pmfmId = enumeration.PMFM_ID_VERTICAL_OPENING;
+ Caracteristic result = thisService.getCaracteristic(pmfmId);
+ return result;
+ }
+
+ @Override
+ public Caracteristic getHorizontalOpeningWingCaracteristic() {
+ Integer pmfmId = enumeration.PMFM_ID_HORIZONTAL_OPENING_WING;
+ Caracteristic result = thisService.getCaracteristic(pmfmId);
+ return result;
+ }
+
+ @Override
+ public Caracteristic getHorizontalOpeningDoorCaracteristic() {
+ Integer pmfmId = enumeration.PMFM_ID_HORIZONTAL_OPENING_DOOR;
+ Caracteristic result = thisService.getCaracteristic(pmfmId);
+ return result;
+ }
+
+ @Override
public Caracteristic getCaracteristic(Integer pmfmId) {
Object[] source = queryUniqueWithStatus("pmfmById",
"pmfmId", IntegerType.INSTANCE, pmfmId,
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -233,6 +233,15 @@
@Value("${PmfmId.SURVEY_PART}")
public final Integer PMFM_ID_SURVEY_PART = null;
+ @Value("${PmfmId.VERTICAL_OPENING}")
+ public final Integer PMFM_ID_VERTICAL_OPENING = null;
+
+ @Value("${PmfmId.HORIZONTAL_OPENING_WING}")
+ public final Integer PMFM_ID_HORIZONTAL_OPENING_WING= null;
+
+ @Value("${PmfmId.HORIZONTAL_OPENING_DOOR}")
+ public final Integer PMFM_ID_HORIZONTAL_OPENING_DOOR= null;
+
//FIXME-TC Remove this when no more used
@Value("${PmfmId.SURVEY_PART}")
public final Integer PMFM_ID_MEASUREMENT_FILE = null;
Modified: trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-07 12:56:47 UTC (rev 746)
@@ -375,6 +375,13 @@
QualitativeValueId.SORTING_TYPE_2_INERT=2162
QualitativeValueId.SORTING_TYPE_2_ALIVE_ITEMIZED=2160
+# PSFM "Ouverture verticale (chalut ou drague)" (pour export operation)
+PmfmID.VERTICAL_OPENING=832
+# PSFM "Ouverture Horizontale aux pointes d'ailes" (pour export operation)
+PmfmID.HORIZONTAL_OPENING_WING=827
+# PSFM "Ouverture horizontale aux panneaux" (pour export operation)
+PmfmID.HORIZONTAL_OPENING_DOOR=830
+
# (20=observateur volant, 95=Administrateur SIH) -> L'avantage du 20 est qu'il est inactif (=20), donc plus facilement detectable
PersonId.UNKNOWN_RECORDER_PERSON=20
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/pom.xml 2013-04-07 12:56:47 UTC (rev 746)
@@ -128,6 +128,11 @@
<artifactId>junit</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ </dependency>
+
</dependencies>
<build>
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -413,6 +413,21 @@
}
@Override
+ public Caracteristic getVerticalOpeningCaracteristic() {
+ return driver.getVerticalOpeningCaracteristic();
+ }
+
+ @Override
+ public Caracteristic getHorizontalOpeningWingCaracteristic() {
+ return driver.getHorizontalOpeningWingCaracteristic();
+ }
+
+ @Override
+ public Caracteristic getHorizontalOpeningDoorCaracteristic() {
+ return driver.getHorizontalOpeningDoorCaracteristic();
+ }
+
+ @Override
public Vessel getVessel(String vesselCode) {
return driver.getVessel(vesselCode);
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -26,6 +26,7 @@
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.entities.TuttiEntity;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.util.csv.Common;
@@ -38,6 +39,7 @@
import org.nuiton.util.csv.ext.RepeatableExport;
import org.nuiton.util.decorator.Decorator;
+import java.io.Serializable;
import java.io.Writer;
import java.text.ParseException;
import java.util.Collections;
@@ -247,6 +249,9 @@
public static final ValueParserFormatter<Date> TIME =
new DateValue("HH:mm:ss");
+ public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER=
+ new CaracteristicValueFormatter();
+
public static <E> BeanPropertyFormatter<E> newBeanFormatter(String propertyName,
String defaultNullValue) {
return new BeanPropertyFormatter<E>(propertyName, defaultNullValue);
@@ -321,6 +326,31 @@
}
}
+ protected static class CaracteristicValueFormatter implements ValueFormatter<Serializable> {
+
+ ValueParserFormatter<Integer> integerDelegate = INTEGER;
+
+ ValueParserFormatter<Float> floatDelegate = FLOAT;
+
+ ValueParserFormatter<String> textDelegate = STRING;
+
+ @Override
+ public String format(Serializable value) {
+ if (value instanceof Float) {
+ return floatDelegate.format((Float) value);
+ }
+ if (value instanceof Integer) {
+ return integerDelegate.format((Integer) value);
+ }
+ if (value instanceof String) {
+ return textDelegate.format((String) value);
+ }
+ // qualitive value
+ CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) value;
+ return qv.getName();
+ }
+ }
+
protected TuttiCsvUtil() {
// no instance
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceContext.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceContext.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceContext.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -112,6 +112,9 @@
}
public <S extends TuttiService> S getService(Class<S> serviceType) {
+ if (serviceType==null) {
+ return null;
+ }
try {
S s = (S) services.get(serviceType);
return s;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -27,6 +27,7 @@
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
@@ -42,9 +43,21 @@
*/
public class OperationExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<OperationExportRow> {
- public OperationExportModel(char separator) {
+
+ protected final Caracteristic verticalOpeningCaracteristic;
+
+ protected final Caracteristic horizontalOpeningWingCaracteristic;
+
+ protected final Caracteristic horizontalOpeningDoorCaracteristic;
+
+ public OperationExportModel(char separator,
+ Caracteristic verticalOpeningCaracteristic,
+ Caracteristic horizontalOpeningWingCaracteristic,
+ Caracteristic horizontalOpeningDoorCaracteristic) {
super(separator);
-
+ this.verticalOpeningCaracteristic = verticalOpeningCaracteristic;
+ this.horizontalOpeningWingCaracteristic = horizontalOpeningWingCaracteristic;
+ this.horizontalOpeningDoorCaracteristic = horizontalOpeningDoorCaracteristic;
newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
@@ -61,19 +74,18 @@
newColumnForExport("HeureFin_OP", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.TIME);
newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, TuttiCsvUtil.FLOAT);
newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, TuttiCsvUtil.FLOAT);
-//FIXME newColumnForExport("Duree", FishingOperation.PROPERTY_);
+ newColumnForExport("Duree", OperationExportRow.PROPERTY_DURATION);
newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
newColumnForExport("Sous-Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiLocation.PROPERTY_NAME, "NA");
-//FIXME newColumnForExport("Rectangle_CIEM",);
+//FIXME newColumnForExport("Rectangle_CIEM",); // Carré statistique
newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID, TuttiCsvUtil.BOOLEAN);
newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN);
newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.FLOAT);
-//FIXME newColumnForExport("Ouv_Verticale",);
-//FIXME newColumnForExport("Ouv_Horizontale_Ailes",);
-//FIXME newColumnForExport("Ouv_Horizontale_Panneaux",);
+ newColumnForExport("Ouv_Verticale", OperationExportRow.PROPERTY_VERTICAL_OPENING_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ newColumnForExport("Ouv_Horizontale_Ailes", OperationExportRow.PROPERTY_HORIZONTAL_OPENING_WING_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ newColumnForExport("Ouv_Horizontale_Panneaux", OperationExportRow.PROPERTY_HORIZONTAL_OPENING_DOOR_GEAR_USE_FEATURE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
newColumnForExport("Commentaire", FishingOperation.PROPERTY_COMMENT);
-
}
public void prepareRows(List<OperationExportRow> rows,
@@ -82,7 +94,10 @@
for (FishingOperation operation : operations) {
- OperationExportRow row = new OperationExportRow();
+ OperationExportRow row = new OperationExportRow(
+ verticalOpeningCaracteristic,
+ horizontalOpeningWingCaracteristic,
+ horizontalOpeningDoorCaracteristic);
row.setCruise(cruise);
row.setFishingOperation(operation);
rows.add(row);
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -24,9 +24,12 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
@@ -42,12 +45,36 @@
*/
public class OperationExportRow implements Serializable {
+ public static final String PROPERTY_DURATION = "duration";
+
+ public static final String PROPERTY_VERTICAL_OPENING_GEAR_USE_FEATURE = "verticalOpeningGearUseFeature";
+
+ public static final String PROPERTY_HORIZONTAL_OPENING_WING_GEAR_USE_FEATURE = "horizontalOpeningWingGearUseFeature";
+
+ public static final String PROPERTY_HORIZONTAL_OPENING_DOOR_GEAR_USE_FEATURE = "horizontalOpeningDoorGearUseFeature";
+
+
private static final long serialVersionUID = 1L;
protected Cruise cruise;
protected FishingOperation fishingOperation;
+ private Caracteristic verticalOpeningCaracteristic;
+
+ private Caracteristic horizontalOpeningWingCaracteristic;
+
+ private Caracteristic horizontalOpeningDoorCaracteristic;
+
+ public OperationExportRow(Caracteristic verticalOpeningCaracteristic,
+ Caracteristic horizontalOpeningWingCaracteristic,
+ Caracteristic horizontalOpeningDoorCaracteristic) {
+
+ this.verticalOpeningCaracteristic = verticalOpeningCaracteristic;
+ this.horizontalOpeningWingCaracteristic = horizontalOpeningWingCaracteristic;
+ this.horizontalOpeningDoorCaracteristic = horizontalOpeningDoorCaracteristic;
+ }
+
public void setCruise(Cruise cruise) {
this.cruise = cruise;
}
@@ -135,4 +162,32 @@
public String getComment() {
return fishingOperation.getComment();
}
+
+ public String getDuration() {
+ return TuttiEntities.getDuration(
+ getGearShootingStartDate(),
+ getGearShootingEndDate(),
+ "mm");
+ }
+
+ public Serializable getVerticalOpeningGearUseFeature() {
+ Serializable result = getGearUseFeature(verticalOpeningCaracteristic);
+ return result;
+ }
+
+ public Serializable getHorizontalOpeningWingGearUseFeature() {
+ Serializable result = getGearUseFeature(horizontalOpeningWingCaracteristic);
+ return result;
+ }
+
+ public Serializable getHorizontalOpeningDoorGearUseFeature() {
+ Serializable result = getGearUseFeature(horizontalOpeningDoorCaracteristic);
+ return result;
+ }
+
+ protected Serializable getGearUseFeature(Caracteristic caracteristic) {
+ CaracteristicMap gearUseFeatures = fishingOperation.getGearUseFeatures();
+ Serializable serializable = gearUseFeatures.get(caracteristic);
+ return serializable;
+ }
}
\ No newline at end of file
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -28,11 +28,8 @@
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.nuiton.util.csv.ValueFormatter;
-import org.nuiton.util.csv.ValueParserFormatter;
import java.io.Serializable;
import java.util.List;
@@ -57,30 +54,7 @@
newColumnForExport("Code_PMFM", ParameterExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
newColumnForExportByDecorator("Libelle_PMFm", ParameterExportRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
- newColumnForExport("Valeur", ParameterExportRow.PROPERTY_VALUE, new ValueFormatter<Serializable>() {
-
- ValueParserFormatter<Integer> integerDelegate = TuttiCsvUtil.INTEGER;
-
- ValueParserFormatter<Float> floatDelegate = TuttiCsvUtil.FLOAT;
-
- ValueParserFormatter<String> textDelegate = TuttiCsvUtil.STRING;
-
- @Override
- public String format(Serializable value) {
- if (value instanceof Float) {
- return floatDelegate.format((Float) value);
- }
- if (value instanceof Integer) {
- return integerDelegate.format((Integer) value);
- }
- if (value instanceof String) {
- return textDelegate.format((String) value);
- }
- // qualitive value
- CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) value;
- return qv.getName();
- }
- });
+ newColumnForExport("Valeur", ParameterExportRow.PROPERTY_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
}
public void prepareRows(List<ParameterExportRow> rows,
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -34,6 +34,7 @@
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.service.AbstractTuttiService;
import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.PersistenceService;
@@ -67,12 +68,21 @@
protected char csvSeparator;
+ private Caracteristic verticalOpeningCaracteristic;
+
+ private Caracteristic horizontalOpeningWingCaracteristic;
+
+ private Caracteristic horizontalOpeningDoorCaracteristic;
+
@Override
public void setServiceContext(TuttiServiceContext context) {
super.setServiceContext(context);
persistenceService = getService(PersistenceService.class);
decoratorService = getService(DecoratorService.class);
csvSeparator = context.getConfig().getCsvSeparator();
+ verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic();
+ horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingCaracteristic();
+ horizontalOpeningDoorCaracteristic = persistenceService.getHorizontalOpeningDoorCaracteristic();
}
public void exportCruise(String cruiseId, File exportFile) {
@@ -86,9 +96,10 @@
List<FishingOperation> operations =
persistenceService.getAllFishingOperation(cruiseId);
- File basedir = context.getConfig().newTempFile(
- "exportCruise-" + cruiseId);
+ File basedir = new File(context.getConfig().newTempFile(
+ "exportCruise"), "exportCruise-" + cruiseId);
+ TuttiIOUtil.forceMkdir(basedir, "Could not create directory");
File surveyFile = new File(basedir, "survey.csv");
exportSurvey(surveyFile, cruise);
@@ -98,8 +109,8 @@
File parameterFile = new File(basedir, "parameter.csv");
exportParameters(parameterFile, cruise, operations);
- File catchesFile = new File(basedir, "catch.csv");
- exportCatches(catchesFile, cruise, operations);
+// File catchesFile = new File(basedir, "catch.csv");
+// exportCatches(catchesFile, cruise, operations);
TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
}
@@ -143,7 +154,11 @@
writer = Files.newWriter(file, Charsets.UTF_8);
OperationExportModel model =
- new OperationExportModel(csvSeparator);
+ new OperationExportModel(
+ csvSeparator,
+ verticalOpeningCaracteristic,
+ horizontalOpeningWingCaracteristic,
+ horizontalOpeningDoorCaracteristic);
List<OperationExportRow> rows = Lists.newArrayList();
model.prepareRows(rows, cruise, operations);
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/AbstractServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/AbstractServiceTest.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/AbstractServiceTest.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -27,6 +27,7 @@
import fr.ifremer.tutti.persistence.RessourceClassLoader;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfigOption;
import fr.ifremer.tutti.service.config.TuttiServiceConfig;
+import fr.ifremer.tutti.service.config.TuttiServiceConfigOption;
import org.apache.commons.io.FileUtils;
import org.junit.After;
import org.junit.Before;
@@ -70,8 +71,12 @@
new ApplicationConfig("tutti-test.properties");
applicationConfig.loadDefaultOptions(
TuttiPersistenceConfigOption.values());
- applicationConfig.setDefaultOption("tutti.data.directory",
- new File(datadirectory, "data").getAbsolutePath());
+ applicationConfig.loadDefaultOptions(
+ TuttiServiceConfigOption.values());
+ applicationConfig.setDefaultOption(TuttiServiceConfigOption.BASEDIR.getKey(),
+ datadirectory.getAbsolutePath());
+// applicationConfig.setDefaultOption(TuttiServiceConfigOption.DATA_DIRECTORY.getKey(),
+// new File(datadirectory, "data").getAbsolutePath());
applicationConfig.parse();
RessourceClassLoader loader =
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -40,6 +40,7 @@
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.service.AbstractServiceTest;
+import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiServiceContext;
import fr.ifremer.tutti.service.config.TuttiServiceConfig;
import org.apache.commons.io.Charsets;
@@ -49,6 +50,7 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import java.io.File;
import java.util.Date;
@@ -66,6 +68,10 @@
protected TuttiExportService service;
+ protected Cruise cruise;
+
+ protected List<FishingOperation> operations;
+
@Override
protected TuttiServiceContext createServiceContext(RessourceClassLoader loader,
TuttiServiceConfig config) {
@@ -76,11 +82,44 @@
public void setUp() throws Exception {
super.setUp();
+ createCaracteristics();
+
+ cruise = createCruise();
+ operations = createOperations(cruise);
+
serviceContext.getConfig().setCsvSeparator(';');
- service = serviceContext.getService(TuttiExportService.class);
+
+ PersistenceService persistenceService = Mockito.mock(PersistenceService.class);
+ persistenceService.setServiceContext(serviceContext);
+
+ Mockito.when(persistenceService.getVerticalOpeningCaracteristic()).thenReturn(caracteristicVerticalOpening);
+ Mockito.when(persistenceService.getHorizontalOpeningDoorCaracteristic()).thenReturn(caracteristicHorizontalOpeningDoor);
+ Mockito.when(persistenceService.getHorizontalOpeningWingCaracteristic()).thenReturn(caracteristicHorizontalOpeningWing);
+ Mockito.when(persistenceService.getCruise(Mockito.<String>any())).thenReturn(cruise);
+ Mockito.when(persistenceService.getAllFishingOperation(Mockito.<String>any())).thenReturn(operations);
+
+ TuttiServiceContext serviceContextSpy = Mockito.spy(serviceContext);
+ Mockito.when(serviceContextSpy.getService(Mockito.eq(PersistenceService.class))).thenReturn(persistenceService);
+
+ service = Mockito.mock(TuttiExportService.class, Mockito.withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS));
+
+ service.setServiceContext(serviceContextSpy);
}
@Test
+ public void exportCruise() throws Exception {
+
+ File exportFile = new File(datadirectory, "exportCruise.zip");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+
+ service.exportCruise(cruise.getId(), exportFile);
+ Assert.assertTrue(exportFile.exists());
+ }
+
+ @Test
public void exportSurvey() throws Exception {
File exportFile = new File(datadirectory, "exportSurvey.csv");
@@ -89,8 +128,6 @@
Assert.assertFalse(exportFile.exists());
- Cruise cruise = createCruise();
-
service.exportSurvey(exportFile, cruise);
Assert.assertTrue(exportFile.exists());
@@ -109,9 +146,6 @@
Assert.assertFalse(exportFile.exists());
- Cruise cruise = createCruise();
- List<FishingOperation> operations = createOperations(cruise);
-
service.exportOperations(exportFile, cruise, operations);
Assert.assertTrue(exportFile.exists());
@@ -130,9 +164,6 @@
Assert.assertFalse(exportFile.exists());
- Cruise cruise = createCruise();
- List<FishingOperation> operations = createOperations(cruise);
-
service.exportParameters(exportFile, cruise, operations);
Assert.assertTrue(exportFile.exists());
@@ -212,12 +243,50 @@
vessel.setInternationalRegistrationCode("VesselInternationalRegistrationCode");
cruise.setVessel(vessel);
+
return cruise;
}
+ Caracteristic caracteristicVerticalOpening;
+
+ Caracteristic caracteristicHorizontalOpeningWing;
+
+ Caracteristic caracteristicHorizontalOpeningDoor;
+
+ private void createCaracteristics() {
+
+ caracteristicVerticalOpening = TuttiBeanFactory.newCaracteristic();
+ caracteristicVerticalOpening.setCaracteristicType(CaracteristicType.NUMBER);
+ caracteristicVerticalOpening.setId(10);
+ caracteristicVerticalOpening.setNumericType(true);
+ caracteristicVerticalOpening.setParameterName("CaracteristicVerticalOpeningParameterName");
+ caracteristicVerticalOpening.setMatrixName("CaracteristicVerticalOpeningMatrixName");
+ caracteristicVerticalOpening.setFractionName("CaracteristicVerticalOpeningFractionName");
+ caracteristicVerticalOpening.setMethodName("CaracteristicVerticalOpeningMethodName");
+
+ caracteristicHorizontalOpeningWing = TuttiBeanFactory.newCaracteristic();
+ caracteristicHorizontalOpeningWing.setCaracteristicType(CaracteristicType.NUMBER);
+ caracteristicHorizontalOpeningWing.setId(11);
+ caracteristicHorizontalOpeningWing.setNumericType(true);
+ caracteristicHorizontalOpeningWing.setParameterName("CaracteristicHorizontalOpeningWingParameterName");
+ caracteristicHorizontalOpeningWing.setMatrixName("CaracteristicHorizontalOpeningWingMatrixName");
+ caracteristicHorizontalOpeningWing.setFractionName("CaracteristicHorizontalOpeningWingFractionName");
+ caracteristicHorizontalOpeningWing.setMethodName("CaracteristicHorizontalOpeningWingMethodName");
+
+ caracteristicHorizontalOpeningDoor = TuttiBeanFactory.newCaracteristic();
+ caracteristicHorizontalOpeningDoor.setCaracteristicType(CaracteristicType.NUMBER);
+ caracteristicHorizontalOpeningDoor.setId(12);
+ caracteristicHorizontalOpeningDoor.setNumericType(true);
+ caracteristicHorizontalOpeningDoor.setParameterName("CaracteristicHorizontalOpeningDoorParameterName");
+ caracteristicHorizontalOpeningDoor.setMatrixName("CaracteristicHorizontalOpeningDoorMatrixName");
+ caracteristicHorizontalOpeningDoor.setFractionName("CaracteristicHorizontalOpeningDoorFractionName");
+ caracteristicHorizontalOpeningDoor.setMethodName("CaracteristicHorizontalOpeningDoorMethodName");
+ }
+
private List<FishingOperation> createOperations(Cruise cruise) {
List<FishingOperation> result = Lists.newArrayList();
+
Caracteristic caracteristicInteger = TuttiBeanFactory.newCaracteristic();
caracteristicInteger.setCaracteristicType(CaracteristicType.NUMBER);
caracteristicInteger.setId(0);
@@ -302,6 +371,9 @@
gearUseFeatures.put(caracteristicText, "Text");
gearUseFeatures.put(caracteristicQualitative, caracteristicQualitative.getQualitativeValue(0));
gearUseFeatures.put(caracteristicQualitative2, caracteristicQualitative.getQualitativeValue(1));
+ gearUseFeatures.put(caracteristicVerticalOpening, 5);
+ gearUseFeatures.put(caracteristicHorizontalOpeningDoor, -2);
+ gearUseFeatures.put(caracteristicHorizontalOpeningWing, -9);
CaracteristicMap vesselUseFeatures = new CaracteristicMap();
gearUseFeatures.put(caracteristicInteger, 20);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -50,7 +50,6 @@
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.time.DateUtils;
-import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXDatePicker;
@@ -518,13 +517,11 @@
}
public String getDuration(Date startDate, Date endDate) {
- String duration = "";
- if (startDate != null && endDate != null && !startDate.after(endDate)) {
- duration = DurationFormatUtils.formatPeriod(
- startDate.getTime(),
- endDate.getTime(),
- _("tutti.editFishingOperation.duration.format"));
- }
+ String duration = TuttiEntities.getDuration(
+ startDate,
+ endDate,
+ _("tutti.editFishingOperation.duration.format")
+ );
return duration;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-06 12:37:18 UTC (rev 745)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-07 12:56:47 UTC (rev 746)
@@ -26,6 +26,7 @@
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.TuttiTechnicalException;
+import jaxx.runtime.FileChooserUtil;
import jaxx.runtime.JAXXBinding;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.SwingUtil;
@@ -35,9 +36,7 @@
import org.jdesktop.beans.AbstractBean;
import org.jdesktop.swingx.decorator.HighlightPredicate;
import org.jdesktop.swingx.decorator.Highlighter;
-import org.nuiton.util.FileUtil;
-import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import java.awt.Color;
@@ -85,13 +84,13 @@
String buttonLabel,
String... filters) {
- File file = FileUtil.getFile(title, buttonLabel, parent, filters);
+ File file = FileChooserUtil.getFile(title, buttonLabel, parent, filters);
if (log.isDebugEnabled()) {
log.debug(title + " : " + file);
}
if (file != null) {
File newDir = file.isDirectory() ? file : file.getParentFile();
- FileUtil.setCurrentDirectory(newDir);
+ FileChooserUtil.setCurrentDirectory(newDir);
}
return file;
}
@@ -113,13 +112,13 @@
String buttonLabel,
String... filters) {
- File file = saveFile(filename, title, buttonLabel, parent, filters);
+ File file = FileChooserUtil.saveFile(filename, title, buttonLabel, parent, filters);
if (log.isDebugEnabled()) {
log.debug(title + " : " + file);
}
if (file != null) {
Preconditions.checkState(!file.isDirectory());
- FileUtil.setCurrentDirectory(file.getParentFile());
+ FileChooserUtil.setCurrentDirectory(file.getParentFile());
}
return file;
}
@@ -137,7 +136,7 @@
String title,
String buttonLabel) {
- String file = FileUtil.getDirectory(parent, title, buttonLabel);
+ String file = FileChooserUtil.getDirectory(parent, title, buttonLabel);
if (log.isDebugEnabled()) {
log.debug(title + " : " + file);
}
@@ -146,7 +145,7 @@
if (!newDir.isDirectory()) {
newDir = newDir.getParentFile();
}
- FileUtil.setCurrentDirectory(newDir);
+ FileChooserUtil.setCurrentDirectory(newDir);
}
return file == null ? null : new File(file);
}
@@ -334,87 +333,4 @@
}
}
- //TODO Move this to jaxx (but not to nuiton-utils)
-
- /**
- * Retourne le nom du fichier entre dans la boite de dialogue.
- * Si le bouton annuler est utilisé, ou qu'il y a une erreur retourne null.
- *
- * @param title le titre de la boite de dialogue
- * @param approvalText le label du boutton d'acceptation
- * @param parent le component parent du dialog
- * @param patternOrDescriptionFilters les filtres a utiliser, les chaines doivent etre données
- * par deux, le pattern du filtre + la description du filtre
- * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé
- */
- public static File saveFile(String filename,
- String title,
- String approvalText,
- Component parent,
- String... patternOrDescriptionFilters) {
-
- if (patternOrDescriptionFilters.length % 2 != 0) {
- throw new IllegalArgumentException(
- "Arguments must be (pattern, description) couple");
- }
- javax.swing.filechooser.FileFilter[] filters =
- new javax.swing.filechooser.FileFilter[
- patternOrDescriptionFilters.length / 2];
- for (int i = 0; i < filters.length; i++) {
- String pattern = patternOrDescriptionFilters[i * 2];
- String description = patternOrDescriptionFilters[i * 2 + 1];
- filters[i] = new FileUtil.PatternChooserFilter(pattern, description);
- }
- File result;
- result = saveFile(filename, title, approvalText, parent, filters);
- return result;
- }
-
- //TODO Move this to jaxx (but not to nuiton-utils)
-
- /**
- * Retourne le nom du fichier entre dans la boite de dialogue.
- * Si le bouton annuler est utilisé, ou qu'il y a une erreur retourne null.
- *
- * @param title le titre de la boite de dialogue
- * @param approvalText le label du boutton d'acceptation
- * @param parent le component parent du dialog
- * @param filters les filtres a ajouter
- * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé
- */
- public static File saveFile(String filename,
- String title,
- String approvalText,
- Component parent,
- javax.swing.filechooser.FileFilter... filters) {
- File selectedFile = new File(FileUtil.getCurrentDirectory(), filename);
- JFileChooser chooser = new JFileChooser(selectedFile);
-
- chooser.setDialogType(JFileChooser.SAVE_DIALOG);
- chooser.setSelectedFile(selectedFile);
- if (filters.length > 0) {
- if (filters.length == 1) {
- chooser.setFileFilter(filters[0]);
- } else {
- for (javax.swing.filechooser.FileFilter filter : filters) {
- chooser.addChoosableFileFilter(filter);
- }
- }
- }
- chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
- chooser.setDialogTitle(title);
-
- File result = null;
-
- int returnVal = chooser.showDialog(parent, approvalText);
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- result = chooser.getSelectedFile();
- if (result != null) {
- FileUtil.setCurrentDirectory(result);
- result = result.getAbsoluteFile();
- }
- }
- return result;
- }
-
}
1
0
r745 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities tutti-service/src/main/java/fr/ifremer/tutti/service/export tutti-service/src/test/java/fr/ifremer/tutti/service tutti-service/src/test/java/fr/ifremer/tutti/service/export
by tchemit@users.forge.codelutin.com 06 Apr '13
by tchemit@users.forge.codelutin.com 06 Apr '13
06 Apr '13
Author: tchemit
Date: 2013-04-06 14:37:18 +0200 (Sat, 06 Apr 2013)
New Revision: 745
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/745
Log:
move SampleCategory to entities module (add tests and fix some export models)
Added:
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java 2013-04-06 11:30:17 UTC (rev 744)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java 2013-04-06 12:37:18 UTC (rev 745)
@@ -27,7 +27,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import java.io.Serializable;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
/**
* A map (key are {@link Caracteristic}, values are values of caracteristics).
@@ -35,6 +35,6 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-public class CaracteristicMap extends HashMap<Caracteristic, Serializable> {
+public class CaracteristicMap extends LinkedHashMap<Caracteristic, Serializable> {
private static final long serialVersionUID = 1L;
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-06 11:30:17 UTC (rev 744)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-06 12:37:18 UTC (rev 745)
@@ -49,7 +49,7 @@
newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-06 11:30:17 UTC (rev 744)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-06 12:37:18 UTC (rev 745)
@@ -49,26 +49,26 @@
newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
newColumnForExport("Engin", Cruise.PROPERTY_GEAR, Gear.PROPERTY_NAME);
newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
newColumnForExport("DateDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
newColumnForExport("HeureDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.TIME);
- newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE);
- newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE);
+ newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, TuttiCsvUtil.FLOAT);
+ newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, TuttiCsvUtil.FLOAT);
newColumnForExport("DateFin_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
newColumnForExport("HeureFin_OP", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.TIME);
- newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE);
- newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE);
+ newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, TuttiCsvUtil.FLOAT);
+ newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, TuttiCsvUtil.FLOAT);
//FIXME newColumnForExport("Duree", FishingOperation.PROPERTY_);
newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
newColumnForExport("Sous-Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiLocation.PROPERTY_NAME, "NA");
//FIXME newColumnForExport("Rectangle_CIEM",);
- newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID);
- newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE);
- newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE);
+ newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID, TuttiCsvUtil.BOOLEAN);
+ newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN);
+ newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.FLOAT);
//FIXME newColumnForExport("Ouv_Verticale",);
//FIXME newColumnForExport("Ouv_Horizontale_Ailes",);
//FIXME newColumnForExport("Ouv_Horizontale_Panneaux",);
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-04-06 11:30:17 UTC (rev 744)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-04-06 12:37:18 UTC (rev 745)
@@ -28,8 +28,11 @@
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.nuiton.util.csv.ValueFormatter;
+import org.nuiton.util.csv.ValueParserFormatter;
import java.io.Serializable;
import java.util.List;
@@ -43,7 +46,6 @@
*/
public class ParameterExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<ParameterExportRow> {
-
public ParameterExportModel(char separator, DecoratorService decoratorService) {
super(separator);
@@ -51,11 +53,34 @@
newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
- newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
newColumnForExport("Code_PMFM", ParameterExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
newColumnForExportByDecorator("Libelle_PMFm", ParameterExportRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
- newColumnForExport("Valeur", ParameterExportRow.PROPERTY_VALUE);
+ newColumnForExport("Valeur", ParameterExportRow.PROPERTY_VALUE, new ValueFormatter<Serializable>() {
+
+ ValueParserFormatter<Integer> integerDelegate = TuttiCsvUtil.INTEGER;
+
+ ValueParserFormatter<Float> floatDelegate = TuttiCsvUtil.FLOAT;
+
+ ValueParserFormatter<String> textDelegate = TuttiCsvUtil.STRING;
+
+ @Override
+ public String format(Serializable value) {
+ if (value instanceof Float) {
+ return floatDelegate.format((Float) value);
+ }
+ if (value instanceof Integer) {
+ return integerDelegate.format((Integer) value);
+ }
+ if (value instanceof String) {
+ return textDelegate.format((String) value);
+ }
+ // qualitive value
+ CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) value;
+ return qv.getName();
+ }
+ });
}
public void prepareRows(List<ParameterExportRow> rows,
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-06 11:30:17 UTC (rev 744)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-06 12:37:18 UTC (rev 745)
@@ -62,7 +62,7 @@
return cruise.getSurveyPart();
}
- public TuttiLocation getProgramZone() {
+ public TuttiLocation getZone() {
return cruise.getProgram().getZone();
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-06 11:30:17 UTC (rev 744)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-06 12:37:18 UTC (rev 745)
@@ -104,7 +104,7 @@
TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
}
- protected void exportSurvey(File file, Cruise cruise) {
+ public void exportSurvey(File file, Cruise cruise) {
if (log.isInfoEnabled()) {
log.info("Will export survey to file: " + file);
@@ -130,9 +130,9 @@
}
}
- protected void exportOperations(File file,
- Cruise cruise,
- List<FishingOperation> operations) {
+ public void exportOperations(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
if (log.isInfoEnabled()) {
log.info("Will export operations to file: " + file);
@@ -159,9 +159,9 @@
}
}
- protected void exportParameters(File file,
- Cruise cruise,
- List<FishingOperation> operations) {
+ public void exportParameters(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
if (log.isInfoEnabled()) {
log.info("Will export parameters to file: " + file);
@@ -193,9 +193,9 @@
}
}
- protected void exportCatches(File file,
- Cruise cruise,
- List<FishingOperation> operations) {
+ public void exportCatches(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
if (log.isInfoEnabled()) {
log.info("Will export catches to file: " + file);
Added: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-06 12:37:18 UTC (rev 745)
@@ -0,0 +1,350 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.persistence.RessourceClassLoader;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.AbstractServiceTest;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.config.TuttiServiceConfig;
+import org.apache.commons.io.Charsets;
+import org.apache.commons.lang3.time.DateUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class TuttiExportServiceTest extends AbstractServiceTest {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(TuttiExportServiceTest.class);
+
+ protected TuttiExportService service;
+
+ @Override
+ protected TuttiServiceContext createServiceContext(RessourceClassLoader loader,
+ TuttiServiceConfig config) {
+ return new TuttiServiceContext(loader, config);
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+
+ serviceContext.getConfig().setCsvSeparator(';');
+ service = serviceContext.getService(TuttiExportService.class);
+ }
+
+ @Test
+ public void exportSurvey() throws Exception {
+
+ File exportFile = new File(datadirectory, "exportSurvey.csv");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+
+ Cruise cruise = createCruise();
+
+ service.exportSurvey(exportFile, cruise);
+ Assert.assertTrue(exportFile.exists());
+
+ if (log.isInfoEnabled()) {
+ log.info("Survey export:\n" +
+ Files.toString(exportFile, Charsets.UTF_8));
+ }
+ }
+
+ @Test
+ public void exportOperations() throws Exception {
+
+ File exportFile = new File(datadirectory, "exportOperations.csv");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+
+ Cruise cruise = createCruise();
+ List<FishingOperation> operations = createOperations(cruise);
+
+ service.exportOperations(exportFile, cruise, operations);
+ Assert.assertTrue(exportFile.exists());
+
+ if (log.isInfoEnabled()) {
+ log.info("Operation export:\n" +
+ Files.toString(exportFile, Charsets.UTF_8));
+ }
+ }
+
+ @Test
+ public void exportParameters() throws Exception {
+
+ File exportFile = new File(datadirectory, "exportParameters.csv");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+
+ Cruise cruise = createCruise();
+ List<FishingOperation> operations = createOperations(cruise);
+
+ service.exportParameters(exportFile, cruise, operations);
+ Assert.assertTrue(exportFile.exists());
+
+ if (log.isInfoEnabled()) {
+ log.info("Parameter export:\n" +
+ Files.toString(exportFile, Charsets.UTF_8));
+ }
+ }
+
+ //TODO
+ public void exportCatches() throws Exception {
+
+ File exportFile = new File(datadirectory, "exportCatches.csv");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+
+ if (log.isInfoEnabled()) {
+ log.info("Catch export:\n" +
+ Files.toString(exportFile, Charsets.UTF_8));
+ }
+ }
+
+ private Cruise createCruise() {
+ TuttiLocation programZone = TuttiBeanFactory.newTuttiLocation();
+ programZone.setId(0);
+ programZone.setName("ProgramZoneName");
+ programZone.setLabel("ProgramZoneLabel");
+
+ TuttiLocation departureLocation = TuttiBeanFactory.newTuttiLocation();
+ departureLocation.setId(1);
+ departureLocation.setName("DepartureLocationName");
+ departureLocation.setLabel("DepartureLocationLabel");
+
+ TuttiLocation returnLocation = TuttiBeanFactory.newTuttiLocation();
+ returnLocation.setId(2);
+ returnLocation.setName("ReturnLocationName");
+ returnLocation.setLabel("ReturnLocationLabel");
+
+ Program program = TuttiBeanFactory.newProgram();
+ program.setId(1);
+ program.setName("ProgramName");
+ program.setZone(programZone);
+
+ Cruise cruise = TuttiBeanFactory.newCruise();
+ cruise.setId(2);
+ cruise.setName("CruiseName");
+ cruise.setComment("CruiseComment");
+ cruise.setMultirigNumber(1);
+ cruise.setProgram(program);
+ cruise.setSurveyPart("CruiseSurveyPart");
+
+ cruise.setBeginDate(getDate(2013, 4, 5));
+ cruise.setEndDate(getDate(2013, 5, 5));
+ cruise.setDepartureLocation(departureLocation);
+ cruise.setReturnLocation(returnLocation);
+
+ List<Gear> gears = Lists.newArrayList();
+ Gear gear = TuttiBeanFactory.newGear();
+ gear.setId(4);
+ gear.setLabel("GearLabel");
+ gear.setName("GearName");
+ gear.setScientificGear(false);
+
+ gears.add(gear);
+ cruise.setGear(gears);
+ List<Person> headOfMission = Lists.newArrayList();
+ cruise.setHeadOfMission(headOfMission);
+ List<Person> headOfSortRoom = Lists.newArrayList();
+ cruise.setHeadOfSortRoom(headOfSortRoom);
+
+ Vessel vessel = TuttiBeanFactory.newVessel();
+ vessel.setId(4);
+ vessel.setName("VesselName");
+ vessel.setRegistrationCode("VesselRegistrationCode");
+ vessel.setInternationalRegistrationCode("VesselInternationalRegistrationCode");
+
+ cruise.setVessel(vessel);
+ return cruise;
+ }
+
+ private List<FishingOperation> createOperations(Cruise cruise) {
+ List<FishingOperation> result = Lists.newArrayList();
+
+ Caracteristic caracteristicInteger = TuttiBeanFactory.newCaracteristic();
+ caracteristicInteger.setCaracteristicType(CaracteristicType.NUMBER);
+ caracteristicInteger.setId(0);
+ caracteristicInteger.setNumericType(true);
+ caracteristicInteger.setParameterName("CaracteristicIntegerParameterName");
+ caracteristicInteger.setMatrixName("CaracteristicIntegerMatrixName");
+ caracteristicInteger.setFractionName("CaracteristicIntegerFractionName");
+ caracteristicInteger.setMethodName("CaracteristicIntegerMethodName");
+
+ Caracteristic caracteristicFloat = TuttiBeanFactory.newCaracteristic();
+ caracteristicFloat.setCaracteristicType(CaracteristicType.NUMBER);
+ caracteristicFloat.setId(0);
+ caracteristicFloat.setNumericType(true);
+ caracteristicFloat.setParameterName("CaracteristicFloatParameterName");
+ caracteristicFloat.setMatrixName("CaracteristicFloatMatrixName");
+ caracteristicFloat.setFractionName("CaracteristicFloatFractionName");
+ caracteristicFloat.setMethodName("CaracteristicFloatMethodName");
+
+ Caracteristic caracteristicText = TuttiBeanFactory.newCaracteristic();
+ caracteristicText.setCaracteristicType(CaracteristicType.TEXT);
+ caracteristicText.setId(1);
+ caracteristicText.setNumericType(false);
+ caracteristicText.setParameterName("CaracteristicTextParameterName");
+ caracteristicText.setMatrixName("CaracteristicTextMatrixName");
+ caracteristicText.setFractionName("CaracteristicTextFractionName");
+ caracteristicText.setMethodName("CaracteristicTextMethodName");
+
+ Caracteristic caracteristicQualitative = TuttiBeanFactory.newCaracteristic();
+ caracteristicQualitative.setCaracteristicType(CaracteristicType.QUALITATIVE);
+ caracteristicQualitative.setId(2);
+ caracteristicQualitative.setNumericType(false);
+ caracteristicQualitative.setParameterName("CaracteristicQualitativeParameterName1");
+ caracteristicQualitative.setMatrixName("CaracteristicQualitativeMatrixName1");
+ caracteristicQualitative.setFractionName("CaracteristicQualitativeFractionName1");
+ caracteristicQualitative.setMethodName("CaracteristicQualitativeMethodName1");
+ caracteristicQualitative.setQualitativeValue(Lists.<CaracteristicQualitativeValue>newArrayList());
+
+ Caracteristic caracteristicQualitative2 = TuttiBeanFactory.newCaracteristic();
+ caracteristicQualitative2.setCaracteristicType(CaracteristicType.QUALITATIVE);
+ caracteristicQualitative2.setId(3);
+ caracteristicQualitative2.setNumericType(false);
+ caracteristicQualitative2.setParameterName("CaracteristicQualitativeParameterName2");
+ caracteristicQualitative2.setMatrixName("CaracteristicQualitativeMatrixName2");
+ caracteristicQualitative2.setFractionName("CaracteristicQualitativeFractionName2");
+ caracteristicQualitative2.setMethodName("CaracteristicQualitativeMethodName2");
+ caracteristicQualitative2.setQualitativeValue(Lists.<CaracteristicQualitativeValue>newArrayList());
+
+ for (int i = 0; i < 3; i++) {
+ CaracteristicQualitativeValue caracteristicQualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue();
+ caracteristicQualitativeValue.setId(i);
+ caracteristicQualitativeValue.setName("CaracteristicQualitativeValueName" + i);
+ caracteristicQualitativeValue.setDescription("CaracteristicQualitativeValueDescription" + i);
+ caracteristicQualitative.addQualitativeValue(caracteristicQualitativeValue);
+
+ caracteristicQualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue();
+ caracteristicQualitativeValue.setId(5 + i);
+ caracteristicQualitativeValue.setName("CaracteristicQualitativeValueName2_" + i);
+ caracteristicQualitativeValue.setDescription("CaracteristicQualitativeValueDescription2_" + i);
+ caracteristicQualitative2.addQualitativeValue(caracteristicQualitativeValue);
+ }
+
+ for (int i = 0; i < 3; i++) {
+
+ TuttiLocation location = TuttiBeanFactory.newTuttiLocation();
+ location.setId(i);
+ location.setName("LocationName" + i);
+ location.setLabel("LocationLabel" + i);
+
+ TuttiLocation strata = TuttiBeanFactory.newTuttiLocation();
+ strata.setId(3 * i);
+ strata.setName("StrataName" + i);
+ strata.setLabel("StrataLabel" + i);
+
+ TuttiLocation subStrata = TuttiBeanFactory.newTuttiLocation();
+ subStrata.setId(5 * i);
+ subStrata.setName("SubStrataName" + i);
+ subStrata.setLabel("SubStrataLabel" + i);
+
+ CaracteristicMap gearUseFeatures = new CaracteristicMap();
+ gearUseFeatures.put(caracteristicInteger, 10);
+ gearUseFeatures.put(caracteristicFloat, 5.2f);
+ gearUseFeatures.put(caracteristicText, "Text");
+ gearUseFeatures.put(caracteristicQualitative, caracteristicQualitative.getQualitativeValue(0));
+ gearUseFeatures.put(caracteristicQualitative2, caracteristicQualitative.getQualitativeValue(1));
+
+ CaracteristicMap vesselUseFeatures = new CaracteristicMap();
+ gearUseFeatures.put(caracteristicInteger, 20);
+ gearUseFeatures.put(caracteristicFloat, 10.4f);
+ gearUseFeatures.put(caracteristicText, "Text2");
+ gearUseFeatures.put(caracteristicQualitative, caracteristicQualitative.getQualitativeValue(2));
+ gearUseFeatures.put(caracteristicQualitative2, caracteristicQualitative.getQualitativeValue(1));
+
+ FishingOperation operation = TuttiBeanFactory.newFishingOperation();
+ operation.setId(i);
+ operation.setCruise(cruise);
+ operation.setComment("OperationComment" + i);
+ operation.setFishingOperationNumber(100 + i);
+ operation.setFishingOperationRectiligne(true);
+ operation.setFishingOperationValid(i % 2 == 0 ? null : false);
+ operation.setGear(cruise.getGear().get(0));
+ operation.setGearShootingEndDate(getDate(2013, 4, 6));
+ operation.setGearShootingEndLatitude(45.4f);
+ operation.setGearShootingEndLongitude(23.7f);
+ operation.setGearShootingStartDate(getDate(2013, 4, 6));
+ operation.setGearShootingStartLatitude(45.3f);
+ operation.setGearShootingStartLongitude(23.6f);
+
+ operation.setGearUseFeatures(gearUseFeatures);
+ operation.setLocation(i % 2 == 0 ? null : location);
+ operation.setMultirigAggregation("1,2");
+ operation.setRecorderPerson(null);
+ operation.setStationNumber("A" + i);
+ operation.setStrata(i % 2 == 0 ? null : strata);
+ operation.setSubStrata(i % 2 == 0 ? null : subStrata);
+ operation.setTrawlDistance(10.4f + i);
+ operation.setVessel(cruise.getVessel());
+ operation.setVesselUseFeatures(vesselUseFeatures);
+
+ result.add(operation);
+ }
+ return result;
+ }
+
+ public static Date getDate(int year, int month, int day) {
+ Date fromDate = DateUtils.setYears(new Date(), year);
+ fromDate = DateUtils.setMonths(fromDate, month);
+ fromDate = DateUtils.setDays(fromDate, day);
+ return fromDate;
+ }
+}
Property changes on: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
See <http://ci.nuiton.org/jenkins/job/tutti/608/changes>
Changes:
[Tony Chemit] refs #1875: [IMP/EXP] - Export des données de campagne : format générique (debut)
------------------------------------------
[...truncated 151 lines...]
main:
[mkdir] Created dir: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/s…>
[INFO] Executed tasks
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-testResources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ tutti-persistence ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 7 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-testResources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-testCompile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ tutti-persistence ---
[INFO] Compiling 34 source files to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…>
mojoSucceeded org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-testCompile)
mojoStarted org.apache.maven.plugins:maven-surefire-plugin:2.14(default-test)
[INFO]
[INFO] --- maven-surefire-plugin:2.14:test (default-test) @ tutti-persistence ---
[INFO] Surefire report directory: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/s…>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocolsTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.353 sec
Running fr.ifremer.tutti.persistence.service.CruisePersistenceServiceReadTest
2013-04-05 16:46:56,302 0 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CruisePersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.002 sec
Running fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceReadTest
2013-04-05 16:46:56,312 10 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceImplTest
2013-04-05 16:46:56,331 29 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceImplTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceImplUpTodateTest
2013-04-05 16:46:56,337 35 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceImplUpTodateTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceCopyTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeHelperTest
2013-04-05 16:46:56,347 45 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeHelperTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.SpeciesBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceWriteTest
2013-04-05 16:46:56,358 56 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.005 sec
Running fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceWriteTest
2013-04-05 16:46:56,362 60 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceWriteTest
2013-04-05 16:46:56,367 65 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceReadTest
2013-04-05 16:46:56,373 71 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.AttachmentPersistenceServiceWriteTest
2013-04-05 16:46:56,380 78 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.AttachmentPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceWriteTest
2013-04-05 16:46:56,388 86 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.SpeciesBatchPersistenceServiceWriteTest
2013-04-05 16:46:56,391 89 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.SpeciesBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.CruisePersistenceServiceWriteTest
2013-04-05 16:46:56,398 96 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CruisePersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.TuttiEnumerationFileTest
2013-04-05 16:46:56,400 98 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.TuttiEnumerationFileTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.PlanktonBatchPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.PlanktonBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest
2013-04-05 16:46:56,435 133 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/dbEmpty, test [class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest
2013-04-05 16:46:56,447 145 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest
2013-04-05 16:46:56,453 151 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest
2013-04-05 16:46:56,455 153 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Results :
Tests run: 30, Failures: 0, Errors: 0, Skipped: 28
mojoSucceeded org.apache.maven.plugins:maven-surefire-plugin:2.14(default-test)
[JENKINS] Recording test results
mojoStarted org.apache.maven.plugins:maven-jar-plugin:2.4(default-jar)
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-persistence ---
[INFO] Building jar: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…>
mojoSucceeded org.apache.maven.plugins:maven-jar-plugin:2.4(default-jar)
mojoStarted org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
[INFO]
[INFO] --- maven-site-plugin:3.2:attach-descriptor (attach-descriptor) @ tutti-persistence ---
mojoSucceeded org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
mojoStarted org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ tutti-persistence ---
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-persistence/1.3-SNAPSHOT/tutti-persistence-1.3-SNAPSHOT.jar
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-persistence/1.3-SNAPSHOT/tutti-persistence-1.3-SNAPSHOT.pom
mojoSucceeded org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
projectSucceeded fr.ifremer.tutti:tutti-persistence:1.3-SNAPSHOT
projectStarted fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Service 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-service ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target>
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-service ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-service ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserValidation (scan-sources) @ tutti-service ---
[INFO] Load rules file validation.rules
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO] Copying tutti-service.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/gener…>
[INFO] Copying tutti-service.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/gener…>
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-service ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)
forkedProjectSucceeded fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-service ---
[WARNING] bundle fr_FR contains 2/99 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 103/103 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 14 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-service ---
[INFO] Compiling 38 source files to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/class…>
[INFO] -------------------------------------------------------------
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
[INFO] 1 error
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
sessionEnded
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Tutti ............................................. SUCCESS [6.860s]
[INFO] Tutti :: Persistence .............................. SUCCESS [19.695s]
[INFO] Tutti :: Service .................................. FAILURE [1.812s]
[INFO] Tutti :: UI ....................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.053s
[INFO] Finished at: Fri Apr 05 16:47:01 CEST 2013
[INFO] Final Memory: 36M/139M
[INFO] ------------------------------------------------------------------------
Projects to build: [MavenProject: fr.ifremer:tutti:1.3-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-persistence:1.3-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-ui-swing:1.3-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml]>
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-04-05_16-46-26/archive/fr.ifremer.tutti/tutti-service/1.3-SNAPSHOT/tutti-service-1.3-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-04-05_16-46-26/archive/fr.ifremer.tutti/tutti-ui-swing/1.3-SNAPSHOT/tutti-ui-swing-1.3-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-05_16-46-26/archive/fr.ifremer/tutti/1.3-SNAPSHOT/tutti-1.3-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/target/tutti-1.3-SNAPSHOT-…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-05_16-46-26/archive/fr.ifremer/tutti/1.3-SNAPSHOT/tutti-1.3-SNAPSHOT-site_fr.xml
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-05_16-46-26/archive/fr.ifremer.tutti/tutti-persistence/1.3-SNAPSHOT/tutti-persistence-1.3-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-05_16-46-26/archive/fr.ifremer.tutti/tutti-persistence/1.3-SNAPSHOT/tutti-persistence-1.3-SNAPSHOT.jar
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-service: Compilation failure
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
cause : Compilation failure
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
Stack trace :
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-service: Compilation failure
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:100)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:66)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:729)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 27 more
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com chemit(a)codelutin.com
channel stopped
1
2
06 Apr '13
See <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/608/c…>
Changes:
[Tony Chemit] refs #1875: [IMP/EXP] - Export des données de campagne : format générique (debut)
------------------------------------------
projectStarted fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Service 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-service ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/ta…>
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-service ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-service ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserValidation (scan-sources) @ tutti-service ---
[INFO] Load rules file validation.rules
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO] Copying tutti-service.properties to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/ta…>
[INFO] Copying tutti-service.properties to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/ta…>
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-service ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)
forkedProjectSucceeded fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-service ---
[WARNING] bundle fr_FR contains 2/99 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 103/103 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 14 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-service ---
[INFO] Compiling 38 source files to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/ta…>
[INFO] -------------------------------------------------------------
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/sr…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
[INFO] 1 error
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
1
2
06 Apr '13
Author: tchemit
Date: 2013-04-06 13:30:17 +0200 (Sat, 06 Apr 2013)
New Revision: 744
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/744
Log:
move SampleCategory to entities module (we will create a flat SpeciesBatch for validation / export /edit purposes)
Added:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
Copied: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java (from rev 742, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java)
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -0,0 +1,146 @@
+package fr.ifremer.tutti.persistence.entities.data;
+
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+
+import java.io.Serializable;
+
+/**
+ * Represents a sample category value in the species / benthos batch.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class SampleCategory<C extends Serializable> implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Sample category type.
+ *
+ * @since 0.3
+ */
+ protected SampleCategoryEnum categoryType;
+
+ /**
+ * Sample category value.
+ *
+ * @since 0.3
+ */
+ protected C categoryValue;
+
+ /**
+ * Sample category weight.
+ *
+ * @since 0.3
+ */
+ protected Float categoryWeight;
+
+ /**
+ * Sample computed weight.
+ *
+ * @since 1.0
+ */
+ protected Float computedWeight;
+
+ /**
+ * Is this sample a subsample ?
+ * Available only if the category is the finest category of the row
+ *
+ * @since 1.0
+ */
+ protected boolean subSample;
+
+ /**
+ * Has the row only one frequency ?
+ * Available only if the category is the finest category of the row
+ *
+ * @since 1.0
+ */
+ protected boolean onlyOneFrequency;
+
+ public static <C extends Serializable> SampleCategory<C> newSample(SampleCategoryEnum categoryType) {
+ SampleCategory<C> result = new SampleCategory<C>();
+ result.setCategoryType(categoryType);
+ return result;
+ }
+
+ protected SampleCategory() {
+ }
+
+ public SampleCategoryEnum getCategoryType() {
+ return categoryType;
+ }
+
+ public void setCategoryType(SampleCategoryEnum categoryType) {
+ this.categoryType = categoryType;
+ }
+
+ public C getCategoryValue() {
+ return categoryValue;
+ }
+
+ public void setCategoryValue(C categoryValue) {
+ this.categoryValue = categoryValue;
+ }
+
+ public Float getCategoryWeight() {
+ return categoryWeight;
+ }
+
+ public void setCategoryWeight(Float categoryWeight) {
+ this.categoryWeight = categoryWeight;
+ }
+
+ public Float getComputedWeight() {
+ return computedWeight;
+ }
+
+ public void setComputedWeight(Float computedWeight) {
+ this.computedWeight = computedWeight;
+ }
+
+ public boolean isSubSample() {
+ return subSample;
+ }
+
+ public void setSubSample(boolean subSample) {
+ this.subSample = subSample;
+ }
+
+ public boolean hasOnlyOneFrequency() {
+ return onlyOneFrequency;
+ }
+
+ public void setOnlyOneFrequency(boolean onlyOneFrequency) {
+ this.onlyOneFrequency = onlyOneFrequency;
+ }
+
+ public boolean isValid() {
+ return categoryValue != null;
+ }
+
+ public boolean isEmpty() {
+ return categoryValue == null
+ && categoryWeight == null
+ && computedWeight == null;
+ }
+
+ public boolean isEmptyOrValid() {
+ return isEmpty() || isValid();
+ }
+
+ public Float getNotNullWeight() {
+ Float result = categoryWeight;
+ if (result == null) {
+ result = computedWeight;
+ }
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return new ReflectionToStringBuilder(this).
+ appendSuper(super.toString()).
+ toString();
+ }
+}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -1,171 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.operation.catches;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-
-import java.io.Serializable;
-
-/**
- * Represents a sample category value in the species batch table.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class SampleCategory<C extends Serializable> implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Sample category type.
- *
- * @since 0.3
- */
- protected SampleCategoryEnum categoryType;
-
- /**
- * Sample category value.
- *
- * @since 0.3
- */
- protected C categoryValue;
-
- /**
- * Sample category weight.
- *
- * @since 0.3
- */
- protected Float categoryWeight;
-
- /**
- * Sample computed weight.
- *
- * @since 1.0
- */
- protected Float computedWeight;
-
- /**
- * Is this sample a subsample ?
- * Available only if the category is the finest category of the row
- *
- * @since 1.0
- */
- protected boolean subSample;
-
- /**
- * Has the row only one frequency ?
- * Available only if the category is the finest category of the row
- *
- * @since 1.0
- */
- protected boolean onlyOneFrequency;
-
- public static <C extends Serializable> SampleCategory<C> newSample(SampleCategoryEnum categoryType) {
- SampleCategory<C> result = new SampleCategory<C>();
- result.setCategoryType(categoryType);
- return result;
- }
-
- protected SampleCategory() {
- }
-
- public SampleCategoryEnum getCategoryType() {
- return categoryType;
- }
-
- public void setCategoryType(SampleCategoryEnum categoryType) {
- this.categoryType = categoryType;
- }
-
- public C getCategoryValue() {
- return categoryValue;
- }
-
- public void setCategoryValue(C categoryValue) {
- this.categoryValue = categoryValue;
- }
-
- public Float getCategoryWeight() {
- return categoryWeight;
- }
-
- public void setCategoryWeight(Float categoryWeight) {
- this.categoryWeight = categoryWeight;
- }
-
- public Float getComputedWeight() {
- return computedWeight;
- }
-
- public void setComputedWeight(Float computedWeight) {
- this.computedWeight = computedWeight;
- }
-
- public boolean isSubSample() {
- return subSample;
- }
-
- public void setSubSample(boolean subSample) {
- this.subSample = subSample;
- }
-
- public boolean hasOnlyOneFrequency() {
- return onlyOneFrequency;
- }
-
- public void setOnlyOneFrequency(boolean onlyOneFrequency) {
- this.onlyOneFrequency = onlyOneFrequency;
- }
-
- public boolean isValid() {
- return categoryValue != null;
- }
-
- public boolean isEmpty() {
- return categoryValue == null
- && categoryWeight == null
- && computedWeight == null;
- }
-
- public boolean isEmptyOrValid() {
- return isEmpty() || isValid();
- }
-
- public Float getNotNullWeight() {
- Float result = categoryWeight;
- if (result == null) {
- result = computedWeight;
- }
- return result;
- }
-
- @Override
- public String toString() {
- return new ReflectionToStringBuilder(this).
- appendSuper(super.toString()).
- toString();
- }
-}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.swing.editor.NumberEditor;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -34,7 +34,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyRowModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -27,7 +27,7 @@
import com.google.common.collect.Sets;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryColumnIdentifier;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -41,7 +41,7 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryComponent;
import fr.ifremer.tutti.ui.swing.content.operation.catches.TableViewMode;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.create.CreateBenthosBatchUI;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -26,7 +26,7 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchUIModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import org.nuiton.util.beans.Binder;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -32,7 +32,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUI;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -34,7 +34,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -27,7 +27,7 @@
import com.google.common.collect.Sets;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryColumnIdentifier;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -26,7 +26,7 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import java.io.Serializable;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -32,7 +32,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
1
0
r743 - in trunk/tutti-service/src/main: java/fr/ifremer/tutti/service java/fr/ifremer/tutti/service/catches java/fr/ifremer/tutti/service/export resources/fr/ifremer/tutti/persistence/entities/data
by tchemit@users.forge.codelutin.com 06 Apr '13
by tchemit@users.forge.codelutin.com 06 Apr '13
06 Apr '13
Author: tchemit
Date: 2013-04-06 13:27:27 +0200 (Sat, 06 Apr 2013)
New Revision: 743
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/743
Log:
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (prepareation des imports)
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -24,13 +24,23 @@
* #L%
*/
+import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.entities.TuttiEntity;
+import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.util.csv.Common;
+import org.nuiton.util.csv.ExportModel;
+import org.nuiton.util.csv.ExportableColumn;
+import org.nuiton.util.csv.ValueFormatter;
import org.nuiton.util.csv.ValueParserFormatter;
+import org.nuiton.util.csv.ext.AbstractExportModel;
import org.nuiton.util.csv.ext.AbstractImportExportModel;
+import org.nuiton.util.csv.ext.RepeatableExport;
+import org.nuiton.util.decorator.Decorator;
+import java.io.Writer;
import java.text.ParseException;
+import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.Set;
@@ -49,6 +59,24 @@
super(separator);
}
+ public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) {
+ return newColumnForExportByDecorator(headerName, propertyName, decorator, null);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator, String defaultNullValue) {
+ DecoatorPropertyFormatter<T> valueFormatter = newDecoratorFormatter(decorator, defaultNullValue);
+ return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName) {
+ return newColumnForExport(headerName, propertyName, formatterPropertyName, null);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName, String defaultNullValue) {
+ BeanPropertyFormatter<T> valueFormatter = newBeanFormatter(formatterPropertyName, defaultNullValue);
+ return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter);
+ }
+
public <E extends TuttiEntity> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) {
newMandatoryColumn(headerName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe));
}
@@ -70,6 +98,36 @@
}
}
+ public static abstract class AbstractTuttiExportModel<M> extends AbstractExportModel<M> {
+
+ public AbstractTuttiExportModel(char separator) {
+ super(separator);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) {
+ return newColumnForExportByDecorator(headerName, propertyName, decorator, null);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator, String defaultNullValue) {
+ DecoatorPropertyFormatter<T> valueFormatter = newDecoratorFormatter(decorator, defaultNullValue);
+ return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName) {
+ return newColumnForExport(headerName, propertyName, formatterPropertyName, null);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName, String defaultNullValue) {
+ BeanPropertyFormatter<T> valueFormatter = newBeanFormatter(formatterPropertyName, defaultNullValue);
+ return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter);
+ }
+
+ public <E extends TuttiEntity> ForeignKeyValue<E> newForeignKeyValue(Class<E> type, String propertyName, Map<String, E> universe) {
+ return new ForeignKeyValue<E>(type, propertyName, universe);
+ }
+
+ }
+
public static class StringParserFormatter extends Common.NullableParserFormatter<String> {
public StringParserFormatter(String defaultValue, boolean nullAllowed) {
@@ -189,6 +247,80 @@
public static final ValueParserFormatter<Date> TIME =
new DateValue("HH:mm:ss");
+ public static <E> BeanPropertyFormatter<E> newBeanFormatter(String propertyName,
+ String defaultNullValue) {
+ return new BeanPropertyFormatter<E>(propertyName, defaultNullValue);
+ }
+
+ public static class BeanPropertyFormatter<E> implements ValueFormatter<E> {
+
+ protected final String defaultNullValue;
+
+ protected String propertyName;
+
+ BeanPropertyFormatter(String propertyName, String defaultNullValue) {
+ this.propertyName = propertyName;
+ this.defaultNullValue = defaultNullValue;
+ }
+
+ @Override
+ public String format(E value) {
+ if (value == null) {
+ return defaultNullValue;
+ }
+ try {
+ return (String) BeanUtilsBean.getInstance().getPropertyUtils().getNestedProperty(value, propertyName);
+ } catch (Exception e) {
+ throw new TuttiTechnicalException("Could not format value", e);
+ }
+ }
+ }
+
+ public static <E> DecoatorPropertyFormatter<E> newDecoratorFormatter(Decorator<E> decorator,
+ String defaultNullValue) {
+ return new DecoatorPropertyFormatter<E>(decorator, defaultNullValue);
+ }
+
+ public static class DecoatorPropertyFormatter<E> implements ValueFormatter<E> {
+
+ protected final String defaultNullValue;
+
+ protected Decorator<E> decorator;
+
+ DecoatorPropertyFormatter(Decorator<E> decorator, String defaultNullValue) {
+ this.decorator = decorator;
+ this.defaultNullValue = defaultNullValue;
+ }
+
+ @Override
+ public String format(E value) {
+ if (value == null) {
+ return defaultNullValue;
+ }
+ try {
+ return decorator.toString(value);
+ } catch (Exception e) {
+ throw new TuttiTechnicalException("Could not format value", e);
+ }
+ }
+ }
+
+ public static <E> TuttiRepeatableExport<E> newRepeatableExport(ExportModel<E> model) {
+ return new TuttiRepeatableExport<E>(model);
+ }
+
+ public static class TuttiRepeatableExport<E> extends RepeatableExport<E> {
+
+ public TuttiRepeatableExport(ExportModel<E> model) {
+ super(model, Collections.<E>emptyList(), true);
+ }
+
+ public void write(Iterable<E> data, Writer writer) throws Exception {
+ this.data = data;
+ write(writer);
+ }
+ }
+
protected TuttiCsvUtil() {
// no instance
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.service.catches;
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.entities.data.*;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,80 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.util.List;
+
+/**
+ * Model of a catch export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class CatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<CatchExportRow> {
+
+ public CatchExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
+
+//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
+ newColumnForExport("Zone_Etude", "programeZoneName");
+ newColumnForExport("Id_Sismer", Cruise.PROPERTY_NAME);
+ newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("Heure_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION);
+ newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("Heure_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION);
+//FIXME newColumnForExport("Responsable_Serie", Cruise.PROPERTY_HEAD_OF_MISSION);
+ newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
+ newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
+ newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
+ }
+
+ public void prepareRows(List<CatchExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation,
+ BatchContainer<SpeciesBatch> rootSpeciesBatch) {
+ CatchExportRow row = new CatchExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ rows.add(row);
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,80 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a catch export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class CatchExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Vessel getVessel() {
+ return cruise.getVessel();
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,91 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.util.List;
+
+/**
+ * Model of a operation export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class OperationExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<OperationExportRow> {
+
+ public OperationExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+
+ newColumnForExport("Engin", Cruise.PROPERTY_GEAR, Gear.PROPERTY_NAME);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
+ newColumnForExport("DateDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("HeureDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE);
+ newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE);
+ newColumnForExport("DateFin_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("HeureFin_OP", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE);
+ newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE);
+//FIXME newColumnForExport("Duree", FishingOperation.PROPERTY_);
+ newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
+ newColumnForExport("Sous-Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
+ newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiLocation.PROPERTY_NAME, "NA");
+//FIXME newColumnForExport("Rectangle_CIEM",);
+ newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID);
+ newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE);
+ newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE);
+//FIXME newColumnForExport("Ouv_Verticale",);
+//FIXME newColumnForExport("Ouv_Horizontale_Ailes",);
+//FIXME newColumnForExport("Ouv_Horizontale_Panneaux",);
+ newColumnForExport("Commentaire", FishingOperation.PROPERTY_COMMENT);
+
+ }
+
+ public void prepareRows(List<OperationExportRow> rows,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+
+ for (FishingOperation operation : operations) {
+
+ OperationExportRow row = new OperationExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ rows.add(row);
+ }
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,138 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a operation export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class OperationExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Gear getGear() {
+ return fishingOperation.getGear();
+ }
+
+ public Vessel getVessel() {
+ return cruise.getVessel();
+ }
+
+ public Date getGearShootingStartDate() {
+ return fishingOperation.getGearShootingStartDate();
+ }
+
+ public Float getGearShootingStartLatitude() {
+ return fishingOperation.getGearShootingStartLatitude();
+ }
+
+ public Float getGearShootingStartLongitude() {
+ return fishingOperation.getGearShootingStartLongitude();
+ }
+
+ public Date getGearShootingEndDate() {
+ return fishingOperation.getGearShootingEndDate();
+ }
+
+ public Float getGearShootingEndLatitude() {
+ return fishingOperation.getGearShootingEndLatitude();
+ }
+
+ public Float getGearShootingEndLongitude() {
+ return fishingOperation.getGearShootingEndLongitude();
+ }
+
+ public TuttiLocation getStrata() {
+ return fishingOperation.getStrata();
+ }
+
+ public TuttiLocation getSubStrata() {
+ return fishingOperation.getSubStrata();
+ }
+
+ public TuttiLocation getLocation() {
+ return fishingOperation.getLocation();
+ }
+
+ public Boolean getFishingOperationValid() {
+ return fishingOperation.getFishingOperationValid();
+ }
+
+ public boolean isFishingOperationRectiligne() {
+ return fishingOperation.isFishingOperationRectiligne();
+ }
+
+ public Float getTrawlDistance() {
+ return fishingOperation.getTrawlDistance();
+ }
+
+ public String getComment() {
+ return fishingOperation.getComment();
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,87 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Model of a parameter export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class ParameterExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<ParameterExportRow> {
+
+
+ public ParameterExportModel(char separator, DecoratorService decoratorService) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+
+ newColumnForExport("Code_PMFM", ParameterExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
+ newColumnForExportByDecorator("Libelle_PMFm", ParameterExportRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
+ newColumnForExport("Valeur", ParameterExportRow.PROPERTY_VALUE);
+ }
+
+ public void prepareRows(List<ParameterExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation) {
+
+ for (Map.Entry<Caracteristic, Serializable> entry : operation.getGearUseFeatures().entrySet()) {
+ Caracteristic caracteristic = entry.getKey();
+
+ ParameterExportRow row = new ParameterExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setCaracteristic(caracteristic);
+ row.setValue(entry.getValue());
+ rows.add(row);
+ }
+ for (Map.Entry<Caracteristic, Serializable> entry : operation.getVesselUseFeatures().entrySet()) {
+ Caracteristic caracteristic = entry.getKey();
+
+ ParameterExportRow row = new ParameterExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setCaracteristic(caracteristic);
+ row.setValue(entry.getValue());
+ rows.add(row);
+ }
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,100 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a parameter export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class ParameterExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_CARACTERISTIC = "caracteristic";
+ public static final String PROPERTY_VALUE = "value";
+
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected Caracteristic caracteristic;
+
+ private Serializable value;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setCaracteristic(Caracteristic caracteristic) {
+ this.caracteristic = caracteristic;
+ }
+
+ public void setValue(Serializable value) {
+ this.value = value;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Caracteristic getCaracteristic() {
+ return caracteristic;
+ }
+
+ public Serializable getValue() {
+ return value;
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -25,41 +25,46 @@
*/
import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.service.TuttiCsvUtil;
+import java.util.List;
+
/**
* Model of a survey export.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.3
*/
-public class SurveyExportModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<SurveyExportRow> {
+public class SurveyExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<SurveyExportRow> {
public SurveyExportModel(char separator) {
super(separator);
newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newColumnForExport("Navire", Cruise.PROPERTY_VESSEL);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
- newColumnForExport("Zone_Etude", "programeZoneName");
+ newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiLocation.PROPERTY_NAME);
newColumnForExport("Id_Sismer", Cruise.PROPERTY_NAME);
newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
newColumnForExport("Heure_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.TIME);
- newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION);
+ newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiLocation.PROPERTY_NAME);
newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
newColumnForExport("Heure_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.TIME);
- newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION);
+ newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiLocation.PROPERTY_NAME);
//FIXME newColumnForExport("Responsable_Serie", Cruise.PROPERTY_HEAD_OF_MISSION);
- newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
- newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
+// newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
+// newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
}
- @Override
- public SurveyExportRow newEmptyInstance() {
- return new SurveyExportRow();
+ public void prepareRows(List<SurveyExportRow> rows, Cruise cruise) {
+ SurveyExportRow row = new SurveyExportRow();
+ row.setCruise(cruise);
+ rows.add(row);
}
-
}
\ No newline at end of file
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -25,7 +25,10 @@
*/
import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.Person;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import java.io.Serializable;
import java.util.Date;
@@ -43,7 +46,7 @@
protected Cruise cruise;
- public SurveyExportRow(Cruise cruise) {
+ public void setCruise(Cruise cruise) {
this.cruise = cruise;
}
@@ -51,20 +54,20 @@
return cruise.getBeginDate();
}
- public String getProgram() {
- return cruise.getProgram().getName();
+ public Program getProgram() {
+ return cruise.getProgram();
}
public String getSurveyPart() {
return cruise.getSurveyPart();
}
- public String getProgramZone() {
- return cruise.getProgram().getZone().getName();
+ public TuttiLocation getProgramZone() {
+ return cruise.getProgram().getZone();
}
- public String getVessel() {
- return cruise.getVessel().getName();
+ public Vessel getVessel() {
+ return cruise.getVessel();
}
public String getCountry() {
@@ -77,16 +80,16 @@
return cruise.getName();
}
- public String getDepartureLocation() {
- return cruise.getDepartureLocation().getName();
+ public TuttiLocation getDepartureLocation() {
+ return cruise.getDepartureLocation();
}
public Date getEndDate() {
return cruise.getEndDate();
}
- public String getReturnLocation() {
- return cruise.getReturnLocation().getName();
+ public TuttiLocation getReturnLocation() {
+ return cruise.getReturnLocation();
}
public String getComment() {
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -30,25 +30,22 @@
import com.google.common.io.Files;
import fr.ifremer.tutti.TuttiIOUtil;
import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
import fr.ifremer.tutti.service.TuttiServiceContext;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.csv.Export;
-import org.nuiton.util.csv.ExportModel;
-import org.nuiton.util.csv.ext.RepeatableExport;
import java.io.BufferedWriter;
-import java.io.Closeable;
import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Collections;
import java.util.List;
/**
@@ -66,10 +63,16 @@
protected PersistenceService persistenceService;
+ protected DecoratorService decoratorService;
+
+ protected char csvSeparator;
+
@Override
public void setServiceContext(TuttiServiceContext context) {
super.setServiceContext(context);
persistenceService = getService(PersistenceService.class);
+ decoratorService = getService(DecoratorService.class);
+ csvSeparator = context.getConfig().getCsvSeparator();
}
public void exportCruise(String cruiseId, File exportFile) {
@@ -80,43 +83,24 @@
Cruise cruise = persistenceService.getCruise(cruiseId);
Preconditions.checkNotNull(cruise);
- File basedir = context.getConfig().newTempFile("exportCruise-" + cruiseId);
+ List<FishingOperation> operations =
+ persistenceService.getAllFishingOperation(cruiseId);
+ File basedir = context.getConfig().newTempFile(
+ "exportCruise-" + cruiseId);
+
File surveyFile = new File(basedir, "survey.csv");
exportSurvey(surveyFile, cruise);
- File parameterFile = new File(basedir, "parameter.csv");
File operationFile = new File(basedir, "operation.csv");
- File catchesFile = new File(basedir, "catch.csv");
+ exportOperations(operationFile, cruise, operations);
- SurveyExportModel operationExportModel = null;
- SurveyExportModel parameterExportModel = null;
- SurveyExportModel catchExportModel = null;
+ File parameterFile = new File(basedir, "parameter.csv");
+ exportParameters(parameterFile, cruise, operations);
- OperationWriter operationWriter = null;
+ File catchesFile = new File(basedir, "catch.csv");
+ exportCatches(catchesFile, cruise, operations);
- try {
- operationWriter = new OperationWriter(
- operationFile,
- parameterFile,
- catchesFile,
- operationExportModel,
- parameterExportModel,
- catchExportModel);
-
- List<FishingOperation> operations =
- persistenceService.getAllFishingOperation(cruiseId);
-
- for (FishingOperation operation : operations) {
- exportOperation(operationWriter, cruise, operation);
- }
- operationWriter.close();
- } catch (Exception e) {
- throw new TuttiTechnicalException(
- "Could not export operations", e);
- } finally {
- IOUtils.closeQuietly(operationWriter);
- }
TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
}
@@ -126,17 +110,16 @@
log.info("Will export survey to file: " + file);
}
- SurveyExportModel csvModel =
- new SurveyExportModel(context.getConfig().getCsvSeparator());
-
- SurveyExportRow row = new SurveyExportRow(cruise);
- List<SurveyExportRow> rows = Lists.newArrayList((row));
-
BufferedWriter writer = null;
try {
writer = Files.newWriter(file, Charsets.UTF_8);
- Export export = Export.newExport(csvModel, rows);
+ SurveyExportModel model = new SurveyExportModel(csvSeparator);
+
+ List<SurveyExportRow> rows = Lists.newArrayList();
+ model.prepareRows(rows, cruise);
+
+ Export export = Export.newExport(model, rows);
export.write(writer);
writer.close();
} catch (Exception e) {
@@ -147,106 +130,103 @@
}
}
- protected void exportOperation(OperationWriter operationWriter,
- Cruise cruise,
- FishingOperation operation) throws Exception {
+ protected void exportOperations(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
if (log.isInfoEnabled()) {
- log.info("Will export operation: " + operation.getId());
+ log.info("Will export operations to file: " + file);
}
- operationWriter.exportOperation(cruise, operation);
- operationWriter.exportParameter(cruise, operation);
- operationWriter.exportCatch(cruise, operation);
- }
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
+ OperationExportModel model =
+ new OperationExportModel(csvSeparator);
- class OperationWriter implements Closeable {
+ List<OperationExportRow> rows = Lists.newArrayList();
+ model.prepareRows(rows, cruise, operations);
- final BufferedWriter operationWriter;
+ Export export = Export.newExport(model, rows);
+ export.write(writer);
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export operations to file: " + file, e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ }
- final BufferedWriter parameterWriter;
+ protected void exportParameters(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
- final BufferedWriter catchWriter;
+ if (log.isInfoEnabled()) {
+ log.info("Will export parameters to file: " + file);
+ }
- final TuttiRepeatableExport<SurveyExportRow> operationExporter;
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
- final TuttiRepeatableExport<SurveyExportRow> parameterExporter;
+ ParameterExportModel model =
+ new ParameterExportModel(csvSeparator,
+ decoratorService);
- final TuttiRepeatableExport<SurveyExportRow> catchExporter;
+ TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> export =
+ TuttiCsvUtil.newRepeatableExport(model);
- OperationWriter(File operationFile,
- File parameterFile,
- File catchesFile,
- SurveyExportModel operationExportModel,
- SurveyExportModel parameterExportModel,
- SurveyExportModel catchExportModel) {
-
- try {
-
- operationWriter = Files.newWriter(operationFile, Charsets.UTF_8);
- parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8);
- catchWriter = Files.newWriter(catchesFile, Charsets.UTF_8);
- } catch (FileNotFoundException e) {
- throw new TuttiTechnicalException(e);
+ for (FishingOperation operation : operations) {
+ List<ParameterExportRow> rows = Lists.newArrayList();
+ model.prepareRows(rows, cruise, operation);
+ export.write(rows, writer);
}
- operationExporter = new TuttiRepeatableExport<SurveyExportRow>(operationExportModel);
- parameterExporter = new TuttiRepeatableExport<SurveyExportRow>(parameterExportModel);
- catchExporter = new TuttiRepeatableExport<SurveyExportRow>(catchExportModel);
+
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export parameters to file: " + file, e);
+ } finally {
+ IOUtils.closeQuietly(writer);
}
+ }
- void exportOperation(Cruise cruise, FishingOperation operation) throws Exception {
+ protected void exportCatches(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
- SurveyExportRow row = new SurveyExportRow(cruise);
- List<SurveyExportRow> rows = Lists.newArrayList((row));
- operationExporter.write(rows, operationWriter);
+ if (log.isInfoEnabled()) {
+ log.info("Will export catches to file: " + file);
}
- void exportParameter(Cruise cruise, FishingOperation operation) throws Exception {
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
- SurveyExportRow row = new SurveyExportRow(cruise);
- List<SurveyExportRow> rows = Lists.newArrayList((row));
- parameterExporter.write(rows, parameterWriter);
- }
+ CatchExportModel model = new CatchExportModel(csvSeparator);
- void exportCatch(Cruise cruise, FishingOperation operation) throws Exception {
- SurveyExportRow row = new SurveyExportRow(cruise);
- List<SurveyExportRow> rows = Lists.newArrayList((row));
- catchExporter.write(rows, catchWriter);
- }
+ TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> export =
+ TuttiCsvUtil.newRepeatableExport(model);
- @Override
- public void close() throws IOException {
- try {
- if (operationWriter != null) {
- operationWriter.close();
- }
- } finally {
+ for (FishingOperation operation : operations) {
- try {
- if (parameterWriter != null) {
- parameterWriter.close();
- }
- } catch (IOException e) {
+ BatchContainer<SpeciesBatch> rootSpeciesBatch =
+ persistenceService.getRootSpeciesBatch(operation.getId());
- if (catchWriter != null) {
- catchWriter.close();
- }
- }
+ List<CatchExportRow> rows = Lists.newArrayList();
+ model.prepareRows(rows, cruise, operation, rootSpeciesBatch);
+ export.write(rows, writer);
}
- }
- }
- class TuttiRepeatableExport<E> extends RepeatableExport<E> {
-
- public TuttiRepeatableExport(ExportModel<E> model) {
- super(model, Collections.<E>emptyList(), true);
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export catches to file: " + file, e);
+ } finally {
+ IOUtils.closeQuietly(writer);
}
-
- public void write(Iterable<E> data, Writer writer) throws Exception {
- this.data = data;
- write(writer);
- }
}
}
Modified: trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml
===================================================================
--- trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml 2013-04-06 11:27:27 UTC (rev 743)
@@ -1,4 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti :: Service
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
Property changes on: trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r742 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: content/operation content/operation/catches/accidental content/operation/catches/benthos content/operation/catches/marinelitter content/operation/catches/plankton content/operation/catches/species util/comment util/table
by kmorin@users.forge.codelutin.com 05 Apr '13
by kmorin@users.forge.codelutin.com 05 Apr '13
05 Apr '13
Author: kmorin
Date: 2013-04-05 19:17:13 +0200 (Fri, 05 Apr 2013)
New Revision: 742
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/742
Log:
fixes #2239 [CAPTURE] mauvaise d?\195?\169tection des changements
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/comment/CommentCellEditor.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -33,6 +33,8 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.sort.TableSortController;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import java.awt.Component;
@@ -54,29 +56,6 @@
super(parentUi.getHandler().getContext(), ui, properties);
}
- public final void saveSelectedRowIfRequired(FocusEvent event) {
-
- Component oppositeComponent = event.getOppositeComponent();
-
- JXTable parentContainer = null;
-
- if (oppositeComponent != null) {
-
- // check out if still on table
- parentContainer = SwingUtil.getParentContainer(
- oppositeComponent, JXTable.class);
- }
-
- if (parentContainer == null) {
-
- // out of the table can save
- if (getModel().getFishingOperation() != null) {
-
- saveSelectedRowIfNeeded();
- }
- }
- }
-
/**
* To clear the table selection.
* <p/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -431,12 +431,12 @@
firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND, oldValue, second);
}
-// public void setGearShootingEndTime(Date gearShootingEndDate) {
-// Object oldValue = getGearShootingEndDate();
-// if (oldValue != null) {
-// setGearShootingEndDate(gearShootingEndDate);
-// }
-// }
+ public void setGearShootingEndTime(Date gearShootingEndDate) {
+ Object oldValue = getGearShootingEndDate();
+ if (oldValue != null) {
+ setGearShootingEndDate(gearShootingEndDate);
+ }
+ }
public String getValidationContext() {
return validationContext;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -63,7 +63,7 @@
constructorParams='"tuttihelp.editAccidentalBatch.help"'/>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'/>
+ <JXTable id='table'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -128,6 +128,7 @@
Object oldValue,
Object newValue) {
recomputeRowValidState(row);
+ saveSelectedRowIfNeeded();
}
@Override
@@ -144,7 +145,9 @@
log.info("Row " + row + " was modified, will save it");
}
+ rowMonitor.setBean(null);
saveRow(row);
+ rowMonitor.setBean(row);
// clear modified flag on the monitor
rowMonitor.clearModified();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -162,7 +162,7 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'
+ <JXTable id='table'
onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -283,6 +283,8 @@
recomputeRowValidState(row);
}
+ saveSelectedRowIfNeeded();
+
// when row valid state has changed, recompute action enabled states
recomputeBatchActionEnable();
}
@@ -303,7 +305,9 @@
"[ Captures - Benthos ] " +
"Sauvegarde des modifications de " + row + '.');
+ rowMonitor.setBean(null);
saveRow(row);
+ rowMonitor.setBean(row);
// clear modified flag on the monitor
rowMonitor.clearModified();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -106,8 +106,8 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
- onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -175,6 +175,8 @@
Object newValue) {
recomputeRowValidState(row);
+ saveSelectedRowIfNeeded();
+
// when row valid state has changed, recompute action enabled states
recomputeBatchActionEnable();
}
@@ -190,7 +192,9 @@
log.info("Row " + row + " was modified, will save it");
}
+ rowMonitor.setBean(null);
saveRow(row);
+ rowMonitor.setBean(row);
// clear modified flag on the monitor
rowMonitor.clearModified();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -94,8 +94,7 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table'
- onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -62,7 +62,7 @@
public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_VALUE = "sortedUnsortedCategoryValue";
- public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT = "sortedUnsortedCategoryComputedWeight";
+ public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT = "sortedUnsortedCategoryWeight";
public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_COMPUTED_WEIGHT = "sortedUnsortedCategoryComputedWeight";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -162,7 +162,7 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'
+ <JXTable id='table'
onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -293,6 +293,8 @@
recomputeRowValidState(row);
}
+ saveSelectedRowIfNeeded();
+
// when row valid state has changed, recompute action enabled states
recomputeBatchActionEnable();
}
@@ -313,7 +315,9 @@
"[ Captures - Espèces ] " +
"Sauvegarde des modifications de " + row + '.');
+ rowMonitor.setBean(null);
saveRow(row);
+ rowMonitor.setBean(row);
// clear modified flag on the monitor
rowMonitor.clearModified();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/comment/CommentCellEditor.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/comment/CommentCellEditor.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/comment/CommentCellEditor.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -109,7 +109,7 @@
@Override
public boolean shouldSelectCell(EventObject anEvent) {
- return false;
+ return true;
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -362,7 +362,7 @@
}
// save selected entry if required
- saveSelectedRowIfNeeded();
+// saveSelectedRowIfNeeded();
if (log.isDebugEnabled()) {
log.debug("Will monitor entry: " + newRow);
@@ -506,7 +506,6 @@
R row = rowMonitor.getBean();
if (row != null) {
-
saveSelectedRowIfRequired(rowMonitor, row);
}
}
1
0
r741 - in trunk/tutti-service/src/main/java/fr/ifremer/tutti/service: . export
by tchemit@users.forge.codelutin.com 05 Apr '13
by tchemit@users.forge.codelutin.com 05 Apr '13
05 Apr '13
Author: tchemit
Date: 2013-04-05 16:34:01 +0200 (Fri, 05 Apr 2013)
New Revision: 741
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/741
Log:
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (debut)
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-05 14:19:05 UTC (rev 740)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-05 14:34:01 UTC (rev 741)
@@ -31,6 +31,7 @@
import org.nuiton.util.csv.ext.AbstractImportExportModel;
import java.text.ParseException;
+import java.util.Date;
import java.util.Map;
import java.util.Set;
@@ -40,7 +41,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class TuttiCsvUtil {
+public class TuttiCsvUtil extends Common {
public static abstract class AbstractTuttiImportExportModel<M> extends AbstractImportExportModel<M> {
@@ -179,6 +180,15 @@
}
}
+ public static final ValueParserFormatter<Date> YEAR =
+ new DateValue("yyyy");
+
+ public static final ValueParserFormatter<Date> DAY_EMPTY_TIME =
+ new DateValue("dd/MM/yyyy 00:00:00");
+
+ public static final ValueParserFormatter<Date> TIME =
+ new DateValue("HH:mm:ss");
+
protected TuttiCsvUtil() {
// no instance
}
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-04-05 14:34:01 UTC (rev 741)
@@ -0,0 +1,65 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+/**
+ * Model of a survey export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class SurveyExportModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<SurveyExportRow> {
+
+ public SurveyExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL);
+//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
+ newColumnForExport("Zone_Etude", "programeZoneName");
+ newColumnForExport("Id_Sismer", Cruise.PROPERTY_NAME);
+ newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("Heure_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION);
+ newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("Heure_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION);
+//FIXME newColumnForExport("Responsable_Serie", Cruise.PROPERTY_HEAD_OF_MISSION);
+ newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
+ newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
+ newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
+ }
+
+ @Override
+ public SurveyExportRow newEmptyInstance() {
+ return new SurveyExportRow();
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-05 14:34:01 UTC (rev 741)
@@ -0,0 +1,103 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * A row in a survey export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class SurveyExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Cruise cruise;
+
+ public SurveyExportRow(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public String getProgram() {
+ return cruise.getProgram().getName();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getProgramZone() {
+ return cruise.getProgram().getZone().getName();
+ }
+
+ public String getVessel() {
+ return cruise.getVessel().getName();
+ }
+
+ public String getCountry() {
+ //FIXME
+ return null;
+ }
+
+ public String getName() {
+ //FIXME
+ return cruise.getName();
+ }
+
+ public String getDepartureLocation() {
+ return cruise.getDepartureLocation().getName();
+ }
+
+ public Date getEndDate() {
+ return cruise.getEndDate();
+ }
+
+ public String getReturnLocation() {
+ return cruise.getReturnLocation().getName();
+ }
+
+ public String getComment() {
+ return cruise.getComment();
+ }
+
+ public List<Person> getHeadOfMission() {
+ return cruise.getHeadOfMission();
+ }
+
+ public List<Person> getHeadOfSortRoom() {
+ return cruise.getHeadOfSortRoom();
+ }
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-05 14:34:01 UTC (rev 741)
@@ -0,0 +1,252 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.TuttiIOUtil;
+import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.csv.Export;
+import org.nuiton.util.csv.ExportModel;
+import org.nuiton.util.csv.ext.RepeatableExport;
+
+import java.io.BufferedWriter;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * To export data in the generic format.
+ * <p/>
+ * See http://forge.codelutin.com/issues/1875.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class TuttiExportService extends AbstractTuttiService {
+
+ private static final Log log =
+ LogFactory.getLog(TuttiExportService.class);
+
+ protected PersistenceService persistenceService;
+
+ @Override
+ public void setServiceContext(TuttiServiceContext context) {
+ super.setServiceContext(context);
+ persistenceService = getService(PersistenceService.class);
+ }
+
+ public void exportCruise(String cruiseId, File exportFile) {
+
+ Preconditions.checkNotNull(cruiseId);
+ Preconditions.checkNotNull(exportFile);
+
+ Cruise cruise = persistenceService.getCruise(cruiseId);
+ Preconditions.checkNotNull(cruise);
+
+ File basedir = context.getConfig().newTempFile("exportCruise-" + cruiseId);
+
+ File surveyFile = new File(basedir, "survey.csv");
+ exportSurvey(surveyFile, cruise);
+
+ File parameterFile = new File(basedir, "parameter.csv");
+ File operationFile = new File(basedir, "operation.csv");
+ File catchesFile = new File(basedir, "catch.csv");
+
+ SurveyExportModel operationExportModel = null;
+ SurveyExportModel parameterExportModel = null;
+ SurveyExportModel catchExportModel = null;
+
+ OperationWriter operationWriter = null;
+
+ try {
+ operationWriter = new OperationWriter(
+ operationFile,
+ parameterFile,
+ catchesFile,
+ operationExportModel,
+ parameterExportModel,
+ catchExportModel);
+
+ List<FishingOperation> operations =
+ persistenceService.getAllFishingOperation(cruiseId);
+
+ for (FishingOperation operation : operations) {
+ exportOperation(operationWriter, cruise, operation);
+ }
+ operationWriter.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export operations", e);
+ } finally {
+ IOUtils.closeQuietly(operationWriter);
+ }
+ TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
+ }
+
+ protected void exportSurvey(File file, Cruise cruise) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export survey to file: " + file);
+ }
+
+ SurveyExportModel csvModel =
+ new SurveyExportModel(context.getConfig().getCsvSeparator());
+
+ SurveyExportRow row = new SurveyExportRow(cruise);
+ List<SurveyExportRow> rows = Lists.newArrayList((row));
+
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
+
+ Export export = Export.newExport(csvModel, rows);
+ export.write(writer);
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export survey to file: " + file, e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ }
+
+ protected void exportOperation(OperationWriter operationWriter,
+ Cruise cruise,
+ FishingOperation operation) throws Exception {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export operation: " + operation.getId());
+ }
+
+ operationWriter.exportOperation(cruise, operation);
+ operationWriter.exportParameter(cruise, operation);
+ operationWriter.exportCatch(cruise, operation);
+ }
+
+
+ class OperationWriter implements Closeable {
+
+ final BufferedWriter operationWriter;
+
+ final BufferedWriter parameterWriter;
+
+ final BufferedWriter catchWriter;
+
+ final TuttiRepeatableExport<SurveyExportRow> operationExporter;
+
+ final TuttiRepeatableExport<SurveyExportRow> parameterExporter;
+
+ final TuttiRepeatableExport<SurveyExportRow> catchExporter;
+
+ OperationWriter(File operationFile,
+ File parameterFile,
+ File catchesFile,
+ SurveyExportModel operationExportModel,
+ SurveyExportModel parameterExportModel,
+ SurveyExportModel catchExportModel) {
+
+ try {
+
+ operationWriter = Files.newWriter(operationFile, Charsets.UTF_8);
+ parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8);
+ catchWriter = Files.newWriter(catchesFile, Charsets.UTF_8);
+ } catch (FileNotFoundException e) {
+ throw new TuttiTechnicalException(e);
+ }
+ operationExporter = new TuttiRepeatableExport<SurveyExportRow>(operationExportModel);
+ parameterExporter = new TuttiRepeatableExport<SurveyExportRow>(parameterExportModel);
+ catchExporter = new TuttiRepeatableExport<SurveyExportRow>(catchExportModel);
+ }
+
+ void exportOperation(Cruise cruise, FishingOperation operation) throws Exception {
+
+ SurveyExportRow row = new SurveyExportRow(cruise);
+ List<SurveyExportRow> rows = Lists.newArrayList((row));
+ operationExporter.write(rows, operationWriter);
+ }
+
+ void exportParameter(Cruise cruise, FishingOperation operation) throws Exception {
+
+ SurveyExportRow row = new SurveyExportRow(cruise);
+ List<SurveyExportRow> rows = Lists.newArrayList((row));
+ parameterExporter.write(rows, parameterWriter);
+ }
+
+ void exportCatch(Cruise cruise, FishingOperation operation) throws Exception {
+ SurveyExportRow row = new SurveyExportRow(cruise);
+ List<SurveyExportRow> rows = Lists.newArrayList((row));
+ catchExporter.write(rows, catchWriter);
+ }
+
+ @Override
+ public void close() throws IOException {
+ try {
+ if (operationWriter != null) {
+ operationWriter.close();
+ }
+ } finally {
+
+ try {
+ if (parameterWriter != null) {
+ parameterWriter.close();
+ }
+ } catch (IOException e) {
+
+ if (catchWriter != null) {
+ catchWriter.close();
+ }
+ }
+ }
+ }
+ }
+
+ class TuttiRepeatableExport<E> extends RepeatableExport<E> {
+
+ public TuttiRepeatableExport(ExportModel<E> model) {
+ super(model, Collections.<E>emptyList(), true);
+ }
+
+ public void write(Iterable<E> data, Writer writer) throws Exception {
+ this.data = data;
+ write(writer);
+ }
+ }
+
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0