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
- 4058 discussions
r823 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/referential resources/i18n
by kmorin@users.forge.codelutin.com 18 Apr '13
by kmorin@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: kmorin
Date: 2013-04-18 17:47:15 +0200 (Thu, 18 Apr 2013)
New Revision: 823
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/823
Log:
replace strings by i18n keys
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.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/content/UpdateDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -84,7 +84,7 @@
if (callback.isDbInstalled()) {
- progressionModel.setMessage("Ouverture de la base de données");
+ progressionModel.setMessage(_("tutti.dbManager.action.upgradeDb.opening"));
getContext().setDbExist(true);
@@ -93,13 +93,13 @@
} else if (callback.isDbUpdated()) {
- progressionModel.setMessage("Rechargement de la base de données");
+ progressionModel.setMessage(_("tutti.dbManager.action.upgradeDb.reloading"));
// open db
TuttiActionHelper.runInternalAction(getHandler(), OpenDbAction.class);
} else {
- sendMessage("Aucune mise à jour de base détectée.");
+ sendMessage(_("tutti.dbManager.action.upgradeDb.upToDate"));
}
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -102,8 +102,13 @@
getContext().getTuttiProtocolImportExportService();
service.exportProtocol(protocol, file);
- sendMessage(_("tutti.exportProtocol.action.success", protocol.getName(), file.getName()));
-
getHandler().resetEditProtolAction();
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ TuttiProtocol protocol = getModel().getProtocol();
+ sendMessage(_("tutti.exportProtocol.action.success", protocol.getName(), file.getName()));
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -86,6 +86,6 @@
@Override
public void postSuccessAction() {
super.postSuccessAction();
- sendMessage(_("tutti.sendCruiseReport.action.success", file.getName()));
+ sendMessage(_("tutti.sendCruiseReport.action.success", file));
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -103,7 +103,11 @@
getContext().getTuttiReferentialImportExportService();
service.exportTemporaryGearExample(file);
- sendMessage("Exemple de référentiel temporaire d'engins exporté " +
- "dans le fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialGearFile.export.success", file));
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -104,8 +104,11 @@
getContext().getTuttiReferentialImportExportService();
service.exportTemporaryPersonExample(file);
+ }
- sendMessage("Exemple de référentiel temporaire de personnes exporté " +
- "dans le fichier " + file + ".");
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.export.success", file));
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -103,8 +103,11 @@
getContext().getTuttiReferentialImportExportService();
service.exportTemporarySpeciesExample(file);
+ }
- sendMessage("Exemple de référentiel temporaire d'espèces exporté " +
- "dans le fichier " + file + ".");
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.export.success", file));
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -103,8 +103,11 @@
getContext().getTuttiReferentialImportExportService();
service.exportTemporaryVesselExample(file);
+ }
- sendMessage("Exemple de référentiel temporaire de navires exporté " +
- "dans le fichier " + file + ".");
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export.success", file));
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -95,7 +95,12 @@
// reset ui cache
getDataContext().resetGears();
- sendMessage("Référentiel temporaire d'engins importé depuis le " +
- "fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialGearFile.import.success", file));
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -95,7 +95,11 @@
// reset ui cache
getDataContext().resetPersons();
- sendMessage("Référentiel temporaire de personnes importé depuis le " +
- "fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.import.success", file));
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -94,7 +94,11 @@
// reset ui cache
getDataContext().resetSpecies();
- sendMessage("Référentiel temporaire d'espèces importé depuis le " +
- "fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.import.success", file));
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -94,7 +94,11 @@
// reset ui cache
getDataContext().resetVessels();
- sendMessage("Référentiel temporaire de navires importé depuis le " +
- "fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.success", file));
+ }
}
\ No newline at end of file
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-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-18 15:47:15 UTC (rev 823)
@@ -223,7 +223,10 @@
tutti.dbManager.action.openDb.tip=
tutti.dbManager.action.upgradeDb=
tutti.dbManager.action.upgradeDb.mnemonic=
+tutti.dbManager.action.upgradeDb.opening=
+tutti.dbManager.action.upgradeDb.reloading=
tutti.dbManager.action.upgradeDb.tip=
+tutti.dbManager.action.upgradeDb.upToDate=
tutti.dbManager.info.db.loaded=
tutti.dbManager.info.no.db.exist=
tutti.dbManager.info.no.db.loaded=
@@ -972,9 +975,21 @@
tutti.main.title.selectedProgram=
tutti.main.title.selectedProtocol=
tutti.manageTemporaryReferential.action.chooseReferentialGearFile=
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.export.success=
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.import.success=
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.success=
tutti.manageTemporaryReferential.action.chooseReferentialPersonFile=
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.export.success=
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.import.success=
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.success=
tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile=
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.export.success=
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.import.success=
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.success=
tutti.manageTemporaryReferential.action.chooseReferentialVesselFile=
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export.success=
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.success=
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.success=
tutti.manageTemporaryReferential.action.exportTemporaryGearExample=
tutti.manageTemporaryReferential.action.exportTemporaryGearExample.mnemonic=
tutti.manageTemporaryReferential.action.exportTemporaryGearExample.tip=
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-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-18 15:47:15 UTC (rev 823)
@@ -1,4 +1,4 @@
-swing.error.cannot.mail=Aucun programme n'est défini pour envoyer des emails.
+swing.error.cannot.mail=Erreur lors de l'ouverture du client mail.
swing.error.cannot.open.file=Aucun programme n'est défini pour ouvrir ce type de fichier. Enregistrez le fichier et ouvrez le en dehors de Tutti.
swing.error.cannot.open.link=Impossible d'ouvrir le fichier %s.
swing.error.desktop.browse.not.supported=Le navigateur n'a pas pu être ouvert. Vérifiez que vous avez défini un navigateur par défaut dans votre système.
@@ -224,7 +224,10 @@
tutti.dbManager.action.openDb.tip=Ouvrir la base de données
tutti.dbManager.action.upgradeDb=Vérifier les mises à jour
tutti.dbManager.action.upgradeDb.mnemonic=V
+tutti.dbManager.action.upgradeDb.opening=Ouverture de la base de données
+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.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.
@@ -970,9 +973,17 @@
tutti.main.title.selectedProgram=Série de campagne %s
tutti.main.title.selectedProtocol=Protocole %s
tutti.manageTemporaryReferential.action.chooseReferentialGearFile=Choisir le fichier de référentiel engin
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.export.success=Exemple de référentiel temporaire d'engins exporté dans le fichier %s
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.import.success=Référentiel temporaire d'engins importé depuis le fichier %s
tutti.manageTemporaryReferential.action.chooseReferentialPersonFile=Choisir le fichier de référentiel personne
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.export.success=Exemple de référentiel temporaire de personnes exporté dans le fichier %s
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.import.success=Référentiel temporaire de personnes importé depuis le fichier %s
tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile=Choisir le fichier de référentiel espèce
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.export.success=Exemple de référentiel temporaire d'espèces exporté dans le fichier %s
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.import.success=Référentiel temporaire d'espèces importé depuis le fichier %s
tutti.manageTemporaryReferential.action.chooseReferentialVesselFile=Choisir le fichier de référentiel navire
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export.success=Exemple de référentiel temporaire de navires exporté dans le fichier %s
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.success=Référentiel temporaire de navires importé depuis le fichier %s
tutti.manageTemporaryReferential.action.exportTemporaryGearExample=Exporter
tutti.manageTemporaryReferential.action.exportTemporaryGearExample.mnemonic=E
tutti.manageTemporaryReferential.action.exportTemporaryGearExample.tip=Exporter un exemple de référentiel Engin
1
0
r822 - in trunk/tutti-persistence/src: main/java/fr/ifremer/tutti/persistence/service main/java/fr/ifremer/tutti/persistence/service/batch main/java/fr/ifremer/tutti/persistence/service/measure main/resources test/java/fr/ifremer/tutti/persistence test/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 18 Apr '13
by tchemit@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: tchemit
Date: 2013-04-18 17:22:51 +0200 (Thu, 18 Apr 2013)
New Revision: 822
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/822
Log:
refs #1866: [CAPTURE] - Captures accidentelles
Added:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java
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/measure/MeasurementPersistenceHelper.java
trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.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/CatchBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -26,15 +26,48 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import fr.ifremer.adagio.core.dao.administration.programStrategy.Program;
+import fr.ifremer.adagio.core.dao.administration.user.DepartmentImpl;
+import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
+import fr.ifremer.adagio.core.dao.data.measure.SampleMeasurement;
+import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
+import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
+import fr.ifremer.adagio.core.dao.data.sample.Sample;
+import fr.ifremer.adagio.core.dao.data.sample.SampleDao;
+import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.Matrix;
+import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.Unit;
+import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
+import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
+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.AccidentalBatch;
+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.Species;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.hibernate.FlushMode;
+import org.hibernate.type.IntegerType;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataRetrievalFailureException;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
-import java.util.UUID;
+import java.util.Map;
+import java.util.Set;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -48,23 +81,77 @@
LogFactory.getLog(AccidentalBatchPersistenceServiceImpl.class);
@Autowired
+ protected ReferentialPersistenceService referentialService;
+
+ @Autowired
protected AttachmentPersistenceService attachmentPersistenceService;
+ @Autowired
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
+ @Resource(name = "fishingOperationDao")
+ protected FishingOperationDao fishingOperationDao;
+
+ @Resource(name = "sampleDao")
+ protected SampleDao sampleDao;
+
+ @Resource(name = "pmfmDao")
+ protected PmfmDao pmfmDao;
+
@Override
public List<AccidentalBatch> getAllAccidentalBatch(String fishingOperationId) {
Preconditions.checkNotNull(fishingOperationId);
+
+ Iterator<Object[]> list = queryList(
+ "allFishingOperationSamples",
+ "fishingOperationId", IntegerType.INSTANCE, Integer.valueOf(fishingOperationId)
+ );
+
List<AccidentalBatch> result = Lists.newArrayList();
- // TODO
- return result;
+ while (list.hasNext()) {
+ Object[] source = list.next();
+
+ AccidentalBatch accidentalBatch = TuttiBeanFactory.newAccidentalBatch();
+
+ int colIndex = 0;
+
+ // Id
+ accidentalBatch.setId((Integer) source[colIndex++]);
+
+ // TaxonId
+ Integer taxonId = (Integer) source[colIndex++];
+ Species species = referentialService.getSpeciesByReferenceTaxonId(taxonId);
+ accidentalBatch.setSpecies(species);
+
+ // Comment
+ accidentalBatch.setComment((String) source[colIndex]);
+
+ // Sample Measurements
+ accidentalBatch.setCaracteristics(new CaracteristicMap());
+
+ // fill all measurements
+ fillSampleMeasurements(accidentalBatch);
+
+ result.add(accidentalBatch);
+ }
+ return Collections.unmodifiableList(result);
}
@Override
public AccidentalBatch createAccidentalBatch(AccidentalBatch bean) {
Preconditions.checkNotNull(bean);
Preconditions.checkState(TuttiEntities.isNew(bean));
- // TODO
- bean.setId(UUID.randomUUID().toString());
+ Preconditions.checkNotNull(bean.getSpecies());
+ Preconditions.checkNotNull(bean.getFishingOperation());
+ Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation()));
+
+ getCurrentSession().setFlushMode(FlushMode.COMMIT);
+ Sample sample = Sample.Factory.newInstance();
+ beanToEntity(bean, sample);
+ sampleDao.create(sample);
+ bean.setId(String.valueOf(sample.getId()));
+ getCurrentSession().flush();
return bean;
}
@@ -72,14 +159,372 @@
public AccidentalBatch saveAccidentalBatch(AccidentalBatch bean) {
Preconditions.checkNotNull(bean);
Preconditions.checkState(!TuttiEntities.isNew(bean));
- // TODO
+ Preconditions.checkNotNull(bean.getSpecies());
+ Preconditions.checkNotNull(bean.getFishingOperation());
+ Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation()));
+
+ getCurrentSession().setFlushMode(FlushMode.COMMIT);
+ Sample sample = sampleDao.load(bean.getIdAsInt());
+ if (sample == null) {
+ throw new DataRetrievalFailureException("Could not retrieve sample id=" + bean.getId());
+ }
+ beanToEntity(bean, sample);
+ sampleDao.update(sample);
+ getCurrentSession().flush();
return bean;
}
@Override
public void deleteAccidentalBatch(String id) {
Preconditions.checkNotNull(id);
- // TODO
- attachmentPersistenceService.deleteAllAttachment(Integer.valueOf(id));
+
+ Integer accidentalId = Integer.valueOf(id);
+ sampleDao.remove(accidentalId);
+ attachmentPersistenceService.deleteAllAttachment(accidentalId);
}
+
+ protected void beanToEntity(AccidentalBatch source, Sample target) {
+
+ if (TuttiEntities.isNew(source)) {
+
+ // operation
+
+ fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation;
+
+ fishingOperation = load(FishingOperationImpl.class, source.getFishingOperation().getIdAsInt());
+ fishingOperation.getSamples().add(target); // Inverse link
+
+ // Link to parent operation
+ target.setFishingOperation(fishingOperation);
+
+ // Label
+ String label = fishingOperation.getId() + "_" + source.getSpecies().getReferenceTaxonId();
+ target.setLabel(label);
+
+ // Matrix (product / batch)
+ Matrix matrix = load(MatrixImpl.class, enumeration.MATRIX_ID_PRODUCT_BATCH);
+ target.setMatrix(matrix);
+
+ // IndividualCount
+ target.setIndividualCount((short) 1);
+
+ // Quality Flag
+ target.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+
+ // Sample Date
+ if (target.getSampleDate() == null) {
+ target.setSampleDate(fishingOperation.getFishingStartDateTime());
+ }
+
+ // Create Date
+ target.setCreationDate(fishingOperation.getFishingStartDateTime());
+
+ // Recorder Departement
+ target.setRecorderDepartment(load(DepartmentImpl.class,
+ enumeration.DEPARTMENT_ID_UNKNOWN_RECORDER_DEPARTMENT));
+
+ // Recorder Person
+ target.setRecorderPerson(load(PersonImpl.class,
+ enumeration.PERSON_ID_UNKNOWN_RECORDER_PERSON));
+
+ // Program
+ Program program = fishingOperation.getFishingTrip().getProgram();
+ target.setProgram(program);
+ }
+
+ // Id
+ target.setId(source.getIdAsInt());
+
+
+ // Size
+ // Size Unit
+ if (source.getSize() == null) {
+
+ // no size
+ target.setSize(null);
+ target.setSizeUnit(null);
+ } else {
+
+ target.setSize(source.getSize());
+
+ Caracteristic lengthStepCaracteristic =
+ source.getLengthStepCaracteristic();
+
+ if (lengthStepCaracteristic != null) {
+ Pmfm pmfm = pmfmDao.load(lengthStepCaracteristic.getIdAsInt());
+
+ Unit unit = pmfm.getUnit();
+ target.setSizeUnit(unit);
+ } else {
+
+ if (log.isWarnEnabled()) {
+ log.warn("There is a size but no lengthStepCaracteristic, " +
+ "will nullify the unit.");
+ }
+ target.setSizeUnit(null);
+ }
+ }
+
+ // Synchronization Status
+ target.setSynchronizationStatus(SynchronizationStatus.DIRTY.getValue());
+
+ // Comment
+ target.setComments(source.getComment());
+
+ // ReferenceTaxon
+ Species species = source.getSpecies();
+ Integer referenceTaxonId = species.getReferenceTaxonId();
+ target.setReferenceTaxon(load(ReferenceTaxonImpl.class, referenceTaxonId));
+
+ // Taxongroup TODO
+
+ // FishingAreas TODO
+
+ // SampleMeasurement
+
+ Set<SampleMeasurement> notChangedSampleMeasurements = Sets.newHashSet();
+ if (target.getSampleMeasurements() != null) {
+ notChangedSampleMeasurements.addAll(target.getSampleMeasurements());
+ }
+
+ CaracteristicMap caracteristics = source.getCaracteristics();
+ if (caracteristics != null && caracteristics.size() > 0) {
+ for (Caracteristic caracteristic : caracteristics.keySet()) {
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ caracteristics.get(caracteristic));
+ notChangedSampleMeasurements.remove(vum);
+ }
+ }
+
+ if (source.getDeadOrAlive() != null) {
+
+ // add it as a measurement
+
+ Caracteristic caracteristic =
+ referentialService.getDeadOrAliveCaracteristic();
+
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getDeadOrAlive());
+ notChangedSampleMeasurements.remove(vum);
+ }
+
+ if (source.getGender() != null) {
+
+ // add it as a measurement
+
+ Caracteristic caracteristic =
+ referentialService.getSexCaracteristic();
+
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getGender());
+ notChangedSampleMeasurements.remove(vum);
+ }
+
+ if (source.getWeight() != null) {
+
+ // add it as a measurement
+
+ Caracteristic caracteristic =
+ referentialService.getCaracteristic(enumeration.PMFM_ID_WEIGHT_MEASURED);
+
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getWeight());
+ notChangedSampleMeasurements.remove(vum);
+ }
+
+ if (source.getLengthStepCaracteristic() != null) {
+
+ // add it as a measurement
+
+ Caracteristic caracteristic =
+ referentialService.getCaracteristic(enumeration.PMFM_ID_SAMPLE_LENGTH_STEP);
+
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getLengthStepCaracteristic().getId());
+ notChangedSampleMeasurements.remove(vum);
+
+ caracteristic = source.getLengthStepCaracteristic();
+ vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getSize());
+ notChangedSampleMeasurements.remove(vum);
+
+ }
+
+ // ----------------------------------------------------------------
+ // Removed unecessary *SampleMeasurement* ---
+ // ----------------------------------------------------------------
+
+ if (target.getSampleMeasurements() != null &&
+ notChangedSampleMeasurements.size() > 0) {
+ target.getSampleMeasurements().removeAll(notChangedSampleMeasurements);
+ }
+ }
+
+ protected void fillSampleMeasurements(AccidentalBatch accidentalBatch) {
+
+ Caracteristic deadOrAliveCaracteristic = referentialService.getDeadOrAliveCaracteristic();
+ Map<String, CaracteristicQualitativeValue> deadOrAliveValues = TuttiEntities.splitById(deadOrAliveCaracteristic.getQualitativeValue());
+
+ Caracteristic genderCaracteristic = referentialService.getSexCaracteristic();
+ Map<String, CaracteristicQualitativeValue> genderValues = TuttiEntities.splitById(genderCaracteristic.getQualitativeValue());
+
+ Iterator<Object[]> list = queryList(
+ "sampleMeasurements",
+ "sampleId", IntegerType.INSTANCE, accidentalBatch.getIdAsInt());
+
+ CaracteristicMap result = accidentalBatch.getCaracteristics();
+ while (list.hasNext()) {
+ int colIndex = 0;
+ Object[] source = list.next();
+ Integer pmfmId = (Integer) source[colIndex++];
+ Float numericalValue = (Float) source[colIndex++];
+ String alphanumericalValue = (String) source[colIndex++];
+ Integer qualitativeValueId = (Integer) source[colIndex];
+
+ // dead or alive
+ if (enumeration.PMFM_ID_DEAD_OR_ALIVE.equals(pmfmId)) {
+
+ CaracteristicQualitativeValue caracteristicQualitativeValue = deadOrAliveValues.get(qualitativeValueId.toString());
+ accidentalBatch.setDeadOrAlive(caracteristicQualitativeValue);
+
+ continue;
+ }
+
+ // gender
+ if (enumeration.PMFM_ID_SEX.equals(pmfmId)) {
+
+ CaracteristicQualitativeValue caracteristicQualitativeValue = genderValues.get(qualitativeValueId.toString());
+ accidentalBatch.setGender(caracteristicQualitativeValue);
+ continue;
+ }
+
+ // weight
+ if (enumeration.PMFM_ID_WEIGHT_MEASURED.equals(pmfmId)) {
+
+ accidentalBatch.setWeight(numericalValue);
+ continue;
+ }
+
+ // length step
+ if (enumeration.PMFM_ID_SAMPLE_LENGTH_STEP.equals(pmfmId)) {
+
+ Caracteristic lengthStepCaracteristic = referentialService.getCaracteristic(Integer.valueOf(alphanumericalValue));
+ accidentalBatch.setLengthStepCaracteristic(lengthStepCaracteristic);
+ continue;
+ }
+
+ // other sample measurements
+
+ Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
+ Serializable value = null;
+ if (CaracteristicType.NUMBER == caracteristic.getCaracteristicType()) {
+ value = numericalValue;
+ } else if (CaracteristicType.TEXT == caracteristic.getCaracteristicType()) {
+ value = alphanumericalValue;
+ } else if (CaracteristicType.QUALITATIVE == caracteristic.getCaracteristicType()) {
+ for (CaracteristicQualitativeValue qv : caracteristic.getQualitativeValue()) {
+ if (qualitativeValueId.equals(qv.getIdAsInt())) {
+ value = qv;
+ break;
+ }
+ }
+ }
+ result.put(caracteristic, value);
+ }
+
+ Caracteristic lengthStepCaracteristic = accidentalBatch.getLengthStepCaracteristic();
+ if (lengthStepCaracteristic != null) {
+
+ // get size from result
+ Serializable length = result.remove(lengthStepCaracteristic);
+ accidentalBatch.setSize((Float) length);
+ }
+ }
+
+ protected SampleMeasurement getSampleMeasurement(Sample sample,
+ Integer pmfmId,
+ boolean createIfNotExists) {
+ SampleMeasurement result = null;
+ if (sample.getSampleMeasurements() != null) {
+ for (SampleMeasurement vum : sample.getSampleMeasurements()) {
+ if (pmfmId.equals(vum.getPmfm().getId())) {
+ result = vum;
+ break;
+ }
+ }
+ }
+ if (result == null) {
+ if (!createIfNotExists) {
+ return null;
+ }
+ result = SampleMeasurement.Factory.newInstance();
+
+ result.setSample(sample);
+ if (sample.getSampleMeasurements() == null) {
+ sample.setSampleMeasurements(Sets.newHashSet(result));
+ } else {
+ sample.getSampleMeasurements().add(result);
+ }
+ result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+ result.setDepartment(sample.getRecorderDepartment());
+ result.setPmfm(load(PmfmImpl.class, pmfmId));
+ }
+
+ return result;
+ }
+
+ protected SampleMeasurement setSampleMeasurement(Sample sample,
+ Integer pmfmId,
+ Float numericalValue,
+ String alphanumericalValue,
+ Integer qualitativevalueId) {
+ SampleMeasurement result = getSampleMeasurement(sample, pmfmId, true);
+
+ if (alphanumericalValue != null) {
+ result.setAlphanumericalValue(alphanumericalValue);
+ } else if (numericalValue != null) {
+ result.setNumericalValue(numericalValue);
+ } else if (qualitativevalueId != null) {
+ result.setQualitativeValue(load(QualitativeValueImpl.class, qualitativevalueId));
+ }
+
+ return result;
+ }
+
+ protected SampleMeasurement setSampleMeasurement(Sample sample,
+ Integer pmfmId,
+ Serializable value) {
+ SampleMeasurement result = getSampleMeasurement(sample, pmfmId, true);
+
+ if (value instanceof String) {
+ result.setAlphanumericalValue((String) value);
+ } else if (value instanceof Float) {
+ result.setNumericalValue((Float) value);
+ } else if (value instanceof Integer) {
+ result.setQualitativeValue(load(QualitativeValueImpl.class, value));
+ }
+
+ return result;
+ }
+
+ protected SampleMeasurement setSampleMeasurement(Sample sample,
+ Caracteristic caracteristic,
+ Serializable value) {
+ SampleMeasurement result = getSampleMeasurement(sample, caracteristic.getIdAsInt(), true);
+ measurementPersistenceHelper.setMeasurement(result, caracteristic, value);
+ return result;
+ }
+
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -34,7 +34,6 @@
import fr.ifremer.adagio.core.dao.data.fishingArea.FishingArea2RegulationLocationPK;
import fr.ifremer.adagio.core.dao.data.measure.GearPhysicalMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.GearUseMeasurement;
-import fr.ifremer.adagio.core.dao.data.measure.Measurement;
import fr.ifremer.adagio.core.dao.data.measure.VesselUseMeasurement;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
import fr.ifremer.adagio.core.dao.data.operation.Operation;
@@ -114,6 +113,9 @@
@Autowired
protected VesselPersonFeaturesPersistenceHelper vesselPersonFeaturesPersistenceHelper;
+ @Autowired
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
@Resource(name = "scientificCruiseDao")
protected ScientificCruiseDao scientificCruiseDao;
@@ -1110,29 +1112,29 @@
protected VesselUseMeasurement setVesselUseMeasurement(ScientificCruise scientificCruise, VesselUseFeatures vesselUseFeatures,
Caracteristic caracteristic, Serializable value) {
VesselUseMeasurement vesselUseMeasurement = getVesselUseMeasurement(scientificCruise, vesselUseFeatures, Integer.valueOf(caracteristic.getId()), true);
- setMeasurement(vesselUseMeasurement, caracteristic, value);
+ measurementPersistenceHelper.setMeasurement(vesselUseMeasurement, caracteristic, value);
return vesselUseMeasurement;
}
- protected void setMeasurement(Measurement measurement, Caracteristic caracteristic, Serializable value) {
- if (value == null) {
- return;
- }
- if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
- measurement.setAlphanumericalValue((String) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
- measurement.setNumericalValue((Float) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
- Integer qvId = null;
- if (value instanceof CaracteristicQualitativeValue) {
- qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
- } else if (value instanceof Integer) {
- qvId = (Integer) value;
- }
- QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
- measurement.setQualitativeValue(qv);
- }
- }
+// protected void setMeasurement(Measurement measurement, Caracteristic caracteristic, Serializable value) {
+// if (value == null) {
+// return;
+// }
+// if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+// measurement.setAlphanumericalValue((String) value);
+// } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+// measurement.setNumericalValue((Float) value);
+// } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
+// Integer qvId = null;
+// if (value instanceof CaracteristicQualitativeValue) {
+// qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
+// } else if (value instanceof Integer) {
+// qvId = (Integer) value;
+// }
+// QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
+// measurement.setQualitativeValue(qv);
+// }
+// }
protected GearUseMeasurement setGearUseMeasurement(ScientificCruise scientificCruise, GearUseFeatures gearUseFeatures,
Integer pmfmId,
@@ -1156,7 +1158,7 @@
protected GearUseMeasurement setGearUseMeasurement(ScientificCruise scientificCruise, GearUseFeatures gearUseFeatures,
Caracteristic caracteristic, Serializable value) {
GearUseMeasurement gearUseMeasurement = getGearUseMeasurement(scientificCruise, gearUseFeatures, Integer.valueOf(caracteristic.getId()), true);
- setMeasurement(gearUseMeasurement, caracteristic, value);
+ measurementPersistenceHelper.setMeasurement(gearUseMeasurement, caracteristic, value);
return gearUseMeasurement;
}
Added: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -0,0 +1,67 @@
+package fr.ifremer.tutti.persistence.service;
+
+/*
+ * #%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 fr.ifremer.adagio.core.dao.data.measure.Measurement;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
+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 org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+
+/**
+ * Helper around {@link Measurement}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+@Component("measurementPersistenceHelper")
+public class MeasurementPersistenceHelper extends AbstractPersistenceService {
+
+ public void setMeasurement(Measurement measurement,
+ Caracteristic caracteristic,
+ Serializable value) {
+ if (value == null) {
+ return;
+ }
+ if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+ measurement.setAlphanumericalValue((String) value);
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+ measurement.setNumericalValue((Float) value);
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
+ Integer qvId = null;
+ if (value instanceof CaracteristicQualitativeValue) {
+ qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
+ } else if (value instanceof Integer) {
+ qvId = (Integer) value;
+ }
+ QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
+ measurement.setQualitativeValue(qv);
+ }
+ }
+}
Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -278,6 +278,12 @@
@Value("${TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE}")
public final Integer TRANSCRIBING_TYPE_ID_VERNACULAIRE = null;
+ @Value("${MatrixId.PRODUCT_BATCH}")
+ public final Integer MATRIX_ID_PRODUCT_BATCH= null;
+
+ @Value("${PmfmId.SAMPLE_LENGTH_STEP}")
+ public final Integer PMFM_ID_SAMPLE_LENGTH_STEP = null;
+
/**
* Contract to place on enumeration that must be synched to field inside this class.
* <p/>
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.persistence.service;
+/*
+ * #%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 fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperation;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
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-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -30,17 +30,16 @@
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatchExtendDao;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
-import fr.ifremer.adagio.core.dao.data.measure.Measurement;
import fr.ifremer.adagio.core.dao.data.measure.SortingMeasurement;
import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
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.service.AbstractPersistenceService;
+import fr.ifremer.tutti.persistence.service.MeasurementPersistenceHelper;
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Component;
@@ -70,6 +69,9 @@
@Resource(name = "catchBatchDao")
protected CatchBatchExtendDao catchBatchDao;
+ @Autowired
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
public List<SortingBatch> getFrequencyChilds(SortingBatch sortingBatch) {
List<SortingBatch> result = Lists.newArrayList();
@@ -82,18 +84,6 @@
return result;
}
-// public List<SortingBatch> getNotFrequencyChilds(SortingBatch sortingBatch) {
-// List<SortingBatch> result = Lists.newArrayList();
-//
-// for (Batch batch : sortingBatch.getChildBatchs()) {
-// SortingBatch child = (SortingBatch) batch;
-// if (isFrequencyBatch(child)) {
-// result.add(child);
-// }
-// }
-// return result;
-// }
-
public List<SortingBatch> getFrequencies(String batchId) {
Preconditions.checkNotNull(batchId);
Integer sortingBatchId = Integer.valueOf(batchId);
@@ -216,28 +206,28 @@
return enumeration.DEPARTMENT_ID_UNKNOWN_RECORDER_DEPARTMENT;
}
- public void setMeasurement(Measurement measurement,
- Caracteristic caracteristic,
- Serializable value) {
- if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
- measurement.setAlphanumericalValue((String) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
- measurement.setNumericalValue((Float) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
- Integer qvId;
- if (value instanceof CaracteristicQualitativeValue) {
- qvId = ((CaracteristicQualitativeValue) value).getIdAsInt();
- } else if (value instanceof Integer) {
- qvId = (Integer) value;
- }
- // TODO BL : not used ? => to remove
- else {
- qvId = Integer.valueOf(value.toString());
- }
- QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
- measurement.setQualitativeValue(qv);
- }
- }
+// public void setMeasurement(Measurement measurement,
+// Caracteristic caracteristic,
+// Serializable value) {
+// if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+// measurement.setAlphanumericalValue((String) value);
+// } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+// measurement.setNumericalValue((Float) value);
+// } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
+// Integer qvId;
+// if (value instanceof CaracteristicQualitativeValue) {
+// qvId = ((CaracteristicQualitativeValue) value).getIdAsInt();
+// } else if (value instanceof Integer) {
+// qvId = (Integer) value;
+// }
+// // TODO BL : not used ? => to remove
+// else {
+// qvId = Integer.valueOf(value.toString());
+// }
+// QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
+// measurement.setQualitativeValue(qv);
+// }
+// }
public SortingMeasurement setSortingMeasurement(
SortingBatch sortingBatch,
@@ -252,7 +242,7 @@
Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
SortingMeasurement sortingMeasurement = catchBatchDao.getSortingMeasurement(
sortingBatch, pmfmId, recorderDepartmentId, true);
- setMeasurement(sortingMeasurement, caracteristic, value);
+ measurementPersistenceHelper.setMeasurement(sortingMeasurement, caracteristic, value);
return sortingMeasurement;
}
@@ -267,7 +257,9 @@
Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
SortingMeasurement sortingMeasurement = catchBatchDao.getSortingMeasurement(
sortingBatch, pmfmId, recorderDepartmentId, true);
- setMeasurement(sortingMeasurement, caracteristic, value);
+ measurementPersistenceHelper.setMeasurement(sortingMeasurement,
+ caracteristic,
+ value);
return sortingMeasurement;
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -51,12 +51,11 @@
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.service.AbstractPersistenceService;
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
-import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.Serializable;
-@Component("measurementPersistenceHelper")
+//@Component("measurementPersistenceHelper")
public class MeasurementPersistenceHelper extends AbstractPersistenceService {
@Resource(name = "referentialPersistenceService")
Modified: trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-04-18 15:22:51 UTC (rev 822)
@@ -192,18 +192,18 @@
<query cacheable="true" name="allFishingOperations">
<![CDATA[
- SELECT
- o.id AS id,
- o.name AS name,
- g.label AS gearLabel,
- o.startDateTime AS startDateTime,
- (select vum.alphanumericalValue from VesselUseMeasurementImpl vum where vum.vesselUseFeatures.id = vuf.id and vum.pmfm.id=:pmfmIdStationNumber) AS stationNumber,
- (select gum.alphanumericalValue from GearUseMeasurementImpl gum where gum.gearUseFeatures.id = guf.id and gum.pmfm.id=:pmfmIdMultirigAggregation) AS multirigAggregation
- FROM
+ SELECT
+ o.id AS id,
+ o.name AS name,
+ g.label AS gearLabel,
+ o.startDateTime AS startDateTime,
+ (select vum.alphanumericalValue from VesselUseMeasurementImpl vum where vum.vesselUseFeatures.id = vuf.id and vum.pmfm.id=:pmfmIdStationNumber) AS stationNumber,
+ (select gum.alphanumericalValue from GearUseMeasurementImpl gum where gum.gearUseFeatures.id = guf.id and gum.pmfm.id=:pmfmIdMultirigAggregation) AS multirigAggregation
+ FROM
FishingOperationImpl o
LEFT OUTER JOIN o.gearUseFeatures guf
LEFT OUTER JOIN guf.gear g
- LEFT OUTER JOIN o.vesselUseFeatures vuf
+ LEFT OUTER JOIN o.vesselUseFeatures vuf
WHERE
o.fishingTrip.scientificCruise.id=:cruiseId
ORDER BY
@@ -213,12 +213,12 @@
<query-param name="pmfmIdStationNumber" type="java.lang.Integer"/>
<query-param name="pmfmIdMultirigAggregation" type="java.lang.Integer"/>
</query>
-
+
<query cacheable="true" name="fishingOperation">
<![CDATA[
SELECT
- o.name AS name,
- max(g.label) AS gearLabel,
+ o.name AS name,
+ max(g.label) AS gearLabel,
max(o.startDateTime) AS startDateTime,
max(o.endDateTime) AS endDateTime,
max(o.comments) AS comments,
@@ -230,16 +230,16 @@
max(case when (rl.locationLevel.id = :locationLevelIdLocalite) then rl.id else null end) AS localiteId,
max(case when (va.isCatchOnOperationVessel = false) then va.id.vessel.code else o.vessel.code end) as vesselCode
FROM
- FishingOperationImpl o
- INNER JOIN o.gearUseFeatures guf
- LEFT OUTER JOIN guf.gear g
- LEFT OUTER JOIN guf.fishingAreas fa
- LEFT OUTER JOIN fa.regulationLocation fa2rl
- LEFT OUTER JOIN fa2rl.id.location rl
- LEFT OUTER JOIN o.operationVesselAssociations va
- WHERE
- o.id=:fishingOperationId
- GROUP BY o.name
+ FishingOperationImpl o
+ INNER JOIN o.gearUseFeatures guf
+ LEFT OUTER JOIN guf.gear g
+ LEFT OUTER JOIN guf.fishingAreas fa
+ LEFT OUTER JOIN fa.regulationLocation fa2rl
+ LEFT OUTER JOIN fa2rl.id.location rl
+ LEFT OUTER JOIN o.operationVesselAssociations va
+ WHERE
+ o.id=:fishingOperationId
+ GROUP BY o.name
]]>
<query-param name="fishingOperationId" type="java.lang.Integer"/>
<query-param name="locationLevelIdStrata" type="java.lang.Integer"/>
@@ -250,8 +250,8 @@
<query cacheable="true" name="fishingOperationRankOrder">
<![CDATA[
SELECT
- count(o1.id) + 1 as fishingOperationRankOrder
- FROM
+ count(o1.id) + 1 as fishingOperationRankOrder
+ FROM
FishingOperationImpl o1,
FishingOperationImpl o2
WHERE
@@ -319,7 +319,38 @@
<query-param name="fishingOperationId" type="java.lang.Integer"/>
<query-param name="catchBatchId" type="java.lang.Integer"/>
</query>
-
+
+ <query cacheable="true" name="allFishingOperationSamples">
+ <![CDATA[
+ SELECT
+ s.id AS id,
+ s.referenceTaxon.id AS referenceTaxon,
+ s.comments AS comment
+ FROM
+ SampleImpl s
+ WHERE
+ s.fishingOperation.id= :fishingOperationId
+ ORDER BY
+ s.creationDate
+ ]]>
+ <query-param name="fishingOperationId" type="java.lang.Integer"/>
+ </query>
+
+ <query cacheable="true" name="sampleMeasurements">
+ <![CDATA[
+ SELECT
+ sm.pmfm.id as pmfmId,
+ sm.numericalValue as numericalValue,
+ sm.alphanumericalValue as alphanumericalValue,
+ sm.qualitativeValue.id as qualitativeValueId
+ from
+ SampleMeasurementImpl sm
+ WHERE
+ sm.sample.id = :sampleId
+ ]]>
+ <query-param name="sampleId" type="java.lang.Integer"/>
+ </query>
+
<query cacheable="true" name="catchBatch">
<![CDATA[
SELECT
Modified: trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-18 15:22:51 UTC (rev 822)
@@ -385,6 +385,10 @@
#PSFM "Remis à l'eau mort ou vivant"
PmfmId.DEAD_OR_ALIVE=1393
+#TODO A creer (type alphanumeric)
+# PSFM "Classe de Taille dans captures accidentelles / données individuelles" (écran capture accidentelle / observation individuelle)
+PmfmId.SAMPLE_LENGTH_STEP=1432
+
# (20=observateur volant, 95=Administrateur SIH) -> L'avantage du 20 est qu'il est inactif (=20), donc plus facilement detectable
PersonId.UNKNOWN_RECORDER_PERSON=20
@@ -403,4 +407,6 @@
VesselPersonRoleId.RECORDER_PERSON=4
TranscribingTypeId.TAXINOMIE_REFTAX_MNEMONIQUE=101
-TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE=102
\ No newline at end of file
+TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE=102
+
+MatrixId.PRODUCT_BATCH=1
\ No newline at end of file
Modified: 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-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -25,18 +25,28 @@
*/
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.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+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.CruisePersistenceService;
+import fr.ifremer.tutti.persistence.service.FishingOperationPersistenceService;
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;
@@ -150,6 +160,14 @@
return 467;
}
+ public Integer refNumericalPmfmId() {
+ return 113;
+ }
+
+ public Integer refAlphanumericPmfmId() {
+ return 1424;
+ }
+
public String refSpeciesRefTaxCode() {
return "SEPIOFF";
}
@@ -174,10 +192,30 @@
return 114;
}
- public Cruise createCruise(ReferentialPersistenceService referentialService,
- ProgramPersistenceService programService,
- CruisePersistenceService service) {
+ protected CruisePersistenceService cruiseService;
+ protected ProgramPersistenceService programService;
+
+ protected FishingOperationPersistenceService fishingOperationService;
+
+ protected ReferentialPersistenceService referentialService;
+
+ protected AccidentalBatchPersistenceService accidentalBatchService;
+
+ public void setUp() {
+ if (referentialService == null) {
+ referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
+ programService = TuttiPersistenceServiceLocator.getProgramPersistenceService();
+ cruiseService = TuttiPersistenceServiceLocator.getCruisePersistenceService();
+ fishingOperationService = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
+ accidentalBatchService = TuttiPersistenceServiceLocator.getAccidentalBatchPersistenceService();
+ }
+ }
+
+ public Cruise createCruise() {
+
+ setUp();
+
String programCode = programCode();
Cruise cruise = TuttiBeanFactory.newCruise();
@@ -218,7 +256,115 @@
cruise.setMultirigNumber(2);
- Cruise result = service.createCruise(cruise);
+ 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();
+ for (Caracteristic caracteristic : allEnvironmentCaracteristics) {
+ Serializable value = null;
+ if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+ value = 1.0f;
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+ value = "some text";
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
+ && caracteristic.getQualitativeValue(0) != null) {
+ // Choose the first qualitative value
+ value = caracteristic.getQualitativeValue(0);
+ }
+ 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();
+ for (Caracteristic caracteristic : allGearShootingCaracteristics) {
+ Serializable value = null;
+ if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+ value = 1.0f;
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+ value = "some text";
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
+ && caracteristic.getQualitativeValue(0) != null) {
+ // Choose the first qualitative value
+ value = caracteristic.getQualitativeValue(0);
+ }
+ 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 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;
+ }
}
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-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -25,18 +25,26 @@
*/
import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+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.referential.Caracteristic;
+import org.apache.commons.collections.CollectionUtils;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
-import org.junit.Ignore;
import org.junit.Test;
+import java.util.List;
+
/**
* To test {@link AccidentalBatchPersistenceService} for write operation.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-@Ignore
public class AccidentalBatchPersistenceServiceWriteTest {
@ClassRule
@@ -44,22 +52,131 @@
protected AccidentalBatchPersistenceService service;
+ protected ReferentialPersistenceService referentialService;
+
+ protected FishingOperation fishingOperation;
+
@Before
public void setUp() throws Exception {
+ referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
service = TuttiPersistenceServiceLocator.getAccidentalBatchPersistenceService();
+ Cruise cruise = dbResource.getFixtures().createCruise();
+ fishingOperation = dbResource.getFixtures().createFishingOperation(cruise);
}
@Test
public void createAccidentalBatch(/*AccidentalBatch bean*/) {
- }
+ // -----------------------------------------------------------------------------
+ // 1. Create with only mandatory properties
+ // -----------------------------------------------------------------------------
- @Test
- public void saveAccidentalBatch(/*AccidentalBatch bean*/) {
+ AccidentalBatch createdAccidentalBatch = dbResource.getFixtures().createMinimalAccidentalBatch(fishingOperation);
+ Assert.assertNotNull(createdAccidentalBatch);
+ Assert.assertNotNull(createdAccidentalBatch.getId());
+
+ // reload it
+ List<AccidentalBatch> allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allAccidentalBatch));
+ AccidentalBatch reloadedAccidentalBatch = allAccidentalBatch.get(0);
+ reloadedAccidentalBatch.setFishingOperation(fishingOperation);
+ assertEqualsAccidentalBatch(createdAccidentalBatch, reloadedAccidentalBatch);
+
+ // -----------------------------------------------------------------------------
+ // 2. Create a full with all properties
+ // -----------------------------------------------------------------------------
+
+ AccidentalBatch fullAccidentalBatch = createdAccidentalBatch;
+ fullAccidentalBatch.setId((String) null);
+
+ CaracteristicMap caracteristicMap = new CaracteristicMap();
+ fullAccidentalBatch.setCaracteristics(caracteristicMap);
+
+ // add a qualitative caracteristic
+ Caracteristic maturityCaracteristic = referentialService.getMaturityCaracteristic();
+ caracteristicMap.put(maturityCaracteristic, maturityCaracteristic.getQualitativeValue(0));
+
+ // add a numeric caracteristic
+ Caracteristic ageCaracteristic = referentialService.getAgeCaracteristic();
+ caracteristicMap.put(ageCaracteristic, 10.f);
+
+ // add a string caracteristic
+ Caracteristic stringCaracteristic = referentialService.getCaracteristic(dbResource.getFixtures().refAlphanumericPmfmId());
+ caracteristicMap.put(stringCaracteristic, "Un texte!");
+
+ fullAccidentalBatch.setSize(10.0f);
+ fullAccidentalBatch.setComment("AccidentalBatch-full");
+ fullAccidentalBatch.setDeadOrAlive(referentialService.getDeadOrAliveCaracteristic().getQualitativeValue(0));
+ fullAccidentalBatch.setGender(referentialService.getSexCaracteristic().getQualitativeValue(0));
+
+ fullAccidentalBatch.setLengthStepCaracteristic(referentialService.getCaracteristic(dbResource.getFixtures().refNumericalPmfmId()));
+ fullAccidentalBatch.setWeight(5.f);
+
+ AccidentalBatch createdAccidentalBatch2 =
+ service.createAccidentalBatch(fullAccidentalBatch);
+
+ assertEqualsAccidentalBatch(fullAccidentalBatch, createdAccidentalBatch2);
+
+ Assert.assertNotNull(createdAccidentalBatch2);
+ Assert.assertNotNull(createdAccidentalBatch2.getId());
+ assertEqualsAccidentalBatch(fullAccidentalBatch, createdAccidentalBatch2);
+
+ // reload it
+ allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allAccidentalBatch));
+ Assert.assertEquals(2, allAccidentalBatch.size());
+ AccidentalBatch reloadedAccidentalBatch2 = TuttiEntities.splitById(allAccidentalBatch).get(createdAccidentalBatch2.getId());
+ reloadedAccidentalBatch2.setFishingOperation(fishingOperation);
+ assertEqualsAccidentalBatch(createdAccidentalBatch2, reloadedAccidentalBatch2);
+
+ // -----------------------------------------------------------------------------
+ // 2. Modify some properties and save
+ // -----------------------------------------------------------------------------
+ AccidentalBatch modifiedAccidentalBatch = reloadedAccidentalBatch2;
+ modifiedAccidentalBatch.setComment("Comment2");
+ modifiedAccidentalBatch.setSize(15f);
+ modifiedAccidentalBatch.setWeight(35f);
+ modifiedAccidentalBatch.setDeadOrAlive(referentialService.getDeadOrAliveCaracteristic().getQualitativeValue(1));
+ modifiedAccidentalBatch.setGender(referentialService.getSexCaracteristic().getQualitativeValue(1));
+ modifiedAccidentalBatch.getCaracteristics().clear();
+
+ AccidentalBatch savedAccidentalBatch = service.saveAccidentalBatch(modifiedAccidentalBatch);
+ assertEqualsAccidentalBatch(modifiedAccidentalBatch, savedAccidentalBatch);
+
+ allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allAccidentalBatch));
+ AccidentalBatch reloadedAccidentalBatch3 = TuttiEntities.splitById(allAccidentalBatch).get(createdAccidentalBatch2.getId());
+ reloadedAccidentalBatch3.setFishingOperation(fishingOperation);
+ assertEqualsAccidentalBatch(savedAccidentalBatch, reloadedAccidentalBatch3);
}
+ protected void assertEqualsAccidentalBatch(AccidentalBatch expected,
+ AccidentalBatch actual) {
+ Assert.assertEquals(expected, actual);
+ Assert.assertEquals(expected.getSize(), actual.getSize());
+ Assert.assertEquals(expected.getComment(), actual.getComment());
+ Assert.assertEquals(expected.getDeadOrAlive(), actual.getDeadOrAlive());
+ Assert.assertEquals(expected.getGender(), actual.getGender());
+ Assert.assertEquals(expected.getLengthStepCaracteristic(), actual.getLengthStepCaracteristic());
+ Assert.assertEquals(expected.getWeight(), actual.getWeight());
+ Assert.assertEquals(expected.getCaracteristics(), actual.getCaracteristics());
+ Assert.assertEquals(expected.getFishingOperation(), actual.getFishingOperation());
+ }
+
@Test
public void deleteAccidentalBatch(/*String id*/) {
+
+ AccidentalBatch createdAccidentalBatch =
+ dbResource.getFixtures().createMinimalAccidentalBatch(
+ fishingOperation);
+
+ List<AccidentalBatch> allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertFalse(CollectionUtils.isEmpty(allAccidentalBatch));
+
+ service.deleteAccidentalBatch(createdAccidentalBatch.getId());
+
+ List<AccidentalBatch> allAccidentalBatch2 = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isEmpty(allAccidentalBatch2));
}
}
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-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -82,7 +82,7 @@
fishingOperationService = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
- cruise = dbResource.getFixtures().createCruise(referentialService, programService, cruiseService);
+ cruise = dbResource.getFixtures().createCruise();
// cruiseService.getCruise(dbResource.getFixtures().cruiseId());
// cruise.setId((String) null);
Calendar calendar = new GregorianCalendar();
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-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -46,7 +46,6 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
/**
* To test {@link CruisePersistenceService} for write operation.
@@ -214,7 +213,7 @@
// 1. Init a cruise (by copy)
// -----------------------------------------------------------------------------
// Cruise cruise = service.getCruise(dbResource.getFixtures().cruiseId());
- Cruise cruise = dbResource.getFixtures().createCruise(referentialService, programService, service);
+ Cruise cruise = dbResource.getFixtures().createCruise();
cruise.setId((String) null);
Calendar calendar = new GregorianCalendar();
1
0
See <http://ci.nuiton.org/jenkins/job/tutti/667/changes>
Changes:
[Kevin Morin] - fixes #2009 [RAPPORT] composition du trait
- perform release action after postSuccess or postError calls
- start replacing messages by i18n keys
- refs #1866 [CAPTURE] - Captures accidentelles (validation)
- refs #1867 [CAPTURE] - Observations individuelles (validation)
------------------------------------------
[...truncated 557 lines...]
2013-04-18 16:32:24,265 5366 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - New service fr.ifremer.tutti.service.ValidationService@2a389b17
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.DecoratorService@2a92d059
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.ValidationService@2a389b17
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.catches.TuttiWeightComputingService@cac98e5
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.PersistenceService@1769e8e3
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.PersistenceService - Close persistence Service
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.PersistenceService - Persistence driver *Mock persistence service implementation* closed.
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.536 sec
Results :
Tests run: 32, Failures: 0, Errors: 0, Skipped: 1
mojoSucceeded org.apache.maven.plugins:maven-surefire-plugin:2.14(default-test)
[JENKINS] Recording test results
mojoStarted org.apache.maven.plugins:maven-jar-plugin:2.4(default-jar)
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-service ---
[INFO] Building jar: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/tutti…>
mojoSucceeded org.apache.maven.plugins:maven-jar-plugin:2.4(default-jar)
mojoStarted org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
[INFO]
[INFO] --- maven-site-plugin:3.2:attach-descriptor (attach-descriptor) @ tutti-service ---
mojoSucceeded org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
mojoStarted org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/tutti…> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ tutti-service ---
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.pom
mojoSucceeded org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
projectSucceeded fr.ifremer.tutti:tutti-service:2.0-SNAPSHOT
projectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: UI 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target>
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-ui-swing ---
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-ui-swing ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.17:generate (default) @ tutti-ui-swing ---
[INFO] use project compile scope class-path
[INFO] Detects 40 modified jaxx file(s).
mojoSucceeded org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)[INFO] Generated 40 file(s) in 25.357s
mojoStarted org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.17:generate-help-ids (default) @ tutti-ui-swing ---
[INFO] Store detected help ids to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
[INFO] Merge help ids to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
[INFO] Use input file: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/main/fi…>
[INFO] No keys to add.
[INFO] Use input file: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/main/fi…>
[INFO] No keys to add.
mojoSucceeded org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-ui-swing ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserValidation (scan-sources) @ tutti-ui-swing ---
[INFO] Load rules file validation.rules
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-ui-swing ---
[INFO] Copying tutti-ui-swing.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)[INFO] Copying tutti-ui-swing.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
forkedProjectSucceeded fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-ui-swing ---
[WARNING] bundle fr_FR contains 126/1216 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 1220/1220 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(collect-i18n-artifacts)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:collect-i18n-artifacts (collect-i18n-artifacts) @ tutti-ui-swing ---
[INFO] collected 11 i18n artifacts for locale fr_FR stored in <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/i18n…>
[INFO] collected 11 i18n artifacts for locale en_GB stored in <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/i18n…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(collect-i18n-artifacts)
forkedProjectSucceeded fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(make-bundle)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:bundle (make-bundle) @ tutti-ui-swing ---
[WARNING] bundle fr_FR contains 134/1473 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 1329/1489 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(make-bundle)
mojoStarted org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
[INFO]
[INFO] --- license-maven-plugin:1.4:update-project-license (attach-licenses) @ tutti-ui-swing ---
mojoSucceeded org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
mojoStarted org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
[INFO]
[INFO] --- license-maven-plugin:1.4:add-third-party (attach-licenses) @ tutti-ui-swing ---
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/andromda-c…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/andro…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/andromda-u…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/andro…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/metafacade…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/metaf…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/translatio…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/trans…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/translatio…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/trans…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
[WARNING] No license name defined for org.hibernate.javax.persistence--hibernate-jpa-2.0-api--1.0.1.Final
[INFO] Load missing file <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/license…>
[INFO] Missing file <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/license…> is up-to-date.
[INFO] Writing third-party file to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
[INFO] Writing bundled third-party file to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
[INFO] Will attach third party file from <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/license…>
mojoSucceeded org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-ui-swing ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] Copying 89 resources
[INFO] Copying 4 resources
[INFO] Copying 4 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-ui-swing ---
[INFO] Compiling 292 source files to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/clas…>
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
[INFO] 1 error
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
sessionEnded
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Tutti ............................................. SUCCESS [7.806s]
[INFO] Tutti :: Persistence .............................. SUCCESS [28.899s]
[INFO] Tutti :: Service .................................. SUCCESS [11.788s]
[INFO] Tutti :: UI ....................................... FAILURE [44.836s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:35.168s
[INFO] Finished at: Thu Apr 18 16:33:09 CEST 2013
[INFO] Final Memory: 68M/178M
[INFO] ------------------------------------------------------------------------
Projects to build: [MavenProject: fr.ifremer:tutti:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-persistence:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-service:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml]>
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/tutti…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.jar
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-ui-swing/2.0-SNAPSHOT/tutti-ui-swing-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/license…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-ui-swing/2.0-SNAPSHOT/tutti-ui-swing-2.0-SNAPSHOT-third-party.properties
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-18_16-31-29/archive/fr.ifremer/tutti/2.0-SNAPSHOT/tutti-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/target/tutti-2.0-SNAPSHOT-…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-18_16-31-29/archive/fr.ifremer/tutti/2.0-SNAPSHOT/tutti-2.0-SNAPSHOT-site_fr.xml
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-persistence/2.0-SNAPSHOT/tutti-persistence-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-persistence/2.0-SNAPSHOT/tutti-persistence-2.0-SNAPSHOT.jar
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-ui-swing: Compilation failure
bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
cause : Compilation failure
bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
Stack trace :
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-ui-swing: Compilation failure
bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:100)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:66)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:729)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 27 more
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com kmorin(a)codelutin.com
channel stopped
1
1
18 Apr '13
See <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/667/…>
Changes:
[Kevin Morin] - fixes #2009 [RAPPORT] composition du trait
- perform release action after postSuccess or postError calls
- start replacing messages by i18n keys
- refs #1866 [CAPTURE] - Captures accidentelles (validation)
- refs #1867 [CAPTURE] - Observations individuelles (validation)
------------------------------------------
projectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: UI 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-ui-swing ---
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-ui-swing ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.17:generate (default) @ tutti-ui-swing ---
[INFO] use project compile scope class-path
[INFO] Detects 40 modified jaxx file(s).
mojoSucceeded org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)[INFO] Generated 40 file(s) in 25.357s
mojoStarted org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.17:generate-help-ids (default) @ tutti-ui-swing ---
[INFO] Store detected help ids to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] Merge help ids to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] Use input file: <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>
[INFO] No keys to add.
[INFO] Use input file: <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>
[INFO] No keys to add.
mojoSucceeded org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-ui-swing ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserValidation (scan-sources) @ tutti-ui-swing ---
[INFO] Load rules file validation.rules
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-ui-swing ---
[INFO] Copying tutti-ui-swing.properties to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)[INFO] Copying tutti-ui-swing.properties to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
forkedProjectSucceeded fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-ui-swing ---
[WARNING] bundle fr_FR contains 126/1216 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 1220/1220 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(collect-i18n-artifacts)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:collect-i18n-artifacts (collect-i18n-artifacts) @ tutti-ui-swing ---
[INFO] collected 11 i18n artifacts for locale fr_FR stored in <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] collected 11 i18n artifacts for locale en_GB stored in <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(collect-i18n-artifacts)
forkedProjectSucceeded fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(make-bundle)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:bundle (make-bundle) @ tutti-ui-swing ---
[WARNING] bundle fr_FR contains 134/1473 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 1329/1489 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(make-bundle)
mojoStarted org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
[INFO]
[INFO] --- license-maven-plugin:1.4:update-project-license (attach-licenses) @ tutti-ui-swing ---
mojoSucceeded org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
mojoStarted org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
[INFO]
[INFO] --- license-maven-plugin:1.4:add-third-party (attach-licenses) @ tutti-ui-swing ---
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/andromda-c…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/andro…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/andromda-u…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/andro…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/metafacade…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/metaf…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/translatio…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/trans…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/translatio…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/trans…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
[WARNING] No license name defined for org.hibernate.javax.persistence--hibernate-jpa-2.0-api--1.0.1.Final
[INFO] Load missing file <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>
[INFO] Missing file <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…> is up-to-date.
[INFO] Writing third-party file to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] Writing bundled third-party file to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] Will attach third party file from <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>
mojoSucceeded org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-ui-swing ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] Copying 89 resources
[INFO] Copying 4 resources
[INFO] Copying 4 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-ui-swing ---
[INFO] Compiling 292 source files to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>:[679,61] error: cannot find symbol
[INFO] 1 error
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
1
1
r821 - in trunk/tutti-ui-swing/src/main: filtered-resources java/fr/ifremer/tutti/ui/swing/content/home resources/i18n
by kmorin@users.forge.codelutin.com 18 Apr '13
by kmorin@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: kmorin
Date: 2013-04-18 17:00:28 +0200 (Thu, 18 Apr 2013)
New Revision: 821
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/821
Log:
- fixes #2009 [RAPPORT] composition du trait
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java
Modified:
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.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/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-18 15:00:28 UTC (rev 821)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Tue Apr 16 17:33:03 CEST 2013
+#Thu Apr 18 16:32:55 CEST 2013
tutti.createAccidentalBatch.action.cancel.help=
tutti.createAccidentalBatch.action.save.help=
tutti.createAccidentalBatch.field.accidentalDeadOrAlive.help=
@@ -248,6 +248,7 @@
tutti.selectCruise.action.newCruise.help=selectCruise.html\#actions
tutti.selectCruise.action.newProgram.help=selectCruise.html\#actions
tutti.selectCruise.action.newProtocol.help=selectCruise.html\#actions
+tutti.selectCruise.action.sendCruiseReport.help=
tutti.selectCruise.action.validateCatches.help=selectCruise.html\#actions
tutti.selectCruise.action.validateCruise.help=
tutti.selectCruise.field.cruise.help=selectCruise.html\#fields
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-18 15:00:28 UTC (rev 821)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Tue Apr 16 17:33:03 CEST 2013
+#Thu Apr 18 16:32:55 CEST 2013
tutti.createAccidentalBatch.action.cancel.help=
tutti.createAccidentalBatch.action.save.help=
tutti.createAccidentalBatch.field.accidentalDeadOrAlive.help=
@@ -257,6 +257,7 @@
tutti.selectCruise.action.newCruise.help=selectCruise.html\#actions
tutti.selectCruise.action.newProgram.help=selectCruise.html\#actions
tutti.selectCruise.action.newProtocol.help=selectCruise.html\#actions
+tutti.selectCruise.action.sendCruiseReport.help=
tutti.selectCruise.action.validateCatches.help=selectCruise.html\#actions
tutti.selectCruise.action.validateCruise.help=
tutti.selectCruise.field.cruise.help=selectCruise.html\#fields
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 15:00:28 UTC (rev 821)
@@ -92,16 +92,30 @@
_validatorLabel: {_("tutti.selectCruise.field.cruise")};
}
+#editCruiseComboBox {
+ model: {handler.newComboModel(editCruiseButton, sendCruiseReportButton)};
+ enabled: {model.isProgramFound() && model.isCruiseFound()};
+ renderer: {new ActionListCellRenderer()};
+}
+
#editCruiseButton {
actionIcon: edit;
text: "tutti.selectCruise.action.editCruise";
i18nMnemonic: "tutti.selectCruise.action.editCruise.mnemonic";
- enabled: {model.isProgramFound() && model.isCruiseFound()};
_tuttiAction: {EditCruiseAction.class};
toolTipText: "tutti.selectCruise.action.editCruise.tip";
_help: {"tutti.selectCruise.action.editCruise.help"};
}
+#sendCruiseReportButton {
+ actionIcon: email;
+ text: "tutti.selectCruise.action.sendCruiseReport";
+ toolTipText: "tutti.selectCruise.action.sendCruiseReport.tip";
+ i18nMnemonic: "tutti.selectCruise.action.sendCruiseReport.mnemonic";
+ _tuttiAction: {SendCruiseReportAction.class};
+ _help: {"tutti.selectCruise.action.sendCruiseReport.help"};
+}
+
#newCruiseButton {
actionIcon: add;
text: "tutti.selectCruise.action.newCruise";
@@ -210,15 +224,4 @@
_tuttiAction: {ValidateCatchesAction.class};
enabled: {model.isValid() && uiContext.isCruiseFilled()};
_help: {"tutti.selectCruise.action.validateCatches.help"};
-}
-
-
-#exportCatchesButton {
- actionIcon: validate;
- text: "tutti.selectCruise.action.validateCatches";
- toolTipText: "tutti.selectCruise.action.validateCatches.tip";
- i18nMnemonic: "tutti.selectCruise.action.validateCatches.mnemonic";
- _tuttiAction: {ExportCatchesAction.class};
- enabled: {model.isValid() && uiContext.isCruiseFilled()};
- _help: {"tutti.selectCruise.action.validateCatches.help"};
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 15:00:28 UTC (rev 821)
@@ -73,6 +73,8 @@
<TuttiHelpBroker id='broker'
constructorParams='"tutti.selectCruise.help"'/>
+ <JButton id='editCruiseButton'/>
+ <JButton id='sendCruiseReportButton'/>
<JButton id='newProtocolButton'/>
<JButton id='importProtocolButton'/>
<JButton id='editProtocolButton'/>
@@ -113,7 +115,10 @@
</cell>
<cell>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='editCruiseButton'/>
+ <JComboBox id='editCruiseComboBox'
+ onMouseEntered='if (editCruiseComboBox.isEnabled()) { editCruiseComboBox.showPopup(); }'
+ onMouseClicked='if (editCruiseComboBox.isEnabled()) { handler.startEditCruiseAction(event); }'
+ onActionPerformed='handler.startEditCruiseAction(event)'/>
<JButton id='newCruiseButton'/>
</JPanel>
</cell>
@@ -144,7 +149,6 @@
<JPanel layout='{new GridLayout(1,0)}'>
<JButton id='editCatchesButton'/>
<JButton id='validateCatchesButton'/>
- <JButton id='exportCatchesButton'/>
</JPanel>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-18 15:00:28 UTC (rev 821)
@@ -152,6 +152,7 @@
model.getProtocols(),
model.getProtocol());
+ ui.getEditCruiseComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
ui.getEditProtocolComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
ui.getNewProtocolComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
@@ -225,7 +226,6 @@
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_NEW_CRUISE_BUTTON_ENABLED);
- ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CRUISE_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CATCHES_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_VALIDATE_CATCHES_BUTTON_ENABLED);
}
@@ -258,6 +258,23 @@
clearValidators();
}
+ public void startEditCruiseAction(MouseEvent event) {
+ JComboBox existingCruiseCombo = (JComboBox) event.getSource();
+ TuttiActionHelper.runAction((AbstractButton) existingCruiseCombo.getItemAt(0));
+ }
+
+ public void startEditCruiseAction(ActionEvent event) {
+ JComboBox existingCruiseCombo = (JComboBox) event.getSource();
+ JButton selectedAction = (JButton) existingCruiseCombo.getSelectedItem();
+ // hide popup before performing the action, otherwise, if the action
+ // opens a popup, the user must click a first time to hide the combobox
+ // popup to then interact with the popup opened by the action
+ // (see http://forge.codelutin.com/issues/2032)
+ existingCruiseCombo.setSelectedIndex(0);
+ existingCruiseCombo.hidePopup();
+ TuttiActionHelper.runAction(selectedAction);
+ }
+
public void startExistingProtocolAction(MouseEvent event) {
JComboBox existingProtocolCombo = (JComboBox) event.getSource();
TuttiActionHelper.runAction((AbstractButton) existingProtocolCombo.getItemAt(0));
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java 2013-04-18 15:00:28 UTC (rev 821)
@@ -1,91 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.tutti.TuttiIOUtil;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
-import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.File;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * Opens a file chooser and exports the protocol into the selected file.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class SendCatchesReportAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(SendCatchesReportAction.class);
-
- protected File file;
-
- public SendCatchesReportAction(SelectCruiseUIHandler handler) {
- super(handler, true);
- }
-
- @Override
- protected boolean prepareAction() throws Exception {
-
- boolean doAction = super.prepareAction();
-
- if (doAction) {
-
- // choose file to export
- file = TuttiUIUtil.chooseFile(
- getContext().getMainUI(),
- _("tutti.sendCatchesReport.title.choose.exportFile"),
- _("tutti.sendCatchesReport.action.chooseFile"),
- "^.+\\.pdf$", _("tutti.common.file.pdf")
- );
- doAction = file != null;
- if (doAction) {
- file = TuttiIOUtil.addExtensionIfMissing(file, ".pdf");
-
- // ask user to confirm overwrite.
- doAction = getHandler().askOverwriteFile(file);
- }
- }
- return doAction;
- }
-
- @Override
- protected void releaseAction() {
- file = null;
- super.releaseAction();
- }
-
- @Override
- protected void doAction() throws Exception {
- Cruise cruise = getModel().getCruise();
- Preconditions.checkNotNull(cruise);
- Preconditions.checkNotNull(file);
-
- if (log.isInfoEnabled()) {
- log.info("Will export cruise " + cruise.getId() +
- " to file: " + file);
- }
-
- // export catches
- ExportCatchesReportService service =
- getContext().getGeneratePDFService();
- service.generatePDFFile(file, cruise.getId(), getConfig().getI18nLocale());
-
- TuttiUIUtil.mail(_("tutti.sendCatchesReport.mail.subject", cruise.getName()),
- _("tutti.sendCatchesReport.mail.body", cruise.getName(), file.getAbsolutePath()));
-
- }
-
- @Override
- public void postSuccessAction() {
- super.postSuccessAction();
- sendMessage(_("tutti.sendCatchesReport.action.success", file.getName()));
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java (from rev 820, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-04-18 15:00:28 UTC (rev 821)
@@ -0,0 +1,91 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.TuttiIOUtil;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Opens a file chooser, exports the cruise catches into the selected file and open the default email editor.
+ *
+ * @author kmorin <morin(a)codelutin.com>
+ * @since 1.0
+ */
+public class SendCruiseReportAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(SendCruiseReportAction.class);
+
+ protected File file;
+
+ public SendCruiseReportAction(SelectCruiseUIHandler handler) {
+ super(handler, true);
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+
+ boolean doAction = super.prepareAction();
+
+ if (doAction) {
+
+ // choose file to export
+ file = TuttiUIUtil.chooseFile(
+ getContext().getMainUI(),
+ _("tutti.sendCruiseReport.title.choose.exportFile"),
+ _("tutti.sendCruiseReport.action.chooseFile"),
+ "^.+\\.pdf$", _("tutti.common.file.pdf")
+ );
+ doAction = file != null;
+ if (doAction) {
+ file = TuttiIOUtil.addExtensionIfMissing(file, ".pdf");
+
+ // ask user to confirm overwrite.
+ doAction = getHandler().askOverwriteFile(file);
+ }
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction() {
+ file = null;
+ super.releaseAction();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ Cruise cruise = getModel().getCruise();
+ Preconditions.checkNotNull(cruise);
+ Preconditions.checkNotNull(file);
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export cruise " + cruise.getId() +
+ " to file: " + file);
+ }
+
+ // export catches
+ ExportCatchesReportService service =
+ getContext().getGeneratePDFService();
+ service.generatePDFFile(file, cruise.getId(), getConfig().getI18nLocale());
+
+ TuttiUIUtil.mail(_("tutti.sendCruiseReport.mail.subject", cruise.getName()),
+ _("tutti.sendCruiseReport.mail.body", cruise.getName(), file.getAbsolutePath()));
+
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.sendCruiseReport.action.success", file.getName()));
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-18 15:00:28 UTC (rev 821)
@@ -1063,6 +1063,9 @@
tutti.selectCruise.action.newProtocol=
tutti.selectCruise.action.newProtocol.mnemonic=
tutti.selectCruise.action.newProtocol.tip=
+tutti.selectCruise.action.sendCruiseReport=
+tutti.selectCruise.action.sendCruiseReport.mnemonic=
+tutti.selectCruise.action.sendCruiseReport.tip=
tutti.selectCruise.action.validateCatches=
tutti.selectCruise.action.validateCatches.mnemonic=
tutti.selectCruise.action.validateCatches.tip=
@@ -1092,6 +1095,11 @@
tutti.sendCatchesReport.mail.body=
tutti.sendCatchesReport.mail.subject=
tutti.sendCatchesReport.title.choose.exportFile=
+tutti.sendCruiseReport.action.chooseFile=
+tutti.sendCruiseReport.action.success=
+tutti.sendCruiseReport.mail.body=
+tutti.sendCruiseReport.mail.subject=
+tutti.sendCruiseReport.title.choose.exportFile=
tutti.splitBenthosBatch.action.cancel=
tutti.splitBenthosBatch.action.cancel.mnemonic=
tutti.splitBenthosBatch.action.cancel.tip=
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-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-18 15:00:28 UTC (rev 821)
@@ -1061,6 +1061,9 @@
tutti.selectCruise.action.newProtocol=Nouveau
tutti.selectCruise.action.newProtocol.mnemonic=t
tutti.selectCruise.action.newProtocol.tip=Créer un nouveau protocole
+tutti.selectCruise.action.sendCruiseReport=Envoyer
+tutti.selectCruise.action.sendCruiseReport.mnemonic=E
+tutti.selectCruise.action.sendCruiseReport.tip=Envoyer le rapport de la campagne
tutti.selectCruise.action.validateCatches=Valider les captures
tutti.selectCruise.action.validateCatches.mnemonic=V
tutti.selectCruise.action.validateCatches.tip=Valider les captures
@@ -1084,11 +1087,11 @@
tutti.selectSpecies.action.validate.mnemonic=V
tutti.selectSpecies.action.validate.tip=Valider la sélection de l'espèce
tutti.selectSpecies.title=Choisissez une espèce
-tutti.sendCatchesReport.action.chooseFile=Choisir le fichier de rapport
-tutti.sendCatchesReport.action.success=Les captures ont correctement été exporté dans le fichier %s
-tutti.sendCatchesReport.mail.body=Bonjour,\n\nveuillez trouver ci-joint le rapport des captures de la campagne %1s.\n*Pensez à joindre le fichier %2s*\n\nCordialement,\n\n*Votre nom*
-tutti.sendCatchesReport.mail.subject=Captures de la campagne %s
-tutti.sendCatchesReport.title.choose.exportFile=Exporter les captures de la campagne
+tutti.sendCruiseReport.action.chooseFile=Choisir le fichier de rapport
+tutti.sendCruiseReport.action.success=Les captures ont correctement été exporté dans le fichier %s
+tutti.sendCruiseReport.mail.body=Bonjour,\n\nveuillez trouver ci-joint le rapport des captures de la campagne %1s.\n*Pensez à joindre le fichier %2s*\n\nCordialement,\n\n*Votre nom*
+tutti.sendCruiseReport.mail.subject=Captures de la campagne %s
+tutti.sendCruiseReport.title.choose.exportFile=Exporter les captures de la campagne
tutti.splitBenthosBatch.action.cancel=Annuler
tutti.splitBenthosBatch.action.cancel.mnemonic=A
tutti.splitBenthosBatch.action.cancel.tip=Annuler le sous-échantillonnage
1
0
18 Apr '13
Author: kmorin
Date: 2013-04-18 16:20:46 +0200 (Thu, 18 Apr 2013)
New Revision: 820
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/820
Log:
- fixes #2009 [RAPPORT] composition du trait
- perform release action after postSuccess or postError calls
- start replacing messages by i18n keys
- refs #1866 [CAPTURE] - Captures accidentelles (validation)
- refs #1867 [CAPTURE] - Observations individuelles (validation)
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java
trunk/tutti-service/src/main/resources/ftl/
trunk/tutti-service/src/main/resources/ftl/catchesReport_fr.ftl
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIModel-error-validation.xml
Modified:
trunk/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.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/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionSwingWorker.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml
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/pom.xml
===================================================================
--- trunk/pom.xml 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/pom.xml 2013-04-18 14:20:46 UTC (rev 820)
@@ -405,6 +405,27 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.itextpdf</groupId>
+ <artifactId>itextpdf</artifactId>
+ <version>5.4.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.xhtmlrenderer</groupId>
+ <artifactId>flying-saucer-pdf-itext5</artifactId>
+ <version>9.0.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.19</version>
+ <scope>compile</scope>
+ </dependency>
+
</dependencies>
</dependencyManagement>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-service/pom.xml 2013-04-18 14:20:46 UTC (rev 820)
@@ -143,6 +143,21 @@
<artifactId>mockito-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.itextpdf</groupId>
+ <artifactId>itextpdf</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.xhtmlrenderer</groupId>
+ <artifactId>flying-saucer-pdf-itext5</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ </dependency>
+
</dependencies>
<build>
Added: 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 (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -0,0 +1,231 @@
+package fr.ifremer.tutti.service.catches;
+
+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.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import freemarker.cache.ClassTemplateLoader;
+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.xhtmlrenderer.pdf.ITextRenderer;
+
+import java.io.*;
+import java.util.*;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.0
+ */
+public class ExportCatchesReportService extends AbstractTuttiService {
+
+ protected Configuration freemarkerConfiguration;
+
+ protected PersistenceService persistenceService;
+
+ protected TuttiWeightComputingService tuttiWeightComputingService;
+
+ public ExportCatchesReportService() {
+ super();
+
+ freemarkerConfiguration = new Configuration();
+
+ // needed to overwrite "Defaults to default system encoding."
+ // fix encoding issue on some systems
+ freemarkerConfiguration.setEncoding(Locale.getDefault(), "UTF-8");
+
+ // specific template loader to get template from jars (classpath)
+ ClassTemplateLoader templateLoader = new ClassTemplateLoader(ExportCatchesReportService.class, "/ftl");
+ freemarkerConfiguration.setTemplateLoader(templateLoader);
+
+ // pour les maps dans les template (entre autre)
+ freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
+ }
+
+ @Override
+ public void setServiceContext(TuttiServiceContext context) {
+ super.setServiceContext(context);
+ persistenceService = getService(PersistenceService.class);
+ tuttiWeightComputingService = getService(TuttiWeightComputingService.class);
+ }
+
+ /**
+ * Generate the PDF report
+ *
+ * @param targetFile pdf file to generate
+ * @param locale generated pdf locale
+ * @return the generated file
+ * @throws TuttiBusinessException
+ */
+ public File generatePDFFile(File targetFile, String cruiseId, Locale locale) throws TuttiBusinessException {
+
+ File result = null;
+
+ OutputStream os = null;
+
+ Map<String, Object> data = Maps.newHashMap();
+
+ List<FishingOperation> allFishingOperation =
+ persistenceService.getAllFishingOperation(cruiseId);
+
+ List<Map<String, Object>> operations = Lists.newArrayList();
+ for (FishingOperation fishingOperation : allFishingOperation) {
+
+ // get operation and catch data
+ String fishingOperationId = fishingOperation.getId();
+ CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
+
+ BatchContainer<SpeciesBatch> rootSpeciesBatch;
+ rootSpeciesBatch = tuttiWeightComputingService.getComputedSpeciesBatches(fishingOperation);
+
+ BatchContainer<BenthosBatch> rootBenthosBatch;
+ rootBenthosBatch = tuttiWeightComputingService.getComputedBenthosBatches(fishingOperation);
+
+ tuttiWeightComputingService.computeCatchBatchWeights(catchBatch, rootSpeciesBatch, rootBenthosBatch, null);
+
+ // create operation data model
+ Map<String, Object> op = createOperation(fishingOperation);
+
+ Float totalWeight = catchBatch.getCatchTotalWeight();
+ if (totalWeight == null) {
+ totalWeight = catchBatch.getCatchTotalComputedWeight();
+ }
+ op.put("totalWeight", totalWeight);
+
+ Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight();
+ op.put("totalSortedWeight", totalSortedWeight);
+
+ // create catches data model
+
+ Map<Species, Map<String, Object>> catches = Maps.newHashMap();
+ Float ratio = totalWeight / totalSortedWeight;
+
+ // create catches rows
+ List<SpeciesBatch> speciesBatches = rootSpeciesBatch.getChildren();
+ for (SpeciesBatch batch : speciesBatches) {
+ createSpeciesCatch(batch, catches, ratio, totalWeight);
+ }
+ List<Map<String, Object>> catchList = Lists.newArrayList(catches.values());
+
+ // add the benthos row
+ if (!CollectionUtils.isEmpty(rootBenthosBatch.getChildren())) {
+ Map<String, Object> benthosCatch =
+ createBenthosCatch(rootBenthosBatch, catchBatch.getBenthosTotalComputedWeight(), totalWeight);
+ catchList.add(benthosCatch);
+ }
+
+ op.put("catches", catchList);
+ operations.add(op);
+ }
+ data.put("operations", operations);
+
+ // generate the report
+ try {
+
+ // render freemarker template
+ Template mapTemplate = freemarkerConfiguration.getTemplate("catchesReport.ftl", locale);
+
+ Writer out = new StringWriter();
+ mapTemplate.process(data, out);
+ out.flush();
+
+ // render template output as pdf
+ os = new FileOutputStream(targetFile);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocumentFromString(out.toString());
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+
+ } catch (Exception ex) {
+ throw new TuttiBusinessException(_("tutti.service.operations.exportCatchesReport.error"), ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+
+ return result;
+ }
+
+ protected Map<String, Object> createOperation(FishingOperation fishingOperation) {
+ Map<String, Object> op = Maps.newHashMap();
+ op.put("number", fishingOperation.getFishingOperationNumber());
+ op.put("station", fishingOperation.getStationNumber());
+ op.put("rigNumber", fishingOperation.getMultirigAggregation());
+ op.put("startDate", fishingOperation.getGearShootingStartDate());
+ op.put("endDate", fishingOperation.getGearShootingEndDate());
+
+ return op;
+ }
+
+ protected void createSpeciesCatch(SpeciesBatch batch,
+ Map<Species, Map<String, Object>> catches,
+ float ratio,
+ float totalWeight) {
+
+ Species species = batch.getSpecies();
+
+ Float existingWeight;
+ Map<String, Object> ktch = catches.get(species);
+ if (ktch == null) {
+ ktch = Maps.newHashMap();
+ ktch.put("code", species.getRefTaxCode());
+ ktch.put("scientificName", species.getName());
+
+ Species speciesWithVerncularCode = persistenceService.getSpeciesByReferenceTaxonIdWithVernacularCode(species.getReferenceTaxonId());
+ ktch.put("commonName", speciesWithVerncularCode.getVernacularCode());
+
+ existingWeight = 0f;
+
+ } else {
+ existingWeight = (Float) ktch.get("sortedWeight");
+ }
+
+ Float weight = batch.getSampleCategoryWeight();
+ if (weight == null) {
+ weight = batch.getSampleCategoryComputedWeight();
+ }
+ weight += existingWeight;
+
+ ktch.put("sortedWeight", weight);
+ Float totalBatchWeight = weight * ratio;
+ ktch.put("totalWeight", totalBatchWeight);
+ ktch.put("percentage", 100 * totalBatchWeight / totalWeight);
+ catches.put(species, ktch);
+ }
+
+ protected Map<String, Object> createBenthosCatch(BatchContainer<BenthosBatch> rootBenthosBatch,
+ float benthosTotalWeight,
+ float totalWeight) {
+ Map<String, Object> ktch = Maps.newHashMap();
+ ktch.put("code", "BENTHOS");
+ ktch.put("scientificName", "");
+ ktch.put("commonName", "Benthos");
+
+ Float weight = 0f;
+ List<BenthosBatch> benthosBatches = rootBenthosBatch.getChildren();
+ for (BenthosBatch batch : benthosBatches) {
+ Float batchWeight = batch.getSampleCategoryWeight();
+ if (batchWeight == null) {
+ batchWeight = batch.getSampleCategoryComputedWeight();
+ }
+ weight += batchWeight;
+ }
+ ktch.put("sortedWeight", weight);
+ ktch.put("totalWeight", benthosTotalWeight);
+ ktch.put("percentage", 100 * benthosTotalWeight / totalWeight);
+
+ return ktch;
+ }
+}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -209,21 +209,23 @@
Float speciesTotalComputedSortedWeight = 0f;
Float speciesTotalComputedUnsortedWeight = 0f;
- for (int i = 0; i < rootSpeciesBatch.getChildren().size(); i++) {
- SpeciesBatch row = rootSpeciesBatch.getChildren().get(i);
- Float weight = row.getSampleCategoryWeight();
- if (weight == null) {
- weight = row.getSampleCategoryComputedWeight();
- }
- if (weight == null) {
- return;
- }
+ if (rootSpeciesBatch != null) {
+ for (int i = 0; i < rootSpeciesBatch.getChildren().size(); i++) {
+ SpeciesBatch row = rootSpeciesBatch.getChildren().get(i);
+ Float weight = row.getSampleCategoryWeight();
+ if (weight == null) {
+ weight = row.getSampleCategoryComputedWeight();
+ }
+ if (weight == null) {
+ return;
+ }
- CaracteristicQualitativeValue value = (CaracteristicQualitativeValue) row.getSampleCategoryValue();
- if (SortedUnsortedEnum.SORTED.matchValue(value)) {
- speciesTotalComputedSortedWeight += weight;
- } else {
- speciesTotalComputedUnsortedWeight += weight;
+ CaracteristicQualitativeValue value = (CaracteristicQualitativeValue) row.getSampleCategoryValue();
+ if (SortedUnsortedEnum.SORTED.matchValue(value)) {
+ speciesTotalComputedSortedWeight += weight;
+ } else {
+ speciesTotalComputedUnsortedWeight += weight;
+ }
}
}
@@ -263,21 +265,23 @@
Float benthosTotalComputedSortedWeight = 0f;
Float benthosTotalComputedUnsortedWeight = 0f;
- for (int i = 0; i < rootBenthosBatch.getChildren().size(); i++) {
- BenthosBatch row = rootBenthosBatch.getChildren().get(i);
- Float weight = row.getSampleCategoryWeight();
- if (weight == null) {
- weight = row.getSampleCategoryComputedWeight();
- }
- if (weight == null) {
- return;
- }
+ if (rootBenthosBatch != null) {
+ for (int i = 0; i < rootBenthosBatch.getChildren().size(); i++) {
+ BenthosBatch row = rootBenthosBatch.getChildren().get(i);
+ Float weight = row.getSampleCategoryWeight();
+ if (weight == null) {
+ weight = row.getSampleCategoryComputedWeight();
+ }
+ if (weight == null) {
+ return;
+ }
- CaracteristicQualitativeValue value = (CaracteristicQualitativeValue) row.getSampleCategoryValue();
- if (SortedUnsortedEnum.SORTED.matchValue(value)) {
- benthosTotalComputedSortedWeight += weight;
- } else {
- benthosTotalComputedUnsortedWeight += weight;
+ CaracteristicQualitativeValue value = (CaracteristicQualitativeValue) row.getSampleCategoryValue();
+ if (SortedUnsortedEnum.SORTED.matchValue(value)) {
+ benthosTotalComputedSortedWeight += weight;
+ } else {
+ benthosTotalComputedUnsortedWeight += weight;
+ }
}
}
@@ -316,14 +320,16 @@
// Marine litter
Float marineLitterTotalComputedWeight = 0f;
- for (int i = 0; i < rootMarineLitterBatch.getChildren().size(); i++) {
- MarineLitterBatch row = rootMarineLitterBatch.getChildren().get(i);
- Float rowWeight = row.getWeight();
- if (rowWeight == null) {
- marineLitterTotalComputedWeight = null;
- break;
+ if (rootMarineLitterBatch != null) {
+ for (int i = 0; i < rootMarineLitterBatch.getChildren().size(); i++) {
+ MarineLitterBatch row = rootMarineLitterBatch.getChildren().get(i);
+ Float rowWeight = row.getWeight();
+ if (rowWeight == null) {
+ marineLitterTotalComputedWeight = null;
+ break;
+ }
+ marineLitterTotalComputedWeight += rowWeight;
}
- marineLitterTotalComputedWeight += rowWeight;
}
catchBatch.setMarineLitterTotalComputedWeight(marineLitterTotalComputedWeight);
Added: trunk/tutti-service/src/main/resources/ftl/catchesReport_fr.ftl
===================================================================
--- trunk/tutti-service/src/main/resources/ftl/catchesReport_fr.ftl (rev 0)
+++ trunk/tutti-service/src/main/resources/ftl/catchesReport_fr.ftl 2013-04-18 14:20:46 UTC (rev 820)
@@ -0,0 +1,91 @@
+<html>
+ <head>
+ <style type="text/css">
+
+ <#assign blueColor="#000080">
+
+ h1, h4 {
+ color: ${blueColor};
+ font-weight: bold;
+ font-style: italic;
+ }
+
+ th {
+ color: ${blueColor};
+ font-weight: bold;
+ }
+
+ td, th {
+ padding-right: 10pt;
+ }
+
+ td.number {
+ text-align: right;
+ }
+
+ .operationInfo {
+ font-weight: bold;
+ }
+
+ .label {
+ color: ${blueColor};
+ }
+
+ .value {
+ margin-right: 50pt;
+ }
+
+ </style>
+ </head>
+ <body>
+
+ <h1>Rapport des traits validés</h1>
+
+ <#assign orderedOperations = operations?sort_by("startDate")?reverse>
+ <#list orderedOperations as operation>
+
+ <p class='operationInfo'>
+ <span class="label">Station :</span> <span class="value">${operation.station} - ${operation.number}</span>
+ <span class="label">Poche :</span> <span class="value">${operation.rigNumber}</span>
+ <span class="label">
+ du ${operation.startDate?date?string.full} ${operation.startDate?time?string.short}
+ <#if operation.endDate??>au ${operation.endDate?date?string.full} ${operation.endDate?time?string.short}</#if>
+ </span>
+ </p>
+
+ <p class='operationInfo'>
+ <span class="label">Poids total :</span> <span class="value"><#if operation.totalWeight??>${operation.totalWeight?string("0.00")}</#if></span>
+ <span class="label">Poids total trié :</span> <#if operation.totalSortedWeight??>${operation.totalSortedWeight?string("0.00")}</#if>
+ </p>
+
+ <h4>Composition du trait par espèce :</h4>
+ <table>
+ <tr>
+ <th>Espèce</th>
+ <th>Nom scientifique</th>
+ <th>Nom commun</th>
+ <th>Trié (kg)</th>
+ <th>Total (kg)</th>
+ <th>%</th>
+ </tr>
+
+ <#list operation.catches?sort_by("sortedWeight")?reverse as catch>
+ <tr>
+ <td><#if catch.code??>${catch.code}</#if></td>
+ <td><em>${catch.scientificName}</em></td>
+ <td><#if catch.commonName??>${catch.commonName}</#if></td>
+ <td class="number">${catch.sortedWeight?string("0.00")}</td>
+ <td class="number">${catch.totalWeight?string("0.00")}</td>
+ <td class="number">${catch.percentage?string("0.0")}</td>
+ </tr>
+ </#list>
+ </table>
+
+ <#if operation != orderedOperations?last>
+ <h2 style="page-break-after:always"/>
+ </#if>
+
+ </#list>
+
+ </body>
+</html>
\ No newline at end of file
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-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-04-18 14:20:46 UTC (rev 820)
@@ -81,6 +81,7 @@
tutti.service.operations.computeWeights.species.error.incoherentRowWeightFrequency=
tutti.service.operations.computeWeights.species.error.incoherentTotalSorted=
tutti.service.operations.computeWeights.species.error.noWeight=
+tutti.service.operations.exportCatchesReport.error=
tutti.validator.error.comment.too.long=
tutti.validator.error.cruise.beginDate.required=
tutti.validator.error.cruise.dates.endBeforeStart=
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-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-18 14:20:46 UTC (rev 820)
@@ -65,6 +65,7 @@
tutti.service.operations.computeWeights.species.error.incoherentSampleWeight=Le poids de sous-échantillonage d'un lot des espèces est supérieur au poids de la catégorie
tutti.service.operations.computeWeights.species.error.incoherentTotalSorted=Le poids total Vrac des espèces est inférieur à la somme des poids Vrac triés, inerte trié et vivant non détaillé trié
tutti.service.operations.computeWeights.species.error.noWeight=Un lot des espèces n'a pas de poids
+tutti.service.operations.exportCatchesReport.error=Erreur lors de la génération du rapport des captures
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.cruise.beginDate.required=La date de début est obligatoire
tutti.validator.error.cruise.dates.endBeforeStart=La date de fin doit être après la date de début
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-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -31,6 +31,7 @@
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.RessourceClassLoader;
import fr.ifremer.tutti.service.*;
+import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService;
import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService;
@@ -527,6 +528,10 @@
return serviceContext.getService(ValidationService.class);
}
+ public ExportCatchesReportService getGeneratePDFService() {
+ return serviceContext.getService(ExportCatchesReportService.class);
+ }
+
public boolean useRealPersistenceService() {
return isDbExist() && isDbLoaded();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -121,7 +121,7 @@
} else {
- sendMessage("Aucune mise à jour de l'application détectée.");
+ sendMessage(_("tutti.updateApplication.noUpdate"));
}
}
}
@@ -146,10 +146,8 @@
// tell user restart will be done
- getHandler().showSuccessMessage(
- "Redémarrage de Tutti nécessaire...",
- "La mise à jour nécessite le rédémarrage du Tutti.\nL'application va se fermer puis se réouvrir automatiquement."
- );
+ getHandler().showSuccessMessage(_("tutti.updateApplication.title.success"),
+ _("tutti.updateApplication.message.success"));
CloseApplicationAction action = TuttiActionHelper.createLogicAction(
getHandler(), CloseApplicationAction.class);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -102,8 +102,7 @@
getContext().getTuttiProtocolImportExportService();
service.exportProtocol(protocol, file);
- sendMessage("Protocole [" + protocol.getName() +
- "] exporté dans le fichier " + file.getName() + ".");
+ sendMessage(_("tutti.exportProtocol.action.success", protocol.getName(), file.getName()));
getHandler().resetEditProtolAction();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -97,7 +97,7 @@
getContext().getTuttiProtocolImportExportService();
TuttiProtocol protocol = service.importProtocol(file);
- sendMessage("Protocole [" + protocol.getName() + "] lu depuis le fichier.");
+ sendMessage(_("tutti.importProtocol.action.success", protocol.getName()));
// store protocol in context
IMPORT_PROTOCOL_ENTRY.setContextValue(getContext().getMainUI(), protocol);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 14:20:46 UTC (rev 820)
@@ -210,4 +210,15 @@
_tuttiAction: {ValidateCatchesAction.class};
enabled: {model.isValid() && uiContext.isCruiseFilled()};
_help: {"tutti.selectCruise.action.validateCatches.help"};
+}
+
+
+#exportCatchesButton {
+ actionIcon: validate;
+ text: "tutti.selectCruise.action.validateCatches";
+ toolTipText: "tutti.selectCruise.action.validateCatches.tip";
+ i18nMnemonic: "tutti.selectCruise.action.validateCatches.mnemonic";
+ _tuttiAction: {ExportCatchesAction.class};
+ enabled: {model.isValid() && uiContext.isCruiseFilled()};
+ _help: {"tutti.selectCruise.action.validateCatches.help"};
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 14:20:46 UTC (rev 820)
@@ -144,6 +144,7 @@
<JPanel layout='{new GridLayout(1,0)}'>
<JButton id='editCatchesButton'/>
<JButton id='validateCatchesButton'/>
+ <JButton id='exportCatchesButton'/>
</JPanel>
</cell>
</row>
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java (from rev 810, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -0,0 +1,91 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.TuttiIOUtil;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Opens a file chooser and exports the protocol into the selected file.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class SendCatchesReportAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(SendCatchesReportAction.class);
+
+ protected File file;
+
+ public SendCatchesReportAction(SelectCruiseUIHandler handler) {
+ super(handler, true);
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+
+ boolean doAction = super.prepareAction();
+
+ if (doAction) {
+
+ // choose file to export
+ file = TuttiUIUtil.chooseFile(
+ getContext().getMainUI(),
+ _("tutti.sendCatchesReport.title.choose.exportFile"),
+ _("tutti.sendCatchesReport.action.chooseFile"),
+ "^.+\\.pdf$", _("tutti.common.file.pdf")
+ );
+ doAction = file != null;
+ if (doAction) {
+ file = TuttiIOUtil.addExtensionIfMissing(file, ".pdf");
+
+ // ask user to confirm overwrite.
+ doAction = getHandler().askOverwriteFile(file);
+ }
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction() {
+ file = null;
+ super.releaseAction();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ Cruise cruise = getModel().getCruise();
+ Preconditions.checkNotNull(cruise);
+ Preconditions.checkNotNull(file);
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export cruise " + cruise.getId() +
+ " to file: " + file);
+ }
+
+ // export catches
+ ExportCatchesReportService service =
+ getContext().getGeneratePDFService();
+ service.generatePDFFile(file, cruise.getId(), getConfig().getI18nLocale());
+
+ TuttiUIUtil.mail(_("tutti.sendCatchesReport.mail.subject", cruise.getName()),
+ _("tutti.sendCatchesReport.mail.body", cruise.getName(), file.getAbsolutePath()));
+
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.sendCatchesReport.action.success", file.getName()));
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.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/util/TuttiUIUtil.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -48,6 +48,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
@@ -280,6 +281,20 @@
public static void openLink(URI uri) {
+ Desktop desktop = getDesktopForBrowse();
+
+ try {
+
+ desktop.browse(uri);
+ } catch (Exception e) {
+
+ throw new TuttiTechnicalException(
+ _("swing.error.cannot.open.link", uri), e);
+ }
+ }
+
+ public static Desktop getDesktopForMail() {
+
if (!Desktop.isDesktopSupported()) {
throw new TuttiTechnicalException(
_("swing.error.desktop.not.supported"));
@@ -287,19 +302,27 @@
Desktop desktop = Desktop.getDesktop();
- if (!desktop.isSupported(Desktop.Action.BROWSE)) {
+ if (!desktop.isSupported(Desktop.Action.MAIL)) {
throw new TuttiTechnicalException(
- _("swing.error.desktop.browse.not.supported"));
+ _("swing.error.desktop.mail.not.supported"));
}
+ return desktop;
+ }
+
+ public static void mail(String subject, String body) {
+
+ Desktop desktop = getDesktopForMail();
+
try {
+ URI mailtoURI = new URI("mailto", null, null, "subject=" + subject + "&body=" + body, null);
+ desktop.mail(mailtoURI);
- desktop.browse(uri);
} catch (Exception e) {
throw new TuttiTechnicalException(
- _("swing.error.cannot.open.link", uri), e);
+ _("swing.error.cannot.mail"), e);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionSwingWorker.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionSwingWorker.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionSwingWorker.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -97,8 +97,6 @@
if (log.isInfoEnabled()) {
log.info("Task [" + this + "] done");
}
-
- action.releaseAction();
}
}
return null;
@@ -122,6 +120,8 @@
action.postFailedAction(error);
}
+ action.releaseAction();
+
if (timer != null) {
timer.cancel();
Added: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIModel-error-validation.xml (rev 0)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIModel-error-validation.xml 2013-04-18 14:20:46 UTC (rev 820)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="species">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createAccidentalBatch.species.required
+ </message>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml 2013-04-18 14:20:46 UTC (rev 820)
@@ -29,9 +29,33 @@
<field name="species">
<field-validator type="required" short-circuit="true">
<message>
- tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required
+ tutti.validator.error.createIndividualObservationBatch.species.required
</message>
</field-validator>
</field>
+ <field name="weight">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createIndividualObservationBatch.weight.required
+ </message>
+ </field-validator>
+ </field>
+
+ <field name="size">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createIndividualObservationBatch.size.required
+ </message>
+ </field-validator>
+ </field>
+
+ <field name="lengthStepCaracteristic">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createIndividualObservationBatch.lengthStepCaracteristic.required
+ </message>
+ </field-validator>
+ </field>
+
</validators>
\ No newline at end of file
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-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-18 14:20:46 UTC (rev 820)
@@ -1,3 +1,4 @@
+swing.error.cannot.mail=
swing.error.cannot.open.file=
swing.error.cannot.open.link=
swing.error.desktop.browse.not.supported=
@@ -2,2 +3,3 @@
swing.error.desktop.extension.not.supported=
+swing.error.desktop.mail.not.supported=
swing.error.desktop.not.supported=
@@ -59,6 +61,7 @@
tutti.common.cancel.mnemonic=
tutti.common.file.csv=
tutti.common.file.ibts=
+tutti.common.file.pdf=
tutti.common.file.protocol=
tutti.common.file.zip=
tutti.common.validate=
@@ -823,6 +826,7 @@
tutti.error.errorpane.htmlmessage=
tutti.error.ui.business.error=
tutti.error.ui.other.error=
+tutti.exportProtocol.action.success=
tutti.fishingOperations.action.newFishingOperation.mnemonic=
tutti.fishingOperations.action.newFishingOperation.tip=
tutti.fishingOperations.info.no.fishingOperation.selected=
@@ -864,6 +868,7 @@
tutti.gearUseFeatureTable.table.header.key=
tutti.gearUseFeatureTable.table.header.value=
tutti.gearUseFeatureTable.title=
+tutti.importProtocol.action.success=
tutti.importPupitri.carrouselFile.extension=
tutti.importPupitri.carrouselFile.extension.description=
tutti.importPupitri.error.fileMissing.message=
@@ -1081,6 +1086,12 @@
tutti.selectSpecies.action.validate.mnemonic=
tutti.selectSpecies.action.validate.tip=
tutti.selectSpecies.title=
+tutti.sendCatchesReport.action.chooseFile=
+tutti.sendCatchesReport.action.chooseProtocolFile=
+tutti.sendCatchesReport.action.success=
+tutti.sendCatchesReport.mail.body=
+tutti.sendCatchesReport.mail.subject=
+tutti.sendCatchesReport.title.choose.exportFile=
tutti.splitBenthosBatch.action.cancel=
tutti.splitBenthosBatch.action.cancel.mnemonic=
tutti.splitBenthosBatch.action.cancel.tip=
@@ -1124,8 +1135,16 @@
tutti.update.i18n=
tutti.update.jre=
tutti.update.tutti=
+tutti.updateApplication.message.success=
+tutti.updateApplication.noUpdate=
+tutti.updateApplication.title.success=
tutti.validator.error.comment.too.long=
+tutti.validator.error.createAccidentalBatch.species.required=
tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required=
+tutti.validator.error.createIndividualObservationBatch.lengthStepCaracteristic.required=
+tutti.validator.error.createIndividualObservationBatch.size.required=
+tutti.validator.error.createIndividualObservationBatch.species.required=
+tutti.validator.error.createIndividualObservationBatch.weight.required=
tutti.validator.error.createMarineLitterBatch.categoryAndSizeCategory.notAvailable=
tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=
tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=
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-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-18 14:20:46 UTC (rev 820)
@@ -1,6 +1,8 @@
+swing.error.cannot.mail=Aucun programme n'est défini pour envoyer des emails.
swing.error.cannot.open.file=Aucun programme n'est défini pour ouvrir ce type de fichier. Enregistrez le fichier et ouvrez le en dehors de Tutti.
swing.error.cannot.open.link=Impossible d'ouvrir le fichier %s.
swing.error.desktop.browse.not.supported=Le navigateur n'a pas pu être ouvert. Vérifiez que vous avez défini un navigateur par défaut dans votre système.
+swing.error.desktop.mail.not.supported=Le client mail n'a pas pu être ouvert. Vérifiez que vous avez défini un client mail par défaut dans votre système.
swing.error.desktop.not.supported=Votre système ne permet pas d'ouvrir des liens ou fichiers en dehors de Tutti.
tutti.about.bottomText=Copyright %s - %s - version %s
tutti.about.message=<h3>Tutti</h3><p><strong>Outil de saisie de données d'opérations et de captures au cours des campagnes halieutiques.</strong></p><br/><p>Ce logiciel permettra la saisie en mer des données d'opération de pêche (positions, environnement, engin, etc) et des captures associées (composition de la capture en espèces scientifiques avec poids, nombres, tailles etc) pour l'ensemble des campagnes halieutiques réalisées par l'Ifremer.</p><p>Ce projet a été initiée en 2012 par l'<a href\="http\://www.ifremer.fr">Ifremer</a> et réalisé par la société <a href\="http\://codelutin.com">Codelutin</a>.</p><hr/><br/><p>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.forge.codelutin.com/tutti">site du projet</a>.</p><p>Projet hébergé sur la forge <a href\="http\://forge.codelutin.com/projects/tutti">Forge.codelutin.com</a>.</p>
@@ -56,6 +58,7 @@
tutti.common.cancel=Annuler
tutti.common.cancel.mnemonic=A
tutti.common.file.csv=Extension d'un fichier csv
+tutti.common.file.pdf=Extension d'un fichier pdf
tutti.common.file.protocol=Extension d'un fichier de protocole Tutti
tutti.common.file.zip=Extension d'une archive zip
tutti.common.validate=Valider
@@ -824,6 +827,7 @@
tutti.error.errorpane.htmlmessage=<html><body><b>Une erreur s'est produite</b>\:<br/>%s</body></html>
tutti.error.ui.business.error=Erreur
tutti.error.ui.other.error=Erreur
+tutti.exportProtocol.action.success=Protocole [%1s] exporté dans le fichier %2s.
tutti.fishingOperations.action.newFishingOperation.mnemonic=N
tutti.fishingOperations.action.newFishingOperation.tip=Créer une nouvelle opération de pêche
tutti.fishingOperations.info.no.fishingOperation.selected=< Aucun trait sélectionné >
@@ -864,6 +868,7 @@
tutti.gearUseFeatureTable.table.header.key=Caractéristique
tutti.gearUseFeatureTable.table.header.value=Valeur
tutti.gearUseFeatureTable.title=Mise en oeuvre de l'engin
+tutti.importProtocol.action.success=Protocole [%s] lu depuis le fichier.
tutti.importPupitri.carrouselFile.extension=car
tutti.importPupitri.carrouselFile.extension.description=Fichier du carrousel (.car)
tutti.importPupitri.error.fileMissing.message=Vous devez sélectionner un fichier pour le trémie et un fichier pour le carrousel pour pouvoir continuer l'import.
@@ -1079,6 +1084,11 @@
tutti.selectSpecies.action.validate.mnemonic=V
tutti.selectSpecies.action.validate.tip=Valider la sélection de l'espèce
tutti.selectSpecies.title=Choisissez une espèce
+tutti.sendCatchesReport.action.chooseFile=Choisir le fichier de rapport
+tutti.sendCatchesReport.action.success=Les captures ont correctement été exporté dans le fichier %s
+tutti.sendCatchesReport.mail.body=Bonjour,\n\nveuillez trouver ci-joint le rapport des captures de la campagne %1s.\n*Pensez à joindre le fichier %2s*\n\nCordialement,\n\n*Votre nom*
+tutti.sendCatchesReport.mail.subject=Captures de la campagne %s
+tutti.sendCatchesReport.title.choose.exportFile=Exporter les captures de la campagne
tutti.splitBenthosBatch.action.cancel=Annuler
tutti.splitBenthosBatch.action.cancel.mnemonic=A
tutti.splitBenthosBatch.action.cancel.tip=Annuler le sous-échantillonnage
@@ -1122,8 +1132,15 @@
tutti.update.i18n=Traductions
tutti.update.jre=Java
tutti.update.tutti=Tutti
+tutti.updateApplication.message.success=La mise à jour nécessite le rédémarrage du Tutti.\nL'application va se fermer puis se réouvrir automatiquement.
+tutti.updateApplication.noUpdate=Aucune mise à jour de l'application détectée.
+tutti.updateApplication.title.success=Redémarrage de Tutti nécessaire...
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
-tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required=L'espèce est obligatoire
+tutti.validator.error.createAccidentalBatch.species.required=L'espèce est obligatoire
+tutti.validator.error.createIndividualObservationBatch.lengthStepCaracteristic.required=La classe de taille est obligatoire
+tutti.validator.error.createIndividualObservationBatch.size.required=La taille est obligatoire
+tutti.validator.error.createIndividualObservationBatch.species.required=L'espèce est obligatoire
+tutti.validator.error.createIndividualObservationBatch.weight.required=Le poids est obligatoire
tutti.validator.error.createMarineLitterBatch.categoryAndSizeCategory.notAvailable=Couple (catégorie de déchet - catégorie de taille) déjà utilisée
tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=La catégorie de déchet est obligatoire
tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=La catégorie de taille est obligatoire
1
0
Author: tchemit
Date: 2013-04-18 08:34:25 +0200 (Thu, 18 Apr 2013)
New Revision: 819
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/819
Log:
optimize dependencies
Modified:
trunk/pom.xml
trunk/tutti-persistence/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-04-17 17:10:39 UTC (rev 818)
+++ trunk/pom.xml 2013-04-18 06:34:25 UTC (rev 819)
@@ -309,12 +309,6 @@
</dependency>
<dependency>
- <groupId>commons-dbcp</groupId>
- <artifactId>commons-dbcp</artifactId>
- <version>1.3</version>
- </dependency>
-
- <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernateVersion}</version>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-04-17 17:10:39 UTC (rev 818)
+++ trunk/tutti-persistence/pom.xml 2013-04-18 06:34:25 UTC (rev 819)
@@ -96,11 +96,6 @@
</dependency>
<dependency>
- <groupId>commons-dbcp</groupId>
- <artifactId>commons-dbcp</artifactId>
- </dependency>
-
- <dependency>
<groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-common</artifactId>
</dependency>
1
0
Author: tchemit
Date: 2013-04-17 19:10:39 +0200 (Wed, 17 Apr 2013)
New Revision: 818
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/818
Log:
refs #2281: [TECH] - R?\195?\169percution des nouveaut?\195?\169s du mod?\195?\168le adagio
Modified:
trunk/src/site/rst/referential.rst
Modified: trunk/src/site/rst/referential.rst
===================================================================
--- trunk/src/site/rst/referential.rst 2013-04-17 17:04:44 UTC (rev 817)
+++ trunk/src/site/rst/referential.rst 2013-04-17 17:10:39 UTC (rev 818)
@@ -61,11 +61,11 @@
+-----------------------------------------------------+-------+-----------------------------------------------------+
| [REF-11] Catégorie Maturité | OK | |
+-----------------------------------------------------+-------+-----------------------------------------------------+
-| [REF-12] Liste des espèces | OK | A vérifier |
+| [REF-12] Liste des espèces (avec code rubin) | OK | |
+-----------------------------------------------------+-------+-----------------------------------------------------+
-| [REF-13] Liste des espèces vernaculaires | OK | A vérifier |
+| [REF-13] Liste des espèces vernaculaires | OK | |
+-----------------------------------------------------+-------+-----------------------------------------------------+
-| [REF-14] Liste des ports | OK | A vérifier |
+| [REF-14] Liste des ports | OK | |
+-----------------------------------------------------+-------+-----------------------------------------------------+
[REF-01] Liste des strates / sous-strates / localités
@@ -236,55 +236,20 @@
[REF-12] Liste des espèces
--------------------------
-::
+Utilisation de la méthode d'adagio-core *TaxonNameExtendDao.getAllTaxonNames*
+avec transcribingTypeId = *TranscribingTypeId.TAXINOMIE_REFTAX_MNEMONIQUE*
- SELECT
- t.id,
- t.reference_taxon_fk,
- t.complete_name,
- trans.external_code as "code rubin",
- t.is_referent
- FROM
- taxon_name t
- LEFT JOIN (select object_id, external_code from transcribing_item ti, transcribing_item_type tt
- where ti.transcribing_item_type_fk = tt.id
- and tt.name = 'TAXINOMIE-REFTAX.MNEMONIQUE') as trans
- on t.reference_taxon_fk = trans.object_id
+*État:* Valide.
-NB :
-- mettre tt.name en paramètre car ça pourrait changer
-- il faut partir du modèle mis à jour pour la V2 (les tables transcribing ont évolué)
-
-*État:* A valider (transformer les requêtes SQL).
-
-
[REF-13] Liste des espèces vernaculaires
-------------------------------------------
-::
+Utilisation de la méthode d'adagio-core *TaxonNameExtendDao.getAllTaxonNames*
+avec transcribingTypeId = *TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE*
- SELECT
- t.id,
- t.reference_taxon_fk,
- t.complete_name,
- trans.external_code as "nom vernaculaire",
- t.is_referent
- FROM
- taxon_name t
- LEFT JOIN (select object_id, external_code from transcribing_item ti, transcribing_item_type tt
- where ti.transcribing_item_type_fk = tt.id
- and tt.name = 'TAXINOMIE-COMMUN.NOM_VERNACULAIRE') as trans
- on t.reference_taxon_fk = trans.object_id
+*État:* Valide.
-
-NB :
-- mettre tt.name en paramètre car ça pourrait changer
-- il faut partir du modèle mis à jour pour la V2 (les tables transcribing ont évolué)
-
-*État:* A valider (transformer les requêtes SQL).
-
-
[REF-14] Liste des ports
------------------------------------------------
@@ -305,7 +270,7 @@
- :statusValidCode = *StatusCode.ENABLE*
- :statusTemporaryCode = *StatusCode.TEMPORARY*
-*État:* À Valider et définir la variable LocationLevelId.PORT.
+*État:* Valide.
Les requètes techniques
1
0
r817 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-persistence/src/main/xmi tutti-service/src/main/java/fr/ifremer/tutti/service
by tchemit@users.forge.codelutin.com 17 Apr '13
by tchemit@users.forge.codelutin.com 17 Apr '13
17 Apr '13
Author: tchemit
Date: 2013-04-17 19:04:44 +0200 (Wed, 17 Apr 2013)
New Revision: 817
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/817
Log:
add method in PersistenceService to have vernicular taxons
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/service/ReferentialPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
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-04-17 16:40:09 UTC (rev 816)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-04-17 17:04:44 UTC (rev 817)
@@ -190,6 +190,20 @@
List<Species> getAllReferentSpecies(TuttiProtocol protocol);
/**
+ * Obtain a species with external code as vernacular code given his referenceTaxonId.
+ * <p/>
+ * <strong>Note:</strong> {@link Species#getRefTaxCode()} will not be
+ * filled by with method.
+ *
+ * @param referenceTaxonId id of the reference taxon of the species to load
+ * @return the species or {@code null} if not found.
+ * @see Species#getReferenceTaxonId()
+ * @see Species#getVernacularCode()
+ * @since 1.5
+ */
+ Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId);
+
+ /**
* @return all caracteristics of the system.
* @since 1.0
*/
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-04-17 16:40:09 UTC (rev 816)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-04-17 17:04:44 UTC (rev 817)
@@ -252,6 +252,11 @@
return result;
}
+ @Override
+ public Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId) {
+ return referentialService.getSpeciesByReferenceTaxonIdWithVernacularCode(referenceTaxonId);
+ }
+
protected void setSpeciesSurveyCode(List<Species> speciesList, TuttiProtocol protocol) {
if (protocol != null && !protocol.isSpeciesEmpty()) {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-04-17 16:40:09 UTC (rev 816)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-04-17 17:04:44 UTC (rev 817)
@@ -130,6 +130,11 @@
}
@Override
+ public Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId) {
+ throw new RuntimeException("method not implemented");
+ }
+
+ @Override
public List<Caracteristic> getAllCaracteristic() {
throw new RuntimeException("method not implemented");
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-04-17 16:40:09 UTC (rev 816)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-04-17 17:04:44 UTC (rev 817)
@@ -409,6 +409,7 @@
Cache referentSpeciesByIdCache = cacheService.getCache("referentSpeciesById");
for (TaxonRefVO source : sources) {
Species target = loadSpecies(source);
+ target.setRefTaxCode(target.getExternalCode());
// Add to cache :
referentSpeciesByIdCache.put(target.getReferenceTaxonId(), target);
@@ -423,6 +424,9 @@
Species result = getSpeciesByReferenceTaxonId(
speciesId,
enumeration.TRANSCRIBING_TYPE_ID_REFTAX);
+ if (result != null) {
+ result.setRefTaxCode(result.getExternalCode());
+ }
return result;
}
@@ -431,8 +435,9 @@
Species result = getSpeciesByReferenceTaxonId(
speciesId,
enumeration.TRANSCRIBING_TYPE_ID_VERNACULAIRE);
- result.setVernacularCode(result.getRefTaxCode());
- result.setRefTaxCode(null);
+ if (result != null) {
+ result.setVernacularCode(result.getExternalCode());
+ }
return result;
}
@@ -723,6 +728,7 @@
// update the source
Species result = loadSpecies(taxonName);
+ result.setRefTaxCode(result.getExternalCode());
// Add to cache
Cache cache = cacheService.getCache("referentSpeciesById");
@@ -824,7 +830,7 @@
Species target = TuttiBeanFactory.newSpecies();
target.setId(String.valueOf(source.getTaxonNameId()));
target.setName(source.getName());
- target.setRefTaxCode(source.getExternalCode());
+ target.setExternalCode(source.getExternalCode());
target.setReferenceTaxonId(source.getReferenceTaxonId());
target.setReferenceTaxon(source.getIsReference());
fr.ifremer.adagio.core.dao.referential.Status status = statusDao.load(source.getStatus().getValue());
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-04-17 16:40:09 UTC (rev 816)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-04-17 17:04:44 UTC (rev 817)
@@ -319,6 +319,11 @@
public List<Species> getAllReferentSpecies(TuttiProtocol protocol) {
return driver.getAllReferentSpecies(protocol);
}
+
+ @Override
+ public Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId) {
+ return driver.getSpeciesByReferenceTaxonIdWithVernacularCode(referenceTaxonId);
+ }
@Override
public List<Caracteristic> getAllCaracteristic() {
1
0
See <http://ci.nuiton.org/jenkins/job/tutti/663/changes>
Changes:
[Tony Chemit] refs #2281: [TECH] - Répercution des nouveautés du modèle adagio (utilisation des transcodage)
------------------------------------------
Started by an SCM change
Building on master in workspace <http://ci.nuiton.org/jenkins/job/tutti/ws/>
Updating http://svn.forge.codelutin.com/svn/tutti/trunk to revision '2013-04-17T18:46:24.145 +0200'
U tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceWriteTest.java
U tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java
U tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
U tutti-persistence/src/main/resources/applicationContext-service-tutti.xml
U tutti-persistence/src/main/resources/tutti-db-enumerations.properties
U tutti-persistence/src/main/xmi/tutti-persistence.zargo
At revision 816
Parsing POMs
[trunk2] $ /opt/jdk/bin/java -Xmx256m -XX:-UseGCOverheadLimit -cp /var/local/jenkins/data/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.2.jar:/opt/maven3/boot/plexus-classworlds-2.4.jar org.jvnet.hudson.maven3.agent.Maven3Main /opt/maven3 /opt/repo/apache-tomcat-7.0.34/webapps/jenkins/WEB-INF/lib/remoting-2.22.jar /var/local/jenkins/data/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.2.jar 51281
<===[JENKINS REMOTING CAPACITY]===> channel started
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
Executing Maven: -B -f <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml> -U -e clean install
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Tutti
[INFO] Tutti :: Persistence
[INFO] Tutti :: Service
[INFO] Tutti :: UI
Projects to build: [MavenProject: fr.ifremer:tutti:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-persistence:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-service:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml]>
projectStarted fr.ifremer:tutti:2.0-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/target>
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.apache.maven.plugins:maven-antrun-plugin:1.7(generate-surefire-workdir)
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (generate-surefire-workdir) @ tutti ---
[INFO] Executing tasks
main:
[mkdir] Created dir: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/target/surefire-workdir>
[INFO] Executed tasks
mojoSucceeded org.apache.maven.plugins:maven-antrun-plugin:1.7(generate-surefire-workdir)
mojoStarted org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
[INFO]
[INFO] --- maven-site-plugin:3.2:attach-descriptor (attach-descriptor) @ tutti ---
mojoSucceeded org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
mojoStarted org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ tutti ---
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml> to /var/local/maven/data/repository/fr/ifremer/tutti/2.0-SNAPSHOT/tutti-2.0-SNAPSHOT.pom
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/target/tutti-2.0-SNAPSHOT-…> to /var/local/maven/data/repository/fr/ifremer/tutti/2.0-SNAPSHOT/tutti-2.0-SNAPSHOT-site_fr.xml
mojoSucceeded org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
projectSucceeded fr.ifremer:tutti:2.0-SNAPSHOT
projectStarted fr.ifremer.tutti:tutti-persistence:2.0-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Persistence 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/fr/ifremer/adagio/adagi…
Downloaded: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/… (2 KB at 5.7 KB/sec)
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/fr/ifremer/adagio/adagi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/…
Downloaded: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/… (600 B at 16.7 KB/sec)
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/…
Downloaded: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/… (18 KB at 434.6 KB/sec)
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target>
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-persistence ---
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-persistence ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.eugene:eugene-maven-plugin:2.6.2(default)
[INFO]
[INFO] --- eugene-maven-plugin:2.6.2:generate (default) @ tutti-persistence ---
[INFO] Process phase [zargo] for one entry.
[INFO] Expanding 1 xmi file(s) from <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>
[INFO] Will generate <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…>
[INFO] Copy file <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…> to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…>
[INFO] Generate one file in 29.517ms.
[INFO] Process phase [xmi] for one entry.
[INFO] Processing XSL tranformation on <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…> for 1 file(s).
[INFO] Will generate <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…>
[INFO] Copy file <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…> to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…>
[INFO] Generate one file in 2.784s.
[INFO] Process phase [model] for one entry.
WARN [pool-1-thread-1] (ObjectModelReader.java:297) loadModelTagValue - Invalid model tag value [model.tagvalue.simpleBeanExtractPojoInterface] : the tagvalue 'simpleBeanExtractPojoInterface' is unkown.
INFO [pool-1-thread-1] (ObjectModelReader.java:273) loadModelProperties - 22 tag values were succesfull imported from <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…>
[INFO] Apply generator JavaInterfaceTransformer
INFO [pool-1-thread-1] (ObjectModelTransformerToJava.java:911) isInClassPath - Will not generate [fr.ifremer.tutti.persistence.entities.TuttiEntity], already found in class-path.
[INFO] Apply generator SimpleJavaBeanTransformer
[INFO] Apply generator JavaEnumerationTransformer
INFO [pool-1-thread-1] (ObjectModelTransformerToJava.java:911) isInClassPath - Will not generate [fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum], already found in class-path.
INFO [pool-1-thread-1] (ObjectModelTransformerToJava.java:911) isInClassPath - Will not generate [fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum], already found in class-path.
[INFO] No file generated.
[INFO] Add compile source root : <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…>
[INFO] Add resource root :Resource {targetPath: null, filtering: false, FileSet {directory: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…,> PatternSet [includes: {}, excludes: {**/*.java}]}}
mojoSucceeded org.nuiton.eugene:eugene-maven-plugin:2.6.2(default)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-persistence ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-persistence:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-persistence ---
[INFO] Copying tutti-persistence.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)[INFO] Copying tutti-persistence.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/g…>
forkedProjectSucceeded fr.ifremer.tutti:tutti-persistence:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-persistence ---
[WARNING] bundle fr_FR contains 3/35 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 35/35 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-persistence ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 8 resources
[INFO] Copying 0 resource
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-persistence ---
[INFO] Compiling 126 source files to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/c…>
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[35,51] error: cannot find symbol
[ERROR] symbol: class TaxonRefVO
location: package fr.ifremer.adagio.core.dao.referential.taxon
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[823,34] error: cannot find symbol
[ERROR] symbol: class TaxonRefVO
location: class ReferentialPersistenceServiceImpl
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[378,8] error: cannot find symbol
[ERROR] symbol: class TaxonRefVO
location: class ReferentialPersistenceServiceImpl
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[378,43] error: method getAllTaxonNames in interface TaxonNameExtendDao cannot be applied to given types;
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[ERROR] required: boolean
found: boolean,Integer
reason: actual and formal argument lists differ in length
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[384,13] error: cannot find symbol
[ERROR] symbol: class TaxonRefVO
location: class ReferentialPersistenceServiceImpl
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[406,8] error: cannot find symbol
[ERROR] symbol: class TaxonRefVO
location: class ReferentialPersistenceServiceImpl
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[406,43] error: method getAllTaxonNames in interface TaxonNameExtendDao cannot be applied to given types;
[ERROR] required: boolean
found: boolean,Integer
reason: actual and formal argument lists differ in length
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[410,13] error: cannot find symbol
[ERROR] symbol: class TaxonRefVO
location: class ReferentialPersistenceServiceImpl
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[443,12] error: cannot find symbol
[ERROR] symbol: class TaxonRefVO
location: class ReferentialPersistenceServiceImpl
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[443,44] error: method getTaxonNameReferent in interface TaxonNameExtendDao cannot be applied to given types;
[ERROR] required: Integer
found: Integer,Integer
reason: actual and formal argument lists differ in length
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[718,8] error: cannot find symbol
[ERROR] symbol: class TaxonRefVO
location: class ReferentialPersistenceServiceImpl
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/src/main…>:[718,35] error: cannot find symbol
[INFO] 12 errors
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-persistence:2.0-SNAPSHOT
sessionEnded
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Tutti ............................................. SUCCESS [6.581s]
[INFO] Tutti :: Persistence .............................. FAILURE [12.406s]
[INFO] Tutti :: Service .................................. SKIPPED
[INFO] Tutti :: UI ....................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20.592s
[INFO] Finished at: Wed Apr 17 18:46:52 CEST 2013
[INFO] Final Memory: 30M/111M
[INFO] ------------------------------------------------------------------------
Projects to build: [MavenProject: fr.ifremer:tutti:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-persistence:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-service:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml]>
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-04-17_18-46-26/archive/fr.ifremer.tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-04-17_18-46-26/archive/fr.ifremer.tutti/tutti-ui-swing/2.0-SNAPSHOT/tutti-ui-swing-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-17_18-46-26/archive/fr.ifremer/tutti/2.0-SNAPSHOT/tutti-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/target/tutti-2.0-SNAPSHOT-…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-17_18-46-26/archive/fr.ifremer/tutti/2.0-SNAPSHOT/tutti-2.0-SNAPSHOT-site_fr.xml
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-17_18-46-26/archive/fr.ifremer.tutti/tutti-persistence/2.0-SNAPSHOT/tutti-persistence-2.0-SNAPSHOT.pom
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-persistence: Compilation failure
cause : Compilation failure
Stack trace :
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-persistence: Compilation failure
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:100)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:66)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:729)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 27 more
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com chemit(a)codelutin.com
channel stopped
1
1