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
May 2013
- 4 participants
- 180 discussions
r937 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test tutti-service/src/test tutti-service/src/test/java/fr/ifremer/tutti/service tutti-service/src/test/java/fr/ifremer/tutti/service/export tutti-service/src/test/resources
by tchemit@users.forge.codelutin.com 12 May '13
by tchemit@users.forge.codelutin.com 12 May '13
12 May '13
Author: tchemit
Date: 2013-05-12 22:37:39 +0200 (Sun, 12 May 2013)
New Revision: 937
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/937
Log:
fix service tests using real db
Added:
trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties
Removed:
trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java
trunk/tutti-service/src/test/
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java 2013-05-12 19:56:50 UTC (rev 936)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java 2013-05-12 20:37:39 UTC (rev 937)
@@ -167,6 +167,16 @@
Class<?> testClass;
+ protected void prepareConfig(ApplicationConfig applicationConfig,
+ File resourceDirectory) {
+
+ applicationConfig.loadDefaultOptions(
+ TuttiPersistenceConfigOption.values());
+ applicationConfig.setDefaultOption(
+ "tutti.data.directory",
+ new File(resourceDirectory, "data").getAbsolutePath());
+ }
+
protected void before(Description description) throws Throwable {
TuttiRunListener.beforeClass(description);
@@ -213,11 +223,8 @@
Preconditions.checkNotNull(resourceAsStream, "Could not find " + configFilename + " in test class-path");
ApplicationConfig applicationConfig = new ApplicationConfig(configFilename);
- applicationConfig.loadDefaultOptions(
- TuttiPersistenceConfigOption.values());
- applicationConfig.setDefaultOption(
- "tutti.data.directory",
- new File(resourceDirectory, "data").getAbsolutePath());
+ prepareConfig(applicationConfig, resourceDirectory);
+
applicationConfig.parse();
config = new TuttiPersistenceConfig(applicationConfig);
Property changes on: trunk/tutti-service/src/test
___________________________________________________________________
Added: svn:ignore
+ dbCGFS
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java 2013-05-12 19:56:50 UTC (rev 936)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java 2013-05-12 20:37:39 UTC (rev 937)
@@ -25,12 +25,16 @@
*/
import fr.ifremer.tutti.persistence.RessourceClassLoader;
+import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfigOption;
import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.service.config.TuttiServiceConfig;
+import fr.ifremer.tutti.service.config.TuttiServiceConfigOption;
import org.apache.commons.io.IOUtils;
import org.junit.runner.Description;
import org.nuiton.i18n.I18n;
+import org.nuiton.util.config.ApplicationConfig;
+import java.io.File;
import java.io.IOException;
import java.util.Locale;
@@ -47,6 +51,19 @@
return new TuttiServiceContext(loader, config);
}
+ @Override
+ protected void prepareConfig(ApplicationConfig applicationConfig,
+ File resourceDirectory) {
+ applicationConfig.loadDefaultOptions(
+ TuttiPersistenceConfigOption.values());
+ applicationConfig.loadDefaultOptions(
+ TuttiServiceConfigOption.values());
+
+ applicationConfig.setDefaultOption(
+ "tutti.basedir",
+ resourceDirectory.getAbsolutePath());
+ }
+
protected TuttiServiceContext serviceContext;
protected TuttiServiceConfig serviceConfig;
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-05-12 19:56:50 UTC (rev 936)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-05-12 20:37:39 UTC (rev 937)
@@ -61,7 +61,7 @@
@ClassRule
public static final ServiceDbResource dbResource =
- ServiceDbResource.readDb("dbGenericExport");
+ ServiceDbResource.readDb("dbCGFS");
public static final String PROGRAM_ID = "CAM-CGFS";
Copied: trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties (from rev 935, trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties)
===================================================================
--- trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties (rev 0)
+++ trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties 2013-05-12 20:37:39 UTC (rev 937)
@@ -0,0 +1,27 @@
+###
+# #%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%
+###
+tutti.persistence.db.directory=src/test/dbCGFS
+tutti.persistence.jdbc.url=jdbc:hsqldb:file:src/test/dbCGFS/allegro
+#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
+#tutti.persistence.jdbc.createScript=src/test/dbEmpty/allegro.script
\ No newline at end of file
Deleted: trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties
===================================================================
--- trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties 2013-05-12 19:56:50 UTC (rev 936)
+++ trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties 2013-05-12 20:37:39 UTC (rev 937)
@@ -1,27 +0,0 @@
-###
-# #%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%
-###
-tutti.persistence.db.directory=src/test/dbGenericExport
-tutti.persistence.jdbc.url=jdbc:hsqldb:file:src/test/dbGenericExport/allegro
-#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
-#tutti.persistence.jdbc.createScript=src/test/dbEmpty/allegro.script
\ No newline at end of file
1
0
r936 - in trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence: . service service/batch
by tchemit@users.forge.codelutin.com 12 May '13
by tchemit@users.forge.codelutin.com 12 May '13
12 May '13
Author: tchemit
Date: 2013-05-12 21:56:50 +0200 (Sun, 12 May 2013)
New Revision: 936
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/936
Log:
use isFishingOperationWithCatchBatch method
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
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-05-11 15:53:26 UTC (rev 935)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-05-12 19:56:50 UTC (rev 936)
@@ -69,7 +69,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DataRetrievalFailureException;
import java.io.File;
import java.io.IOException;
@@ -594,14 +593,7 @@
@Override
public boolean isFishingOperationWithCatchBatch(String operationId) {
- boolean result;
- try {
- catchBatchService.getCatchBatchFromFishingOperation(operationId);
- result = true;
- } catch (DataRetrievalFailureException e) {
- result = false;
- }
- return result;
+ return catchBatchService.isFishingOperationWithCatchBatch(operationId);
}
@Override
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java 2013-05-11 15:53:26 UTC (rev 935)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java 2013-05-12 19:56:50 UTC (rev 936)
@@ -36,6 +36,14 @@
//------------------------------------------------------------------------//
/**
+ * @param operationId id of the fishing operation
+ * @return {@code true} if there is a catchBatch for the given fishing
+ * operation, {@code false} otherwise.
+ * @since 2.2
+ */
+ boolean isFishingOperationWithCatchBatch(String operationId);
+
+ /**
* Get the catchBatch from the fishing Operation id.
*
* @param fishingOperationId id of the fishing operation
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2013-05-11 15:53:26 UTC (rev 935)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2013-05-12 19:56:50 UTC (rev 936)
@@ -71,6 +71,14 @@
//------------------------------------------------------------------------//
@Override
+ public boolean isFishingOperationWithCatchBatch(String operationId) {
+ Preconditions.checkNotNull(operationId);
+ boolean result = batchHelper.isCatchBatchExistsForFishingOperation(
+ Integer.valueOf(operationId));
+ return result;
+ }
+
+ @Override
public CatchBatch getCatchBatchFromFishingOperation(String fishingOperationId) {
Preconditions.checkNotNull(fishingOperationId);
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-11 15:53:26 UTC (rev 935)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-12 19:56:50 UTC (rev 936)
@@ -77,8 +77,6 @@
private static final Log log =
LogFactory.getLog(BatchPersistenceHelper.class);
- public static final String BATCH_PMFM_ID = "pmfmId";
-
@Resource(name = "referentialPersistenceService")
protected ReferentialPersistenceService referentialService;
@@ -242,6 +240,10 @@
return result;
}
+ public boolean isCatchBatchExistsForFishingOperation(Integer fishingOperationId) {
+ return catchBatchDao.isCatchBatchExistsForFishingOperation(fishingOperationId);
+ }
+
public Integer getCatchBatchIdByFishingOperationId(Integer fishingOperationId) throws DataRetrievalFailureException {
return catchBatchDao.getIdByFishingOperationId(fishingOperationId);
}
@@ -497,7 +499,7 @@
for (int i = 0; i < nbParams; i++) {
Integer sortingPmfmId = ids[2 * i];
Integer sortingQualitativeValueId = ids[2 * i + 1];
- params[3 * i] = BatchPersistenceHelper.BATCH_PMFM_ID;
+ params[3 * i] = CatchBatchExtendDao.PMFM_ID;
params[3 * i + 1] = sortingPmfmId;
params[3 * i + 2] = sortingQualitativeValueId;
}
1
0
11 May '13
Author: tchemit
Date: 2013-05-11 17:53:26 +0200 (Sat, 11 May 2013)
New Revision: 935
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/935
Log:
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (ajout du rankOrder)
ajout du framework de test au niveau persistence pour l'utiliser dans le module service
Added:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/TuttiRunListener.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/TuttiRunner.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java
trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties
Removed:
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunner.java
Modified:
trunk/tutti-persistence/pom.xml
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFileTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImplTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImplUpTodateTest.java
trunk/tutti-service/pom.xml
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.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/CatchExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
trunk/tutti-ui-swing/pom.xml
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.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/frequency/BenthosFrequencyRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchRowModel.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/frequency/SpeciesFrequencyRowModel.java
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/pom.xml 2013-05-11 15:53:26 UTC (rev 935)
@@ -164,6 +164,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
@@ -244,7 +245,7 @@
<properties>
<property>
<name>listener</name>
- <value>fr.ifremer.tutti.persistence.TuttiRunListener</value>
+ <value>fr.ifremer.tutti.persistence.test.TuttiRunListener</value>
</property>
</properties>
</configuration>
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-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -453,7 +453,6 @@
* operation, {@code false} otherwise.
* @since 2.2
*/
-
boolean isFishingOperationWithCatchBatch(String operationId);
/**
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -341,6 +341,9 @@
target.setId(source.getId().toString());
+ // Rank order
+ target.setRankOrder(Integer.valueOf(source.getRankOrder()));
+
// Individual count
target.setNumber(source.getIndividualCount());
@@ -407,6 +410,9 @@
target.setId(source.getId());
+ // Rank order
+ target.setRankOrder(Integer.valueOf(source.getRankOrder()));
+
target.setNumber(source.getIndividualCount());
target.setWeight(source.getWeight());
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -165,6 +165,9 @@
target.setId(source.getId().toString());
+ // Rank order
+ target.setRankOrder(Integer.valueOf(source.getRankOrder()));
+
// Individual count
target.setNumber(source.getIndividualCount());
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -383,6 +383,9 @@
target.setId(source.getId().toString());
+ // Rank order
+ target.setRankOrder(Integer.valueOf(source.getRankOrder()));
+
// Individual count
target.setNumber(source.getIndividualCount());
@@ -449,6 +452,9 @@
target.setId(source.getId());
+ // Rank order
+ target.setRankOrder(Integer.valueOf(source.getRankOrder()));
+
target.setNumber(source.getIndividualCount());
target.setWeight(source.getWeight());
Copied: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java (from rev 927, trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java)
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -0,0 +1,421 @@
+package fr.ifremer.tutti.persistence.test;
+
+/*
+ * #%L
+ * Tutti :: Persistence API
+ * $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 fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+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.persistence.service.AccidentalBatchPersistenceService;
+import fr.ifremer.tutti.persistence.service.CatchBatchPersistenceService;
+import fr.ifremer.tutti.persistence.service.CruisePersistenceService;
+import fr.ifremer.tutti.persistence.service.FishingOperationPersistenceService;
+import fr.ifremer.tutti.persistence.service.IndividualObservationBatchPersistenceService;
+import fr.ifremer.tutti.persistence.service.ProgramPersistenceService;
+import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
+import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
+import org.junit.Assert;
+
+import java.io.Serializable;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+/**
+ * Fixtures for the allegro db.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class DatabaseFixtures {
+
+ public String programCode() {
+ // campaign CGFS
+ return "CAM-CGFS";
+ }
+
+ public String cruiseId() {
+ // cruise CGFS2010
+ return "100000";
+ }
+
+ public String fishingVesselCode() {
+ return "851751";
+ }
+
+ public String zoneId() {
+ // zone CGFS
+ return "61979";
+ }
+
+ public String strataId() {
+ // strate 6M
+ return "57377";
+ }
+
+ public String subStrataId() {
+ // substrata 61995
+ return "61995";
+ }
+
+ public String localite() {
+ // Localite 8Q3
+ return "57774";
+ }
+
+ public int refNbCaracteristic() {
+ return 481;
+ }
+
+ public int refNbSpecies() {
+ return 16961;
+ }
+
+ public int refNbReferentSpecies() {
+ return 8649;
+ }
+
+ public int refNbScientificGear() {
+ return 9;
+ }
+
+ public int refNbFishingGear() {
+ return 75;
+ }
+
+ public int refNbCountry() {
+ return 239;
+ }
+
+ public int refNbHarbour() {
+ return 1898;
+ }
+
+ public int refNbProgramZone() {
+ return 14;
+ }
+
+ public int refNbStrata() {
+ return 76;
+ }
+
+ public int refNbSubStrata() {
+ return 16;
+ }
+
+ public int refNbLocalite() {
+ return 129;
+ }
+
+ public int refNbFishingVessel() {
+ return 24837;
+ }
+
+ public int refNbScientificVessel() {
+ return 3;
+ }
+
+ public int refNbPerson() {
+ return 128;
+ }
+
+ public int refNbObjectType() {
+ return 57;
+ }
+
+ public String refSpeciesId() {
+ return "15923";
+ }
+
+ public Integer refSpeciesTaxonId() {
+ return 467;
+ }
+
+ public Integer refNumericalPmfmId() {
+ return 113;
+ }
+
+ public Integer refAlphanumericPmfmId() {
+ return 1424;
+ }
+
+ public String refSpeciesRefTaxCode() {
+ return "SEPIOFF ";
+ }
+
+ public String refSpeciesVernacularCode() {
+ return "Seiche";
+ }
+
+ public Integer refBadSpeciesTaxonId() {
+ return 7632;
+ }
+
+ public Integer refBad2SpeciesTaxonId() {
+ return 2320;
+ }
+
+ public String objectTypeCode() {
+ return "BATCH";
+ }
+
+ public Integer caracteristicWithNullQualitativeValue() {
+ return 114;
+ }
+
+ protected CruisePersistenceService cruiseService;
+
+ protected ProgramPersistenceService programService;
+
+ protected FishingOperationPersistenceService fishingOperationService;
+
+ protected CatchBatchPersistenceService catchBatchService;
+
+ protected ReferentialPersistenceService referentialService;
+
+ protected AccidentalBatchPersistenceService accidentalBatchService;
+
+ protected IndividualObservationBatchPersistenceService individualObservationBatchService;
+
+ public void setUp() {
+ if (referentialService == null) {
+ referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
+ programService = TuttiPersistenceServiceLocator.getProgramPersistenceService();
+ cruiseService = TuttiPersistenceServiceLocator.getCruisePersistenceService();
+ fishingOperationService = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
+ catchBatchService = TuttiPersistenceServiceLocator.getCatchBatchPersistenceService();
+ accidentalBatchService = TuttiPersistenceServiceLocator.getAccidentalBatchPersistenceService();
+ individualObservationBatchService = TuttiPersistenceServiceLocator.getIndividualObservationBatchPersistenceService();
+ }
+ }
+
+ public Cruise createCruise() {
+
+ setUp();
+
+ String programCode = programCode();
+ Cruise cruise = TuttiBeanFactory.newCruise();
+
+ // -----------------------------------------------------------------------------
+ // 1. Test with all properties filled
+ // -----------------------------------------------------------------------------
+ cruise.setId((String) null);
+
+ cruise.setName("Unit-test-" + System.currentTimeMillis());
+
+ cruise.setProgram(programService.getProgram(programCode));
+
+ Calendar calendar = new GregorianCalendar();
+ cruise.setBeginDate(calendar.getTime());
+
+ calendar.add(Calendar.MONTH, 1); // add one month
+ cruise.setEndDate(calendar.getTime());
+
+ List<TuttiLocation> allHarbour = referentialService.getAllHarbour();
+ Assert.assertNotNull(allHarbour);
+ Assert.assertTrue(allHarbour.size() > 1);
+ cruise.setDepartureLocation(allHarbour.get(0));
+ cruise.setReturnLocation(allHarbour.get(1));
+
+ List<Gear> gears = referentialService.getAllFishingGear();
+ cruise.setGear(Lists.newArrayList(gears));
+
+ cruise.setComment("My comments on cruise");
+ cruise.setSurveyPart("SurveyPart");
+
+ Person managerPerson = referentialService.getAllPerson().get(0);
+ cruise.setHeadOfMission(Lists.newArrayList(managerPerson));
+
+ Vessel fishingVessel = TuttiBeanFactory.newVessel();
+ fishingVessel.setId(fishingVesselCode());
+
+ cruise.setVessel(fishingVessel);
+
+ cruise.setMultirigNumber(2);
+
+ Cruise result = cruiseService.createCruise(cruise);
+ return result;
+ }
+
+ public FishingOperation createFishingOperation(Cruise cruise) {
+ setUp();
+
+ FishingOperation fishingOperation = TuttiBeanFactory.newFishingOperation();
+ fishingOperation.setCruise(cruise);
+ fishingOperation.setComment("newFishingOperation");
+ fishingOperation.setFishingOperationNumber(1);
+
+ // Retrieve some environment caracteristics
+ List<Caracteristic> allEnvironmentCaracteristics = referentialService.getAllCaracteristic();
+ CaracteristicMap environmentCaracteristics = new CaracteristicMap();
+ CaracteristicMap environmentValuesOneEntry = new CaracteristicMap();
+ int count=0;
+ for (Caracteristic caracteristic : allEnvironmentCaracteristics) {
+ if (count==3) {
+ break;
+ }
+ Serializable value = null;
+ if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+ value = 1.0f;
+ count++;
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+ value = "some text";
+ count++;
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
+ && caracteristic.getQualitativeValue(0) != null) {
+ // Choose the first qualitative value
+ value = caracteristic.getQualitativeValue(0);
+ count++;
+ }
+ if (value != null) {
+ environmentCaracteristics.put(caracteristic, value);
+ if (environmentValuesOneEntry.size() == 0) {
+ environmentValuesOneEntry.put(caracteristic, value);
+ }
+ }
+ }
+
+ // Retrieve some gear use caracteristics
+ List<Caracteristic> allGearShootingCaracteristics = referentialService.getAllCaracteristic();
+ CaracteristicMap gearShootingCaracteristics = new CaracteristicMap();
+ CaracteristicMap gearShootingCaracteristicsOneEntry = new CaracteristicMap();
+ count=0;
+ for (Caracteristic caracteristic : allGearShootingCaracteristics) {
+ if (count==3) {
+ break;
+ }
+ Serializable value = null;
+ if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+ value = 1.0f;
+ count++;
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+ value = "some text";
+ count++;
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
+ && caracteristic.getQualitativeValue(0) != null) {
+ // Choose the first qualitative value
+ value = caracteristic.getQualitativeValue(0);
+ count++;
+ }
+ if (value != null) {
+ gearShootingCaracteristics.put(caracteristic, value);
+ if (gearShootingCaracteristicsOneEntry.size() == 0) {
+ gearShootingCaracteristicsOneEntry.put(caracteristic, value);
+ }
+ }
+ }
+
+ Calendar calendar = Calendar.getInstance();
+ fishingOperation.setId((String) null);
+ fishingOperation.setStationNumber("STA2");
+ fishingOperation.setFishingOperationNumber(2);
+ fishingOperation.setMultirigAggregation("1");
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 1);
+ calendar.set(Calendar.MILLISECOND, 99);
+ fishingOperation.setGearShootingStartDate(calendar.getTime());
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 10);
+ calendar.set(Calendar.MILLISECOND, 99);
+ fishingOperation.setGearShootingEndDate(calendar.getTime());
+ fishingOperation.setGearShootingStartLatitude(47.6f);
+ fishingOperation.setGearShootingStartLongitude(-5.05f);
+ fishingOperation.setGearShootingEndLatitude(47.9854f);
+ fishingOperation.setGearShootingEndLongitude(-5.597f);
+
+ fishingOperation.setTrawlDistance(100.12345f);
+ fishingOperation.setFishingOperationRectiligne(true);
+ fishingOperation.setFishingOperationValid(Boolean.TRUE);
+ fishingOperation.setComment("Unit test createFishingOperation() - Part n°2 : All properties set");
+ fishingOperation.setGear(cruise.getGear(0));
+ fishingOperation.setVessel(cruise.getVessel());
+ fishingOperation.setVesselUseFeatures(environmentCaracteristics);
+ fishingOperation.setGearUseFeatures(gearShootingCaracteristics);
+
+ TuttiLocation strata = TuttiBeanFactory.newTuttiLocation();
+ strata.setId(strataId());
+ fishingOperation.setStrata(strata);
+ TuttiLocation subStrata = TuttiBeanFactory.newTuttiLocation();
+ subStrata.setId(subStrataId());
+ fishingOperation.setSubStrata(subStrata);
+ TuttiLocation localite = TuttiBeanFactory.newTuttiLocation();
+ localite.setId(localite());
+ fishingOperation.setLocation(localite);
+
+ FishingOperation result = fishingOperationService.createFishingOperation(fishingOperation);
+ return result;
+ }
+
+ public CatchBatch createMinimalCatchBatch(FishingOperation fishingOperation) {
+
+ setUp();
+
+ CatchBatch catchBatch = TuttiBeanFactory.newCatchBatch();
+ catchBatch.setFishingOperation(fishingOperation);
+ CatchBatch result = catchBatchService.createCatchBatch(catchBatch);
+ return result;
+ }
+
+ public AccidentalBatch createMinimalAccidentalBatch(FishingOperation fishingOperation) {
+
+ setUp();
+
+ AccidentalBatch minimalAccidentalBatch = TuttiBeanFactory.newAccidentalBatch();
+ minimalAccidentalBatch.setFishingOperation(fishingOperation);
+ minimalAccidentalBatch.setSpecies(referentialService.getSpeciesByReferenceTaxonId(refSpeciesTaxonId()));
+ minimalAccidentalBatch.setCaracteristics(new CaracteristicMap());
+ AccidentalBatch result =
+ accidentalBatchService.createAccidentalBatch(minimalAccidentalBatch);
+ return result;
+ }
+
+ public IndividualObservationBatch createMinimalIndividualObservationBatch(FishingOperation fishingOperation) {
+
+ setUp();
+
+ IndividualObservationBatch minimalAccidentalBatch = TuttiBeanFactory.newIndividualObservationBatch();
+ minimalAccidentalBatch.setFishingOperation(fishingOperation);
+ minimalAccidentalBatch.setSpecies(referentialService.getSpeciesByReferenceTaxonId(refSpeciesTaxonId()));
+ minimalAccidentalBatch.setCaracteristics(new CaracteristicMap());
+ minimalAccidentalBatch.setLengthStepCaracteristic(referentialService.getCaracteristic(refNumericalPmfmId()));
+ minimalAccidentalBatch.setSize(10.0f);
+ minimalAccidentalBatch.setWeight(5.f);
+
+ IndividualObservationBatch result =
+ individualObservationBatchService.createIndividualObservationBatch(minimalAccidentalBatch);
+ return result;
+ }
+}
Copied: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java (from rev 927, trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java)
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -0,0 +1,453 @@
+package fr.ifremer.tutti.persistence.test;
+
+/*
+ * #%L
+ * Tutti :: Persistence API
+ * $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.base.Predicate;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.persistence.RessourceClassLoader;
+import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
+import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfigOption;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assume;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runner.notification.Failure;
+import org.junit.runners.model.Statement;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.config.ApplicationConfig;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+
+/**
+ * To box the persistence service as a test resource.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class DatabaseResource implements TestRule {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(DatabaseResource.class);
+
+ public static final String TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT =
+ "tutti.persistence.jdbc.createScript";
+
+ public static long BUILD_TIMESTAMP = System.nanoTime();
+
+ private static ClassLoader oldClassLoader;
+
+ protected RessourceClassLoader loader;
+
+ private File resourceDirectory;
+
+ private TuttiPersistenceConfig config;
+
+ private DatabaseFixtures fixtures;
+
+ private final String beanFactoryReferenceLocation;
+
+ private final String beanRefFactoryReferenceId;
+
+ private final boolean writeDb;
+
+ private String dbName;
+
+ public static DatabaseResource readDb() {
+ return new DatabaseResource("");
+ }
+
+ public static DatabaseResource writeDb() {
+ return new DatabaseResource("", true);
+ }
+
+ public static DatabaseResource readDb(String dbName) {
+ return new DatabaseResource(dbName);
+ }
+
+ public static DatabaseResource writeDb(String dbName) {
+ return new DatabaseResource(dbName, true);
+ }
+
+ public static DatabaseResource noDb() {
+ return new DatabaseResource(
+ "", "beanRefFactoryWitNoDb.xml", "TuttiBeanRefFactoryWithNoDb");
+ }
+
+ protected DatabaseResource(String dbName) {
+ this(dbName, null, null, false);
+ }
+
+ protected DatabaseResource(String dbName, boolean writeDb) {
+ this(dbName, null, null, writeDb);
+ }
+
+ protected DatabaseResource(String dbName, String beanFactoryReferenceLocation,
+ String beanRefFactoryReferenceId) {
+ this(dbName, beanFactoryReferenceLocation,
+ beanRefFactoryReferenceId, false);
+ }
+
+ protected DatabaseResource(String dbName, String beanFactoryReferenceLocation,
+ String beanRefFactoryReferenceId,
+ boolean writeDb) {
+ this.dbName = dbName;
+ this.beanFactoryReferenceLocation = beanFactoryReferenceLocation;
+ this.beanRefFactoryReferenceId = beanRefFactoryReferenceId;
+ this.writeDb = writeDb;
+ }
+
+ public TuttiPersistenceConfig getConfig() {
+ return config;
+ }
+
+ public DatabaseFixtures getFixtures() {
+ return fixtures;
+ }
+
+ public File getResourceDirectory(String name) {
+ return new File(resourceDirectory, name);
+ }
+
+ @Override
+ public Statement apply(final Statement base, final Description description) {
+
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ before(description);
+ try {
+ base.evaluate();
+ } finally {
+ after(description);
+ }
+ }
+ };
+ }
+
+ Class<?> testClass;
+
+ protected void before(Description description) throws Throwable {
+
+ TuttiRunListener.beforeClass(description);
+
+ testClass = description.getTestClass();
+
+ boolean defaultDbName = StringUtils.isEmpty(dbName);
+
+ if (defaultDbName) {
+ dbName = "db";
+ }
+ File db = new File("src/test/" + dbName);
+ if (!db.exists()) {
+
+ if (log.isWarnEnabled()) {
+ log.warn("Could not find db at " + db + ", test [" +
+ testClass + "] is skipped.");
+ }
+ Assume.assumeTrue(false);
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Prepare test " + testClass);
+ }
+
+ fixtures = new DatabaseFixtures();
+
+ resourceDirectory = FileUtil.getTestSpecificDirectory(testClass, "", null, BUILD_TIMESTAMP);
+
+ loader = new RessourceClassLoader(testClass.getClassLoader());
+
+ oldClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(loader);
+
+ // check that config file is in classpath (avoid to find out why it does not works...)
+ String configFilename = writeDb ?
+ "tutti-test-write" :
+ "tutti-test-read";
+ if (!defaultDbName) {
+ configFilename += "-" + dbName;
+ }
+ configFilename += ".properties";
+ InputStream resourceAsStream = getClass().getResourceAsStream("/" + configFilename);
+ Preconditions.checkNotNull(resourceAsStream, "Could not find " + configFilename + " in test class-path");
+
+ ApplicationConfig applicationConfig = new ApplicationConfig(configFilename);
+ applicationConfig.loadDefaultOptions(
+ TuttiPersistenceConfigOption.values());
+ applicationConfig.setDefaultOption(
+ "tutti.data.directory",
+ new File(resourceDirectory, "data").getAbsolutePath());
+ applicationConfig.parse();
+
+ config = new TuttiPersistenceConfig(applicationConfig);
+
+ if (writeDb) {
+ copyDb(config.getDbDirectory(), !writeDb, null);
+ }
+
+ toDetroy.add(config.getDbAttachmentDirectory());
+
+ // load db config
+ File dbConfig = new File(config.getDbDirectory(), config.getDbName() + ".properties");
+ Properties p = new Properties();
+ BufferedReader reader = Files.newReader(dbConfig, Charsets.UTF_8);
+ p.load(reader);
+ reader.close();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Db config: " + dbConfig + "\n" + p);
+ }
+
+ if (writeDb) {
+
+ // make sure db is on readonly mode
+ String readonly = p.getProperty("readonly");
+ Preconditions.checkNotNull(readonly, "Could not find readonly property on db confg: " + dbConfig);
+ Preconditions.checkState("false".equals(readonly), "readonly property must be at false value in write mode test in db confg: " + dbConfig);
+ } else {
+ // make sure db is on readonly mode
+ String readonly = p.getProperty("readonly");
+ Preconditions.checkNotNull(readonly, "Could not find readonly property on db confg: " + dbConfig);
+ Preconditions.checkState("true".equals(readonly), "readonly property must be at true value in read mode test in db confg: " + dbConfig);
+ }
+
+ config.initConfig(loader);
+
+ TuttiPersistenceConfig.setInstance(config);
+
+ if (log.isInfoEnabled()) {
+ log.info("Use db: " + config.getJdbcUrl());
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Use conf.properties at " + config.getDbConfigurationPath());
+ }
+
+ if (beanFactoryReferenceLocation != null) {
+ TuttiPersistenceServiceLocator.initTutti(
+ beanFactoryReferenceLocation,
+ beanRefFactoryReferenceId);
+ }
+ }
+
+ protected final Set<File> toDetroy = Sets.newHashSet();
+
+ public void addToDestroy(File dir) {
+ toDetroy.add(dir);
+ }
+
+ public void copyDb(String dbDirectory, boolean readonly, Properties p) throws IOException {
+ File externalDbFile = getResourceDirectory(dbDirectory);
+ copyDb(externalDbFile, readonly, p);
+ }
+
+ public void copyDb(File target, boolean readonly, Properties p) throws IOException {
+ File db = new File("src/test/" + dbName);
+ if (!db.exists()) {
+
+ if (log.isWarnEnabled()) {
+ log.warn("Could not find db at " + db + ", test [" +
+ testClass + "] is skipped.");
+ }
+ Assume.assumeTrue(false);
+ }
+ toDetroy.add(target);
+ FileUtils.copyDirectory(db, target);
+ if (p != null) {
+ TuttiEntities.fillConnectionProperties(
+ p,
+ TuttiEntities.getJdbcUrl(target, config.getDbName()),
+ config.getJdbcUsername(),
+ config.getJdbcPassword());
+ }
+
+ // load db config
+ File dbConfig = new File(target, config.getDbName() + ".properties");
+ Properties dbconf = new Properties();
+ BufferedReader reader = Files.newReader(dbConfig, Charsets.UTF_8);
+ dbconf.load(reader);
+ reader.close();
+
+ // switch readonly flag according to the write parameter
+ dbconf.setProperty("readonly", String.valueOf(readonly));
+ BufferedWriter writer = Files.newWriter(dbConfig, Charsets.UTF_8);
+ dbconf.store(writer, "");
+ writer.close();
+
+ }
+
+ protected void after(Description description) throws IOException {
+ if (log.isInfoEnabled()) {
+ log.info("After test " + testClass);
+ }
+
+ Set<Failure> failures = TuttiRunListener.getFailuresForClass(
+ description.getClassName());
+
+ if (failures.isEmpty()) {
+
+ // can destroy directories
+ for (File file : toDetroy) {
+ if (file.exists()) {
+ if (log.isInfoEnabled()) {
+ log.info("Destroy directory: " + file);
+ }
+ try {
+ FileUtils.deleteDirectory(file);
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Could not delete directory: " + file, e);
+ }
+ }
+ }
+ }
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Won't destroy directories cause of failures in test.");
+ }
+ }
+
+ // push back old classLoader
+ if (oldClassLoader != null) {
+ Thread.currentThread().setContextClassLoader(oldClassLoader);
+ }
+
+ TuttiPersistenceServiceLocator.close();
+
+ if (beanFactoryReferenceLocation != null) {
+
+ // push back default tutti configuration
+ TuttiPersistenceServiceLocator.initTuttiDefault();
+ }
+
+ TuttiPersistenceConfig.setInstance(null);
+ }
+
+ public Connection createEmptyDb(String dbDirectory,
+ String dbName) throws IOException, SQLException {
+ return createEmptyDb(dbDirectory, dbName, null);
+ }
+
+ public Connection createEmptyDb(String dbDirectory,
+ String dbName, Properties p) throws IOException, SQLException {
+ File externalDbFile = getResourceDirectory(dbDirectory);
+ return createEmptyDb(externalDbFile, dbName, p);
+ }
+
+ public Connection createEmptyDb(File directory,
+ String dbName) throws SQLException, IOException {
+
+ return createEmptyDb(directory, dbName, null);
+ }
+
+ public Connection createEmptyDb(File directory,
+ String dbName, Properties p) throws SQLException, IOException {
+
+ if (log.isInfoEnabled()) {
+ log.info("Create new db at " + directory);
+ }
+ addToDestroy(directory);
+ String jdbcUrl = TuttiEntities.getJdbcUrl(directory, dbName);
+ String user = "SA";
+ String password = "";
+
+ if (p != null) {
+ TuttiEntities.fillConnectionProperties(p, jdbcUrl, user, password);
+ }
+ File scriptFile = config.getConfig().getOptionAsFile(TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT);
+
+ Preconditions.checkNotNull("Could not find db script in configuration with key " + TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT);
+ Preconditions.checkState(scriptFile.exists(), "Could not find db script at " + scriptFile);
+
+ if (log.isInfoEnabled()) {
+ log.info("Will use create script: " + scriptFile);
+ }
+ Connection connection = TuttiEntities.createConnection(jdbcUrl, user, password);
+
+ if (log.isInfoEnabled()) {
+ log.info("Created connection at " + connection.getMetaData().getURL());
+ }
+
+ List<String> importScriptSql = getImportScriptSql(scriptFile);
+ for (String sql : importScriptSql) {
+ PreparedStatement statement = connection.prepareStatement(sql);
+ statement.execute();
+ }
+ connection.commit();
+ return connection;
+ }
+
+ protected List<String> getImportScriptSql(File scriptFile) throws IOException {
+ List<String> lines = Files.readLines(scriptFile, Charsets.UTF_8);
+
+ List<String> result = Lists.newArrayListWithCapacity(lines.size());
+
+ Predicate<String> predicate = new Predicate<String>() {
+
+ Set<String> forbiddenStarts = Sets.newHashSet(
+ "SET ",
+ "CREATE USER ",
+ "CREATE SCHEMA ",
+ "GRANT DBA TO ");
+
+ @Override
+ public boolean apply(String input) {
+ boolean accept = true;
+ for (String forbiddenStart : forbiddenStarts) {
+ if (input.startsWith(forbiddenStart)) {
+ accept = false;
+ break;
+ }
+ }
+ return accept;
+ }
+ };
+ for (String line : lines) {
+ if (predicate.apply(line.trim().toUpperCase())) {
+ result.add(line);
+ }
+ }
+ return result;
+ }
+}
Copied: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/TuttiRunListener.java (from rev 927, trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java)
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/TuttiRunListener.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/TuttiRunListener.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -0,0 +1,95 @@
+package fr.ifremer.tutti.persistence.test;
+
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $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.Sets;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.runner.Description;
+import org.junit.runner.notification.Failure;
+import org.junit.runner.notification.RunListener;
+
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Listen JUnit test and keep failures (in order to remove or not directories
+ * in {@link DatabaseResource}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0.2
+ */
+public final class TuttiRunListener extends RunListener {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(TuttiRunListener.class);
+
+ protected static final Set<Failure> failures = Sets.newHashSet();
+
+ public static synchronized void beforeClass(Description description) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Start to listen test " + description);
+ }
+
+ Iterator<Failure> iterator = failures.iterator();
+ String className = description.getClassName();
+ while (iterator.hasNext()) {
+ Failure failure = iterator.next();
+ if (className.equals(failure.getDescription().getClassName())) {
+ iterator.remove();
+ }
+ }
+ }
+
+ public static synchronized Set<Failure> getFailuresForClass(String className) {
+ Set<Failure> result = Sets.newHashSet();
+ for (Failure failure : failures) {
+ if (className.equals(failure.getDescription().getClassName())) {
+ result.add(failure);
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public void testFailure(Failure failure) throws Exception {
+ if (log.isDebugEnabled()) {
+ log.debug("Adding failure: " + failure + ", for description: " + failure.getDescription());
+ }
+ failures.add(failure);
+ super.testFailure(failure);
+
+ }
+
+ @Override
+ public void testAssumptionFailure(Failure failure) {
+ if (log.isDebugEnabled()) {
+ log.debug("Adding assumptionFailure: " + failure + ", for description: " + failure.getDescription());
+ }
+ failures.add(failure);
+ super.testAssumptionFailure(failure);
+ }
+}
Copied: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/TuttiRunner.java (from rev 927, trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunner.java)
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/TuttiRunner.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/TuttiRunner.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -0,0 +1,64 @@
+package fr.ifremer.tutti.persistence.test;
+
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $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 org.junit.runner.notification.RunNotifier;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.junit.runners.model.FrameworkMethod;
+import org.junit.runners.model.InitializationError;
+
+/**
+ * To use {@link TuttiRunListener}.
+ * <p/>
+ * Add this on top of your test (when run in IDE, otherise maven already add
+ * the listener for you, so no need of the runner).
+ * <pre>
+ * \(a)RunWith(TuttiRunner.class)
+ * </pre>
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0.2
+ */
+
+public class TuttiRunner extends BlockJUnit4ClassRunner {
+
+ public static final TuttiRunListener TUTTI_RUN_LISTENER = new TuttiRunListener();
+
+ /**
+ * Creates a BlockJUnit4ClassRunner to run {@code klass}
+ *
+ * @throws InitializationError if the test class is malformed.
+ */
+ public TuttiRunner(Class<?> klass) throws InitializationError {
+ super(klass);
+ }
+
+ @Override
+ protected void runChild(FrameworkMethod method, RunNotifier notifier) {
+ notifier.removeListener(TUTTI_RUN_LISTENER);
+ notifier.addListener(TUTTI_RUN_LISTENER);
+ super.runChild(method, notifier);
+ }
+}
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Deleted: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -1,421 +0,0 @@
-package fr.ifremer.tutti.persistence;
-
-/*
- * #%L
- * Tutti :: Persistence API
- * $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 fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
-import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
-import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-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.persistence.service.AccidentalBatchPersistenceService;
-import fr.ifremer.tutti.persistence.service.CatchBatchPersistenceService;
-import fr.ifremer.tutti.persistence.service.CruisePersistenceService;
-import fr.ifremer.tutti.persistence.service.FishingOperationPersistenceService;
-import fr.ifremer.tutti.persistence.service.IndividualObservationBatchPersistenceService;
-import fr.ifremer.tutti.persistence.service.ProgramPersistenceService;
-import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
-import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
-import org.junit.Assert;
-
-import java.io.Serializable;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-/**
- * Fixtures for the allegro db.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class DatabaseFixtures {
-
- public String programCode() {
- // campaign CGFS
- return "CAM-CGFS";
- }
-
- public String cruiseId() {
- // cruise CGFS2010
- return "100000";
- }
-
- public String fishingVesselCode() {
- return "851751";
- }
-
- public String zoneId() {
- // zone CGFS
- return "61979";
- }
-
- public String strataId() {
- // strate 6M
- return "57377";
- }
-
- public String subStrataId() {
- // substrata 61995
- return "61995";
- }
-
- public String localite() {
- // Localite 8Q3
- return "57774";
- }
-
- public int refNbCaracteristic() {
- return 481;
- }
-
- public int refNbSpecies() {
- return 16961;
- }
-
- public int refNbReferentSpecies() {
- return 8649;
- }
-
- public int refNbScientificGear() {
- return 9;
- }
-
- public int refNbFishingGear() {
- return 75;
- }
-
- public int refNbCountry() {
- return 239;
- }
-
- public int refNbHarbour() {
- return 1898;
- }
-
- public int refNbProgramZone() {
- return 14;
- }
-
- public int refNbStrata() {
- return 76;
- }
-
- public int refNbSubStrata() {
- return 16;
- }
-
- public int refNbLocalite() {
- return 129;
- }
-
- public int refNbFishingVessel() {
- return 24837;
- }
-
- public int refNbScientificVessel() {
- return 3;
- }
-
- public int refNbPerson() {
- return 128;
- }
-
- public int refNbObjectType() {
- return 57;
- }
-
- public String refSpeciesId() {
- return "15923";
- }
-
- public Integer refSpeciesTaxonId() {
- return 467;
- }
-
- public Integer refNumericalPmfmId() {
- return 113;
- }
-
- public Integer refAlphanumericPmfmId() {
- return 1424;
- }
-
- public String refSpeciesRefTaxCode() {
- return "SEPIOFF ";
- }
-
- public String refSpeciesVernacularCode() {
- return "Seiche";
- }
-
- public Integer refBadSpeciesTaxonId() {
- return 7632;
- }
-
- public Integer refBad2SpeciesTaxonId() {
- return 2320;
- }
-
- public String objectTypeCode() {
- return "BATCH";
- }
-
- public Integer caracteristicWithNullQualitativeValue() {
- return 114;
- }
-
- protected CruisePersistenceService cruiseService;
-
- protected ProgramPersistenceService programService;
-
- protected FishingOperationPersistenceService fishingOperationService;
-
- protected CatchBatchPersistenceService catchBatchService;
-
- protected ReferentialPersistenceService referentialService;
-
- protected AccidentalBatchPersistenceService accidentalBatchService;
-
- protected IndividualObservationBatchPersistenceService individualObservationBatchService;
-
- public void setUp() {
- if (referentialService == null) {
- referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
- programService = TuttiPersistenceServiceLocator.getProgramPersistenceService();
- cruiseService = TuttiPersistenceServiceLocator.getCruisePersistenceService();
- fishingOperationService = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
- catchBatchService = TuttiPersistenceServiceLocator.getCatchBatchPersistenceService();
- accidentalBatchService = TuttiPersistenceServiceLocator.getAccidentalBatchPersistenceService();
- individualObservationBatchService = TuttiPersistenceServiceLocator.getIndividualObservationBatchPersistenceService();
- }
- }
-
- public Cruise createCruise() {
-
- setUp();
-
- String programCode = programCode();
- Cruise cruise = TuttiBeanFactory.newCruise();
-
- // -----------------------------------------------------------------------------
- // 1. Test with all properties filled
- // -----------------------------------------------------------------------------
- cruise.setId((String) null);
-
- cruise.setName("Unit-test-" + System.currentTimeMillis());
-
- cruise.setProgram(programService.getProgram(programCode));
-
- Calendar calendar = new GregorianCalendar();
- cruise.setBeginDate(calendar.getTime());
-
- calendar.add(Calendar.MONTH, 1); // add one month
- cruise.setEndDate(calendar.getTime());
-
- List<TuttiLocation> allHarbour = referentialService.getAllHarbour();
- Assert.assertNotNull(allHarbour);
- Assert.assertTrue(allHarbour.size() > 1);
- cruise.setDepartureLocation(allHarbour.get(0));
- cruise.setReturnLocation(allHarbour.get(1));
-
- List<Gear> gears = referentialService.getAllFishingGear();
- cruise.setGear(Lists.newArrayList(gears));
-
- cruise.setComment("My comments on cruise");
- cruise.setSurveyPart("SurveyPart");
-
- Person managerPerson = referentialService.getAllPerson().get(0);
- cruise.setHeadOfMission(Lists.newArrayList(managerPerson));
-
- Vessel fishingVessel = TuttiBeanFactory.newVessel();
- fishingVessel.setId(fishingVesselCode());
-
- cruise.setVessel(fishingVessel);
-
- cruise.setMultirigNumber(2);
-
- Cruise result = cruiseService.createCruise(cruise);
- return result;
- }
-
- public FishingOperation createFishingOperation(Cruise cruise) {
- setUp();
-
- FishingOperation fishingOperation = TuttiBeanFactory.newFishingOperation();
- fishingOperation.setCruise(cruise);
- fishingOperation.setComment("newFishingOperation");
- fishingOperation.setFishingOperationNumber(1);
-
- // Retrieve some environment caracteristics
- List<Caracteristic> allEnvironmentCaracteristics = referentialService.getAllCaracteristic();
- CaracteristicMap environmentCaracteristics = new CaracteristicMap();
- CaracteristicMap environmentValuesOneEntry = new CaracteristicMap();
- int count=0;
- for (Caracteristic caracteristic : allEnvironmentCaracteristics) {
- if (count==3) {
- break;
- }
- Serializable value = null;
- if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
- value = 1.0f;
- count++;
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
- value = "some text";
- count++;
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
- && caracteristic.getQualitativeValue(0) != null) {
- // Choose the first qualitative value
- value = caracteristic.getQualitativeValue(0);
- count++;
- }
- if (value != null) {
- environmentCaracteristics.put(caracteristic, value);
- if (environmentValuesOneEntry.size() == 0) {
- environmentValuesOneEntry.put(caracteristic, value);
- }
- }
- }
-
- // Retrieve some gear use caracteristics
- List<Caracteristic> allGearShootingCaracteristics = referentialService.getAllCaracteristic();
- CaracteristicMap gearShootingCaracteristics = new CaracteristicMap();
- CaracteristicMap gearShootingCaracteristicsOneEntry = new CaracteristicMap();
- count=0;
- for (Caracteristic caracteristic : allGearShootingCaracteristics) {
- if (count==3) {
- break;
- }
- Serializable value = null;
- if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
- value = 1.0f;
- count++;
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
- value = "some text";
- count++;
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
- && caracteristic.getQualitativeValue(0) != null) {
- // Choose the first qualitative value
- value = caracteristic.getQualitativeValue(0);
- count++;
- }
- if (value != null) {
- gearShootingCaracteristics.put(caracteristic, value);
- if (gearShootingCaracteristicsOneEntry.size() == 0) {
- gearShootingCaracteristicsOneEntry.put(caracteristic, value);
- }
- }
- }
-
- Calendar calendar = Calendar.getInstance();
- fishingOperation.setId((String) null);
- fishingOperation.setStationNumber("STA2");
- fishingOperation.setFishingOperationNumber(2);
- fishingOperation.setMultirigAggregation("1");
- calendar.setTime(new Date());
- calendar.set(Calendar.HOUR_OF_DAY, 1);
- calendar.set(Calendar.MILLISECOND, 99);
- fishingOperation.setGearShootingStartDate(calendar.getTime());
- calendar.setTime(new Date());
- calendar.set(Calendar.HOUR_OF_DAY, 10);
- calendar.set(Calendar.MILLISECOND, 99);
- fishingOperation.setGearShootingEndDate(calendar.getTime());
- fishingOperation.setGearShootingStartLatitude(47.6f);
- fishingOperation.setGearShootingStartLongitude(-5.05f);
- fishingOperation.setGearShootingEndLatitude(47.9854f);
- fishingOperation.setGearShootingEndLongitude(-5.597f);
-
- fishingOperation.setTrawlDistance(100.12345f);
- fishingOperation.setFishingOperationRectiligne(true);
- fishingOperation.setFishingOperationValid(Boolean.TRUE);
- fishingOperation.setComment("Unit test createFishingOperation() - Part n°2 : All properties set");
- fishingOperation.setGear(cruise.getGear(0));
- fishingOperation.setVessel(cruise.getVessel());
- fishingOperation.setVesselUseFeatures(environmentCaracteristics);
- fishingOperation.setGearUseFeatures(gearShootingCaracteristics);
-
- TuttiLocation strata = TuttiBeanFactory.newTuttiLocation();
- strata.setId(strataId());
- fishingOperation.setStrata(strata);
- TuttiLocation subStrata = TuttiBeanFactory.newTuttiLocation();
- subStrata.setId(subStrataId());
- fishingOperation.setSubStrata(subStrata);
- TuttiLocation localite = TuttiBeanFactory.newTuttiLocation();
- localite.setId(localite());
- fishingOperation.setLocation(localite);
-
- FishingOperation result = fishingOperationService.createFishingOperation(fishingOperation);
- return result;
- }
-
- public CatchBatch createMinimalCatchBatch(FishingOperation fishingOperation) {
-
- setUp();
-
- CatchBatch catchBatch = TuttiBeanFactory.newCatchBatch();
- catchBatch.setFishingOperation(fishingOperation);
- CatchBatch result = catchBatchService.createCatchBatch(catchBatch);
- return result;
- }
-
- public AccidentalBatch createMinimalAccidentalBatch(FishingOperation fishingOperation) {
-
- setUp();
-
- AccidentalBatch minimalAccidentalBatch = TuttiBeanFactory.newAccidentalBatch();
- minimalAccidentalBatch.setFishingOperation(fishingOperation);
- minimalAccidentalBatch.setSpecies(referentialService.getSpeciesByReferenceTaxonId(refSpeciesTaxonId()));
- minimalAccidentalBatch.setCaracteristics(new CaracteristicMap());
- AccidentalBatch result =
- accidentalBatchService.createAccidentalBatch(minimalAccidentalBatch);
- return result;
- }
-
- public IndividualObservationBatch createMinimalIndividualObservationBatch(FishingOperation fishingOperation) {
-
- setUp();
-
- IndividualObservationBatch minimalAccidentalBatch = TuttiBeanFactory.newIndividualObservationBatch();
- minimalAccidentalBatch.setFishingOperation(fishingOperation);
- minimalAccidentalBatch.setSpecies(referentialService.getSpeciesByReferenceTaxonId(refSpeciesTaxonId()));
- minimalAccidentalBatch.setCaracteristics(new CaracteristicMap());
- minimalAccidentalBatch.setLengthStepCaracteristic(referentialService.getCaracteristic(refNumericalPmfmId()));
- minimalAccidentalBatch.setSize(10.0f);
- minimalAccidentalBatch.setWeight(5.f);
-
- IndividualObservationBatch result =
- individualObservationBatchService.createIndividualObservationBatch(minimalAccidentalBatch);
- return result;
- }
-}
Deleted: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -1,450 +0,0 @@
-package fr.ifremer.tutti.persistence;
-
-/*
- * #%L
- * Tutti :: Persistence API
- * $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.base.Predicate;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import com.google.common.io.Files;
-import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
-import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfigOption;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Assume;
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runner.notification.Failure;
-import org.junit.runners.model.Statement;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.config.ApplicationConfig;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-/**
- * To box the persistence service as a test resource.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class DatabaseResource implements TestRule {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(DatabaseResource.class);
-
- public static final String TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT = "tutti.persistence.jdbc.createScript";
-
- public static long BUILD_TIMESTAMP = System.nanoTime();
-
- private static ClassLoader oldClassLoader;
-
- private File resourceDirectory;
-
- private TuttiPersistenceConfig config;
-
- private DatabaseFixtures fixtures;
-
- private final String beanFactoryReferenceLocation;
-
- private final String beanRefFactoryReferenceId;
-
- private final boolean writeDb;
-
- private String dbName;
-
- public static DatabaseResource readDb() {
- return new DatabaseResource("");
- }
-
- public static DatabaseResource writeDb() {
- return new DatabaseResource("", true);
- }
-
- public static DatabaseResource readDb(String dbName) {
- return new DatabaseResource(dbName);
- }
-
- public static DatabaseResource writeDb(String dbName) {
- return new DatabaseResource(dbName, true);
- }
-
- public static DatabaseResource noDb() {
- return new DatabaseResource(
- "", "beanRefFactoryWitNoDb.xml", "TuttiBeanRefFactoryWithNoDb");
- }
-
- protected DatabaseResource(String dbName) {
- this(dbName, null, null, false);
- }
-
- protected DatabaseResource(String dbName, boolean writeDb) {
- this(dbName, null, null, writeDb);
- }
-
- protected DatabaseResource(String dbName, String beanFactoryReferenceLocation,
- String beanRefFactoryReferenceId) {
- this(dbName, beanFactoryReferenceLocation,
- beanRefFactoryReferenceId, false);
- }
-
- protected DatabaseResource(String dbName, String beanFactoryReferenceLocation,
- String beanRefFactoryReferenceId,
- boolean writeDb) {
- this.dbName = dbName;
- this.beanFactoryReferenceLocation = beanFactoryReferenceLocation;
- this.beanRefFactoryReferenceId = beanRefFactoryReferenceId;
- this.writeDb = writeDb;
- }
-
- public TuttiPersistenceConfig getConfig() {
- return config;
- }
-
- public DatabaseFixtures getFixtures() {
- return fixtures;
- }
-
- public File getResourceDirectory(String name) {
- return new File(resourceDirectory, name);
- }
-
- @Override
- public Statement apply(final Statement base, final Description description) {
-
- return new Statement() {
- @Override
- public void evaluate() throws Throwable {
- before(description);
- try {
- base.evaluate();
- } finally {
- after(description);
- }
- }
- };
- }
-
- Class<?> testClass;
-
- protected void before(Description description) throws Throwable {
-
- TuttiRunListener.beforeClass(description);
-
- testClass = description.getTestClass();
-
- boolean defaultDbName = StringUtils.isEmpty(dbName);
-
- if (defaultDbName) {
- dbName = "db";
- }
- File db = new File("src/test/" + dbName);
- if (!db.exists()) {
-
- if (log.isWarnEnabled()) {
- log.warn("Could not find db at " + db + ", test [" +
- testClass + "] is skipped.");
- }
- Assume.assumeTrue(false);
- }
-
- if (log.isInfoEnabled()) {
- log.info("Prepare test " + testClass);
- }
-
- fixtures = new DatabaseFixtures();
-
- resourceDirectory = FileUtil.getTestSpecificDirectory(testClass, "", null, BUILD_TIMESTAMP);
-
- RessourceClassLoader loader =
- new RessourceClassLoader(testClass.getClassLoader());
-
- oldClassLoader = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(loader);
-
- // check that config file is in classpath (avoid to find out why it does not works...)
- String configFilename = writeDb ?
- "tutti-test-write" :
- "tutti-test-read";
- if (!defaultDbName) {
- configFilename += "-" + dbName;
- }
- configFilename += ".properties";
- InputStream resourceAsStream = getClass().getResourceAsStream("/" + configFilename);
- Preconditions.checkNotNull(resourceAsStream, "Could not find " + configFilename + " in test class-path");
-
- ApplicationConfig applicationConfig = new ApplicationConfig(configFilename);
- applicationConfig.loadDefaultOptions(
- TuttiPersistenceConfigOption.values());
- applicationConfig.setDefaultOption(
- "tutti.data.directory",
- new File(resourceDirectory, "data").getAbsolutePath());
- applicationConfig.parse();
-
- config = new TuttiPersistenceConfig(applicationConfig);
-
- if (writeDb) {
- copyDb(config.getDbDirectory(), !writeDb, null);
- }
-
- toDetroy.add(config.getDbAttachmentDirectory());
-
- // load db config
- File dbConfig = new File(config.getDbDirectory(), config.getDbName() + ".properties");
- Properties p = new Properties();
- BufferedReader reader = Files.newReader(dbConfig, Charsets.UTF_8);
- p.load(reader);
- reader.close();
-
- if (log.isDebugEnabled()) {
- log.debug("Db config: " + dbConfig + "\n" + p);
- }
-
- if (writeDb) {
-
- // make sure db is on readonly mode
- String readonly = p.getProperty("readonly");
- Preconditions.checkNotNull(readonly, "Could not find readonly property on db confg: " + dbConfig);
- Preconditions.checkState("false".equals(readonly), "readonly property must be at false value in write mode test in db confg: " + dbConfig);
- } else {
- // make sure db is on readonly mode
- String readonly = p.getProperty("readonly");
- Preconditions.checkNotNull(readonly, "Could not find readonly property on db confg: " + dbConfig);
- Preconditions.checkState("true".equals(readonly), "readonly property must be at true value in read mode test in db confg: " + dbConfig);
- }
-
- config.initConfig(loader);
-
- TuttiPersistenceConfig.setInstance(config);
-
- if (log.isInfoEnabled()) {
- log.info("Use db: " + config.getJdbcUrl());
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Use conf.properties at " + config.getDbConfigurationPath());
- }
-
- if (beanFactoryReferenceLocation != null) {
- TuttiPersistenceServiceLocator.initTutti(
- beanFactoryReferenceLocation,
- beanRefFactoryReferenceId);
- }
- }
-
- protected final Set<File> toDetroy = Sets.newHashSet();
-
- public void addToDestroy(File dir) {
- toDetroy.add(dir);
- }
-
- public void copyDb(String dbDirectory, boolean readonly, Properties p) throws IOException {
- File externalDbFile = getResourceDirectory(dbDirectory);
- copyDb(externalDbFile, readonly, p);
- }
-
- public void copyDb(File target, boolean readonly, Properties p) throws IOException {
- File db = new File("src/test/db");
- if (!db.exists()) {
-
- if (log.isWarnEnabled()) {
- log.warn("Could not find db at " + db + ", test [" +
- testClass + "] is skipped.");
- }
- Assume.assumeTrue(false);
- }
- toDetroy.add(target);
- FileUtils.copyDirectory(db, target);
- if (p != null) {
- TuttiEntities.fillConnectionProperties(
- p,
- TuttiEntities.getJdbcUrl(target, config.getDbName()),
- config.getJdbcUsername(),
- config.getJdbcPassword());
- }
-
- // load db config
- File dbConfig = new File(target, config.getDbName() + ".properties");
- Properties dbconf = new Properties();
- BufferedReader reader = Files.newReader(dbConfig, Charsets.UTF_8);
- dbconf.load(reader);
- reader.close();
-
- // switch readonly flag according to the write parameter
- dbconf.setProperty("readonly", String.valueOf(readonly));
- BufferedWriter writer = Files.newWriter(dbConfig, Charsets.UTF_8);
- dbconf.store(writer, "");
- writer.close();
-
- }
-
- protected void after(Description description) throws IOException {
- if (log.isInfoEnabled()) {
- log.info("After test " + testClass);
- }
-
- Set<Failure> failures = TuttiRunListener.getFailuresForClass(
- description.getClassName());
-
- if (failures.isEmpty()) {
-
- // can destroy directories
- for (File file : toDetroy) {
- if (file.exists()) {
- if (log.isInfoEnabled()) {
- log.info("Destroy directory: " + file);
- }
- try {
- FileUtils.deleteDirectory(file);
- } catch (IOException e) {
- if (log.isErrorEnabled()) {
- log.error("Could not delete directory: " + file, e);
- }
- }
- }
- }
- } else {
- if (log.isWarnEnabled()) {
- log.warn("Won't destroy directories cause of failures in test.");
- }
- }
-
- // push back old classLoader
- if (oldClassLoader != null) {
- Thread.currentThread().setContextClassLoader(oldClassLoader);
- }
-
- TuttiPersistenceServiceLocator.close();
-
- if (beanFactoryReferenceLocation != null) {
-
- // push back default tutti configuration
- TuttiPersistenceServiceLocator.initTuttiDefault();
- }
-
- TuttiPersistenceConfig.setInstance(null);
- }
-
- public Connection createEmptyDb(String dbDirectory,
- String dbName) throws IOException, SQLException {
- return createEmptyDb(dbDirectory, dbName, null);
- }
-
- public Connection createEmptyDb(String dbDirectory,
- String dbName, Properties p) throws IOException, SQLException {
- File externalDbFile = getResourceDirectory(dbDirectory);
- return createEmptyDb(externalDbFile, dbName, p);
- }
-
- public Connection createEmptyDb(File directory,
- String dbName) throws SQLException, IOException {
-
- return createEmptyDb(directory, dbName, null);
- }
-
- public Connection createEmptyDb(File directory,
- String dbName, Properties p) throws SQLException, IOException {
-
- if (log.isInfoEnabled()) {
- log.info("Create new db at " + directory);
- }
- addToDestroy(directory);
- String jdbcUrl = TuttiEntities.getJdbcUrl(directory, dbName);
- String user = "SA";
- String password = "";
-
- if (p != null) {
- TuttiEntities.fillConnectionProperties(p, jdbcUrl, user, password);
- }
- File scriptFile = config.getConfig().getOptionAsFile(TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT);
-
- Preconditions.checkNotNull("Could not find db script in configuration with key " + TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT);
- Preconditions.checkState(scriptFile.exists(), "Could not find db script at " + scriptFile);
-
- if (log.isInfoEnabled()) {
- log.info("Will use create script: " + scriptFile);
- }
- Connection connection = TuttiEntities.createConnection(jdbcUrl, user, password);
-
- if (log.isInfoEnabled()) {
- log.info("Created connection at " + connection.getMetaData().getURL());
- }
-
- List<String> importScriptSql = getImportScriptSql(scriptFile);
- for (String sql : importScriptSql) {
- PreparedStatement statement = connection.prepareStatement(sql);
- statement.execute();
- }
- connection.commit();
- return connection;
- }
-
- protected List<String> getImportScriptSql(File scriptFile) throws IOException {
- List<String> lines = Files.readLines(scriptFile, Charsets.UTF_8);
-
- List<String> result = Lists.newArrayListWithCapacity(lines.size());
-
- Predicate<String> predicate = new Predicate<String>() {
-
- Set<String> forbiddenStarts = Sets.newHashSet(
- "SET ",
- "CREATE USER ",
- "CREATE SCHEMA ",
- "GRANT DBA TO ");
-
- @Override
- public boolean apply(String input) {
- boolean accept = true;
- for (String forbiddenStart : forbiddenStarts) {
- if (input.startsWith(forbiddenStart)) {
- accept = false;
- break;
- }
- }
- return accept;
- }
- };
- for (String line : lines) {
- if (predicate.apply(line.trim().toUpperCase())) {
- result.add(line);
- }
- }
- return result;
- }
-}
Deleted: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunListener.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -1,95 +0,0 @@
-package fr.ifremer.tutti.persistence;
-
-/*
- * #%L
- * Tutti :: Persistence
- * $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.Sets;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.runner.Description;
-import org.junit.runner.notification.Failure;
-import org.junit.runner.notification.RunListener;
-
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * Listen JUnit test and keep failures (in order to remove or not directories
- * in {@link DatabaseResource}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0.2
- */
-public final class TuttiRunListener extends RunListener {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(TuttiRunListener.class);
-
- protected static final Set<Failure> failures = Sets.newHashSet();
-
- public static synchronized void beforeClass(Description description) {
-
- if (log.isDebugEnabled()) {
- log.debug("Start to listen test " + description);
- }
-
- Iterator<Failure> iterator = failures.iterator();
- String className = description.getClassName();
- while (iterator.hasNext()) {
- Failure failure = iterator.next();
- if (className.equals(failure.getDescription().getClassName())) {
- iterator.remove();
- }
- }
- }
-
- public static synchronized Set<Failure> getFailuresForClass(String className) {
- Set<Failure> result = Sets.newHashSet();
- for (Failure failure : failures) {
- if (className.equals(failure.getDescription().getClassName())) {
- result.add(failure);
- }
- }
- return result;
- }
-
- @Override
- public void testFailure(Failure failure) throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Adding failure: " + failure + ", for description: " + failure.getDescription());
- }
- failures.add(failure);
- super.testFailure(failure);
-
- }
-
- @Override
- public void testAssumptionFailure(Failure failure) {
- if (log.isDebugEnabled()) {
- log.debug("Adding assumptionFailure: " + failure + ", for description: " + failure.getDescription());
- }
- failures.add(failure);
- super.testAssumptionFailure(failure);
- }
-}
Deleted: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunner.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunner.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiRunner.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -1,64 +0,0 @@
-package fr.ifremer.tutti.persistence;
-
-/*
- * #%L
- * Tutti :: Persistence
- * $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 org.junit.runner.notification.RunNotifier;
-import org.junit.runners.BlockJUnit4ClassRunner;
-import org.junit.runners.model.FrameworkMethod;
-import org.junit.runners.model.InitializationError;
-
-/**
- * To use {@link TuttiRunListener}.
- * <p/>
- * Add this on top of your test (when run in IDE, otherise maven already add
- * the listener for you, so no need of the runner).
- * <pre>
- * \(a)RunWith(TuttiRunner.class)
- * </pre>
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0.2
- */
-
-public class TuttiRunner extends BlockJUnit4ClassRunner {
-
- public static final TuttiRunListener TUTTI_RUN_LISTENER = new TuttiRunListener();
-
- /**
- * Creates a BlockJUnit4ClassRunner to run {@code klass}
- *
- * @throws InitializationError if the test class is malformed.
- */
- public TuttiRunner(Class<?> klass) throws InitializationError {
- super(klass);
- }
-
- @Override
- protected void runChild(FrameworkMethod method, RunNotifier notifier) {
- notifier.removeListener(TUTTI_RUN_LISTENER);
- notifier.addListener(TUTTI_RUN_LISTENER);
- super.runChild(method, notifier);
- }
-}
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -25,7 +25,7 @@
*/
import com.google.common.collect.Maps;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -26,7 +26,7 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.InvalidBatchModelException;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import org.junit.Before;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.InvalidBatchModelException;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import org.junit.Assert;
import org.junit.Before;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -25,7 +25,7 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import org.junit.Before;
import org.junit.ClassRule;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.data.Program;
import org.junit.Assert;
import org.junit.Before;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -25,7 +25,7 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -25,7 +25,7 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -25,8 +25,8 @@
*/
import fr.ifremer.adagio.core.service.technical.CacheService;
-import fr.ifremer.tutti.persistence.DatabaseFixtures;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseFixtures;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.TuttiEntity;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -25,7 +25,7 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Person;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceReadTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceReadTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -25,7 +25,7 @@
*/
import com.google.common.collect.Maps;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceWriteTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceWriteTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -26,7 +26,7 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFileTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFileTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFileTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import org.junit.Assert;
import org.junit.ClassRule;
import org.junit.Test;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
import org.apache.commons.lang3.ObjectUtils;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.ProgressionModel;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImplTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImplTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImplTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.ProgressionModel;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImplUpTodateTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImplUpTodateTest.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImplUpTodateTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,7 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
import org.hibernate.dialect.Dialect;
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/pom.xml 2013-05-11 15:53:26 UTC (rev 935)
@@ -192,6 +192,23 @@
</plugins>
+
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <properties>
+ <property>
+ <name>listener</name>
+ <value>fr.ifremer.tutti.persistence.test.TuttiRunListener</value>
+ </property>
+ </properties>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
</build>
</project>
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -26,10 +26,13 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import com.itextpdf.text.DocumentException;
import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.TuttiTechnicalException;
-import fr.ifremer.tutti.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.service.AbstractTuttiService;
import fr.ifremer.tutti.service.PersistenceService;
@@ -38,13 +41,20 @@
import freemarker.ext.beans.BeansWrapper;
import freemarker.template.Configuration;
import freemarker.template.Template;
-import freemarker.template.TemplateException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.xhtmlrenderer.pdf.ITextRenderer;
-import java.io.*;
-import java.util.*;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
import static org.nuiton.i18n.I18n._;
@@ -54,6 +64,10 @@
*/
public class ExportCatchesReportService extends AbstractTuttiService {
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ExportCatchesReportService.class);
+
protected Configuration freemarkerConfiguration;
protected PersistenceService persistenceService;
@@ -88,7 +102,7 @@
* Generate the PDF report
*
* @param targetFile pdf file to generate
- * @param locale generated pdf locale
+ * @param locale generated pdf locale
* @return the generated file
* @throws TuttiBusinessException
*/
@@ -108,6 +122,18 @@
// get operation and catch data
String fishingOperationId = fishingOperation.getId();
+
+ boolean withCatchBatch =
+ persistenceService.isFishingOperationWithCatchBatch(
+ fishingOperationId);
+
+ if (!withCatchBatch) {
+ if (log.isWarnEnabled()) {
+ log.warn("Skip fishing operation " + fishingOperation +
+ " since no catchBatch associated.");
+ }
+ continue;
+ }
CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
BatchContainer<SpeciesBatch> rootSpeciesBatch;
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-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -24,7 +24,6 @@
* #L%
*/
-import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
@@ -45,7 +44,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.validator.NuitonValidatorResult;
-import org.nuiton.validator.NuitonValidatorScope;
import java.util.List;
import java.util.Map;
@@ -99,6 +97,18 @@
for (FishingOperation fishingOperation : allFishingOperation) {
String fishingOperationId = fishingOperation.getId();
+
+ boolean withCatchBatch =
+ persistenceService.isFishingOperationWithCatchBatch(
+ fishingOperationId);
+
+ if (!withCatchBatch) {
+ if (log.isWarnEnabled()) {
+ log.warn("Skip fishing operation " + fishingOperation +
+ " since no catchBatch associated.");
+ }
+ continue;
+ }
CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
BatchContainer<SpeciesBatch> rootSpeciesBatch;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -50,7 +50,6 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.validator.NuitonValidatorResult;
import org.nuiton.validator.NuitonValidatorScope;
-import org.springframework.dao.DataRetrievalFailureException;
import java.io.File;
import java.io.IOException;
@@ -180,31 +179,35 @@
String fishingOperationId = fishingOperation.getId();
- try {
- CatchBatch catchBatch =
- persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
+ boolean withCatchBatch =
+ persistenceService.isFishingOperationWithCatchBatch(
+ fishingOperationId);
- checkOperation(fishingOperation, catchBatch, validator);
- } catch (DataRetrievalFailureException e) {
- // batch not found
- if (log.isDebugEnabled()) {
- log.debug("Catch batch not found", e);
+ if (!withCatchBatch) {
+ if (log.isWarnEnabled()) {
+ log.warn("Skip fishing operation " + fishingOperation +
+ " since no catchBatch associated.");
}
Map<String, List<String>> errorMap = Maps.newHashMap();
errorMap.put("catches", Lists.newArrayList(_("tutti.validator.warning.fishingOperation.batch.notFound")));
validator.addMessagesForScope(NuitonValidatorScope.WARNING, errorMap);
+ } else {
+ try {
+ CatchBatch catchBatch =
+ persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
- } catch (InvalidBatchModelException e) {
+ checkOperation(fishingOperation, catchBatch, validator);
+ } catch (InvalidBatchModelException e) {
- // batch is not compatible with Tutti
- if (log.isDebugEnabled()) {
- log.debug("Invalid batch model", e);
+ // batch is not compatible with Tutti
+ if (log.isDebugEnabled()) {
+ log.debug("Invalid batch model", e);
+ }
+ Map<String, List<String>> errorMap = Maps.newHashMap();
+ errorMap.put("catches", Lists.newArrayList(_("tutti.validator.warning.fishingOperation.invalid.batch.model")));
+ validator.addMessagesForScope(NuitonValidatorScope.WARNING, errorMap);
}
- Map<String, List<String>> errorMap = Maps.newHashMap();
- errorMap.put("catches", Lists.newArrayList(_("tutti.validator.warning.fishingOperation.invalid.batch.model")));
- validator.addMessagesForScope(NuitonValidatorScope.WARNING, errorMap);
}
-
}
/**
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -49,10 +49,14 @@
protected final TuttiPersistenceConfig persistenceConfig;
public TuttiServiceConfig(ApplicationConfig applicationConfig) {
+ this(new TuttiPersistenceConfig(applicationConfig));
+ }
- this.applicationConfig = applicationConfig;
+ public TuttiServiceConfig(TuttiPersistenceConfig persistenceConfig) {
- this.persistenceConfig = new TuttiPersistenceConfig(applicationConfig);
+ this.applicationConfig = persistenceConfig.getConfig();
+
+ this.persistenceConfig = persistenceConfig;
}
public ApplicationConfig getApplicationConfig() {
@@ -142,4 +146,9 @@
applicationConfig.setOption(
TuttiServiceConfigOption.CSV_SEPARATOR.getKey(), c + "");
}
+
+ public void setExportCountry(String exportCountryId) {
+ applicationConfig.setOption(
+ TuttiServiceConfigOption.EXPORT_COUNTRY_ID.getKey(), exportCountryId);
+ }
}
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -0,0 +1,171 @@
+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.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+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.Species;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2
+ */
+public class AccidentalCatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<AccidentalCatchExportRow> {
+
+ protected final Caracteristic caracteristicDeadOrAliveSize;
+
+ protected final Caracteristic caracteristicGender;
+
+ protected final Caracteristic caracteristicWeight;
+
+ protected final Caracteristic caracteristicPmfmId;
+
+ public AccidentalCatchExportModel(
+ char separator,
+ Caracteristic caracteristicDeadOrAliveSize,
+ Caracteristic caracteristicGender,
+ Caracteristic caracteristicWeight,
+ Caracteristic caracteristicPmfmId) {
+ super(separator);
+
+ this.caracteristicDeadOrAliveSize = caracteristicDeadOrAliveSize;
+ this.caracteristicGender = caracteristicGender;
+ this.caracteristicWeight = caracteristicWeight;
+ this.caracteristicPmfmId = caracteristicPmfmId;
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, Gear.PROPERTY_NAME);
+ newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION);
+ newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
+
+ newColumnForExport("BatchId", AccidentalCatchExportRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("ReferenceTaxonId", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("ReferenceTaxonName", AccidentalBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME);
+ newColumnForExport("Comment", AccidentalBatch.PROPERTY_COMMENT);
+ newColumnForExport("CaracteristicId", AccidentalCatchExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
+ newColumnForExport("CaracteristicValue", AccidentalCatchExportRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
+ }
+
+ public void prepareRows(PersistenceService persistenceService,
+ List<AccidentalCatchExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation) {
+
+ List<AccidentalBatch> observations =
+ persistenceService.getAllAccidentalBatch(operation.getId());
+
+ if (CollectionUtils.isNotEmpty(observations)) {
+ for (AccidentalBatch child : observations) {
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicDeadOrAliveSize,
+ child.getDeadOrAlive());
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicGender,
+ child.getGender());
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicWeight,
+ child.getWeight());
+
+ if (child.getLengthStepCaracteristic() != null) {
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ caracteristicPmfmId,
+ child.getLengthStepCaracteristic().getIdAsInt());
+
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ child.getLengthStepCaracteristic(),
+ child.getSize());
+ }
+
+ CaracteristicMap caracteristics = child.getCaracteristics();
+ if (MapUtils.isNotEmpty(caracteristics)) {
+ for (Map.Entry<Caracteristic, Serializable> entry : caracteristics.entrySet()) {
+ addCaracteristicRow(rows,
+ cruise,
+ operation,
+ child,
+ entry.getKey(),
+ entry.getValue());
+ }
+ }
+ }
+ }
+ }
+
+ private void addCaracteristicRow(List<AccidentalCatchExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation,
+ AccidentalBatch child,
+ Caracteristic caracteristic,
+ Serializable caracteristicValue) {
+ if (caracteristicValue != null) {
+
+ AccidentalCatchExportRow row = new AccidentalCatchExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setBatch(child);
+ row.setCaracteristic(caracteristic);
+ row.setCaracteristicValue(caracteristicValue);
+ rows.add(row);
+ }
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportModel.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/AccidentalCatchExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -0,0 +1,139 @@
+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.AccidentalBatch;
+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.Species;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a accidental catch export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2
+ */
+public class AccidentalCatchExportRow implements Serializable {
+
+ public static final String PROPERTY_BATCH = "batch";
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_BATCH_ID = "batchId";
+
+ public static final String PROPERTY_CARACTERISTIC = "caracteristic";
+
+ public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue";
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected AccidentalBatch batch;
+
+ protected Caracteristic caracteristic;
+
+ protected Serializable caracteristicValue;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setBatch(AccidentalBatch batch) {
+ this.batch = batch;
+ }
+
+ public void setCaracteristic(Caracteristic caracteristic) {
+ this.caracteristic = caracteristic;
+ }
+
+ public void setCaracteristicValue(Serializable caracteristicValue) {
+ this.caracteristicValue = caracteristicValue;
+ }
+
+ public Integer getBatchId() {
+ return batch.getIdAsInt();
+ }
+
+ public Caracteristic getCaracteristic() {
+ return caracteristic;
+ }
+
+ public Serializable getCaracteristicValue() {
+ return caracteristicValue;
+ }
+
+ public String getComment() {
+ return batch.getComment();
+ }
+
+ public Species getSpecies() {
+ return batch.getSpecies();
+ }
+
+ 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 fishingOperation.getVessel();
+ }
+
+ public String getMultirigAggregation() {
+ return fishingOperation.getMultirigAggregation();
+ }
+
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/AccidentalCatchExportRow.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/CatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -51,6 +51,8 @@
*/
public class CatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<CatchExportRow> {
+ public static final String WEIGHT_OR_VOL_TYPE = "Poids";
+
public CatchExportModel(char separator, List<SampleCategoryEnum> samplingOrder) {
super(separator);
@@ -64,46 +66,46 @@
newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
newColumnForExport("Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY);
- newColumnForExport("NumOrdre_Taxon_H2", CatchExportRow.SPECIES_SAMPLE_CATEGORY);
+ newColumnForExport("NumOrdre_Taxon_H2", CatchExportRow.SPECIES_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER);
newColumnForExport("Tot_Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY);
newColumnForExport("Ech_Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY);
- newColumnForExport("Type_Volume_Poids_Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY);
- newColumnForExport("Unite_Volume_Poids_Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY);
+ newColumnForExport("Type_Volume_Poids_Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE);
+ newColumnForExport("Unite_Volume_Poids_Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY + "." + Caracteristic.PROPERTY_UNIT);
for (SampleCategoryEnum sampleCategoryEnum : samplingOrder) {
switch (sampleCategoryEnum) {
case sortedUnsorted:
newColumnForExport("Vrac/Hors_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY);
- newColumnForExport("NumOrdre_Vrac_H2", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY);
+ newColumnForExport("NumOrdre_Vrac_H2", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER);
newColumnForExport("Tot_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY);
newColumnForExport("Ech_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY);
- newColumnForExport("Type_Volume_Poids_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY);
- newColumnForExport("Unite_Volume_Poids_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY);
+ newColumnForExport("Type_Volume_Poids_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE);
+ newColumnForExport("Unite_Volume_Poids_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY + "." + Caracteristic.PROPERTY_UNIT);
break;
case size:
newColumnForExport("Categorie", CatchExportRow.SIZE_SAMPLE_CATEGORY);
- newColumnForExport("NumOrdre_Cat_H2", CatchExportRow.SIZE_SAMPLE_CATEGORY);
+ newColumnForExport("NumOrdre_Cat_H2", CatchExportRow.SIZE_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER);
newColumnForExport("Tot_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY);
newColumnForExport("Ech_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY);
- newColumnForExport("Type_Volume_Poids_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY);
- newColumnForExport("Unite_Volume_Poids_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY);
+ newColumnForExport("Type_Volume_Poids_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE);
+ newColumnForExport("Unite_Volume_Poids_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY + "." + Caracteristic.PROPERTY_UNIT);
break;
case sex:
newColumnForExport("Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY);
- newColumnForExport("NumOrdre_Sexe_H2", CatchExportRow.SEX_SAMPLE_CATEGORY);
+ newColumnForExport("NumOrdre_Sexe_H2", CatchExportRow.SEX_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER);
newColumnForExport("Tot_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY);
newColumnForExport("Ech_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY);
- newColumnForExport("Type_Volume_Poids_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY);
- newColumnForExport("Unite_Volume_Poids_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY);
+ newColumnForExport("Type_Volume_Poids_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE);
+ newColumnForExport("Unite_Volume_Poids_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY + "." + Caracteristic.PROPERTY_UNIT);
break;
case maturity:
newColumnForExport("Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY);
- newColumnForExport("NumOrdre_Maturite_H2", CatchExportRow.MATURITY_SAMPLE_CATEGORY);
+ newColumnForExport("NumOrdre_Maturite_H2", CatchExportRow.MATURITY_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_RANK_ORDER, TuttiCsvUtil.INTEGER);
newColumnForExport("Tot_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY);
newColumnForExport("Ech_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY);
- newColumnForExport("Type_Volume_Poids_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY);
- newColumnForExport("Unite_Volume_Poids_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY);
+ newColumnForExport("Type_Volume_Poids_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY + "." + ExportSampleCategory.PROPERTY_WEIGHT_OR_VOL_TYPE);
+ newColumnForExport("Unite_Volume_Poids_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY + "." + Caracteristic.PROPERTY_UNIT);
break;
case age:
newColumnForExport("Age", CatchExportRow.AGE_SAMPLE_CATEGORY);
@@ -116,11 +118,11 @@
newColumnForExport("Code_Longueur", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, Caracteristic.PROPERTY_ID);
newColumnForExport("Taille", CatchExportRow.FREQUENCY_LENGTH_STEP);
- newColumnForExport("NumOrdre_Taille_H2", Cruise.PROPERTY_HEAD_OF_MISSION);
- newColumnForExport("Poids_Classe_Taille", CatchExportRow.FREQUENCY_WEIGHT);
- newColumnForExport("Unite_Taille", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC);
- newColumnForExport("Precision_Mesure", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC);
- newColumnForExport("Nbr", CatchExportRow.FREQUENCY_NUMBER);
+ newColumnForExport("NumOrdre_Taille_H2", CatchExportRow.FREQUENCY_RANK_ORDER, TuttiCsvUtil.INTEGER);
+ newColumnForExport("Poids_Classe_Taille", CatchExportRow.FREQUENCY_WEIGHT, TuttiCsvUtil.FLOAT);
+ newColumnForExport("Unite_Taille", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_UNIT);
+ newColumnForExport("Precision_Mesure", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC + "." + Caracteristic.PROPERTY_PRECISION, TuttiCsvUtil.FLOAT);
+ newColumnForExport("Nbr", CatchExportRow.FREQUENCY_NUMBER, TuttiCsvUtil.INTEGER);
newColumnForExport("Poids_Reference", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
newColumnForExport("Coef_Final_Elevation", Cruise.PROPERTY_COMMENT);
@@ -144,7 +146,8 @@
speciesCategory.setComputedWeight(speciesBatch.getComputedWeight());
speciesCategory.setNumber(speciesBatch.getNumber());
speciesCategory.setComputedNumber(speciesBatch.getComputedNumber());
-
+ speciesCategory.setWeightOrVolType(WEIGHT_OR_VOL_TYPE);
+ speciesCategory.setRankOrder(speciesBatch.getRankOrder());
row.setSpeciesCategory(speciesCategory);
prepareRows(persistenceService, row, rows, speciesBatch);
}
@@ -158,7 +161,8 @@
speciesCategory.setComputedWeight(benthosBatch.getComputedWeight());
speciesCategory.setNumber(benthosBatch.getNumber());
speciesCategory.setComputedNumber(benthosBatch.getComputedNumber());
-
+ speciesCategory.setWeightOrVolType(WEIGHT_OR_VOL_TYPE);
+ speciesCategory.setRankOrder(benthosBatch.getRankOrder());
row.setSpeciesCategory(speciesCategory);
prepareRows(persistenceService, row, rows, benthosBatch);
}
@@ -177,6 +181,8 @@
sampleCategory.setComputedWeight(speciesBatch.getSampleCategoryComputedWeight());
sampleCategory.setNumber(speciesBatch.getNumber());
sampleCategory.setComputedNumber(speciesBatch.getComputedNumber());
+ sampleCategory.setWeightOrVolType(WEIGHT_OR_VOL_TYPE);
+ sampleCategory.setRankOrder(speciesBatch.getRankOrder());
currentRow.addCategory(sampleCategory);
@@ -195,7 +201,7 @@
} else {
for (SpeciesBatchFrequency batchFrequency : speciesBatchFrequency) {
CatchExportRow row = currentRow.copy();
- row.setSpeciesFrequency(batchFrequency);
+ row.setFrequency(batchFrequency);
rows.add(row);
}
}
@@ -212,7 +218,6 @@
CatchExportRow currentRow,
List<CatchExportRow> rows,
BenthosBatch benthosBatch) {
+ }
-
- }
}
\ No newline at end of file
Modified: 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 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -25,7 +25,6 @@
*/
import com.google.common.collect.Maps;
-import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
@@ -57,6 +56,8 @@
public static final String FREQUENCY_NUMBER = "frequencyNumber";
+ public static final String FREQUENCY_RANK_ORDER = "frequencyRankOrder";
+
public static final String SPECIES_SAMPLE_CATEGORY = "speciesSampleCategory";
public static final String SORTED_UNSORTED_SAMPLE_CATEGORY = "sortedUnsortedSampleCategory";
@@ -77,10 +78,8 @@
protected final Map<SampleCategoryEnum, ExportSampleCategory> categories = Maps.newEnumMap(SampleCategoryEnum.class);
- protected SpeciesBatchFrequency speciesFrequency;
+ protected SpeciesBatchFrequency frequency;
- protected BenthosBatchFrequency benthosFrequency;
-
public void setCruise(Cruise cruise) {
this.cruise = cruise;
}
@@ -97,14 +96,10 @@
categories.put(sampleCategory.getCategoryType(), sampleCategory);
}
- public void setSpeciesFrequency(SpeciesBatchFrequency speciesFrequency) {
- this.speciesFrequency = speciesFrequency;
+ public void setFrequency(SpeciesBatchFrequency speciesFrequency) {
+ this.frequency = speciesFrequency;
}
- public void setBenthosFrequency(BenthosBatchFrequency benthosFrequency) {
- this.benthosFrequency = benthosFrequency;
- }
-
public Date getBeginDate() {
return cruise.getBeginDate();
}
@@ -138,45 +133,25 @@
}
public Caracteristic getFrequencyLengthStepCaracteristic() {
- Caracteristic result;
- if (speciesFrequency == null) {
- result = benthosFrequency.getLengthStepCaracteristic();
- } else {
- result = speciesFrequency.getLengthStepCaracteristic();
- }
- return result;
+ return frequency == null ? null : frequency.getLengthStepCaracteristic();
}
public Float getFrequencyLengthStep() {
- Float result;
- if (speciesFrequency == null) {
- result = benthosFrequency.getLengthStep();
- } else {
- result = speciesFrequency.getLengthStep();
- }
- return result;
+ return frequency == null ? null : frequency.getLengthStep();
}
public Float getFrequencyWeight() {
- Float result;
- if (speciesFrequency == null) {
- result = benthosFrequency.getWeight();
- } else {
- result = speciesFrequency.getWeight();
- }
- return result;
+ return frequency == null ? null : frequency.getWeight();
}
public Integer getFrequencyNumber() {
- Integer result;
- if (speciesFrequency == null) {
- result = benthosFrequency.getNumber();
- } else {
- result = speciesFrequency.getNumber();
- }
- return result;
+ return frequency == null ? null : frequency.getNumber();
}
+ public Integer getFrequencyRankOrder() {
+ return frequency == null ? null : frequency.getRankOrder();
+ }
+
public ExportSampleCategory getSpeciesSampleCategory() {
return speciesCategory;
}
@@ -207,8 +182,7 @@
result.setFishingOperation(fishingOperation);
result.setSpeciesCategory(speciesCategory);
result.categories.putAll(categories);
- result.setSpeciesFrequency(speciesFrequency);
- result.setBenthosFrequency(benthosFrequency);
+ result.setFrequency(frequency);
return result;
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ExportSampleCategory.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -39,10 +39,27 @@
private static final long serialVersionUID = 1L;
+ public static final String PROPERTY_CATEGORY_VALUE = "categoryValue";
+
+ public static final String PROPERTY_CATEGORY_WEIGHT = "categoryWeight";
+
+ public static final String PROPERTY_NUMBER = "number";
+
+ public static final String PROPERTY_COMPUTED_WEIGHT = "computedWeight";
+
+ public static final String PROPERTY_COMPUTED_NUMBER = "computedNumber";
+
+ public static final String PROPERTY_WEIGHT_OR_VOL_TYPE = "weightOrVolType";
+
+ public static final String PROPERTY_RANK_ORDER= "rankOrder";
+
private Integer number;
private Integer computedNumber;
+ private Integer rankOrder;
+ private String weightOrVolType;
+
public Integer getNumber() {
return number;
}
@@ -58,4 +75,20 @@
public void setComputedNumber(Integer computedNumber) {
this.computedNumber = computedNumber;
}
+
+ public String getWeightOrVolType() {
+ return weightOrVolType;
+ }
+
+ public void setWeightOrVolType(String weightOrVolType) {
+ this.weightOrVolType = weightOrVolType;
+ }
+
+ public Integer getRankOrder() {
+ return rankOrder;
+ }
+
+ public void setRankOrder(Integer rankOrder) {
+ this.rankOrder = rankOrder;
+ }
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -31,6 +31,7 @@
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.Species;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiCsvUtil;
@@ -80,6 +81,8 @@
newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
newColumnForExport("BatchId", IndividualObservationExportRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("ReferenceTaxonId", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_REFERENCE_TAXON_ID, TuttiCsvUtil.PRIMITIVE_INTEGER);
+ newColumnForExport("ReferenceTaxonName", IndividualObservationBatch.PROPERTY_SPECIES + "." + Species.PROPERTY_NAME);
newColumnForExport("Comment", IndividualObservationBatch.PROPERTY_COMMENT);
newColumnForExport("CaracteristicId", IndividualObservationExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
newColumnForExport("CaracteristicValue", IndividualObservationExportRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_FORMATTER);
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/IndividualObservationExportRow.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -30,6 +30,7 @@
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.Species;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import java.io.Serializable;
@@ -130,4 +131,8 @@
public String getMultirigAggregation() {
return fishingOperation.getMultirigAggregation();
}
+
+ public Species getSpecies() {
+ return batch.getSpecies();
+ }
}
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-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -101,6 +101,10 @@
protected Caracteristic otolitheIdCaracteristic;
+ protected Caracteristic deadOrAliveCaracteristic;
+
+ protected Caracteristic genderCaracteristic;
+
protected Caracteristic weightMeasuredCaracteristic;
protected Caracteristic pmfmIdCaracteristic;
@@ -120,6 +124,8 @@
otolitheIdCaracteristic = persistenceService.getOtolitheIdCaracteristic();
weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic();
pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic();
+ deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic();
+ genderCaracteristic = persistenceService.getSexCaracteristic();
List<TuttiLocation> allCountry = persistenceService.getAllCountry();
String countryId = context.getConfig().getExportCountryId();
@@ -149,6 +155,9 @@
Program program = persistenceService.getProgram(programId);
Preconditions.checkNotNull(program);
+ if (log.isDebugEnabled()) {
+ log.debug("Will export program: " + programId);
+ }
List<Cruise> allCruise = persistenceService.getAllCruise(programId);
for (Cruise cruise : allCruise) {
checkCruise(progressionModel, cruise);
@@ -189,6 +198,10 @@
Cruise cruise = persistenceService.getCruise(cruiseId);
Preconditions.checkNotNull(cruise);
+ if (log.isDebugEnabled()) {
+ log.debug("Will export cruise: " + cruiseId);
+ }
+
// check cruise fishing operations
checkCruise(progressionModel, cruise);
@@ -224,6 +237,8 @@
sampleIdCaracteristic,
otolitheIdCaracteristic,
weightMeasuredCaracteristic,
+ deadOrAliveCaracteristic,
+ genderCaracteristic,
pmfmIdCaracteristic,
samplingOrder);
}
@@ -306,8 +321,13 @@
progressionModel.increments(1);
progressionModel.setMessage(
+ _("tutti.service.exportCruise.exportAccidentalCatches", cruiseName));
+ exportAccidentalCatch(exportContext, cruise, loadedOperations);
+ progressionModel.increments(1);
+
+ progressionModel.setMessage(
_("tutti.service.exportCruise.exportCatches", cruiseName));
-// exportCatches(exportContext, cruise, loadedOperations);
+ exportCatches(exportContext, cruise, loadedOperations);
progressionModel.increments(1);
}
@@ -389,6 +409,23 @@
}
}
+ protected void exportAccidentalCatch(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+
+ try {
+
+ for (FishingOperation operation : operations) {
+ List<AccidentalCatchExportRow> rows = Lists.newArrayList();
+ exportContext.accidentalCatchModel.prepareRows(persistenceService, rows, cruise, operation);
+ exportContext.accidentalCatchExport.write(rows, exportContext.accidentalCatchWriter);
+ }
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.export.parameters.error"), e);
+ }
+ }
+
protected void exportCatches(ExportContext exportContext,
Cruise cruise,
List<FishingOperation> operations) {
@@ -398,6 +435,17 @@
String operationId = operation.getId();
+ boolean withCatchBatch =
+ persistenceService.isFishingOperationWithCatchBatch(
+ operationId);
+
+ if (!withCatchBatch) {
+ if (log.isWarnEnabled()) {
+ log.warn("Skip fishing operation " + operationId +
+ " since no catchBatch associated.");
+ }
+ continue;
+ }
CatchBatch catchBatch =
persistenceService.getCatchBatchFromFishingOperation(
operationId);
@@ -429,7 +477,8 @@
}
} catch (Exception e) {
- throw new TuttiTechnicalException(_("tutti.service.export.catches.error"), e);
+ throw new TuttiTechnicalException(
+ _("tutti.service.export.catches.error"), e);
}
}
@@ -447,6 +496,8 @@
File catchFile;
+ File accidentalCatchFile;
+
BufferedWriter surveyWriter;
BufferedWriter operationWriter;
@@ -457,6 +508,8 @@
BufferedWriter catchWriter;
+ BufferedWriter accidentalCatchWriter;
+
BufferedWriter individualObservationWriter;
SurveyExportModel surveyModel;
@@ -469,6 +522,8 @@
CatchExportModel catchModel;
+ AccidentalCatchExportModel accidentalCatchModel;
+
IndividualObservationExportModel individualObservationModel;
TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport;
@@ -481,6 +536,8 @@
TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport;
+ TuttiCsvUtil.TuttiRepeatableExport<AccidentalCatchExportRow> accidentalCatchExport;
+
TuttiCsvUtil.TuttiRepeatableExport<IndividualObservationExportRow> individualObservationExport;
ExportContext(File basedir,
@@ -492,6 +549,8 @@
Caracteristic sampleIdCaracteristic,
Caracteristic otolitheIdCaracteristic,
Caracteristic weightMeasuredCaracteristic,
+ Caracteristic deadOrAliveCaracteristic,
+ Caracteristic genderCaracteristic,
Caracteristic pmfmIdCaracteristic,
List<SampleCategoryEnum> samplingOrder) {
@@ -512,6 +571,9 @@
catchFile = new File(basedir, "catch.csv");
catchWriter = Files.newWriter(catchFile, Charsets.UTF_8);
+ accidentalCatchFile = new File(basedir, "accidentalCatch.csv");
+ accidentalCatchWriter = Files.newWriter(accidentalCatchFile, Charsets.UTF_8);
+
individualObservationFile = new File(basedir, "individualObservation.csv");
individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8);
@@ -535,6 +597,12 @@
marineLitterModel = new MarineLitterExportModel(csvSeparator);
catchModel = new CatchExportModel(csvSeparator, samplingOrder);
+ accidentalCatchModel = new AccidentalCatchExportModel(
+ csvSeparator,
+ deadOrAliveCaracteristic,
+ genderCaracteristic,
+ weightMeasuredCaracteristic,
+ pmfmIdCaracteristic);
individualObservationModel = new IndividualObservationExportModel(
csvSeparator,
sampleIdCaracteristic,
@@ -555,6 +623,7 @@
marineLitterModel);
catchExport = TuttiCsvUtil.newRepeatableExport(catchModel);
+ accidentalCatchExport = TuttiCsvUtil.newRepeatableExport(accidentalCatchModel);
individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel);
}
@@ -564,6 +633,7 @@
IOUtils.closeQuietly(operationWriter);
IOUtils.closeQuietly(parameterWriter);
IOUtils.closeQuietly(catchWriter);
+ IOUtils.closeQuietly(accidentalCatchWriter);
IOUtils.closeQuietly(marineLitterWriter);
IOUtils.closeQuietly(individualObservationWriter);
}
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-11 15:53:26 UTC (rev 935)
@@ -69,6 +69,7 @@
tutti.service.export.zip.error=
tutti.service.exportCruise.buildZip=
tutti.service.exportCruise.checkCruise=
+tutti.service.exportCruise.exportAccidentalCatches=
tutti.service.exportCruise.exportCatches=
tutti.service.exportCruise.exportIndividualObservations=
tutti.service.exportCruise.exportMarineLitters=
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-11 15:53:26 UTC (rev 935)
@@ -67,6 +67,7 @@
tutti.service.export.zip.error=Erreur lors de la création du zip d'export %s
tutti.service.exportCruise.buildZip=Création de l'archive de l'export (fichier %s)
tutti.service.exportCruise.checkCruise=Vérification de la campagne %s
+tutti.service.exportCruise.exportAccidentalCatches=Export du fichier <strong>accidentalCatch.csv</strong> pour la campagne %s
tutti.service.exportCruise.exportCatches=Export du fichier <strong>catch.csv</strong> pour la campagne %s
tutti.service.exportCruise.exportIndividualObservations=Export du fichier <strong>individualObservation.csv</strong> pour la campagne %s
tutti.service.exportCruise.exportMarineLitters=Export du fichier <strong>marineLitter.csv</strong> pour la campagne %s
Added: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -0,0 +1,117 @@
+package fr.ifremer.tutti.service;
+
+/*
+ * #%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.RessourceClassLoader;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
+import fr.ifremer.tutti.service.config.TuttiServiceConfig;
+import org.apache.commons.io.IOUtils;
+import org.junit.runner.Description;
+import org.nuiton.i18n.I18n;
+
+import java.io.IOException;
+import java.util.Locale;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2
+ */
+public class ServiceDbResource extends DatabaseResource {
+
+ protected TuttiServiceContext createServiceContext(RessourceClassLoader loader,
+ TuttiServiceConfig config) {
+ return new TuttiServiceContext(loader, config);
+ }
+
+ protected TuttiServiceContext serviceContext;
+
+ protected TuttiServiceConfig serviceConfig;
+
+ public static ServiceDbResource readDb() {
+ return new ServiceDbResource("");
+ }
+
+ public static ServiceDbResource writeDb() {
+ return new ServiceDbResource("", true);
+ }
+
+ public static ServiceDbResource readDb(String dbName) {
+ return new ServiceDbResource(dbName);
+ }
+
+ public static ServiceDbResource writeDb(String dbName) {
+ return new ServiceDbResource(dbName, true);
+ }
+
+ public static ServiceDbResource noDb() {
+ return new ServiceDbResource(
+ "", "beanRefFactoryWitNoDb.xml", "TuttiBeanRefFactoryWithNoDb");
+ }
+
+ protected ServiceDbResource(String dbName) {
+ super(dbName);
+ }
+
+ protected ServiceDbResource(String dbName, boolean writeDb) {
+ super(dbName, writeDb);
+ }
+
+ protected ServiceDbResource(String dbName, String beanFactoryReferenceLocation, String beanRefFactoryReferenceId) {
+ super(dbName, beanFactoryReferenceLocation, beanRefFactoryReferenceId);
+ }
+
+ protected ServiceDbResource(String dbName, String beanFactoryReferenceLocation, String beanRefFactoryReferenceId, boolean writeDb) {
+ super(dbName, beanFactoryReferenceLocation, beanRefFactoryReferenceId, writeDb);
+ }
+
+ public TuttiServiceContext getServiceContext() {
+ return serviceContext;
+ }
+
+ public TuttiServiceConfig getServiceConfig() {
+ return serviceConfig;
+ }
+
+ @Override
+ protected void before(Description description) throws Throwable {
+ super.before(description);
+
+ serviceConfig = new TuttiServiceConfig(getConfig());
+
+ serviceContext = createServiceContext(loader, serviceConfig);
+
+ I18n.init(null, Locale.FRANCE);
+ serviceContext.getConfig().setCsvSeparator(';');
+ }
+
+ @Override
+ protected void after(Description description) throws IOException {
+
+ IOUtils.closeQuietly(serviceContext);
+ super.after(description);
+ }
+}
Property changes on: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/ServiceDbResource.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -27,75 +27,99 @@
import com.google.common.collect.Lists;
import com.google.common.io.Files;
import fr.ifremer.tutti.persistence.ProgressionModel;
-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.TuttiEntities;
-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.IndividualObservationBatch;
import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
-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.PersistenceService;
+import fr.ifremer.tutti.service.ServiceDbResource;
import fr.ifremer.tutti.service.TuttiServiceContext;
-import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
-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.ClassRule;
import org.junit.Test;
-import org.mockito.Mockito;
import java.io.File;
-import java.util.Date;
+import java.io.IOException;
import java.util.List;
-import java.util.Map;
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 1.3
*/
-public class TuttiExportServiceTest extends AbstractServiceTest {
+public class TuttiExportServiceTest {
/** Logger. */
private static final Log log =
LogFactory.getLog(TuttiExportServiceTest.class);
- protected TuttiExportService service;
+ @ClassRule
+ public static final ServiceDbResource dbResource =
+ ServiceDbResource.readDb("dbGenericExport");
- protected Caracteristic marineLitterCategory;
+ public static final String PROGRAM_ID = "CAM-CGFS";
- protected Caracteristic marineLitterSizeCategory;
+ public static final String CRUISE_ID = "100001";
- protected Caracteristic caracteristicVerticalOpening;
+ public static final String OPERATION_1_ID = "100106";
- protected Caracteristic caracteristicHorizontalOpeningWing;
+ public static final String OPERATION_2_ID = "100107";
- protected Caracteristic caracteristicHorizontalOpeningDoor;
+ public static final String SURVEY_CONTENT =
+ "Annee;Serie;Serie_Partielle;Navire;Pays;Zone_Etude;Id_Sismer;Date_Deb_Campagne;Port_Deb_Campagne;Date_Fin_Campagne;Port_Fin_Campagne;Chef_Mission;Resp_Salle_Tri;Commentaire\n" +
+ "2013;Campagne CGFS;;GWEN DREZ;FRA;CGFS - Manche Est / Sud Mer du Nord;Campagne CGFS_2013;01/05/2013 00:00:00;La Barbotière (Gujan-Mestras);31/05/2013 00:00:00;Etang de Palo;Vincent AURECHE;;;";
- protected Caracteristic sampleIdCaracteristic;
+ public static final String OPERATION_CONTENT =
+ "Annee;Serie;Serie_Partielle;Id_Operation;NumOrdre_Station;Engin;Navire;DateDeb_Op;LatDeb;LongDeb;DateFin_Op;LatFin;LongFin;Duree;Strate;Sous-Strate;Localite;Validite_OP;Rectiligne;Distance;Ouv_Verticale;Ouv_Horizontale_Ailes;Ouv_Horizontale_Panneaux;Commentaire\n" +
+ "2013;Campagne CGFS;;A;1;GOV 19.7/25.9;GWEN DREZ;01/05/2013 00:00:00;;;01/05/2013 00:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;;NA;NA;NA;op1;\n" +
+ "2013;Campagne CGFS;;A;2;GOV 19.7/25.9;GWEN DREZ;11/05/2013 08:00:00;;;11/05/2013 08:23:00;;;23;Strate 1D;NA;Localité 1D2;?;N;;NA;NA;NA;OP2;";
- protected Caracteristic otolitheIdCaracteristic;
+ public static final String PARAMETER_CONTENT =
+ "Annee;Serie;Serie_Partielle;Id_Operation;NumOrdre_Station;Code_PMFM;Libelle_PMFm;Valeur\n" +
+ "2013;Campagne CGFS;;A;1;1164;Catégorie UE - produit/lot - totale - Diffusion par une Halle à marée;Cat UE10;\n" +
+ "2013;Campagne CGFS;;A;1;1302;(Gross Tonnage) : augmentation de tonnage accordée pour des raisons de sécurité - navire - totale - Déclaration d'un professionnel;10.0;\n" +
+ "2013;Campagne CGFS;;A;1;194;\"Etat de la mer - masse d'eau, eau brute - totale - Observation par un observateur\";\"2 - belle, vagues de 0.1 à 0.5 mètres\";\n" +
+ "2013;Campagne CGFS;;A;1;821;Direction vent - air - totale - Instrument de bord;0.1;\n" +
+ "2013;Campagne CGFS;;A;1;149;Coût de la glace - navire - totale - Déclaration d'un professionnel;10.0;\n" +
+ "2013;Campagne CGFS;;A;2;1062;Catégorie de fraicheur - produit/lot - totale - Diffusion par une Halle à marée;A - Catégorie A;\n" +
+ "2013;Campagne CGFS;;A;2;308;Nombre d'engin - engin - totale - Déclaration d'un professionnel;2.0;";
- protected Caracteristic weightMeasuredCaracteristic;
+ public static final String CATCH_CONTENT = "";
- protected Caracteristic pmfmIdCaracteristic;
+ public static final String MARINE_LITTER_CONTENT =
+ "Annee;Serie;Serie_Partielle;Engin;Poche;Id_Operation;NumOrdre_Station;Navire;MarineLitterCategory;MarineLitterSizeCategory;Number;Weight;Comment\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;L1 PLASTIQUE;A: <5*5 cm= 25 cm2;2;5.0;S1;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;L1a Sacs;B: <10*10 cm= 100 cm2;3;1.0;S2;";
- protected List<TuttiLocation> countries;
+ public static final String INDIVIDUAL_OBSERVATION_CONTENT =
+ "Annee;Serie;Serie_Partielle;Engin;Poche;Id_Operation;NumOrdre_Station;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Comment;CaracteristicId;CaracteristicValue\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100000;11242;Aaptos;P1;1435;A20;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100000;11242;Aaptos;P1;1436;10;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100000;11242;Aaptos;P1;220;0.1;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100000;11242;Aaptos;P1;1433;307;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100000;11242;Aaptos;P1;307;10.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100000;11242;Aaptos;P1;101;10.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100000;11242;Aaptos;P1;46;0L - 0 VMS - 1 LB;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100000;11242;Aaptos;P1;1388;5.0;";
+ public static final String ACCIDENTAL_CATCH_CONTENT =
+ "Annee;Serie;Serie_Partielle;Engin;Poche;Id_Operation;NumOrdre_Station;Navire;BatchId;ReferenceTaxonId;ReferenceTaxonName;Comment;CaracteristicId;CaracteristicValue\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100001;3835;Abalistes;;1393;Rejet mort;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100001;3835;Abalistes;;196;Femelle;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100001;3835;Abalistes;;220;10.0;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100001;3835;Abalistes;;1433;1425;\n" +
+ "2013;Campagne CGFS;;GOV 19.7/25.9;1;A;1;GWEN DREZ;100001;3835;Abalistes;;1425;4.0;";
+
+ protected TuttiExportService service;
+
+ protected PersistenceService persistenceService;
+
protected Program program;
protected Cruise cruise;
@@ -108,120 +132,71 @@
protected ProgressionModel progressionModel;
- @Override
- protected TuttiServiceContext createServiceContext(RessourceClassLoader loader,
- TuttiServiceConfig config) {
- return new TuttiServiceContext(loader, config);
- }
+ protected File dataDirectory;
@Before
public void setUp() throws Exception {
- super.setUp();
- createCaracteristics();
+ dataDirectory = dbResource.getServiceConfig().getDataDirectory();
- countries = createCountries();
+ TuttiServiceContext serviceContext = dbResource.getServiceContext();
- program = createProgram();
+ persistenceService = serviceContext.getService(PersistenceService.class);
- cruise = createCruise();
- operations = createOperations(cruise);
- marineLitters = createMarineLitters(operations);
- individualObservations = createIndividualObservations(operations);
+ // set export country id in configuration
+ List<TuttiLocation> allCountry = persistenceService.getAllCountry();
+ Assert.assertNotNull(allCountry);
+ Assert.assertFalse(allCountry.isEmpty());
+ TuttiLocation franceCountry = TuttiEntities.splitById(allCountry).get("12");
+ Assert.assertNotNull(franceCountry);
+ dbResource.getServiceConfig().setExportCountry(franceCountry.getId());
- SampleCategoryEnum.sortedUnsorted.setFieldValue(1428);
- SampleCategoryEnum.sortedUnsorted.setInit(true);
- SampleCategoryEnum.size.setFieldValue(198);
- SampleCategoryEnum.size.setInit(true);
- SampleCategoryEnum.sex.setFieldValue(196);
- SampleCategoryEnum.sex.setInit(true);
- SampleCategoryEnum.maturity.setFieldValue(174);
- SampleCategoryEnum.maturity.setInit(true);
- SampleCategoryEnum.age.setFieldValue(1430);
- SampleCategoryEnum.age.setInit(true);
+ service = serviceContext.getService(TuttiExportService.class);
- Map<String, FishingOperation> operationMap = TuttiEntities.splitById(operations);
- serviceContext.getConfig().setCsvSeparator(';');
+ program = persistenceService.getProgram(PROGRAM_ID);
+ Assert.assertNotNull(program);
- PersistenceService persistenceService = Mockito.mock(PersistenceService.class);
- persistenceService.setServiceContext(serviceContext);
+ cruise = persistenceService.getCruise(CRUISE_ID);
+ Assert.assertNotNull(cruise);
- Mockito.when(persistenceService.getVerticalOpeningCaracteristic()).thenReturn(caracteristicVerticalOpening);
- Mockito.when(persistenceService.getHorizontalOpeningDoorCaracteristic()).thenReturn(caracteristicHorizontalOpeningDoor);
- Mockito.when(persistenceService.getHorizontalOpeningWingCaracteristic()).thenReturn(caracteristicHorizontalOpeningWing);
- Mockito.when(persistenceService.getSampleIdCaracteristic()).thenReturn(sampleIdCaracteristic);
- Mockito.when(persistenceService.getOtolitheIdCaracteristic()).thenReturn(otolitheIdCaracteristic);
- Mockito.when(persistenceService.getWeightMeasuredCaracteristic()).thenReturn(weightMeasuredCaracteristic);
- Mockito.when(persistenceService.getPmfmIdCaracteristic()).thenReturn(pmfmIdCaracteristic);
+ operations = persistenceService.getAllFishingOperation(cruise.getId());
+ Assert.assertNotNull(operations);
+ Assert.assertEquals(2, operations.size());
+ Assert.assertEquals(OPERATION_1_ID, operations.get(0).getId());
+ Assert.assertEquals(OPERATION_2_ID, operations.get(1).getId());
- Mockito.when(persistenceService.getProgram(Mockito.<String>any())).thenReturn(program);
- Mockito.when(persistenceService.getCruise(Mockito.<String>any())).thenReturn(cruise);
- Mockito.when(persistenceService.getAllCruise(Mockito.<String>any())).thenReturn(Lists.newArrayList(cruise));
- Mockito.when(persistenceService.getAllCountry()).thenReturn(countries);
- Mockito.when(persistenceService.getAllFishingOperation(Mockito.<String>any())).thenReturn(operations);
- Mockito.when(persistenceService.getFishingOperation("0")).thenReturn(operationMap.get("0"));
- Mockito.when(persistenceService.getFishingOperation("1")).thenReturn(operationMap.get("1"));
- Mockito.when(persistenceService.getFishingOperation("2")).thenReturn(operationMap.get("2"));
- Mockito.when(persistenceService.getFishingOperation("3")).thenReturn(operationMap.get("3"));
+ // load fully operations
+ List<FishingOperation> loadedOperations =
+ Lists.newArrayListWithCapacity(operations.size());
+ for (FishingOperation operation : operations) {
+ FishingOperation loadedOeration =
+ persistenceService.getFishingOperation(operation.getId());
+ loadedOperations.add(loadedOeration);
+ }
+ operations = loadedOperations;
- BatchContainer<MarineLitterBatch> marineLitterBatchBatchContainer;
- marineLitterBatchBatchContainer = new BatchContainer<MarineLitterBatch>();
- marineLitterBatchBatchContainer.addChildren(marineLitters.get(0));
- marineLitterBatchBatchContainer.addChildren(marineLitters.get(1));
- Mockito.when(persistenceService.getRootMarineLitterBatch("0")).thenReturn(marineLitterBatchBatchContainer);
-
- marineLitterBatchBatchContainer = new BatchContainer<MarineLitterBatch>();
- marineLitterBatchBatchContainer.addChildren(marineLitters.get(2));
- marineLitterBatchBatchContainer.addChildren(marineLitters.get(3));
- Mockito.when(persistenceService.getRootMarineLitterBatch("1")).thenReturn(marineLitterBatchBatchContainer);
-
- marineLitterBatchBatchContainer = new BatchContainer<MarineLitterBatch>();
- Mockito.when(persistenceService.getRootMarineLitterBatch("2")).thenReturn(marineLitterBatchBatchContainer);
-
- marineLitterBatchBatchContainer = new BatchContainer<MarineLitterBatch>();
- Mockito.when(persistenceService.getRootMarineLitterBatch("3")).thenReturn(marineLitterBatchBatchContainer);
-
- Mockito.when(persistenceService.getAllIndividualObservationBatch("0")).thenReturn(Lists.newArrayList(individualObservations.get(0), individualObservations.get(1)));
- Mockito.when(persistenceService.getAllIndividualObservationBatch("1")).thenReturn(Lists.newArrayList(individualObservations.get(2), individualObservations.get(3)));
- Mockito.when(persistenceService.getAllIndividualObservationBatch("2")).thenReturn(Lists.<IndividualObservationBatch>newArrayList());
- Mockito.when(persistenceService.getAllIndividualObservationBatch("3")).thenReturn(Lists.<IndividualObservationBatch>newArrayList());
-
- 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);
-
- TuttiWeightComputingService tuttiWeightComputingService = Mockito.mock(
- TuttiWeightComputingService.class,
- Mockito.withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS));
- tuttiWeightComputingService.setServiceContext(serviceContextSpy);
- service.tuttiWeightComputingService = tuttiWeightComputingService;
-
progressionModel = new ProgressionModel();
- progressionModel.setTotal(6);
-
+ progressionModel.setTotal(7);
}
@Test
public void exportProgram() throws Exception {
- File exportFile = new File(datadirectory, "exportProgram.zip");
+ File exportFile = new File(dataDirectory, "exportProgram.zip");
Files.createParentDirs(exportFile);
Assert.assertFalse(exportFile.exists());
- service.exportProgram(cruise.getId(), exportFile, progressionModel);
+ service.exportProgram(program.getId(), exportFile, progressionModel);
Assert.assertTrue(exportFile.exists());
}
@Test
public void exportCruise() throws Exception {
- File exportFile = new File(datadirectory, "exportCruise.zip");
+ File exportFile = new File(dataDirectory, "exportCruise.zip");
Files.createParentDirs(exportFile);
@@ -235,19 +210,28 @@
public void exportSurvey() throws Exception {
TuttiExportService.ExportContext exportContext =
- service.createExportContext(datadirectory);
+ service.createExportContext(dataDirectory);
try {
service.exportSurvey(exportContext, cruise);
} finally {
exportContext.close();
}
- Assert.assertTrue(exportContext.surveyFile.exists());
- Assert.assertEquals(1 + 1, Files.readLines(exportContext.surveyFile, Charsets.UTF_8).size());
+ assertFileContent("Survey export:\n",
+ exportContext.surveyFile,
+ SURVEY_CONTENT);
+ }
+ protected void assertFileContent(String message,
+ File actualFile,
+ String expectedContent) throws IOException {
+ Assert.assertTrue(actualFile.exists());
+ String fileContent = Files.toString(actualFile,
+ Charsets.UTF_8).trim();
+ Assert.assertEquals(expectedContent, fileContent);
+
if (log.isInfoEnabled()) {
- log.info("Survey export:\n" +
- Files.toString(exportContext.surveyFile, Charsets.UTF_8));
+ log.info(message + fileContent);
}
}
@@ -255,516 +239,95 @@
public void exportOperations() throws Exception {
TuttiExportService.ExportContext exportContext =
- service.createExportContext(datadirectory);
+ service.createExportContext(dataDirectory);
try {
service.exportOperations(exportContext, cruise, operations);
} finally {
exportContext.close();
}
- Assert.assertTrue(exportContext.operationFile.exists());
- Assert.assertEquals(operations.size() + 1, Files.readLines(exportContext.operationFile, Charsets.UTF_8).size());
-
- if (log.isInfoEnabled()) {
- log.info("Operation export:\n" +
- Files.toString(exportContext.operationFile, Charsets.UTF_8));
- }
+ assertFileContent("Operation export:\n",
+ exportContext.operationFile,
+ OPERATION_CONTENT);
}
@Test
public void exportParameters() throws Exception {
TuttiExportService.ExportContext exportContext =
- service.createExportContext(datadirectory);
+ service.createExportContext(dataDirectory);
try {
service.exportParameters(exportContext, cruise, operations);
} finally {
exportContext.close();
}
- Assert.assertTrue(exportContext.parameterFile.exists());
- Assert.assertEquals(1 + operations.size() * 7, Files.readLines(exportContext.parameterFile, Charsets.UTF_8).size());
-
- if (log.isInfoEnabled()) {
- log.info("Parameter export:\n" +
- Files.toString(exportContext.parameterFile, Charsets.UTF_8));
- }
+ assertFileContent("Parameter export:\n",
+ exportContext.parameterFile,
+ PARAMETER_CONTENT);
}
//TODO
public void exportCatches() throws Exception {
TuttiExportService.ExportContext exportContext =
- service.createExportContext(datadirectory);
+ service.createExportContext(dataDirectory);
try {
service.exportCatches(exportContext, cruise, operations);
} finally {
exportContext.close();
}
- Assert.assertTrue(exportContext.catchFile.exists());
- Assert.assertEquals(2, Files.readLines(exportContext.catchFile, Charsets.UTF_8).size());
- if (log.isInfoEnabled()) {
- log.info("Catch export:\n" +
- Files.toString(exportContext.catchFile, Charsets.UTF_8));
- }
+ assertFileContent("Catch export:\n",
+ exportContext.catchFile,
+ CATCH_CONTENT);
}
@Test
public void exportMarineLitters() throws Exception {
TuttiExportService.ExportContext exportContext =
- service.createExportContext(datadirectory);
+ service.createExportContext(dataDirectory);
try {
service.exportMarineLitters(exportContext, cruise, operations);
} finally {
exportContext.close();
}
- Assert.assertTrue(exportContext.marineLitterFile.exists());
- Assert.assertEquals(marineLitters.size() + 1, Files.readLines(exportContext.marineLitterFile, Charsets.UTF_8).size());
-
- if (log.isInfoEnabled()) {
- log.info("MarineLitter export:\n" +
- Files.toString(exportContext.marineLitterFile, Charsets.UTF_8));
- }
+ assertFileContent("MarineLitter export:\n",
+ exportContext.marineLitterFile,
+ MARINE_LITTER_CONTENT);
}
@Test
public void exportIndividualObservations() throws Exception {
TuttiExportService.ExportContext exportContext =
- service.createExportContext(datadirectory);
+ service.createExportContext(dataDirectory);
try {
service.exportIndividualObservations(exportContext, cruise, operations);
} finally {
exportContext.close();
}
- Assert.assertTrue(exportContext.individualObservationFile.exists());
- int expectedRow = 1 /* header*/
- + 5 /* individualObservation 0 */
- + 3 /* individualObservation 1 */
- + 5 /* individualObservation 2 */
- + 3 /* individualObservation 3 */;
-
- if (log.isInfoEnabled()) {
- log.info("individualObservation export:\n" +
- Files.toString(exportContext.individualObservationFile, Charsets.UTF_8));
- }
-
- Assert.assertEquals(expectedRow, Files.readLines(exportContext.individualObservationFile, Charsets.UTF_8).size());
+ assertFileContent("individualObservation export:\n",
+ exportContext.individualObservationFile,
+ INDIVIDUAL_OBSERVATION_CONTENT);
}
- private List<TuttiLocation> createCountries() {
- List<TuttiLocation> result = Lists.newArrayList();
- TuttiLocation country = TuttiBeanFactory.newTuttiLocation();
- country.setId(serviceContext.getConfig().getExportCountryId());
- country.setName("CountryName");
- country.setLabel("CountryLabel");
- result.add(country);
- return result;
- }
+ @Test
+ public void exportAccidentalCatch() throws Exception {
- private Program createProgram() {
- TuttiLocation programZone = TuttiBeanFactory.newTuttiLocation();
- programZone.setId(0);
- programZone.setName("ProgramZoneName");
- programZone.setLabel("ProgramZoneLabel");
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(dataDirectory);
- 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);
- return program;
- }
-
- private Cruise createCruise() {
-
- 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");
-
- 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<MarineLitterBatch> createMarineLitters(List<FishingOperation> operations) {
-
- List<MarineLitterBatch> result = Lists.newArrayList();
-
- MarineLitterBatch marineLitterBatch;
-
- marineLitterBatch = TuttiBeanFactory.newMarineLitterBatch();
- result.add(marineLitterBatch);
- marineLitterBatch.setFishingOperation(operations.get(0));
- marineLitterBatch.setId(1);
- marineLitterBatch.setMarineLitterCategory(marineLitterCategory.getQualitativeValue(0));
- marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory.getQualitativeValue(0));
- marineLitterBatch.setComment("Comment1");
- marineLitterBatch.setNumber(10);
- marineLitterBatch.setWeight(10f);
-
- marineLitterBatch = TuttiBeanFactory.newMarineLitterBatch();
- result.add(marineLitterBatch);
- marineLitterBatch.setFishingOperation(operations.get(0));
- marineLitterBatch.setId(2);
- marineLitterBatch.setMarineLitterCategory(marineLitterCategory.getQualitativeValue(1));
- marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory.getQualitativeValue(1));
- marineLitterBatch.setComment("Comment2");
- marineLitterBatch.setNumber(20);
- marineLitterBatch.setWeight(20f);
-
- marineLitterBatch = TuttiBeanFactory.newMarineLitterBatch();
- result.add(marineLitterBatch);
- marineLitterBatch.setFishingOperation(operations.get(1));
- marineLitterBatch.setId(10);
- marineLitterBatch.setMarineLitterCategory(marineLitterCategory.getQualitativeValue(0));
- marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory.getQualitativeValue(0));
- marineLitterBatch.setComment("Comment10");
- marineLitterBatch.setNumber(100);
- marineLitterBatch.setWeight(100f);
-
- marineLitterBatch = TuttiBeanFactory.newMarineLitterBatch();
- result.add(marineLitterBatch);
- marineLitterBatch.setFishingOperation(operations.get(1));
- marineLitterBatch.setId(20);
- marineLitterBatch.setMarineLitterCategory(marineLitterCategory.getQualitativeValue(1));
- marineLitterBatch.setMarineLitterSizeCategory(marineLitterSizeCategory.getQualitativeValue(1));
- marineLitterBatch.setComment("Comment20");
- marineLitterBatch.setNumber(200);
- marineLitterBatch.setWeight(200f);
-
- return result;
- }
-
- private List<IndividualObservationBatch> createIndividualObservations(List<FishingOperation> operations) {
-
- List<IndividualObservationBatch> result = Lists.newArrayList();
-
- Caracteristic lengthStepCaracteristic = TuttiBeanFactory.newCaracteristic();
- lengthStepCaracteristic.setCaracteristicType(CaracteristicType.NUMBER);
- lengthStepCaracteristic.setId(200);
-
- IndividualObservationBatch batch;
-
- // 5 caracteristics (lengthStep - size - weight - samplingCode - CalcifiedPieceSamplingCode)
- batch = TuttiBeanFactory.newIndividualObservationBatch();
- result.add(batch);
- batch.setFishingOperation(operations.get(0));
- batch.setId(1);
- batch.setComment("Comment1");
- batch.setLengthStepCaracteristic(lengthStepCaracteristic);
- batch.setSize(10f);
- batch.setWeight(10f);
- batch.setSamplingCode("0");
- batch.setCalcifiedPieceSamplingCode("C1");
-
- // 3 caracteristics (lengthStep - size - weight)
- batch = TuttiBeanFactory.newIndividualObservationBatch();
- result.add(batch);
- batch.setFishingOperation(operations.get(0));
- batch.setId(2);
- batch.setComment("Comment2");
- batch.setLengthStepCaracteristic(lengthStepCaracteristic);
- batch.setSize(20f);
- batch.setWeight(20f);
-
- // 5 caracteristics (lengthStep - size - weight + 2 others)
- batch = TuttiBeanFactory.newIndividualObservationBatch();
- result.add(batch);
- batch.setFishingOperation(operations.get(1));
- batch.setId(10);
- batch.setComment("Comment10");
- batch.setLengthStepCaracteristic(lengthStepCaracteristic);
- batch.setSize(100f);
- batch.setWeight(100f);
- batch.setCaracteristics(new CaracteristicMap());
-
- Caracteristic caracteristic;
-
- caracteristic = TuttiBeanFactory.newCaracteristic();
- caracteristic.setCaracteristicType(CaracteristicType.NUMBER);
- caracteristic.setId(100);
- batch.getCaracteristics().put(caracteristic, 100);
-
- caracteristic = TuttiBeanFactory.newCaracteristic();
- caracteristic.setCaracteristicType(CaracteristicType.TEXT);
- caracteristic.setId(101);
- batch.getCaracteristics().put(caracteristic, "Text");
-
- // 3 caracteristics (weight - samplingCode - calcifiedPieceSamplingCode)
- batch = TuttiBeanFactory.newIndividualObservationBatch();
- result.add(batch);
- batch.setFishingOperation(operations.get(1));
- batch.setId(20);
- batch.setComment("Comment20");
- batch.setWeight(200f);
- batch.setSamplingCode("20");
- batch.setCalcifiedPieceSamplingCode("2C1");
-
- return result;
- }
-
- 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");
-
- marineLitterCategory = TuttiBeanFactory.newCaracteristic();
- marineLitterCategory.setCaracteristicType(CaracteristicType.QUALITATIVE);
- marineLitterCategory.setId(13);
- marineLitterCategory.setQualitativeValue(Lists.<CaracteristicQualitativeValue>newArrayList());
- CaracteristicQualitativeValue qualitativeValue;
- qualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue();
- qualitativeValue.setId(1);
- qualitativeValue.setName("Plastic");
- marineLitterCategory.addQualitativeValue(qualitativeValue);
- qualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue();
- qualitativeValue.setId(2);
- qualitativeValue.setName("Machine à laver");
- marineLitterCategory.addQualitativeValue(qualitativeValue);
-
- marineLitterSizeCategory = TuttiBeanFactory.newCaracteristic();
- marineLitterSizeCategory.setCaracteristicType(CaracteristicType.QUALITATIVE);
- marineLitterSizeCategory.setId(14);
- marineLitterSizeCategory.setQualitativeValue(Lists.<CaracteristicQualitativeValue>newArrayList());
-
- qualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue();
- qualitativeValue.setId(3);
- qualitativeValue.setName("Petit");
- marineLitterSizeCategory.addQualitativeValue(qualitativeValue);
- qualitativeValue = TuttiBeanFactory.newCaracteristicQualitativeValue();
- qualitativeValue.setId(4);
- qualitativeValue.setName("Gros");
- marineLitterSizeCategory.addQualitativeValue(qualitativeValue);
-
- sampleIdCaracteristic = TuttiBeanFactory.newCaracteristic();
- sampleIdCaracteristic.setCaracteristicType(CaracteristicType.TEXT);
- sampleIdCaracteristic.setId(15);
-
- otolitheIdCaracteristic = TuttiBeanFactory.newCaracteristic();
- otolitheIdCaracteristic.setCaracteristicType(CaracteristicType.TEXT);
- otolitheIdCaracteristic.setId(16);
-
- weightMeasuredCaracteristic = TuttiBeanFactory.newCaracteristic();
- weightMeasuredCaracteristic.setCaracteristicType(CaracteristicType.NUMBER);
- weightMeasuredCaracteristic.setId(17);
-
- pmfmIdCaracteristic = TuttiBeanFactory.newCaracteristic();
- pmfmIdCaracteristic.setCaracteristicType(CaracteristicType.TEXT);
- pmfmIdCaracteristic.setId(18);
-
-
- }
-
- 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);
+ try {
+ service.exportAccidentalCatch(exportContext, cruise, operations);
+ } finally {
+ exportContext.close();
}
-
- 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));
- gearUseFeatures.put(caracteristicVerticalOpening, 5);
- gearUseFeatures.put(caracteristicHorizontalOpeningDoor, -2);
- gearUseFeatures.put(caracteristicHorizontalOpeningWing, -9);
-
- 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;
+ assertFileContent("accidentalCatch export:\n",
+ exportContext.accidentalCatchFile,
+ ACCIDENTAL_CATCH_CONTENT);
}
-
- 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;
- }
}
Added: trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties
===================================================================
--- trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties (rev 0)
+++ trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties 2013-05-11 15:53:26 UTC (rev 935)
@@ -0,0 +1,27 @@
+###
+# #%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%
+###
+tutti.persistence.db.directory=src/test/dbGenericExport
+tutti.persistence.jdbc.url=jdbc:hsqldb:file:src/test/dbGenericExport/allegro
+#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
+#tutti.persistence.jdbc.createScript=src/test/dbEmpty/allegro.script
\ No newline at end of file
Property changes on: trunk/tutti-service/src/test/resources/tutti-test-read-dbGenericExport.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/pom.xml 2013-05-11 15:53:26 UTC (rev 935)
@@ -371,11 +371,6 @@
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- </dependency>
-
- <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -102,8 +102,8 @@
ProgressionModel progressionModel = new ProgressionModel();
setProgressionModel(progressionModel);
- // check cruise / export cruise / operation / parameter / catches / zip
- progressionModel.setTotal(6);
+ // (check cruise / export cruise / operation / parameter / accidental catches / catches / individual observation) / zip
+ progressionModel.setTotal(8);
TuttiExportService service = getContext().getTuttiExportService();
service.exportCruise(cruise.getId(), file, progressionModel);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -101,13 +101,13 @@
" to file: " + file);
}
- // nbCruise * (check cruise / export cruise / operation / parameter / catches) + zip
+ // nbCruise * (check cruise / export cruise / operation / parameter / catches / individual observation / accidental catches) + zip
List<Cruise> allCruise =
getContext().getPersistenceService().getAllCruise(program.getId());
ProgressionModel progressionModel = new ProgressionModel();
setProgressionModel(progressionModel);
- progressionModel.setTotal(5 * allCruise.size() + 1);
+ progressionModel.setTotal(7 * allCruise.size() + 1);
TuttiExportService service = getContext().getTuttiExportService();
service.exportProgram(program.getId(), file, progressionModel);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -47,7 +47,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.decorator.Decorator;
-import org.springframework.dao.DataRetrievalFailureException;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
@@ -537,34 +536,40 @@
PersistenceService persistenceService =
getContext().getPersistenceService();
- try {
- batch = persistenceService.getCatchBatchFromFishingOperation(operationId);
- batch.setFishingOperation(bean);
- Integer objectId = Integer.valueOf(batch.getId());
- attachments = persistenceService.getAllAttachments(catchesUIModel.getObjectType(), objectId);
- getModel().setCatchNotFound(false);
- getModel().setCatchEnabled(true);
+ boolean withCatchBath =
+ persistenceService.isFishingOperationWithCatchBatch(
+ operationId);
- } catch (DataRetrievalFailureException e) {
- // batch not found
- if (log.isDebugEnabled()) {
- log.debug("Batch not found", e);
- }
- batch = null;
- attachments = Collections.emptyList();
+ if (withCatchBath) {
- getModel().setCatchEnabled(false);
- getModel().setCatchNotFound(true);
- } catch (InvalidBatchModelException e) {
+ // load it
+ try {
+ batch = persistenceService.getCatchBatchFromFishingOperation(operationId);
+ batch.setFishingOperation(bean);
+ Integer objectId = Integer.valueOf(batch.getId());
+ attachments = persistenceService.getAllAttachments(catchesUIModel.getObjectType(), objectId);
+ getModel().setCatchNotFound(false);
+ getModel().setCatchEnabled(true);
- // batch is not compatible with Tutti
- if (log.isDebugEnabled()) {
- log.debug("Invalid batch model", e);
+ } catch (InvalidBatchModelException e) {
+
+ // batch is not compatible with Tutti
+ if (log.isDebugEnabled()) {
+ log.debug("Invalid batch model", e);
+ }
+ batch = null;
+ attachments = Collections.emptyList();
+
+ getModel().setCatchEnabled(false);
}
+ } else {
+
+ // no catch batch
batch = null;
attachments = Collections.emptyList();
getModel().setCatchEnabled(false);
+ getModel().setCatchNotFound(true);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -201,6 +201,16 @@
firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
}
+ @Override
+ public void setRankOrder(Integer rankOrder) {
+ editObject.setRankOrder(rankOrder);
+ }
+
+ @Override
+ public Integer getRankOrder() {
+ return editObject.getRankOrder();
+ }
+
//------------------------------------------------------------------------//
//-- AttachmentModelAware --//
//------------------------------------------------------------------------//
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-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -622,7 +622,7 @@
@Override
public AttachementObjectTypeEnum getObjectType() {
- return AttachementObjectTypeEnum.SAMPLE;
+ return AttachementObjectTypeEnum.BATCH;
}
@Override
@@ -865,4 +865,13 @@
}
return result;
}
+
+ @Override
+ public Integer getRankOrder() {
+ return null;
+ }
+
+ @Override
+ public void setRankOrder(Integer rankOrder) {
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -185,4 +185,13 @@
protected BenthosBatchFrequency newEntity() {
return TuttiBeanFactory.newBenthosBatchFrequency();
}
+
+ @Override
+ public Integer getRankOrder() {
+ return null;
+ }
+
+ @Override
+ public void setRankOrder(Integer rankOrder) {
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -200,6 +200,16 @@
firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
}
+ @Override
+ public Integer getRankOrder() {
+ return editObject.getRankOrder();
+ }
+
+ @Override
+ public void setRankOrder(Integer rankOrder) {
+ editObject.setRankOrder(rankOrder);
+ }
+
//------------------------------------------------------------------------//
//-- AttachmentModelAware --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchRowModel.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchRowModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -160,13 +160,23 @@
firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
}
+ @Override
+ public Integer getRankOrder() {
+ return editObject.getRankOrder();
+ }
+
+ @Override
+ public void setRankOrder(Integer rankOrder) {
+ editObject.setRankOrder(rankOrder);
+ }
+
//------------------------------------------------------------------------//
//-- AttachmentModelAware --//
//------------------------------------------------------------------------//
@Override
public AttachementObjectTypeEnum getObjectType() {
- return AttachementObjectTypeEnum.SAMPLE;
+ return AttachementObjectTypeEnum.BATCH;
}
@Override
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-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -432,6 +432,16 @@
public void setChildBatchs(List<SpeciesBatch> childBatchs) {
}
+ @Override
+ public Integer getRankOrder() {
+ return editObject.getRankOrder();
+ }
+
+ @Override
+ public void setRankOrder(Integer rankOrder) {
+ editObject.setRankOrder(rankOrder);
+ }
+
//------------------------------------------------------------------------//
//-- Sample category --//
//------------------------------------------------------------------------//
@@ -714,7 +724,7 @@
@Override
public AttachementObjectTypeEnum getObjectType() {
- return AttachementObjectTypeEnum.SAMPLE;
+ return AttachementObjectTypeEnum.BATCH;
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java 2013-05-11 15:08:49 UTC (rev 934)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java 2013-05-11 15:53:26 UTC (rev 935)
@@ -185,4 +185,13 @@
protected SpeciesBatchFrequency newEntity() {
return TuttiBeanFactory.newSpeciesBatchFrequency();
}
+
+ @Override
+ public Integer getRankOrder() {
+ return null;
+ }
+
+ @Override
+ public void setRankOrder(Integer rankOrder) {
+ }
}
1
0
r934 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-service/src/main/java/fr/ifremer/tutti/service
by tchemit@users.forge.codelutin.com 11 May '13
by tchemit@users.forge.codelutin.com 11 May '13
11 May '13
Author: tchemit
Date: 2013-05-11 17:08:49 +0200 (Sat, 11 May 2013)
New Revision: 934
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/934
Log:
- refs #2410: [TRAIT] Pas d'arbre d'?\195?\169chantillonnage associ?\195?\169 ?\195?\160 une op?\195?\169ration de p?\195?\170che
- improve attachment api javadoc
Modified:
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/data/AttachementObjectTypeEnum.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
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-05-08 16:06:49 UTC (rev 933)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-05-11 15:08:49 UTC (rev 934)
@@ -312,9 +312,10 @@
/**
* Get all attachments for the given object {@code objectId} of type.
*
- * @param objectType type of attachment
+ * @param objectType type of attachment (see {@link AttachementObjectTypeEnum})
* @param objectId id of the object
* @return list of all attachments for the given {@code objectId}.
+ * @see AttachementObjectTypeEnum
*/
List<Attachment> getAllAttachments(AttachementObjectTypeEnum objectType,
Integer objectId);
@@ -447,6 +448,15 @@
//------------------------------------------------------------------------//
/**
+ * @param operationId id of the fishing operation
+ * @return {@code true} if there is a catchBatch for the given fishing
+ * operation, {@code false} otherwise.
+ * @since 2.2
+ */
+
+ boolean isFishingOperationWithCatchBatch(String operationId);
+
+ /**
* Get the catchBatch from the fishing Operation id.
* <p/>
* If batch model is not compatible with Tutti then a
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-05-08 16:06:49 UTC (rev 933)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-05-11 15:08:49 UTC (rev 934)
@@ -69,6 +69,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataRetrievalFailureException;
import java.io.File;
import java.io.IOException;
@@ -592,6 +593,18 @@
//------------------------------------------------------------------------//
@Override
+ public boolean isFishingOperationWithCatchBatch(String operationId) {
+ boolean result;
+ try {
+ catchBatchService.getCatchBatchFromFishingOperation(operationId);
+ result = true;
+ } catch (DataRetrievalFailureException e) {
+ result = false;
+ }
+ return result;
+ }
+
+ @Override
public CatchBatch getCatchBatchFromFishingOperation(String id) throws InvalidBatchModelException {
return catchBatchService.getCatchBatchFromFishingOperation(id);
}
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-05-08 16:06:49 UTC (rev 933)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-05-11 15:08:49 UTC (rev 934)
@@ -397,6 +397,11 @@
}
@Override
+ public boolean isFishingOperationWithCatchBatch(String operationId) {
+ throw notImplemented();
+ }
+
+ @Override
public CatchBatch getCatchBatchFromFishingOperation(String id) {
throw notImplemented();
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/AttachementObjectTypeEnum.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/AttachementObjectTypeEnum.java 2013-05-08 16:06:49 UTC (rev 933)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/AttachementObjectTypeEnum.java 2013-05-11 15:08:49 UTC (rev 934)
@@ -41,10 +41,19 @@
*/
public enum AttachementObjectTypeEnum implements TuttiEnumerationFile.TuttiEnumerable<String> {
+ /** For cruise only. */
SCIENTIFIC_CRUISE("OBJECT_TYPE_SCIENTIFIC_CRUISE"),
+
+ /** For {@link FishingOperation} only. */
OPERATION("OBJECT_TYPE_OPERATION"),
+
+ /** For {@link CatchBatch} only. */
CATCH_BATCH("OBJECT_TYPE_CATCH_BATCH"),
+
+ /** For batch only ({@link SpeciesBatch} / {@link BenthosBatch} / {@link MarineLitterBatch}). */
BATCH("OBJECT_TYPE_BATCH"),
+
+ /** For sample only ({@link AccidentalBatch} / {@link IndividualObservationBatch}).. */
SAMPLE("OBJECT_TYPE_SAMPLE");
private final String fieldName;
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceService.java 2013-05-08 16:06:49 UTC (rev 933)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceService.java 2013-05-11 15:08:49 UTC (rev 934)
@@ -44,8 +44,10 @@
/**
* Get all attachments for the given object {@code objectId}.
*
- * @param objectId id of the object
+ * @param objectType type of object.
+ * @param objectId id of the object
* @return list of all attachments for the given {@code objectId}.
+ * (see {@link AttachementObjectTypeEnum})
*/
List<Attachment> getAllAttachments(AttachementObjectTypeEnum objectType,
Integer objectId);
@@ -91,7 +93,7 @@
* Deletes all attachments of the given object ids.
*
* @param objectType type of attachment
- * @param objectIds ids of object
+ * @param objectIds ids of object
*/
@Transactional(readOnly = false)
void deleteAllAttachment(AttachementObjectTypeEnum objectType,
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-05-08 16:06:49 UTC (rev 933)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-11 15:08:49 UTC (rev 934)
@@ -688,6 +688,11 @@
//------------------------------------------------------------------------//
@Override
+ public boolean isFishingOperationWithCatchBatch(String operationId) {
+ return driver.isFishingOperationWithCatchBatch(operationId);
+ }
+
+ @Override
public CatchBatch getCatchBatchFromFishingOperation(String id) throws InvalidBatchModelException {
return driver.getCatchBatchFromFishingOperation(id);
1
0
r933 - in trunk: tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species
by tchemit@users.forge.codelutin.com 08 May '13
by tchemit@users.forge.codelutin.com 08 May '13
08 May '13
Author: tchemit
Date: 2013-05-08 18:06:49 +0200 (Wed, 08 May 2013)
New Revision: 933
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/933
Log:
add missing svn properties + license header
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java 2013-05-08 15:54:29 UTC (rev 932)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java 2013-05-08 16:06:49 UTC (rev 933)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.service.catches.multipost;
+/*
+ * #%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.referential.Caracteristic;
import java.io.Serializable;
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.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/catches/multipost/CatchFrequencyRowModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java 2013-05-08 15:54:29 UTC (rev 932)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java 2013-05-08 16:06:49 UTC (rev 933)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.service.catches.multipost;
+/*
+ * #%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.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.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/catches/multipost/CatchRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java 2013-05-08 15:54:29 UTC (rev 932)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java 2013-05-08 16:06:49 UTC (rev 933)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.service.catches.multipost;
+/*
+ * #%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.Maps;
import fr.ifremer.tutti.persistence.entities.data.*;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java 2013-05-08 15:54:29 UTC (rev 932)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java 2013-05-08 16:06:49 UTC (rev 933)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.service.catches.multipost;
+/*
+ * #%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.*;
import fr.ifremer.tutti.persistence.entities.referential.*;
import fr.ifremer.tutti.service.PersistenceService;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java 2013-05-08 15:54:29 UTC (rev 932)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java 2013-05-08 16:06:49 UTC (rev 933)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.service.catches.multipost;
+/*
+ * #%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.collect.Lists;
import com.google.common.io.Files;
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java 2013-05-08 15:54:29 UTC (rev 932)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java 2013-05-08 16:06:49 UTC (rev 933)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.operation.catches.species;
+/*
+ * #%L
+ * Tutti :: UI
+ * $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.FishingOperation;
import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.catches.multipost.TuttiMultiPostImportExportService;
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java 2013-05-08 15:54:29 UTC (rev 932)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java 2013-05-08 16:06:49 UTC (rev 933)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.operation.catches.species;
+/*
+ * #%L
+ * Tutti :: UI
+ * $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.CatchBatch;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationAction;
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
08 May '13
Author: tchemit
Date: 2013-05-08 17:54:29 +0200 (Wed, 08 May 2013)
New Revision: 932
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/932
Log:
optimize dependencies
Modified:
trunk/tutti-service/pom.xml
trunk/tutti-ui-swing/pom.xml
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-05-08 15:45:54 UTC (rev 931)
+++ trunk/tutti-service/pom.xml 2013-05-08 15:54:29 UTC (rev 932)
@@ -125,6 +125,11 @@
<artifactId>xwork-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ </dependency>
+
<!-- Logging -->
<dependency>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-05-08 15:45:54 UTC (rev 931)
+++ trunk/tutti-ui-swing/pom.xml 2013-05-08 15:54:29 UTC (rev 932)
@@ -371,6 +371,11 @@
</dependency>
<dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
1
0
r931 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/content java/fr/ifremer/tutti/ui/swing/content/db java/fr/ifremer/tutti/ui/swing/util resources/i18n
by tchemit@users.forge.codelutin.com 08 May '13
by tchemit@users.forge.codelutin.com 08 May '13
08 May '13
Author: tchemit
Date: 2013-05-08 17:45:54 +0200 (Wed, 08 May 2013)
New Revision: 931
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/931
Log:
fixes #2313: [GENERAL] erreur au red?\195?\169marage de tutti si l abase est d?\195?\169j?\195?\160 utilis?\195?\169e par une autre instance de tutti
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-05-08 14:41:35 UTC (rev 930)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-05-08 15:45:54 UTC (rev 931)
@@ -814,4 +814,12 @@
Object newValue) {
firePropertyChange(propertyName, oldValue, newValue);
}
+
+ public void setFallBackScreen() {
+ if (isDbLoaded()) {
+ setScreen(TuttiScreen.SELECT_CRUISE);
+ } else {
+ setScreen(TuttiScreen.MANAGE_DB);
+ }
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java 2013-05-08 14:41:35 UTC (rev 930)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java 2013-05-08 15:45:54 UTC (rev 931)
@@ -86,37 +86,27 @@
TuttiUIContext context = getContext();
- try {
-
- TuttiScreen previousScreen = context.getScreen();
- if (getUI() != null) {
- if (previousScreen == null) {
- PREVIOUS_SCREEN.removeContextValue(getUI());
- } else {
- PREVIOUS_SCREEN.setContextValue(getUI(), previousScreen);
- }
+ TuttiScreen previousScreen = context.getScreen();
+ if (getUI() != null) {
+ if (previousScreen == null) {
+ PREVIOUS_SCREEN.removeContextValue(getUI());
+ } else {
+ PREVIOUS_SCREEN.setContextValue(getUI(), previousScreen);
}
+ }
- // clean current screen
- context.setScreen(null);
+ // clean current screen
+ context.setScreen(null);
- // change screen
- context.setScreen(screen);
-
- } catch (Exception e) {
- throw e;
- }
+ // change screen
+ context.setScreen(screen);
}
@Override
public void postFailedAction(Throwable error) {
- TuttiUIContext context = getContext();
if (error != null) {
- if (context.isDbLoaded()) {
- context.setScreen(TuttiScreen.SELECT_CRUISE);
- } else {
- context.setScreen(TuttiScreen.MANAGE_DB);
- }
+
+ getContext().setFallBackScreen();
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-05-08 14:41:35 UTC (rev 930)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-05-08 15:45:54 UTC (rev 931)
@@ -51,25 +51,26 @@
String message;
if (dbExist) {
+
+ String jdbcUrl = getConfig().getServiceConfig().getPersistenceConfig().getJdbcUrl();
+
if (dbLoaded) {
- String jdbcUrl = getConfig().getServiceConfig().getPersistenceConfig().getJdbcUrl();
-
// db loaded
message = _("tutti.dbManager.info.db.loaded", jdbcUrl);
} else {
// no db loaded
- message = _("tutti.dbManager.info.no.db.loaded");
+ message = _("tutti.dbManager.info.no.db.loaded", jdbcUrl);
}
} else {
// db does not exist
message = _("tutti.dbManager.info.no.db.exist");
- ui.getInformationLabel().setText(_(message));
+// ui.getInformationLabel().setText(_(message));
}
- return message;
+ return "<html><body>" + message + "</body></html>";
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-05-08 14:41:35 UTC (rev 930)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-05-08 15:45:54 UTC (rev 931)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.content.AbstractChangeScreenAction;
@@ -55,9 +56,20 @@
if (log.isDebugEnabled()) {
log.debug("Will open db...");
}
- getContext().setDbLoaded(true);
- getHandler().reloadPersistenceService();
+ try {
+ getContext().setDbLoaded(true);
+ getHandler().reloadPersistenceService();
+ } catch (Exception e) {
+
+ // no more db
+ getContext().setDbLoaded(false);
+ getHandler().reloadPersistenceService();
+
+ // could not load db
+ throw new TuttiBusinessException(_("tutti.dbManager.action.openDb.couldNotOpen"));
+ }
+
if (log.isDebugEnabled()) {
log.debug("Check db context");
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java 2013-05-08 14:41:35 UTC (rev 930)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java 2013-05-08 15:45:54 UTC (rev 931)
@@ -25,7 +25,6 @@
*/
import fr.ifremer.tutti.TuttiTechnicalException;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.AbstractChangeScreenAction;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
@@ -98,7 +97,8 @@
TuttiUIContext.getErrorHelper().showErrorDialog(cause.getMessage(), cause);
if (backToScreen) {
- action.getContext().setScreen(TuttiScreen.SELECT_CRUISE);
+
+ action.getContext().setFallBackScreen();
}
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-08 14:41:35 UTC (rev 930)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-08 15:45:54 UTC (rev 931)
@@ -241,6 +241,7 @@
tutti.dbManager.action.installDb.mnemonic=
tutti.dbManager.action.installDb.tip=
tutti.dbManager.action.openDb=
+tutti.dbManager.action.openDb.couldNotOpen=
tutti.dbManager.action.openDb.mnemonic=
tutti.dbManager.action.openDb.tip=
tutti.dbManager.action.upgradeDb=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-08 14:41:35 UTC (rev 930)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-08 15:45:54 UTC (rev 931)
@@ -236,6 +236,7 @@
tutti.dbManager.action.installDb.mnemonic=n
tutti.dbManager.action.installDb.tip=Télécharger puis installer la base de données
tutti.dbManager.action.openDb=Ouvrir
+tutti.dbManager.action.openDb.couldNotOpen=Impossible d'ouvrir la base, elle est peut-être déjà utilisée par une autre application (ou une autre instance de Tutti).
tutti.dbManager.action.openDb.mnemonic=O
tutti.dbManager.action.openDb.tip=Ouvrir la base de données
tutti.dbManager.action.upgradeDb=Vérifier les mises à jour
@@ -245,9 +246,9 @@
tutti.dbManager.action.upgradeDb.reloading=Rechargement de la base de données
tutti.dbManager.action.upgradeDb.tip=Mettre à jour les référentiels si nécessaire
tutti.dbManager.action.upgradeDb.upToDate=Aucune mise à jour de base détectée.
-tutti.dbManager.info.db.loaded=<html>Tutti est connecté à une base de données<hr/>Url de connexion \: <strong>%s</strong></html>
+tutti.dbManager.info.db.loaded=Tutti est connecté à une base de données<hr/>Url de connexion \: <strong>%s</strong>
tutti.dbManager.info.no.db.exist=Aucune base détectée, vous pouvez installer la dernière disponible sur le réseau ou bien en importer une.
-tutti.dbManager.info.no.db.loaded=Tutti possède une base mais elle n'est pas actuellement ouverte.
+tutti.dbManager.info.no.db.loaded=Tutti possède une base (<strong>%s</strong>).<br/>Elle n'a pas pu être ouverte, elle doit être probablement utilisée par une autre application.<hr/>Quitter les applications l'utilisant puis redémarrer Tutti.
tutti.dbManager.title.choose.dbExportFile=Exporter la base de données
tutti.dbManager.title.choose.dbImportFile=Importer la base de données
tutti.editAccidentalBatch.action.createBatch=Créer une capture accidentelle
1
0
08 May '13
Author: tchemit
Date: 2013-05-08 16:41:35 +0200 (Wed, 08 May 2013)
New Revision: 930
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/930
Log:
- fixes #2410: [TRAIT] Pas d'arbre d'?\195?\169chantillonnage associ?\195?\169 ?\195?\160 une op?\195?\169ration de p?\195?\170che
- fixes #2395: [TRAIT] Il manque un sablier quand on s?\195?\169lectionne un trait dans la liste
- clean some action api
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/RemoveBenthosBatchAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -28,16 +28,29 @@
import com.google.common.collect.Maps;
import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.TuttiTechnicalException;
-import fr.ifremer.tutti.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.InvalidBatchModelException;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols;
-import fr.ifremer.tutti.service.*;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiDataContext;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.ValidationService;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.validator.NuitonValidatorResult;
import org.nuiton.validator.NuitonValidatorScope;
+import org.springframework.dao.DataRetrievalFailureException;
import java.io.File;
import java.io.IOException;
@@ -75,6 +88,7 @@
/**
* Validates the operations of the currently selected cruise.
+ *
* @return a map containing the operations and the validation results
*/
public Map<FishingOperation, NuitonValidatorResult> validateCruiseOperations() {
@@ -95,6 +109,7 @@
/**
* Validates the operation of the currently selected cruise whose id is the given id.
+ *
* @return the validation results
*/
public NuitonValidatorResult validateCruiseOperation(FishingOperation operation) {
@@ -105,6 +120,7 @@
/**
* Validates the operation of the currently selected cruise whose id is the given id.
+ *
* @return the validation results
*/
public NuitonValidatorResult validateCruiseOperation(CatchBatch catches) {
@@ -116,7 +132,6 @@
}
/**
- *
* @param file
* @param validationResults
*/
@@ -135,7 +150,6 @@
}
/**
- *
* @param file
* @param operation
* @param validationResult
@@ -157,22 +171,48 @@
/**
* Adds additional messages to the validation results
+ *
* @param fishingOperation the operation to validate
- * @param validator the validatpr containing the messages.
+ * @param validator the validatpr containing the messages.
*/
protected void checkOperation(FishingOperation fishingOperation,
NuitonValidatorResult validator) {
String fishingOperationId = fishingOperation.getId();
- CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
- checkOperation(fishingOperation, catchBatch, validator);
+
+ try {
+ CatchBatch catchBatch =
+ persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
+
+ checkOperation(fishingOperation, catchBatch, validator);
+ } catch (DataRetrievalFailureException e) {
+ // batch not found
+ if (log.isDebugEnabled()) {
+ log.debug("Catch batch not found", e);
+ }
+ Map<String, List<String>> errorMap = Maps.newHashMap();
+ errorMap.put("catches", Lists.newArrayList(_("tutti.validator.warning.fishingOperation.batch.notFound")));
+ validator.addMessagesForScope(NuitonValidatorScope.WARNING, errorMap);
+
+ } catch (InvalidBatchModelException e) {
+
+ // batch is not compatible with Tutti
+ if (log.isDebugEnabled()) {
+ log.debug("Invalid batch model", e);
+ }
+ Map<String, List<String>> errorMap = Maps.newHashMap();
+ errorMap.put("catches", Lists.newArrayList(_("tutti.validator.warning.fishingOperation.invalid.batch.model")));
+ validator.addMessagesForScope(NuitonValidatorScope.WARNING, errorMap);
+ }
+
}
/**
* Adds additional messages to the validation results
+ *
* @param fishingOperation the operation to validate
* @param fishingOperation the catchBatch to validate
- * @param validator the validatpr containing the messages.
+ * @param validator the validatpr containing the messages.
*/
protected void checkOperation(FishingOperation fishingOperation,
CatchBatch catchBatch,
@@ -215,9 +255,9 @@
try {
if (catchBatch != null) {
tuttiWeightComputingService.computeCatchBatchWeights(catchBatch,
- rootSpeciesBatch,
- rootBenthosBatch,
- rootMarineLitterBatch);
+ rootSpeciesBatch,
+ rootBenthosBatch,
+ rootMarineLitterBatch);
}
} catch (TuttiBusinessException e) {
errors.add(e.getMessage());
@@ -252,7 +292,8 @@
/**
* Is the species batch respecting the protocol recommendations?
- * @param batch the batch to check
+ *
+ * @param batch the batch to check
* @param protocol the current protocol
* @return true if the batch or one of its children does not respect the protocol, false otherwise
*/
@@ -274,7 +315,8 @@
/**
* Is the benthos batch respecting the protocol recommendations?
- * @param batch the batch to check
+ *
+ * @param batch the batch to check
* @param protocol the current protocol
* @return true if the batch or one of its children does not respect the protocol, false otherwise
*/
@@ -295,7 +337,6 @@
}
/**
- *
* @param operation
* @param validationResult
*/
@@ -303,7 +344,7 @@
List<String> lines = Lists.newArrayList();
lines.add(_("tutti.validator.export.operation",
- decoratorService.getDecoratorByType(FishingOperation.class).toString(operation)));
+ decoratorService.getDecoratorByType(FishingOperation.class).toString(operation)));
List<String> messages = validationResult.getMessagesForScope(NuitonValidatorScope.ERROR);
for (String message : messages) {
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-08 14:41:35 UTC (rev 930)
@@ -83,6 +83,7 @@
tutti.service.exportSumatra.header.weight=
tutti.service.mkDir.error=
tutti.service.multipost.export.error=
+tutti.service.multipost.export.frequencies.error=
tutti.service.operations.accidental.error.species.required=
tutti.service.operations.computeWeights.benthos.error.incoherentCategoryWeight=
tutti.service.operations.computeWeights.benthos.error.incoherentParentCategoryWeight=
@@ -211,6 +212,8 @@
tutti.validator.export.message.warning=
tutti.validator.export.operation=
tutti.validator.warning.benthos.protocolNotRespected=
+tutti.validator.warning.fishingOperation.batch.notFound=
+tutti.validator.warning.fishingOperation.invalid.batch.model=
tutti.validator.warning.latitude.outOfBounds=
tutti.validator.warning.longitude.outOfBounds=
tutti.validator.warning.marineLitter.weight.required=
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-08 14:41:35 UTC (rev 930)
@@ -81,6 +81,7 @@
tutti.service.exportSumatra.header.weight=Total
tutti.service.mkDir.error=Erreur à la création du dossier %s
tutti.service.multipost.export.error=
+tutti.service.multipost.export.frequencies.error=
tutti.service.operations.computeWeights.error.benthos.incoherentCategoryWeight=Le poids total des mensurations d'un lot du benthos est supérieur au poids de la catégorie
tutti.service.operations.computeWeights.error.benthos.incoherentParentCategoryWeight=Le poids de la catégorie d'un lot du benthos est différent de la somme des poids de ses sous-catégories
tutti.service.operations.computeWeights.error.benthos.incoherentRowWeightCategory=Le poids de sous-échantillon est renseigné alors que le lot n'a pas de poids.
@@ -184,6 +185,8 @@
tutti.validator.export.message.warning=\t- [WARNING] %s
tutti.validator.export.operation=* %s \:
tutti.validator.warning.benthos.protocolNotRespected=Un lot du benthos ne suit pas les recommandations du protocole
+tutti.validator.warning.fishingOperation.batch.notFound=Pas d'arbre d'échantilonnage trouvé
+tutti.validator.warning.fishingOperation.invalid.batch.model=Arbre d'échantilonnage non compatible avec Tutti
tutti.validator.warning.latitude.outOfBounds=La Latitude doit être comprise entre -90.0 et 90.0
tutti.validator.warning.longitude.outOfBounds=La longitude doit être comprise entre -180.0 et 180.0
tutti.validator.warning.marineLitter.weight.required=Un lot de macro-déchets n'a pas de poids
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -140,7 +140,7 @@
};
public EditCruiseFishingOperationAction(ValidateCruiseUIHandler handler) {
- super(handler, false);
+ super(handler, true);
setActionDescription(_("tutti.editFishingOperation.action.editFishingOperation.tip"));
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -33,7 +33,6 @@
import fr.ifremer.tutti.ui.swing.util.CloseableUI;
import fr.ifremer.tutti.ui.swing.util.RemoveablePropertyChangeListener;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
-import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.validator.swing.SwingValidator;
@@ -42,9 +41,19 @@
import org.nuiton.validator.NuitonValidatorResult;
import org.nuiton.validator.NuitonValidatorScope;
-import javax.swing.*;
-import javax.swing.tree.*;
-import java.awt.*;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPopupMenu;
+import javax.swing.JTree;
+import javax.swing.SwingUtilities;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreePath;
+import java.awt.Component;
+import java.awt.Point;
+import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
@@ -79,21 +88,15 @@
model.setValidator(validationService.validateCruiseOperations());
model.addPropertyChangeListener(ValidateCruiseUIModel.PROPERTY_SELECTED_FISHING_OPERATION,
- new RemoveablePropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- FishingOperation operation = (FishingOperation) evt.getNewValue();
+ new RemoveablePropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ FishingOperation operation = (FishingOperation) evt.getNewValue();
+ editFishingOperationAction.setFishingOperation(operation);
+ TuttiActionHelper.runAction(editFishingOperationAction);
+ }
+ });
- editFishingOperationAction.setFishingOperation(null);
- AbstractTuttiAction.runAction(editFishingOperationAction);
-
- if (operation != null) {
- editFishingOperationAction.setFishingOperation(operation);
- TuttiActionHelper.runAction(editFishingOperationAction);
- }
- }
- });
-
ui.setContextValue(model);
}
@@ -260,9 +263,9 @@
public void createChildren(NuitonValidatorResult validationResult) {
int messageNb = 0;
messageNb += addMessages(NuitonValidatorScope.ERROR,
- validationResult.getMessagesForScope(NuitonValidatorScope.ERROR));
+ validationResult.getMessagesForScope(NuitonValidatorScope.ERROR));
messageNb += addMessages(NuitonValidatorScope.WARNING,
- validationResult.getMessagesForScope(NuitonValidatorScope.WARNING));
+ validationResult.getMessagesForScope(NuitonValidatorScope.WARNING));
if (messageNb == 0) {
addMessages(NuitonValidatorScope.INFO, Lists.newArrayList(_("tutti.validator.info.operation.noError")));
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -72,7 +72,7 @@
}
// cancel to create a new fishingOperation
action.setFishingOperation(null);
- runAction(action);
+ TuttiActionHelper.runInternalAction(action);
} else {
@@ -83,7 +83,7 @@
// re-edit current fishing operation (but do not perform any check)
action.setCheckPreviousEdit(false);
action.setFishingOperation(getModel().getFishingOperation());
- runAction(action);
+ TuttiActionHelper.runInternalAction(action);
}
//FIXME-TC Make sure this works again
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -74,17 +74,9 @@
}
getContext().getPersistenceService().deleteFishingOperation(fishingOperation.getId());
- }
- @Override
- public void postSuccessAction() {
- super.postSuccessAction();
-
FishingOperationsUIModel model = getModel();
- FishingOperation fishingOperation =
- model.getSelectedFishingOperation();
-
// unselect removed fishing operation
model.setSelectedFishingOperation(null);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -43,9 +43,11 @@
import fr.ifremer.tutti.ui.swing.content.operation.fishing.VesselUseFeatureTabUI;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.decorator.Decorator;
+import org.springframework.dao.DataRetrievalFailureException;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
@@ -248,12 +250,12 @@
// persist previous fishing operation
if (fishingOperationModified) {
getSaveFishingOperationAction().setUpdateUI(false);
- runAction(getSaveFishingOperationAction());
+ TuttiActionHelper.runInternalAction(getSaveFishingOperationAction());
}
if (catchBatchModified) {
getSaveCatchBatchAction().setUpdateUI(false);
- runAction(getSaveCatchBatchAction());
+ TuttiActionHelper.runInternalAction(getSaveCatchBatchAction());
}
canContinue = true;
@@ -540,8 +542,19 @@
batch.setFishingOperation(bean);
Integer objectId = Integer.valueOf(batch.getId());
attachments = persistenceService.getAllAttachments(catchesUIModel.getObjectType(), objectId);
+ getModel().setCatchNotFound(false);
getModel().setCatchEnabled(true);
+ } catch (DataRetrievalFailureException e) {
+ // batch not found
+ if (log.isDebugEnabled()) {
+ log.debug("Batch not found", e);
+ }
+ batch = null;
+ attachments = Collections.emptyList();
+
+ getModel().setCatchEnabled(false);
+ getModel().setCatchNotFound(true);
} catch (InvalidBatchModelException e) {
// batch is not compatible with Tutti
@@ -574,11 +587,13 @@
// 4) Propagate new selected fishingoperation to others tabs
- ui.getSpeciesTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
- ui.getBenthosTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
- ui.getMarineLitterTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
- ui.getAccidentalTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
- ui.getIndividualObservationTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
+ FishingOperation operationToLoad = batch == null ? null : bean;
+
+ ui.getSpeciesTabContent().getHandler().selectFishingOperation(operationToLoad);
+ ui.getBenthosTabContent().getHandler().selectFishingOperation(operationToLoad);
+ ui.getMarineLitterTabContent().getHandler().selectFishingOperation(operationToLoad);
+ ui.getAccidentalTabContent().getHandler().selectFishingOperation(operationToLoad);
+ ui.getIndividualObservationTabContent().getHandler().selectFishingOperation(operationToLoad);
}
catchesUIModel.setLoadingData(false);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css 2013-05-08 14:41:35 UTC (rev 930)
@@ -63,7 +63,7 @@
#warningLabel {
actionIcon: warning;
border: {new javax.swing.border.EmptyBorder(5, 10, 5, 10)};
- text: "tutti.fishingOperations.warn.invalid.batch.model";
+ text: {handler.getCatchWarningLabel(model.isCatchEnabled(), model.isCatchNotFound())};
}
#catchesTab {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -33,7 +33,6 @@
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler;
import fr.ifremer.tutti.ui.swing.util.CloseableUI;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
-import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
@@ -41,10 +40,13 @@
import javax.swing.JComponent;
import javax.swing.JTabbedPane;
+import javax.swing.SwingUtilities;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
+import static org.nuiton.i18n.I18n._;
+
/**
* Handler of UI {@link FishingOperationsUI}.
*
@@ -67,6 +69,10 @@
persistenceService = context.getPersistenceService();
}
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
+
@Override
public void beforeInitUI() {
@@ -148,13 +154,15 @@
operation.setCruise(cruise);
}
editFishingOperationAction.setFishingOperation(operation);
-// try {
- AbstractTuttiAction.runAction(editFishingOperationAction);
+ if (SwingUtilities.isEventDispatchThread()) {
-// } catch(RuntimeException e) {
-// getModel().setSelectedFishingOperation(null);
-//// throw e;
-// }
+ // launch a long action
+ TuttiActionHelper.runAction(editFishingOperationAction);
+ } else {
+
+ // run as an internal action (of embedded action)
+ TuttiActionHelper.runInternalAction(editFishingOperationAction);
+ }
}
}
});
@@ -222,11 +230,30 @@
return null;
}
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiTabContainerUIHandler methods --//
+ //------------------------------------------------------------------------//
+
@Override
public JTabbedPane getTabPanel() {
return ui.getTabPane();
}
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
+
+ public String getCatchWarningLabel(boolean catchEnabled,
+ boolean catchNotFound) {
+ String result = null;
+ if (catchNotFound) {
+ result = _("tutti.fishingOperations.warn.catchBatch.notFound");
+ } else if (!catchEnabled) {
+ result = _("tutti.fishingOperations.warn.invalid.batch.model");
+ }
+ return result;
+ }
+
public boolean isFishingOperationModified() {
return getModel().getEditFishingOperation() != null &&
getUI().getFishingOperationTabContent().getModel().isModify();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -56,6 +56,8 @@
public static final String PROPERTY_CATCH_ENABLED = "catchEnabled";
+ public static final String PROPERTY_CATCH_NOT_FOUND = "catchNotFound";
+
/**
* List of existing fishing operation for the selected cruise.
* <p/>
@@ -115,6 +117,13 @@
*/
protected boolean catchEnabled;
+ /**
+ * Flag setted to true when no catch found.
+ *
+ * @since 2.2
+ */
+ protected boolean catchNotFound;
+
public List<FishingOperation> getFishingOperation() {
return fishingOperation;
}
@@ -214,4 +223,14 @@
this.catchEnabled = catchEnabled;
firePropertyChange(PROPERTY_CATCH_ENABLED, oldValue, catchEnabled);
}
+
+ public boolean isCatchNotFound() {
+ return catchNotFound;
+ }
+
+ public void setCatchNotFound(boolean catchNotFound) {
+ boolean oldValue = isCatchNotFound();
+ this.catchNotFound = catchNotFound;
+ firePropertyChange(PROPERTY_CATCH_NOT_FOUND, oldValue, catchNotFound);
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/RemoveBenthosBatchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/RemoveBenthosBatchAction.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/RemoveBenthosBatchAction.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -29,6 +29,7 @@
import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -87,7 +88,7 @@
table.setRowSelectionInterval(parentIndex, parentIndex);
// remove all his children
- runAction(removeSpeciesSubBatchAction);
+ TuttiActionHelper.runInternalAction(removeSpeciesSubBatchAction);
} else {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -29,6 +29,7 @@
import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -87,7 +88,7 @@
table.setRowSelectionInterval(parentIndex, parentIndex);
// remove all his children
- runAction(removeSpeciesSubBatchAction);
+ TuttiActionHelper.runInternalAction(removeSpeciesSubBatchAction);
} else {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -39,8 +39,6 @@
* @since 0.3
*/
public abstract class AbstractTuttiTabContainerUIHandler<M, UI extends TuttiUI<M, ?>> extends AbstractTuttiUIHandler<M, UI> {
-//
-// private final static Log log = LogFactory.getLog(AbstractTuttiTabContainerUIHandler.class);
protected AbstractTuttiTabContainerUIHandler(TuttiUIContext context, UI ui) {
super(context, ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -31,8 +31,6 @@
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jdesktop.beans.AbstractBean;
import org.nuiton.util.decorator.Decorator;
@@ -45,8 +43,6 @@
public abstract class AbstractTuttiAction<M extends AbstractBean, UI extends TuttiUI<M, ?>, H extends AbstractTuttiUIHandler<M, UI>>
extends AbstractBean {
- private static final Log log = LogFactory.getLog(AbstractTuttiAction.class);
-
public static final String PROPERTY_DONE = "done";
protected final H handler;
@@ -82,25 +78,6 @@
// by default nothing to do after action
}
- public static void runAction(AbstractTuttiAction action) {
- Throwable error = null;
- try {
- action.doAction();
- action.postSuccessAction();
- } catch (Throwable e) {
- error = e;
- throw TuttiActionException.propagateError(action, e);
- } finally {
- try {
- if (error != null) {
- action.postFailedAction(error);
- }
- } finally {
- action.releaseAction();
- }
- }
- }
-
public H getHandler() {
return handler;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-05-08 14:41:35 UTC (rev 930)
@@ -53,10 +53,14 @@
error = e;
throw TuttiActionException.propagateError(action, e);
} finally {
- if (error != null) {
- action.postFailedAction(error);
+ try {
+ if (error != null) {
+ action.postFailedAction(error);
+ }
+ } finally {
+
+ action.releaseAction();
}
- action.releaseAction();
}
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-08 14:41:35 UTC (rev 930)
@@ -915,6 +915,7 @@
tutti.fishingOperations.info.no.fishingOperation.selected=
tutti.fishingOperations.title.edit.operations=
tutti.fishingOperations.title.validate.operations=
+tutti.fishingOperations.warn.catchBatch.notFound=
tutti.fishingOperations.warn.invalid.batch.model=
tutti.flash.info.all.caractristic.exported=
tutti.flash.info.benthos.add.to.protocol=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-08 11:00:38 UTC (rev 929)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-08 14:41:35 UTC (rev 930)
@@ -883,6 +883,7 @@
tutti.fishingOperations.info.no.fishingOperation.selected=< Aucun trait sélectionné >
tutti.fishingOperations.title.edit.operations=Saisie des opérations de pêches (%s)
tutti.fishingOperations.title.validate.operations=Validation des opérations de pêches (%s)
+tutti.fishingOperations.warn.catchBatch.notFound=Pas d'arbre d'échantillonage associé à l'opération de pêche.
tutti.fishingOperations.warn.invalid.batch.model=L'arbre d’échantillonnage n'est pas compatible. Les captures ne seront pas visibles.
tutti.flash.info.all.caractristic.exported=Toutes les caractéristiques exportées dans le fichier <strong>%s</strong>.
tutti.flash.info.benthos.add.to.protocol=Le benthos <strong>%s</strong> a été ajoutée au protocole.
1
0
r929 - in trunk: . tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-persistence/src/main/resources/i18n
by tchemit@users.forge.codelutin.com 08 May '13
by tchemit@users.forge.codelutin.com 08 May '13
08 May '13
Author: tchemit
Date: 2013-05-08 13:00:38 +0200 (Wed, 08 May 2013)
New Revision: 929
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/929
Log:
fixes #2407: [TRAIT] erreur ?\195?\160 l'ouverture du trait CGFS 2010 n?\194?\176102 sur base fournie par Chistian ce jour
Modified:
trunk/pom.xml
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties
trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-08 10:59:03 UTC (rev 928)
+++ trunk/pom.xml 2013-05-08 11:00:38 UTC (rev 929)
@@ -132,7 +132,7 @@
<eugenePluginVersion>2.6.2</eugenePluginVersion>
<hibernateVersion>3.6.10.Final</hibernateVersion>
- <jaxxVersion>2.5.18</jaxxVersion>
+ <jaxxVersion>2.5.19-SNAPSHOT</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.7</xworkVersion>
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-08 10:59:03 UTC (rev 928)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-08 11:00:38 UTC (rev 929)
@@ -36,6 +36,7 @@
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
+import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
@@ -58,6 +59,8 @@
import java.util.List;
import java.util.Set;
+import static org.nuiton.i18n.I18n._;
+
/**
* Default implementation of {@link BenthosBatchPersistenceService}.
*
@@ -106,7 +109,9 @@
ReferenceTaxon referenceTaxon = source.getReferenceTaxon();
Preconditions.checkNotNull(referenceTaxon, "Can't have a rootBenthosBatch with a null taxon, but was for " + batch.getId());
Species species = referentialService.getSpeciesByReferenceTaxonId(referenceTaxon.getId());
-
+ if (species == null) {
+ throw new TuttiBusinessException(_("tutti.persistence.batch.validation.unkonwn.taxon", source.getId(), referenceTaxon.getId()));
+ }
BenthosBatch target = TuttiBeanFactory.newBenthosBatch();
target.setSpecies(species);
entityToBenthosBatch(source, target);
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-08 10:59:03 UTC (rev 928)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-08 11:00:38 UTC (rev 929)
@@ -36,6 +36,7 @@
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
+import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
@@ -59,6 +60,8 @@
import java.util.List;
import java.util.Set;
+import static org.nuiton.i18n.I18n._;
+
/**
* Default implementation of {@link SpeciesBatchPersistenceService}.
*
@@ -114,7 +117,9 @@
log.trace("Loading CatchBatch Vrac > Species > Alive Itemized > " + referenceTaxon.getId() + " - " + " (batch:" + source.getId() + ")");
}
Species species = referentialService.getSpeciesByReferenceTaxonId(referenceTaxon.getId());
-
+ if (species == null) {
+ throw new TuttiBusinessException(_("tutti.persistence.batch.validation.unkonwn.taxon", source.getId(), referenceTaxon.getId()));
+ }
SpeciesBatch target = TuttiBeanFactory.newSpeciesBatch();
target.setSpecies(species);
entityToSpeciesBatch(source, target);
Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties 2013-05-08 10:59:03 UTC (rev 928)
+++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties 2013-05-08 11:00:38 UTC (rev 929)
@@ -20,6 +20,7 @@
tutti.persistence.batch.validation.horsVracMarineLitterNotFound=
tutti.persistence.batch.validation.horsVracNotFound=
tutti.persistence.batch.validation.horsVracSpeciesNotFound=
+tutti.persistence.batch.validation.unkonwn.taxon=
tutti.persistence.batch.validation.unsortedNotFound=
tutti.persistence.batch.validation.vracBenthosAliveItemizedNotFound=
tutti.persistence.batch.validation.vracBenthosInertNotFound=
Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-05-08 10:59:03 UTC (rev 928)
+++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-05-08 11:00:38 UTC (rev 929)
@@ -20,6 +20,7 @@
tutti.persistence.batch.validation.horsVracMarineLitterNotFound=Lot 'Hors Vrac > Macro-déchet' non trouvé, ou configuré avec d'autres critères de classement.
tutti.persistence.batch.validation.horsVracNotFound=Lot 'Hors Vrac' non trouvé ou configuré avec d'autres critères de classement.
tutti.persistence.batch.validation.horsVracSpeciesNotFound=Lot 'Hors Vrac > Espèces' non trouvé ou configuré avec d'autres critères de classement.
+tutti.persistence.batch.validation.unkonwn.taxon=Le lot (%s) utilise une espèce de code inconnu (%s).
tutti.persistence.batch.validation.unsortedNotFound=Lot 'Hors Vrac > Espèces' non trouvé ou configuré avec d'autres critères de classement.
tutti.persistence.batch.validation.vracBenthosAliveItemizedNotFound=Lot 'Vrac > Benthos > Vivant Trié' non trouvé, ou configuré avec d'autres critères de classement.
tutti.persistence.batch.validation.vracBenthosInertNotFound=Lot 'Vrac > Benthos > Inerte' non trouvé, ou configuré avec d'autres critères de classement.
1
0
r928 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/util java/fr/ifremer/tutti/ui/swing/util/action resources/i18n
by tchemit@users.forge.codelutin.com 08 May '13
by tchemit@users.forge.codelutin.com 08 May '13
08 May '13
Author: tchemit
Date: 2013-05-08 12:59:03 +0200 (Wed, 08 May 2013)
New Revision: 928
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/928
Log:
fixes #2407: [TARIT] erreur ?\195?\160 l'ouverture du trait CGFS 2010 n?\194?\176102 sur base fournie par Chistian ce jour
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java 2013-05-07 14:13:08 UTC (rev 927)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java 2013-05-08 10:59:03 UTC (rev 928)
@@ -30,6 +30,7 @@
import fr.ifremer.tutti.ui.swing.content.AbstractChangeScreenAction;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionException;
+import jaxx.runtime.swing.JAXXRuntimeException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -70,6 +71,10 @@
cause = cause.getCause();
}
+ if (cause instanceof JAXXRuntimeException) {
+ cause = cause.getCause();
+ }
+
boolean backToScreen = false;
AbstractTuttiAction action = null;
@@ -79,6 +84,10 @@
TuttiActionException actionException = (TuttiActionException) cause;
cause = cause.getCause();
+ if (log.isDebugEnabled()) {
+ log.debug("Action error cause:", cause);
+ }
+
action = actionException.getAction();
if (action instanceof AbstractChangeScreenAction) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-05-07 14:13:08 UTC (rev 927)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-05-08 10:59:03 UTC (rev 928)
@@ -91,10 +91,13 @@
error = e;
throw TuttiActionException.propagateError(action, e);
} finally {
- if (error != null) {
- action.postFailedAction(error);
+ try {
+ if (error != null) {
+ action.postFailedAction(error);
+ }
+ } finally {
+ action.releaseAction();
}
- action.releaseAction();
}
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-07 14:13:08 UTC (rev 927)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-08 10:59:03 UTC (rev 928)
@@ -808,6 +808,7 @@
tutti.editSpeciesBatch.action.importMultiPost.mnemonic=
tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button=
tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title=
+tutti.editSpeciesBatch.action.importMultiPost.success=
tutti.editSpeciesBatch.action.importMultiPost.tip=
tutti.editSpeciesBatch.action.removeBatch=
tutti.editSpeciesBatch.action.removeBatch.mnemonic=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-07 14:13:08 UTC (rev 927)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-08 10:59:03 UTC (rev 928)
@@ -777,6 +777,7 @@
tutti.editSpeciesBatch.action.importMultiPost.mnemonic=I
tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button=Choisir le fichier à importer
tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title=Importer des lots d'espèces
+tutti.editSpeciesBatch.action.importMultiPost.success=
tutti.editSpeciesBatch.action.importMultiPost.tip=Importer des lots d'espèces créés sur un poste satellite
tutti.editSpeciesBatch.action.removeBatch=Supprimer le lot
tutti.editSpeciesBatch.action.removeBatch.mnemonic=S
1
0