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
February 2013
- 6 participants
- 236 discussions
r405 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing
by tchemit@users.forge.codelutin.com 12 Feb '13
by tchemit@users.forge.codelutin.com 12 Feb '13
12 Feb '13
Author: tchemit
Date: 2013-02-12 19:33:43 +0100 (Tue, 12 Feb 2013)
New Revision: 405
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/405
Log:
hide body when updating application
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java 2013-02-12 18:21:58 UTC (rev 404)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java 2013-02-12 18:33:43 UTC (rev 405)
@@ -54,7 +54,7 @@
"update-application",
_("tutti.action.updateApplication"),
_("tutti.action.updateApplication.tip"),
- false);
+ true);
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java 2013-02-12 18:21:58 UTC (rev 404)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java 2013-02-12 18:33:43 UTC (rev 405)
@@ -54,7 +54,7 @@
"update-referential",
_("tutti.action.updateReferential"),
_("tutti.action.updateReferential.tip"),
- false);
+ true);
}
@Override
1
0
r404 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation
by tchemit@users.forge.codelutin.com 12 Feb '13
by tchemit@users.forge.codelutin.com 12 Feb '13
12 Feb '13
Author: tchemit
Date: 2013-02-12 19:21:58 +0100 (Tue, 12 Feb 2013)
New Revision: 404
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/404
Log:
improve edit fishing operation action
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-02-12 18:20:47 UTC (rev 403)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-02-12 18:21:58 UTC (rev 404)
@@ -103,31 +103,31 @@
* @since 1.0
*/
protected SaveCatchBatchAction saveCatchBatchAction;
-
+
private final PropertyChangeListener coordinatePropertiesListener = new PropertyChangeListener() {
private List<String> properties = Lists.newArrayList(
- EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_RECTILIGNE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_DECIMAL_MINUTE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_DEGREE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_MINUTE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_SECOND,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DECIMAL_MINUTE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DEGREE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_MINUTE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_DECIMAL_MINUTE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_MINUTE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_SECOND,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DECIMAL_MINUTE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DEGREE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_MINUTE,
- EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_SECOND
+ EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_RECTILIGNE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_SECOND
);
@Override
@@ -202,39 +202,86 @@
boolean create = TuttiEntities.isNew(editFishingOperation);
- // must close current edition
- String message;
+ boolean fishingOperationModified = getHandler().isFishingOperationModified();
+ boolean catchBatchModified = getHandler().isCatchBatchModified();
- if (create) {
- message = _("tutti.dialog.askSaveBeforeLeaving.createFishingOperation");
- } else {
- message = _("tutti.dialog.askSaveBeforeLeaving.saveFishingOperation");
- }
+ boolean fishingOperationValid = getHandler().isFishingOperationValid();
+ boolean catchBatchValid = getHandler().isCatchBatchValid();
- int answer = getHandler().askSaveBeforeLeaving(message);
+ boolean needSave = create || fishingOperationModified || catchBatchModified;
- canContinue = false;
- switch (answer) {
- case JOptionPane.OK_OPTION:
- // persist previous fishing operation
- getSaveFishingOperationAction().setUpdateUI(false);
- getSaveFishingOperationAction().actionPerformed(event);
- getSaveCatchBatchAction().setUpdateUI(false);
- getSaveCatchBatchAction().actionPerformed(event);
+ if (needSave) {
- canContinue = true;
- break;
+ boolean canSave = fishingOperationValid && catchBatchValid;
- case JOptionPane.NO_OPTION:
+ canContinue = false;
- // won't save modification
- // so since we will edit a new operation, nothing to do here
+ if (canSave) {
- canContinue = true;
- break;
+ String message;
+
+ if (create) {
+ message = _("tutti.dialog.askSaveBeforeLeaving.createFishingOperation");
+ } else if (fishingOperationModified) {
+ message = _("tutti.dialog.askSaveBeforeLeaving.saveFishingOperation");
+ } else {
+ message = _("tutti.dialog.askSaveBeforeLeaving.saveCatchBatch");
+ }
+
+ int answer = getHandler().askSaveBeforeLeaving(message);
+
+
+ switch (answer) {
+ case JOptionPane.OK_OPTION:
+
+ // persist previous fishing operation
+ if (fishingOperationModified) {
+ getSaveFishingOperationAction().setUpdateUI(false);
+ getSaveFishingOperationAction().actionPerformed(event);
+ }
+
+ if (catchBatchModified) {
+ getSaveCatchBatchAction().setUpdateUI(false);
+ getSaveCatchBatchAction().actionPerformed(event);
+ }
+
+ canContinue = true;
+ break;
+
+ case JOptionPane.NO_OPTION:
+
+ // won't save modification
+ // so since we will edit a new operation, nothing to do here
+
+ canContinue = true;
+ break;
+ }
+ } else {
+
+ // data are not valid
+ String message;
+
+ if (fishingOperationValid) {
+ message = _("tutti.dialog.askCancelEditBeforeLeaving.cancelEditCatchBatch");
+ } else {
+ message = _("tutti.dialog.askCancelEditBeforeLeaving.cancelEditFishingOperation");
+ }
+
+ int answer = getHandler().askCancelEditBeforeLeaving(message);
+
+ switch (answer) {
+ case JOptionPane.YES_OPTION:
+
+ // ok will revert any modification by
+ // editing new fishing operation
+ canContinue = true;
+ break;
+ }
+ }
}
}
+
if (!canContinue) {
// rollback selected fishing operation
@@ -268,7 +315,7 @@
if (log.isInfoEnabled()) {
log.info("Edit in ui fishingOperation: " + fishingOperation);
}
-
+
// now fishing operation is edited
model.setEditFishingOperation(fishingOperation);
@@ -295,7 +342,7 @@
// wait last minute to display (avoid dirty display effects)
ui.add(form, BorderLayout.CENTER);
}
-
+
model.addPropertyChangeListener(coordinatePropertiesListener);
SwingUtilities.invokeLater(new Runnable() {
@@ -313,7 +360,7 @@
EditFishingOperationUIHandler handler = ui.getHandler();
EditFishingOperationUIModel editFishingOperationUIModel = ui.getModel();
-
+
handler.uninstallStartDateListener();
handler.uninstallCoordinatesListener();
@@ -448,10 +495,9 @@
fishingOperationText = null;
} else {
fishingOperationText = _("tutti.label.traitReminder",
- decorator.toString(fishingOperation));
+ decorator.toString(bean));
}
-
// 3) Propagate title to others tabs
ui.getCatchesCaracteristicsTabPane().setTitle(fishingOperationText);
ui.getSpeciesTabFishingOperationReminderLabel().setTitle(fishingOperationText);
1
0
r403 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config
by tchemit@users.forge.codelutin.com 12 Feb '13
by tchemit@users.forge.codelutin.com 12 Feb '13
12 Feb '13
Author: tchemit
Date: 2013-02-12 19:20:47 +0100 (Tue, 12 Feb 2013)
New Revision: 403
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/403
Log:
use default config file on home for dev usage
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-02-12 18:20:10 UTC (rev 402)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-02-12 18:20:47 UTC (rev 403)
@@ -149,7 +149,7 @@
protected File getConfigFile() {
if (configFile == null) {
File dir = getTuttiBasedir();
- if (dir == null || !dir.exists()) {
+ if (dir == null || !dir.exists() || !isFullLaunchMode()) {
dir = new File(applicationConfig.getUserConfigDirectory());
}
configFile = new File(dir, applicationConfig.getConfigFileName());
1
0
r402 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches
by tchemit@users.forge.codelutin.com 12 Feb '13
by tchemit@users.forge.codelutin.com 12 Feb '13
12 Feb '13
Author: tchemit
Date: 2013-02-12 19:20:10 +0100 (Tue, 12 Feb 2013)
New Revision: 402
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/402
Log:
hide action button when no on main card
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-02-12 18:19:34 UTC (rev 401)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-02-12 18:20:10 UTC (rev 402)
@@ -315,10 +315,12 @@
CardLayout2Ext layout = (CardLayout2Ext) panel.getLayout();
layout.setSelected(card);
+ JPanel actionPanel = getUI().getCreateFishingOperationActions();
if (MAIN_CARD.equals(card)) {
registerValidators();
-
+ actionPanel.setVisible(true);
} else {
+ actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
String title = "";
1
0
r401 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species
by tchemit@users.forge.codelutin.com 12 Feb '13
by tchemit@users.forge.codelutin.com 12 Feb '13
12 Feb '13
Author: tchemit
Date: 2013-02-12 19:19:34 +0100 (Tue, 12 Feb 2013)
New Revision: 401
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/401
Log:
usage of synonyms
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-02-11 20:56:49 UTC (rev 400)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-02-12 18:19:34 UTC (rev 401)
@@ -82,6 +82,7 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.Serializable;
+import java.util.Collection;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
@@ -466,17 +467,27 @@
// fill available species from protocol
- allSpecies = Lists.newArrayListWithCapacity(protocol.sizeSpecies());
+ allSpecies = Lists.newArrayList();
if (!protocol.isSpeciesEmpty()) {
- Map<String, Species> map = TuttiEntities.splitById(speciesUniverse);
+
+ // split by referenceTaxonId
+ Multimap<String, Species> map = TuttiEntities.splitByReferenceTaxonId(speciesUniverse);
+
for (SpeciesProtocol protocolSpecy : protocol.getSpecies()) {
- Species species = map.get(protocolSpecy.getSpeciesReferenceTaxonId());
- allSpecies.add(species);
- speciesSampleCategories.put(species, SampleCategoryType.sortedUnsorted);
- speciesSampleCategories.put(species, SampleCategoryType.size);
- speciesSampleCategories.put(species, SampleCategoryType.sex);
- speciesSampleCategories.put(species, SampleCategoryType.maturity);
- speciesSampleCategories.put(species, SampleCategoryType.age);
+
+ // referenceTaxonId
+ String referenceTaxonId = String.valueOf(protocolSpecy.getSpeciesReferenceTaxonId());
+
+ // all synonyms
+ Collection<Species> synonyms = map.get(referenceTaxonId);
+ allSpecies.addAll(synonyms);
+ for (Species species : synonyms) {
+ speciesSampleCategories.put(species, SampleCategoryType.sortedUnsorted);
+ speciesSampleCategories.put(species, SampleCategoryType.size);
+ speciesSampleCategories.put(species, SampleCategoryType.sex);
+ speciesSampleCategories.put(species, SampleCategoryType.maturity);
+ speciesSampleCategories.put(species, SampleCategoryType.age);
+ }
}
}
} else {
1
0
11 Feb '13
Author: tchemit
Date: 2013-02-11 21:56:49 +0100 (Mon, 11 Feb 2013)
New Revision: 400
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/400
Log:
fixes #1849: [ERGO] - Gestion des messages d'erreur
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiBusinessException.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiTechnicalException.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java
Removed:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceTechnicalException.java
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/AbstractTuttiService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceContext.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialImportExportService.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
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/config/TuttiApplicationConfig.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesSubBatchAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/AbstractTuttiService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/AbstractTuttiService.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/AbstractTuttiService.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -72,7 +72,7 @@
}
} catch (IOException e) {
- throw new TuttiServiceTechnicalException("Could not compress directory", e);
+ throw new TuttiTechnicalException("Could not compress directory", e);
}
}
}
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiBusinessException.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiBusinessException.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiBusinessException.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -0,0 +1,48 @@
+package fr.ifremer.tutti.service;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * To box any business exception.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class TuttiBusinessException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public TuttiBusinessException(String message) {
+ super(message);
+ }
+
+ public TuttiBusinessException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public TuttiBusinessException(Throwable cause) {
+ super(cause);
+ }
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiBusinessException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceContext.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceContext.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceContext.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -92,7 +92,7 @@
S s = (S) services.get(serviceType);
return s;
} catch (ExecutionException e) {
- throw new TuttiServiceTechnicalException(
+ throw new TuttiTechnicalException(
"Could not instanciate service " + serviceType, e);
}
}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceTechnicalException.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceTechnicalException.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceTechnicalException.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -1,51 +0,0 @@
-package fr.ifremer.tutti.service;
-
-/*
- * #%L
- * Tutti :: Application
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-/**
- * Any techincal exception of service should be boxed in a such exception.
- *
- * @author tchemit <chemit(a)codelutin.com/>
- * @since 0.1
- */
-public class TuttiServiceTechnicalException extends RuntimeException {
-
- private static final long serialVersionUID = 1L;
-
- public TuttiServiceTechnicalException() {
- }
-
- public TuttiServiceTechnicalException(String message) {
- super(message);
- }
-
- public TuttiServiceTechnicalException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public TuttiServiceTechnicalException(Throwable cause) {
- super(cause);
- }
-}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiTechnicalException.java (from rev 398, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiServiceTechnicalException.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiTechnicalException.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiTechnicalException.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -0,0 +1,51 @@
+package fr.ifremer.tutti.service;
+
+/*
+ * #%L
+ * Tutti :: Application
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Any techincal exception should be boxed in a such exception.
+ *
+ * @author tchemit <chemit(a)codelutin.com/>
+ * @since 0.1
+ */
+public class TuttiTechnicalException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public TuttiTechnicalException() {
+ }
+
+ public TuttiTechnicalException(String message) {
+ super(message);
+ }
+
+ public TuttiTechnicalException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public TuttiTechnicalException(Throwable cause) {
+ super(cause);
+ }
+}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialImportExportService.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/TuttiReferentialImportExportService.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -38,7 +38,7 @@
import fr.ifremer.tutti.service.AbstractTuttiService;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiServiceContext;
-import fr.ifremer.tutti.service.TuttiServiceTechnicalException;
+import fr.ifremer.tutti.service.TuttiTechnicalException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.csv.Export;
@@ -270,7 +270,7 @@
} catch (IOException e) {
throw e;
} catch (Exception e) {
- throw new TuttiServiceTechnicalException("Could not export species to file: " + file, e);
+ throw new TuttiTechnicalException("Could not export species to file: " + file, e);
} finally {
Closeables.closeQuietly(writer);
}
@@ -316,7 +316,7 @@
} catch (IOException e) {
throw e;
} catch (Exception e) {
- throw new TuttiServiceTechnicalException("Could not export species to file: " + file, e);
+ throw new TuttiTechnicalException("Could not export species to file: " + file, e);
} finally {
Closeables.closeQuietly(writer);
}
@@ -353,7 +353,7 @@
} catch (IOException e) {
throw e;
} catch (Exception e) {
- throw new TuttiServiceTechnicalException("Could not export species to file: " + file, e);
+ throw new TuttiTechnicalException("Could not export species to file: " + file, e);
} finally {
Closeables.closeQuietly(writer);
}
@@ -396,7 +396,7 @@
} catch (IOException e) {
throw e;
} catch (Exception e) {
- throw new TuttiServiceTechnicalException("Could not export species to file: " + file, e);
+ throw new TuttiTechnicalException("Could not export species to file: " + file, e);
} finally {
Closeables.closeQuietly(writer);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -30,7 +30,6 @@
import fr.ifremer.tutti.service.TuttiService;
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
import jaxx.runtime.SwingUtil;
-import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.beans.AbstractBean;
@@ -176,9 +175,7 @@
if (log.isErrorEnabled()) {
log.error("Task [" + this + "] error: " + e.getMessage(), e);
}
- if (e instanceof Exception) {
- ErrorDialogUI.showError((Exception) e);
- }
+ throw new TuttiExceptionHandler.TuttiActionException(e);
} finally {
if (log.isInfoEnabled()) {
log.info("Task [" + this + "] done");
@@ -192,7 +189,6 @@
this.releaseAction(event);
} finally {
-
synchronized (lock) {
actions.remove(AbstractTuttiAction.this);
}
@@ -236,8 +232,6 @@
protected boolean canceled;
- private final String actionName;
-
private final String actionDescription;
private JDialog d;
@@ -246,7 +240,6 @@
public ActionTimerTask(A action) {
this.action = action;
- this.actionName = action.getActionName();
this.actionDescription = action.getActionDescription();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -25,7 +25,7 @@
*/
import fr.ifremer.tutti.persistence.entities.IdAware;
-import fr.ifremer.tutti.service.TuttiServiceTechnicalException;
+import fr.ifremer.tutti.service.TuttiTechnicalException;
import org.jdesktop.beans.AbstractSerializableBean;
import org.nuiton.util.beans.Binder;
@@ -80,7 +80,7 @@
E result = entityType.newInstance();
return result;
} catch (Exception e) {
- throw new TuttiServiceTechnicalException(
+ throw new TuttiTechnicalException(
"Could not instanciate entity of type " +
entityType.getName(), e);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -37,7 +37,6 @@
import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI;
import jaxx.runtime.swing.AboutPanel;
-import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -108,9 +107,6 @@
@Override
public void afterInitUI() {
- // Sync to error dialog
- ErrorDialogUI.init(ui);
-
initUI(ui);
// Init SwingSession
@@ -130,7 +126,6 @@
screen = TuttiScreen.SELECT_CRUISE;
context.setScreen(screen);
-
}
@Override
@@ -256,8 +251,8 @@
try {
Desktop.getDesktop().browse(siteURL.toURI());
} catch (Exception e) {
- log.error("Failed to open '" + siteURL + "' in browser", e);
- ErrorDialogUI.showError(e);
+ TuttiUIContext.getErrorHelper().showErrorDialog(
+ "Failed to open '" + siteURL + "' in browser", e);
}
}
}
@@ -398,10 +393,8 @@
}
} catch (Exception e) {
- ErrorDialogUI.showError(e);
- if (log.isErrorEnabled()) {
- log.error("Could not change to screen " + screen, e);
- }
+ TuttiUIContext.getErrorHelper().showErrorDialog(
+ "Could not change to screen " + screen, e);
// go back to home
context.setScreen(TuttiScreen.SELECT_CRUISE);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -52,6 +52,11 @@
if (log.isInfoEnabled()) {
log.info("Starting Tutti with arguments: " + Arrays.toString(args));
}
+
+ // override default exception management (after config init)
+ Thread.setDefaultUncaughtExceptionHandler(new TuttiExceptionHandler());
+ System.setProperty("sun.awt.exception.handler", TuttiExceptionHandler.class.getName());
+
// Create configuration
TuttiApplicationConfig config =
new TuttiApplicationConfig("tutti.config", args);
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -0,0 +1,90 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.service.TuttiBusinessException;
+import org.jdesktop.swingx.JXErrorPane;
+import org.jdesktop.swingx.error.ErrorInfo;
+import org.jdesktop.swingx.error.ErrorReporter;
+
+import javax.swing.JOptionPane;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class TuttiErrorHelper implements ErrorReporter {
+
+ protected TuttiUIContext context;
+
+ public TuttiErrorHelper(TuttiUIContext context) {
+ this.context = context;
+ }
+
+ /**
+ * Display a user friendly error frame.
+ *
+ * @param message message for user
+ * @param cause exception cause
+ */
+ public void showErrorDialog(String message, Throwable cause) {
+
+ if (cause instanceof TuttiBusinessException) {
+ JOptionPane.showMessageDialog(context.getMainUI(), cause.getMessage(),
+ _("tutti.ui.common.error"),
+ JOptionPane.ERROR_MESSAGE);
+ } else {
+
+ JXErrorPane pane = new JXErrorPane();
+ ErrorInfo info = new ErrorInfo(_("tutti.common.error"),
+ _("tutti.error.errorpane.htmlmessage", message), null, null,
+ cause, null, null);
+ pane.setErrorInfo(info);
+ pane.setErrorReporter(this);
+ JXErrorPane.showDialog(context.getMainUI(), pane);
+ }
+
+ }
+
+ /**
+ * Display a user friendly error frame.
+ *
+ * @param message message for user
+ */
+ public void showErrorDialog(String message) {
+ showErrorDialog(message, null);
+ }
+
+ @Override
+ public void reportError(ErrorInfo errorInfo) throws NullPointerException {
+
+ showErrorDialog(errorInfo.getBasicErrorMessage(), errorInfo.getErrorException());
+ }
+
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -0,0 +1,85 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.service.TuttiTechnicalException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Tutti global exception handler.
+ * <p/>
+ * Catch all application uncaught and display it in a custom JoptionPane
+ * or JXErrorPane.
+ * <p/>
+ * See http://stackoverflow.com/a/4448569/1165234 for details.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class TuttiExceptionHandler implements Thread.UncaughtExceptionHandler {
+
+ private static final Log log =
+ LogFactory.getLog(TuttiExceptionHandler.class);
+
+ public static class TuttiActionException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public TuttiActionException(Throwable cause) {
+ super(cause);
+ }
+ }
+
+ @Override
+ public void uncaughtException(Thread t, Throwable ex) {
+ handleException(t.getName(), ex);
+ }
+
+ public void handle(Throwable thrown) {
+ // for EDT exceptions
+ handleException(Thread.currentThread().getName(), thrown);
+ }
+
+ protected void handleException(String tname, Throwable ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Global application exception [" + tname + "]", ex);
+ }
+
+ Throwable cause = ex;
+
+
+ if (cause instanceof TuttiTechnicalException ||
+ cause instanceof TuttiActionException) {
+ cause = cause.getCause();
+ }
+// while (cause != null && !(cause instanceof TuttiTechnicalException)) {
+// cause = cause.getCause();
+// }
+
+ TuttiUIContext.getErrorHelper().showErrorDialog(cause.getMessage(), ex);
+ }
+
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.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/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -125,6 +125,8 @@
*/
protected final SwingSession swingSession;
+ protected final TuttiErrorHelper errorHelper;
+
/**
* Id of last selected program (can be null if none ever selected).
*
@@ -177,11 +179,20 @@
return applicationContext;
}
+ public static TuttiUIContext getApplicationContext() {
+ return applicationContext;
+ }
+
+ public static TuttiErrorHelper getErrorHelper() {
+ return applicationContext.errorHelper;
+ }
+
protected TuttiUIContext(TuttiApplicationConfig config) {
this.config = config;
this.resourceLoader = new RessourceClassLoader(Thread.currentThread().getContextClassLoader());
this.serviceContext = new TuttiServiceContext(resourceLoader, config.getServiceConfig());
this.swingSession = new SwingSession(getConfig().getUIConfigFile(), false);
+ this.errorHelper= new TuttiErrorHelper(this);
UIMessageNotifier logMessageNotifier = new UIMessageNotifier() {
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -25,7 +25,7 @@
*/
import com.google.common.base.Charsets;
-import fr.ifremer.tutti.service.TuttiServiceTechnicalException;
+import fr.ifremer.tutti.service.TuttiTechnicalException;
import fr.ifremer.tutti.service.config.TuttiServiceConfig;
import fr.ifremer.tutti.service.config.TuttiServiceConfigOption;
import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType;
@@ -106,7 +106,7 @@
applicationConfig.parse(args);
} catch (ArgumentsParserException e) {
- throw new TuttiServiceTechnicalException(
+ throw new TuttiTechnicalException(
"Could not parse configuration", e);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -31,7 +31,6 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
-import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -108,44 +107,39 @@
// remove selected batch and all his children
- try {
+ // remove parent batch (will destroy all his childs from db)
+ persistenceService.deleteSpeciesBatch(selectedBatch.getId());
- // remove parent batch (will destroy all his childs from db)
- persistenceService.deleteSpeciesBatch(selectedBatch.getId());
+ // update speciesUsed
+ handler.removeFromSpeciesUsed(selectedBatch);
- // update speciesUsed
- handler.removeFromSpeciesUsed(selectedBatch);
+ // collect of rows to remove from model
+ Set<SpeciesBatchRowModel> rowToRemove =
+ Sets.newHashSet(selectedBatch);
- // collect of rows to remove from model
- Set<SpeciesBatchRowModel> rowToRemove =
- Sets.newHashSet(selectedBatch);
+ handler.collectChilds(selectedBatch, rowToRemove);
- handler.collectChilds(selectedBatch, rowToRemove);
+ // remove all rows from the model
+ getModel().getRows().removeAll(rowToRemove);
- // remove all rows from the model
- getModel().getRows().removeAll(rowToRemove);
+ // refresh table from parent batch row index to the end
+ tableModel.fireTableDataChanged();
- // refresh table from parent batch row index to the end
- tableModel.fireTableDataChanged();
+ if (tableModel.getRowCount() > 0) {
- if (tableModel.getRowCount() > 0) {
+ // select first row
+ AbstractSelectTableAction.doSelectCell(table, 0, 0);
+ } else {
- // select first row
- AbstractSelectTableAction.doSelectCell(table, 0, 0);
- } else {
+ table.clearSelection();
+ }
- table.clearSelection();
- }
+ if (table.isEditing()) {
- if (table.isEditing()) {
-
- // but no edit it
- table.getCellEditor().stopCellEditing();
- }
- } catch (Exception e) {
-
- ErrorDialogUI.showError(e);
+ // but no edit it
+ table.getCellEditor().stopCellEditing();
}
+
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesSubBatchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesSubBatchAction.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesSubBatchAction.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -31,7 +31,6 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
-import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -87,42 +86,36 @@
Preconditions.checkState(!TuttiEntities.isNew(parentBatch),
"Can't remove sub batch if batch is not persisted");
- try {
+ // save parent batch (will destroy all his childs from db)
+ persistenceService.deleteSpeciesSubBatch(parentBatch.getId());
- // save parent batch (will destroy all his childs from db)
- persistenceService.deleteSpeciesSubBatch(parentBatch.getId());
+ if (parentBatch.isBatchRoot()) {
- if (parentBatch.isBatchRoot()) {
+ // update speciesUsed
+ handler.removeFromSpeciesUsed(parentBatch);
+ }
- // update speciesUsed
- handler.removeFromSpeciesUsed(parentBatch);
- }
+ // collect of rows to remove from model
+ Set<SpeciesBatchRowModel> rowToRemove = Sets.newHashSet();
- // collect of rows to remove from model
- Set<SpeciesBatchRowModel> rowToRemove = Sets.newHashSet();
+ handler.collectChilds(parentBatch, rowToRemove);
- handler.collectChilds(parentBatch, rowToRemove);
+ // remove all rows from the model
+ getModel().getRows().removeAll(rowToRemove);
- // remove all rows from the model
- getModel().getRows().removeAll(rowToRemove);
+ // remove childs from parent batch
+ parentBatch.setBatchChilds(null);
- // remove childs from parent batch
- parentBatch.setBatchChilds(null);
+ // refresh table from parent batch row index to the end
+ handler.getTableModel().fireTableDataChanged();
- // refresh table from parent batch row index to the end
- handler.getTableModel().fireTableDataChanged();
+ // select parent batch row
+ AbstractSelectTableAction.doSelectCell(table, rowIndex, 0);
- // select parent batch row
- AbstractSelectTableAction.doSelectCell(table, rowIndex, 0);
+ if (table.isEditing()) {
- if (table.isEditing()) {
-
- // but no edit it
- table.getCellEditor().stopCellEditing();
- }
- } catch (Exception e) {
-
- ErrorDialogUI.showError(e);
+ // but no edit it
+ table.getCellEditor().stopCellEditing();
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.java 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -1,6 +1,30 @@
package fr.ifremer.tutti.ui.swing.util;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
/**
*
* @author kmorin <kmorin(a)codelutin.com>
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.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-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-02-11 20:56:49 UTC (rev 400)
@@ -28,7 +28,7 @@
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.service.TuttiServiceTechnicalException;
+import fr.ifremer.tutti.service.TuttiTechnicalException;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.context.JAXXContextEntryDef;
@@ -293,7 +293,7 @@
try {
PropertyUtils.setSimpleProperty(bean, property, value);
} catch (Exception e) {
- throw new TuttiServiceTechnicalException("Could not set property '" + property + "' on object of type '" + bean.getClass().getName() + "'", e);
+ throw new TuttiTechnicalException("Could not set property '" + property + "' on object of type '" + bean.getClass().getName() + "'", e);
}
}
@@ -303,7 +303,7 @@
try {
return PropertyUtils.getSimpleProperty(bean, property);
} catch (Exception e) {
- throw new TuttiServiceTechnicalException("Could not get property '" + property + "' on object of type '" + bean.getClass().getName() + "'", e);
+ throw new TuttiTechnicalException("Could not get property '" + property + "' on object of type '" + bean.getClass().getName() + "'", e);
}
}
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml 2013-02-11 20:56:49 UTC (rev 400)
@@ -1,5 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti :: UI
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
Property changes on: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml
___________________________________________________________________
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_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-11 17:33:57 UTC (rev 399)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-11 20:56:49 UTC (rev 400)
@@ -136,6 +136,7 @@
tutti.action.validateCatches.tip=Valider les captures
tutti.application.config=Configuration de l'application Tutti
tutti.application.name=Tutti
+tutti.common.error=Erreur
tutti.config.category.applications=Application
tutti.config.category.applications.description=Application
tutti.config.category.shortcuts=Raccourcis
@@ -151,6 +152,7 @@
tutti.dialog.catches.species.split.weightNotNull.message=Pour catégoriser un lot, il ne doit pas avoir de poids sous-échantillonné. Catégoriser le lot mettra le poids sous-échantillonné à nul.
tutti.dialog.catches.species.split.weightNotNull.title=Poids sous-échantillonné non nul
tutti.duration.format=dj Hh m'm'
+tutti.error.errorpane.htmlmessage=<html><body><b>Une erreur s'est produite</b>\:<br/>%s</body></html>
tutti.file.csv=Extension d'un fichier csv
tutti.file.protocol=Extension d'un fichier de protocole Tutti
tutti.flash.information.all.caractristic.exported=Toutes les caractéristiques exportées dans le fichier %s.
@@ -442,6 +444,7 @@
tutti.to.be.done=< A FAIRE >
tutti.tooltip.attachment.none=Pas de pièce-jointes
tutti.tooltip.comment.none=Pas de commentaire
+tutti.ui.common.error=Erreur
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=La catégorie Vrac / Hors Vrac est obligatoire
1
0
r399 - in trunk: tutti-persistence/src/main/resources/i18n tutti-ui-swing/src/main/assembly tutti-ui-swing/src/main/assembly/full tutti-ui-swing/src/main/assembly/min tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing tutti-ui-swing/src/main/resources tutti-ui-swing/src/main/resources/i18n
by tchemit@users.forge.codelutin.com 11 Feb '13
by tchemit@users.forge.codelutin.com 11 Feb '13
11 Feb '13
Author: tchemit
Date: 2013-02-11 18:33:57 +0100 (Mon, 11 Feb 2013)
New Revision: 399
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/399
Log:
fixes #1711: [TECH] V?\195?\169rification de l'existence d'une nouvelle version
Removed:
trunk/tutti-ui-swing/src/main/assembly/min/tutti.config
Modified:
trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties
trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat
trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh
trunk/tutti-ui-swing/src/main/assembly/standalone.xml
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
trunk/tutti-ui-swing/src/main/resources/log4j.properties
Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-02-11 17:06:32 UTC (rev 398)
+++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-02-11 17:33:57 UTC (rev 399)
@@ -1,3 +1,4 @@
+tutti.option.persistence.cache.directory.description=Répertoire où sont stoqué les caches de persistence
tutti.option.persistence.db.configurationPath.description=Chemin du fichier de configuration d'Adagio
tutti.option.persistence.db.directory.description=Répertoire où est la base de données
tutti.option.persistence.db.enumerationPath.description=Chemin du fichier de correspondance des constantes
Modified: trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-02-11 17:06:32 UTC (rev 398)
+++ trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-02-11 17:33:57 UTC (rev 399)
@@ -2,20 +2,21 @@
set OLDDIR=%CD%
cd /d %~dp0%
+
set REP=%CD%
-
set JAVA_HOME=%REP%\jre
+set TUTTI_HOME=%REP%\tutti
set JAVA_COMMAND=%JAVA_HOME%\bin\java
-echo current dir=%REP% and JAVA_HOME=%JAVA_HOME%
+echo "tutti basedir: %REP%"
+echo "tutti app home: %TUTTI_HOME%"
+echo "tutti jre home: %JAVA_HOME%"
-:start
-
-copy tutti\update.bat .
+copy %TUTTI_HOME%\update.bat .
call update.bat
del update.bat
copy tutti.config tutti
-call tutti\launch.bat --option tutti.launch.mode full --option tutti.application.basedir $REP --option tutti.data.directory $REP/data --option tutti.update.application.url file:///home/tchemit/.tutti/update-tutti.properties
+call %TUTTI_HOME%\launch.bat --option tutti.launch.mode full --option tutti.basedir %REP%
if errorlevel 88 goto start
cd %OLDDIR%
Modified: trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh 2013-02-11 17:06:32 UTC (rev 398)
+++ trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh 2013-02-11 17:33:57 UTC (rev 399)
@@ -17,10 +17,7 @@
./update.sh
rm -fv update.sh
cp $REP/tutti.config $TUTTI_HOME
- ./tutti/launch.sh --option tutti.launch.mode full \
- --option tutti.application.basedir $REP \
- --option tutti.data.directory $REP/data \
- --option tutti.update.application.url file:///home/tchemit/.tutti/update-tutti.properties
+ ./tutti/launch.sh --option tutti.launch.mode full --option tutti.basedir $REP
exitcode=$?
if [ ! "$exitcode" -eq "88" ]; then
Deleted: trunk/tutti-ui-swing/src/main/assembly/min/tutti.config
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/min/tutti.config 2013-02-11 17:06:32 UTC (rev 398)
+++ trunk/tutti-ui-swing/src/main/assembly/min/tutti.config 2013-02-11 17:33:57 UTC (rev 399)
@@ -1,33 +0,0 @@
-###
-# #%L
-# Tutti :: UI
-# $Id$
-# $HeadURL$
-# %%
-# Copyright (C) 2012 - 2013 Ifremer
-# %%
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with this program. If not, see
-# <http://www.gnu.org/licenses/gpl-3.0.html>.
-# #L%
-###
-
-# base directory of tutti full application (tutti + jre)
-tutti.application.basedir=..
-
-# directory where data (database, protocole) are stored
-tutti.data.directory=${tutti.application.basedir}/data
-
-# url to update application
-tutti.update.application.url=file://${project.basedir}/update-tutti.properties
-#tutti.update.database.url=http://tutti.forge.codelutin.com/tutti/update-tutti.properties
Modified: trunk/tutti-ui-swing/src/main/assembly/standalone.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/standalone.xml 2013-02-11 17:06:32 UTC (rev 398)
+++ trunk/tutti-ui-swing/src/main/assembly/standalone.xml 2013-02-11 17:33:57 UTC (rev 399)
@@ -63,7 +63,6 @@
<include>launch.bat</include>
<include>update.sh</include>
<include>update.bat</include>
- <!--<include>tutti.config</include>-->
<include>version.appup</include>
</includes>
</fileSet>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-02-11 17:06:32 UTC (rev 398)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-02-11 17:33:57 UTC (rev 399)
@@ -32,6 +32,7 @@
import javax.swing.UIManager;
import javax.swing.plaf.BorderUIResource;
import java.awt.Color;
+import java.util.Arrays;
/**
* To start Tutti application.
@@ -48,8 +49,12 @@
public static void main(String... args) {
+ if (log.isInfoEnabled()) {
+ log.info("Starting Tutti with arguments: " + Arrays.toString(args));
+ }
// Create configuration
- TuttiApplicationConfig config = new TuttiApplicationConfig("tutti.config", args);
+ TuttiApplicationConfig config =
+ new TuttiApplicationConfig("tutti.config", args);
// Create application context
final TuttiUIContext context = TuttiUIContext.newContext(config);
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-02-11 17:06:32 UTC (rev 398)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-11 17:33:57 UTC (rev 399)
@@ -17,7 +17,6 @@
tutti.action.cancel.editProtocol.tip=Annuler l'édition (ou la création) du protocole
tutti.action.cancelEditCatchBatch=Annuler
tutti.action.cancelEditCatchBatch.tip=Annuler l'édition de la capture
-tutti.action.casino-import=Import Casino
tutti.action.chooseProtocolCaracteristicFile=Choisir le fichier des caractéristiques
tutti.action.chooseProtocolFile=Choisir le fichier de protocole
tutti.action.chooseProtocolSpeciesFile=Choisir le fichier des espèces
@@ -91,7 +90,6 @@
tutti.action.importTemporarySpecies.tip=Importer un référentiel temporaire d'espèces
tutti.action.importTemporaryVessel=Importer
tutti.action.importTemporaryVessel.tip=Importer un référentiel temporaire de navires
-tutti.action.new=Nouveau
tutti.action.newCruise=Nouveau
tutti.action.newCruise.tip=Créer une nouvelle campagne
tutti.action.newFishingOperation.tip=Créer une nouvelle opération de pêche
@@ -99,12 +97,10 @@
tutti.action.newProgram.tip=Créer une nouvelle série de campagne
tutti.action.newProtocol=Nouveau
tutti.action.newProtocol.tip=Créer un nouveau protocole
-tutti.action.pupitri-import=Import PUPITRI
tutti.action.reload.actions=Recharger les actions
tutti.action.reload.application=Recharger l'application
tutti.action.reload.ui=Recharger l'interface graphique
tutti.action.removeCaracteristic=Supprimer la caractéristique
-tutti.action.removeSpecies=Supprimer l'espèce
tutti.action.removeSpeciesBatch=Supprimer le lot
tutti.action.removeSpeciesBatch.tip=Supprimer le lot courant (celui de la ligne sélectionnée) et tous ces fils
tutti.action.removeSpeciesProtocol=Supprimer l'espèce
@@ -127,7 +123,6 @@
tutti.action.saveProtocol.tip=Enregistrer le protocol
tutti.action.selectCruise=Sélectionner une campagne
tutti.action.selectCruise.tip=Sélectionner la campagne à utiliser
-tutti.action.selectFishingOperation.tip=Chargement d'une opération de pêche
tutti.action.site=Site
tutti.action.site.tip=Accéder au site du projet Tutti
tutti.action.splitSpeciesBatch=Catégoriser le lot
@@ -165,7 +160,6 @@
tutti.flash.information.species.exported.from.protocol=Espèces du protocole exportées dans le fichier %s.
tutti.flash.information.species.imported.in.protocol=Espèces importées dans le protocole depuis le fichier %s.
tutti.flash.information.species.remove.from.protocol=L'espèce %s a été retirée du protocole
-tutti.information.import.temporary.referential=Vous pouvez ici importer des référentiels temporaires
tutti.label.attachmentEditor.file=Fichier
tutti.label.attachmentEditor.fileComment=Commentaire
tutti.label.attachmentEditor.fileName=Nom
@@ -268,7 +262,6 @@
tutti.label.referential.vessel=Référentiel Navire
tutti.label.sampleCategoryConfiguration.batchWeight=Poids total à catégoriser
tutti.label.sampleCategoryConfiguration.category=Catégorie
-tutti.label.sampleCategoryConfiguration.sample=Echantillon ?
tutti.label.sampleCategoryConfiguration.sampleWeight=Poids total catégorisé
tutti.label.sampleCategoryConfiguration.species=Espèce
tutti.label.tab.accidentel=Captures accidentelles
@@ -276,8 +269,6 @@
tutti.label.tab.catches=Captures
tutti.label.tab.catchesCaracteristics=Résumé
tutti.label.tab.fishingOperation=Trait
-tutti.label.tab.fishingOperation.environment=Environnement
-tutti.label.tab.fishingOperation.gearShooting=Mise en oeuvre de l'engin
tutti.label.tab.fishingOperation.general=Trait
tutti.label.tab.fishingOperation.hydrology=Paramètres hydrologiques
tutti.label.tab.macroDechet=Macro déchets
@@ -318,7 +309,6 @@
tutti.menu.synchronisations=Synchronisation
tutti.menu.synchronisations.tip=Import/Export
tutti.message.action.running=<html>Action <strong>%s</strong> en cours d'execution...<hr/></html>
-tutti.option.application.basedir.description=Répertoire principale de l'application
tutti.option.cruiseId.description=Identifiant de la dernière campagne utilisée
tutti.option.i18n.directory.description=Répertoire des fichiers de traductions
tutti.option.i18n.locale.description=Langue utilisée dans l'application
@@ -336,7 +326,6 @@
tutti.option.ui.shortcut.closePopup.description=Fermer une popup
tutti.option.ui.showNumberEditorButton.description=Afficher le pavé numérique de saisie
tutti.option.update.url.description=URL de mise à jour
-tutti.propety.no.species.surveyCode=\#
tutti.sampleCategoryType.age=Age
tutti.sampleCategoryType.maturity=Maturité
tutti.sampleCategoryType.sex=Sexe
@@ -400,17 +389,14 @@
tutti.table.species.batch.header.ageCategory=Age
tutti.table.species.batch.header.comment=Commentaire
tutti.table.species.batch.header.computedNumber=Nombre
-tutti.table.species.batch.header.computedWeight=Poids calculé
tutti.table.species.batch.header.file=Pièces jointes
tutti.table.species.batch.header.maturityCategory=Maturité
-tutti.table.species.batch.header.number=Nombre
tutti.table.species.batch.header.sexCategory=Sexe
tutti.table.species.batch.header.sizeCategory=Class. Tri
tutti.table.species.batch.header.sortedUnsortedCategory=V/HV (kg)
tutti.table.species.batch.header.species=Espèce
tutti.table.species.batch.header.toConfirm=A Confirmer
tutti.table.species.batch.header.weight=Poids sous-échantillonné (kg)
-tutti.table.species.frequency.header.computedWeight=Poids calculé (kg)
tutti.table.species.frequency.header.lengthStep=Classe de taille
tutti.table.species.frequency.header.number=Nombre
tutti.table.species.frequency.header.weight=Poids observé (kg)
@@ -458,7 +444,6 @@
tutti.tooltip.comment.none=Pas de commentaire
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif
-tutti.validator.error.createSpeciesBatch.batchWeight.required=Le poids du lot est obligatoire
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=La catégorie Vrac / Hors Vrac est obligatoire
tutti.validator.error.createSpeciesBatch.species.required=L'espèce est obligatoire
tutti.validator.error.createSpeciesBatch.speciesAndCategory.notAvailable=Couple (espèce - Vrac/Hors Vrac) déjà utilisée
@@ -501,8 +486,6 @@
tutti.validator.error.speciesFrequency.lengthStepCaracteristic.required=La classe de taille est obligatoire
tutti.validator.error.speciesFrequency.oneRowRequired=Au moins une classe de taille doit être observée
tutti.validator.error.splitSpeciesBatch.sampleWeight.invalidValue=La somme des poids ventilés doit être strictement positive
-tutti.validator.error.splitSpeciesBatch.sampleWeight.mismatchBatchWeight=La somme des poids ventilés doit être égale à celle du lot
-tutti.validator.error.splitSpeciesBatch.sampleWeight.required=Pas de poids ventilé
tutti.validator.error.splitSpeciesBatch.sampleWeight.sampleBatchGreaterThanBatchWeight=La somme des poids ventilés doit être inférieur ou égale à celle du poids du lot
tutti.validator.error.splitSpeciesBatch.selectedCategory.required=La catégorie est obligatoire
tutti.validator.warning.cruise.name.format=Le format n'est pas celui ...
@@ -514,4 +497,3 @@
tutti.validator.warning.longitude.minute.outOfBounds=La minute de la latitude doit être comprise entre 0 et 60
tutti.validator.warning.longitude.outOfBounds=La Latitude doit être comprise entre -180.0 et 180.0
tutti.validator.warning.longitude.second.outOfBounds=La seconde de la longitude doit être comprise entre 0 et 60
-tutti.validator.warning.splitSpeciesBatch.sampleBatch=Ce lot est-il vraiment un échantillon du lot parent ?
Modified: trunk/tutti-ui-swing/src/main/resources/log4j.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/log4j.properties 2013-02-11 17:06:32 UTC (rev 398)
+++ trunk/tutti-ui-swing/src/main/resources/log4j.properties 2013-02-11 17:33:57 UTC (rev 399)
@@ -41,5 +41,5 @@
log4j.logger.fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler=WARN
log4j.logger.fr.ifremer.tutti.ui.swing.util.table=WARN
log4j.logger.org.nuiton.util=WARN
-#log4j.logger.org.nuiton.util.ApplicationUpdater=DEBUG
-#log4j.logger.jaxx.runtime.swing.editor.bean.BeanComboBox=DEBUG
+log4j.logger.org.nuiton.util.ApplicationConfig=INFO
+log4j.logger.org.nuiton.util.ApplicationConfigHelper=INFO
1
0
Author: kmorin
Date: 2013-02-11 18:06:32 +0100 (Mon, 11 Feb 2013)
New Revision: 398
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/398
Log:
removed unused dependency
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-02-11 17:05:40 UTC (rev 397)
+++ trunk/pom.xml 2013-02-11 17:06:32 UTC (rev 398)
@@ -368,12 +368,6 @@
<version>1.06</version>
</dependency>
- <dependency>
- <groupId>com.javadocmd</groupId>
- <artifactId>simplelatlng</artifactId>
- <version>1.0.1</version>
- </dependency>
-
</dependencies>
</dependencyManagement>
1
0
11 Feb '13
Author: kmorin
Date: 2013-02-11 18:05:40 +0100 (Mon, 11 Feb 2013)
New Revision: 397
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/397
Log:
- use distance computing algorithm sent by Vincent
- validations
- continue wieght computing
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml
Modified:
trunk/tutti-ui-swing/pom.xml
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/pom.xml 2013-02-11 17:05:40 UTC (rev 397)
@@ -359,11 +359,6 @@
<artifactId>junit</artifactId>
</dependency>
- <dependency>
- <groupId>com.javadocmd</groupId>
- <artifactId>simplelatlng</artifactId>
- </dependency>
-
</dependencies>
<profiles>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -50,6 +50,8 @@
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.List;
import static org.nuiton.i18n.I18n._;
@@ -101,7 +103,44 @@
* @since 1.0
*/
protected SaveCatchBatchAction saveCatchBatchAction;
+
+ private final PropertyChangeListener coordinatePropertiesListener = new PropertyChangeListener() {
+ private List<String> properties = Lists.newArrayList(
+ EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_RECTILIGNE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_SECOND
+ );
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (properties.contains(evt.getPropertyName())) {
+ EditFishingOperationUIModel source = (EditFishingOperationUIModel) evt.getSource();
+ if (source.isFishingOperationRectiligne()) {
+ source.computeDistance();
+ }
+ }
+ }
+ };
+
public EditFishingOperationAction(FishingOperationsUIHandler handler) {
super(handler,
"editFishingOperation",
@@ -229,7 +268,7 @@
if (log.isInfoEnabled()) {
log.info("Edit in ui fishingOperation: " + fishingOperation);
}
-
+
// now fishing operation is edited
model.setEditFishingOperation(fishingOperation);
@@ -256,6 +295,8 @@
// wait last minute to display (avoid dirty display effects)
ui.add(form, BorderLayout.CENTER);
}
+
+ model.addPropertyChangeListener(coordinatePropertiesListener);
SwingUtilities.invokeLater(new Runnable() {
@Override
@@ -272,8 +313,9 @@
EditFishingOperationUIHandler handler = ui.getHandler();
EditFishingOperationUIModel editFishingOperationUIModel = ui.getModel();
-
+
handler.uninstallStartDateListener();
+ handler.uninstallCoordinatesListener();
if (bean == null) {
@@ -348,6 +390,7 @@
}
handler.installStartDateListener();
+ handler.installCoordinatesListener();
}
public void loadCatchBatch(FishingOperation bean, boolean loadOtherTabs) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -26,9 +26,6 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-import com.javadocmd.simplelatlng.LatLng;
-import com.javadocmd.simplelatlng.LatLngTool;
-import com.javadocmd.simplelatlng.util.LengthUnit;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
@@ -93,7 +90,43 @@
}
}
+ };
+
+ private final PropertyChangeListener coordinatePropertiesListener = new PropertyChangeListener() {
+ private List<String> properties = Lists.newArrayList(
+ EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_RECTILIGNE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LATITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE_SECOND,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DECIMAL_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DEGREE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_MINUTE,
+ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LONGITUDE_SECOND
+ );
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (properties.contains(evt.getPropertyName())) {
+ EditFishingOperationUIModel source = (EditFishingOperationUIModel) evt.getSource();
+ if (source.isFishingOperationRectiligne()) {
+ source.computeDistance();
+ }
+ }
+ }
};
/**
@@ -155,29 +188,6 @@
}
});
- model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_RECTILIGNE, new PropertyChangeListener() {
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- Boolean rectiligne = (Boolean) evt.getNewValue();
- if (rectiligne) {
- EditFishingOperationUIModel source = (EditFishingOperationUIModel) evt.getSource();
- Float latS = source.getGearShootingStartLatitude();
- Float longS = source.getGearShootingStartLongitude();
- Float latE = source.getGearShootingEndLatitude();
- Float longE = source.getGearShootingEndLongitude();
-
- if (latS != null && longS != null
- && latE != null && longE != null) {
- LatLng start = new LatLng(latS, longS);
- LatLng end = new LatLng(latE, longE);
- Double distance = LatLngTool.distance(start, end, LengthUnit.METER);
- source.setTrawlDistance(distance.floatValue());
- }
- }
- }
- });
-
getContext().addPropertyChangeListener(TuttiUIContext.PROPERTY_VALIDATION_CONTEXT, new PropertyChangeListener() {
@Override
@@ -459,7 +469,15 @@
public void installStartDateListener() {
getModel().addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_DATE, startDateListener);
}
+
+ public void uninstallCoordinatesListener() {
+ getModel().removePropertyChangeListener(coordinatePropertiesListener);
+ }
+ public void installCoordinatesListener() {
+ getModel().addPropertyChangeListener(coordinatePropertiesListener);
+ }
+
public FishingOperationsUI getParentUi() {
return parentUi;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -25,9 +25,6 @@
*/
import com.google.common.collect.Lists;
-import com.javadocmd.simplelatlng.LatLng;
-import com.javadocmd.simplelatlng.LatLngTool;
-import com.javadocmd.simplelatlng.util.LengthUnit;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
@@ -37,16 +34,19 @@
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType;
-import org.nuiton.util.DateUtil;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import static org.nuiton.i18n.I18n.n_;
+import org.nuiton.util.DateUtil;
/**
* Model for UI {@link EditFishingOperationUI}.
@@ -789,17 +789,15 @@
setGearShootingEndLongitude(decimalValue);
}
- public void computeDictance() {
+ public void computeDistance() {
if (coordinateEditorType != CoordinateEditorType.DD) {
convertGearShootingCoordinatesDMSToDD();
}
if (gearShootingStartLatitude != null && gearShootingStartLongitude != null
&& gearShootingEndLatitude != null && gearShootingEndLongitude != null) {
- LatLng start = new LatLng(gearShootingStartLatitude, gearShootingStartLongitude);
- LatLng end = new LatLng(gearShootingEndLatitude, gearShootingEndLongitude);
- Double distance = LatLngTool.distance(start, end, LengthUnit.METER);
+ Integer distance = TuttiUIUtil.computeDistanceInMeters(gearShootingStartLatitude, gearShootingStartLongitude, gearShootingEndLatitude, gearShootingEndLongitude);
setTrawlDistance(distance.floatValue());
}
}
-
+
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -33,6 +33,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel;
+import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData;
import org.apache.commons.collections.CollectionUtils;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
@@ -94,7 +95,7 @@
public static final String PROPERTY_FREQUENCY = "frequency";
- public static final String PROPERTY_COMPUTED_NUMBER = "computedNumber";
+ public static final String PROPERTY_COMPUTED_NUMBER = "computedOrNotNumber";
public static final String PROPERTY_ATTACHMENTS = "attachments";
@@ -175,18 +176,12 @@
protected Float weight;
/**
- * Observed number.
- *
- * @since 0.3
- */
- protected Integer number;
-
- /**
* Total computed number (from frequencies).
*
* @since 0.2
*/
- protected Integer computedNumber;
+ protected TuttiComputedOrNotData<Integer> computedOrNotNumber =
+ new TuttiComputedOrNotData<Integer>();
/**
* Comment on this catches.
@@ -523,12 +518,12 @@
}
public Integer getNumber() {
- return number;
+ return computedOrNotNumber.getData();
}
public void setNumber(Integer number) {
Object oldValue = getNumber();
- this.number = number;
+ computedOrNotNumber.setData(number);
firePropertyChange(PROPERTY_NUMBER, oldValue, number);
}
@@ -563,14 +558,22 @@
}
public Integer getComputedNumber() {
- return computedNumber;
+ return computedOrNotNumber.getComputedData();
}
public void setComputedNumber(Integer computedNumber) {
Object oldValue = getComputedNumber();
- this.computedNumber = computedNumber;
+ computedOrNotNumber.setComputedData(computedNumber);
firePropertyChange(PROPERTY_COMPUTED_NUMBER, oldValue,
computedNumber);
}
+ public TuttiComputedOrNotData<Integer> getComputedOrNotNumber() {
+ return computedOrNotNumber;
+ }
+
+ public void setComputedOrNotNumber(TuttiComputedOrNotData<Integer> computedOrNotNumber) {
+ this.computedOrNotNumber = computedOrNotNumber;
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -818,12 +818,11 @@
}
public void updateTotalFromFrequencies(SpeciesBatchRowModel row) {
- Integer totalNumber = null;
Float totalWeight = null;
List<SpeciesFrequencyRowModel> frequency = row.getFrequency();
if (CollectionUtils.isNotEmpty(frequency)) {
- totalNumber = 0;
+ Integer totalNumber = 0;
totalWeight = 0f;
for (SpeciesFrequencyRowModel frequencyModel : frequency) {
totalNumber += frequencyModel.getNumber();
@@ -838,12 +837,9 @@
totalWeight += w;
}
}
- } else {
- totalNumber = row.getNumber();
+ row.setComputedNumber(totalNumber);
}
- row.setComputedNumber(totalNumber);
-
SampleCategory finestCategory;
if (row.getAgeCategory().isValid()) {
finestCategory = row.getAgeCategory();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -31,6 +31,7 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchTableModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI;
+import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
import jaxx.runtime.SwingUtil;
@@ -149,13 +150,13 @@
if (frequencyModel.isValid()) {
// at close, synch back frequencies
-
+ List<SpeciesFrequencyRowModel> frequency = Lists.newArrayList();
+
if (frequencyModel.isSimpleCountingMode()) {
editRow.setNumber(frequencyModel.getSimpleCount());
} else {
// transfer rows to editor
- List<SpeciesFrequencyRowModel> frequency = Lists.newArrayList();
for (SpeciesFrequencyRowModel row : frequencyModel.getRows()) {
if (row.isValid()) {
@@ -170,11 +171,15 @@
}
// push back to batch
- editRow.setFrequency(frequency);
- editRow.setNumber(null);
+ Integer number = null;
+ if (frequency.size() == 1) {
+ number = frequency.get(0).getNumber();
+ }
+ editRow.setNumber(number);
}
+ editRow.setFrequency(frequency);
// update frequencies total
ui.getHandler().updateTotalFromFrequencies(editRow);
@@ -225,7 +230,7 @@
Object result = null;
if (columnIdentifier == SpeciesBatchTableModel.COMPUTED_NUMBER) {
- result = editRow.getComputedNumber();
+ result = editRow.getComputedOrNotNumber();
}
if (log.isInfoEnabled()) {
log.info("editor value (" + columnIdentifier + "): " + result);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -456,8 +456,7 @@
model.setRows(editFrequency);
model.setLengthStepCaracteristic(lengthStepCaracteristic);
- model.setSimpleCount(speciesBatch.getComputedNumber());
-
+
SpeciesFrequencyUIModel.ConfigurationMode mode = SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE;
if (protocol != null) {
Integer taxonId = speciesBatch.getSpecies().getReferenceTaxonId();
@@ -466,7 +465,11 @@
mode = SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE_COUNTING;
}
}
+ if (speciesBatch.getNumber() != null && editFrequency.size() != 1) {
+ mode = SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE_COUNTING;
+ }
model.setConfigurationMode(mode);
+ model.setSimpleCount(speciesBatch.getNumber());
// keep batch (will be used to push back editing entry)
model.setBatch(speciesBatch);
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiComputedOrNotData.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -0,0 +1,51 @@
+
+package fr.ifremer.tutti.ui.swing.util;
+
+/**
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ */
+public class TuttiComputedOrNotData<N extends Number> {
+
+ protected N data;
+
+ protected N computedData;
+
+ public TuttiComputedOrNotData() {
+ data = null;
+ computedData = null;
+ }
+
+ public TuttiComputedOrNotData(N data, N computedData) {
+ this.data = data;
+ this.computedData = computedData;
+ }
+
+ public N getData() {
+ return data;
+ }
+
+ public void setData(N data) {
+ this.data = data;
+ }
+
+ public N getComputedData() {
+ return computedData;
+ }
+
+ public void setComputedData(N computedData) {
+ this.computedData = computedData;
+ }
+
+ @Override
+ public String toString() {
+ String result = null;
+ if (data != null) {
+ result = data.toString();
+ } else if (computedData != null) {
+ result = "<html><em style='color: blue'>" + computedData.toString() + "</em></html>";
+ }
+ return result;
+ }
+
+}
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-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-02-11 17:05:40 UTC (rev 397)
@@ -325,4 +325,21 @@
}
return duration;
}
+
+ public static int computeDistanceInMeters(Float startLatitude,
+ Float startLongitude,
+ Float endLatitude,
+ Float endLongitude) {
+
+ double sLat = startLatitude * Math.PI / 180;
+ double sLong = startLongitude * Math.PI / 180;
+ double eLat = endLatitude * Math.PI / 180;
+ double eLong = endLongitude * Math.PI / 180;
+
+ Double d = 6378288 *
+ (Math.PI/2 - Math.asin( Math.sin(eLat) * Math.sin(sLat)
+ + Math.cos(eLong - sLong) * Math.cos(eLat) * Math.cos(sLat)));
+ return d.intValue();
+
+ }
}
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-02-11 17:05:40 UTC (rev 397)
@@ -58,7 +58,7 @@
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ endDate == null || beginDate.compareTo(endDate) <= 0 ]]>
+ <![CDATA[ endDate == null || beginDate.compareTo(endDate) < 0 ]]>
</param>
<message>tutti.validator.error.cruise.dates.endBeforeStart</message>
</field-validator>
@@ -71,7 +71,7 @@
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ beginDate == null || beginDate.compareTo(endDate) <= 0 ]]>
+ <![CDATA[ beginDate == null || beginDate.compareTo(endDate) < 0 ]]>
</param>
<message>tutti.validator.error.cruise.dates.endBeforeStart</message>
</field-validator>
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-02-11 17:05:40 UTC (rev 397)
@@ -93,9 +93,27 @@
<param name="nullValueSkipped">true</param>
<message>tutti.validator.error.fishingOperation.existingKey</message>
</field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) < 0 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
+ </field-validator>
</field>
+
+ <field name="gearShootingEndDate">
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ gearShootingEndDate == null || gearShootingStartDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) < 0 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
+ </field-validator>
+
+ </field>
+
<field name="comment">
<field-validator type="stringlength" short-circuit="true">
<param name="maxLength">2000</param>
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml 2013-02-11 17:05:40 UTC (rev 397)
@@ -31,35 +31,41 @@
<validators>
<field name="gearShootingStartDate">
+
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]>
+ <![CDATA[ gearShootingStartDate == null || isDateInCruise(gearShootingStartDate) ]]>
</param>
- <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
+ <message>tutti.validator.error.fishingOperation.dates.startOutOfCruiseDates</message>
</field-validator>
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ gearShootingStartDate == null || isDateInCruise(gearShootingStartDate) ]]>
+ <![CDATA[ gearShootingStartDate == null || gearShootingEndDate == null
+ || org.nuiton.util.DateUtil.getDifferenceInMinutes(gearShootingStartDate, gearShootingEndDate) <= 45 ]]>
</param>
- <message>tutti.validator.error.fishingOperation.dates.startOutOfCruiseDates</message>
+ <message>tutti.validator.error.fishingOperation.dates.tooLong</message>
</field-validator>
+
</field>
<field name="gearShootingEndDate">
+
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ gearShootingStartDate == null || gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]>
+ <![CDATA[ gearShootingEndDate == null || isDateInCruise(gearShootingEndDate) ]]>
</param>
- <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
+ <message>tutti.validator.error.fishingOperation.dates.endOutOfCruiseDates</message>
</field-validator>
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ gearShootingEndDate == null || isDateInCruise(gearShootingEndDate) ]]>
+ <![CDATA[ gearShootingStartDate == null || gearShootingEndDate == null
+ || org.nuiton.util.DateUtil.getDifferenceInMinutes(gearShootingStartDate, gearShootingEndDate) <= 45 ]]>
</param>
- <message>tutti.validator.error.fishingOperation.dates.endOutOfCruiseDates</message>
+ <message>tutti.validator.error.fishingOperation.dates.tooLong</message>
</field-validator>
+
</field>
<!--gear shooting start latitude validation -->
@@ -514,5 +520,16 @@
</field-validator>
</field>
+
+ <field name="trawlDistance">
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ trawlDistance == null || trawlDistance <= 5556 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.trawlDistance.tooLong</message>
+ </field-validator>
+
+ </field>
</validators>
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-02-11 17:05:40 UTC (rev 397)
@@ -123,7 +123,7 @@
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]>
+ <![CDATA[ gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) < 0 ]]>
</param>
<message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
</field-validator>
@@ -145,7 +145,7 @@
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ gearShootingStartDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]>
+ <![CDATA[ gearShootingStartDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) < 0 ]]>
</param>
<message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
</field-validator>
Added: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml (rev 0)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-warning-validation.xml 2013-02-11 17:05:40 UTC (rev 397)
@@ -0,0 +1,44 @@
+<?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="gearShootingStartDate">
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ gearShootingStartDate == null || gearShootingEndDate == null
+ || org.nuiton.util.DateUtil.getDifferenceInMinutes(gearShootingStartDate, gearShootingEndDate) <= 45 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.dates.tooLong</message>
+ </field-validator>
+
+ </field>
+
+ <field name="gearShootingEndDate">
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ gearShootingStartDate == null || gearShootingEndDate == null
+ || org.nuiton.util.DateUtil.getDifferenceInMinutes(gearShootingStartDate, gearShootingEndDate) <= 45 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.dates.tooLong</message>
+ </field-validator>
+
+ </field>
+
+ <field name="trawlDistance">
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ trawlDistance == null || trawlDistance <= 5556 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.trawlDistance.tooLong</message>
+ </field-validator>
+
+ </field>
+
+</validators>
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-02-11 16:56:38 UTC (rev 396)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-11 17:05:40 UTC (rev 397)
@@ -481,6 +481,7 @@
tutti.validator.error.fishingOperation.dates.endBeforeStart=La date de fin doit être après la date de début
tutti.validator.error.fishingOperation.dates.endOutOfCruiseDates=La date de fin est en dehors des dates de la campagne
tutti.validator.error.fishingOperation.dates.startOutOfCruiseDates=La date de début est en dehors des dates de la campagne
+tutti.validator.error.fishingOperation.dates.tooLong=La durée du trait dépasse 45 minutes, merci de vérifier les dates/heures du trait
tutti.validator.error.fishingOperation.existingKey=La clé code station/numéro de trait/date de début existe déjà
tutti.validator.error.fishingOperation.fishingOperationNumber.required=Le numéro de trait est obligatoire
tutti.validator.error.fishingOperation.fishingOperationValid.required=La validité du traît est obligatoire
@@ -489,6 +490,7 @@
tutti.validator.error.fishingOperation.stationNumber.too.long=Valeur trop longue (limitée à %s caractères)
tutti.validator.error.fishingOperation.strataLocation.required=La strate, sous-strate ou la localité doit être renseignée
tutti.validator.error.fishingOperation.trawlDistance.required=La distance est obligatoire
+tutti.validator.error.fishingOperation.trawlDistance.tooLong=La distance du trait dépasse 3 milles marin (5556 m), merci de vérifier les coordonnées
tutti.validator.error.fishingOperation.trawlNetNumber.required=Le numéro de poche est obligatoire
tutti.validator.error.fishingOperation.vessel.required=Le navire est obligatoire
tutti.validator.error.program.existingKey=Le couple nom/zone existe déjà
1
0
r396 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config tutti-persistence/src/main/resources tutti-service/src/main/java/fr/ifremer/tutti/service/config tutti-service/src/main/resources/i18n tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config
by tchemit@users.forge.codelutin.com 11 Feb '13
by tchemit@users.forge.codelutin.com 11 Feb '13
11 Feb '13
Author: tchemit
Date: 2013-02-11 17:56:38 +0100 (Mon, 11 Feb 2013)
New Revision: 396
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/396
Log:
fixes #1982: Utilisation d'un cache de persistence
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java
trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java 2013-02-11 16:32:28 UTC (rev 395)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java 2013-02-11 16:56:38 UTC (rev 396)
@@ -118,6 +118,10 @@
return config.getOptionAsFile(TuttiPersistenceConfigOption.DB_DIRECTORY.getKey());
}
+ public File getCacheDirectory() {
+ return config.getOptionAsFile(TuttiPersistenceConfigOption.CACHE_DIRECTORY.getKey());
+ }
+
public File getProtocolDirectory() {
return config.getOptionAsFile(TuttiPersistenceConfigOption.PROTOCOL_DIRECTORY.getKey());
}
@@ -202,6 +206,7 @@
result.put("hibernate.show_sql", isHibernateShowSql() + "");
result.put("hibernate.format_sql", isHibernateFormatSql() + "");
result.put("hibernate.use_sql_comments", isHibernateUseSqlComment() + "");
+ result.put("ehcache.disk.store.dir", getCacheDirectory().getAbsolutePath());
// write result file at destination
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java 2013-02-11 16:32:28 UTC (rev 395)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java 2013-02-11 16:56:38 UTC (rev 396)
@@ -48,6 +48,14 @@
true,
true),
+ CACHE_DIRECTORY(
+ "tutti.persistence.cache.directory",
+ n_("tutti.option.persistence.cache.directory.description"),
+ "${tutti.data.directory}/dbcache",
+ File.class,
+ true,
+ true),
+
PROTOCOL_DIRECTORY(
"tutti.persistence.protocol.directory",
n_("tutti.option.persistence.protocol.directory.description"),
Modified: trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties 2013-02-11 16:32:28 UTC (rev 395)
+++ trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties 2013-02-11 16:56:38 UTC (rev 396)
@@ -34,8 +34,10 @@
dataSource.jdbc.username=${tutti.persistence.jdbc.username}
dataSource.jdbc.password=${tutti.persistence.jdbc.password}
dataSource.jdbc.url=${tutti.persistence.jdbc.url}
-#dataSource.jdbc.url=jdbc:hsqldb:hsql://localhost/toto
+#Cache configuration
+ehcache.disk.store.dir=${tutti.persistence.cache.directory}
+
# Hibernate configuration :
hibernate.dialect=${tutti.persistence.hibernate.dialect}
hibernate.show_sql=${tutti.persistence.hibernate.showSql}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-02-11 16:32:28 UTC (rev 395)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-02-11 16:56:38 UTC (rev 396)
@@ -87,6 +87,12 @@
return applicationConfig.getOptionAsInt(TuttiServiceConfigOption.INCEPTION_YEAR.getKey());
}
+ /** @return {@link TuttiServiceConfigOption#BASEDIR} value */
+ public File getBasedir() {
+ File result = applicationConfig.getOptionAsFile(TuttiServiceConfigOption.BASEDIR.getKey());
+ return result;
+ }
+
/** @return {@link TuttiServiceConfigOption#DATA_DIRECTORY} value */
public File getDataDirectory() {
File result = applicationConfig.getOptionAsFile(TuttiServiceConfigOption.DATA_DIRECTORY.getKey());
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-02-11 16:32:28 UTC (rev 395)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-02-11 16:56:38 UTC (rev 396)
@@ -40,18 +40,25 @@
*/
public enum TuttiServiceConfigOption implements ApplicationConfig.OptionDef {
- /** Main directory where to put tutti data (logs, and others...). */
+ BASEDIR(
+ "tutti.basedir",
+ n_("tutti.option.basedir.description"),
+ "${user.home}/.tutti",
+ File.class,
+ true,
+ true
+ ),
DATA_DIRECTORY(
"tutti.data.directory",
n_("tutti.option.data.directory.description"),
- "${user.home}/.tutti/data",
+ "${tutti.basedir}/data",
File.class,
true,
true),
TMP_DIRECTORY(
"tutti.tmp.directory",
n_("tutti.option.tmp.directory.description"),
- "${java.io.tmpdir}/tutti",
+ "${tutti.data.directory}/temp",
File.class),
CSV_SEPARATOR(
"tutti.csv.separator",
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-02-11 16:32:28 UTC (rev 395)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-02-11 16:56:38 UTC (rev 396)
@@ -1,3 +1,4 @@
+tutti.option.basedir.description=
tutti.option.csv.separator.description=Caractère séparateur pour les import / export de fichier au format csv.
tutti.option.data.directory.description=Répertoire de données de l'application. Vous pouvez utiliser l'expression ${tutti.data.directory} pour le référence dans d'autres propriétés de configuration (ex\: ${tutti.data.directory}/tmp).
tutti.option.inceptionYear.description=Année de démarrage du projet.
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-02-11 16:32:28 UTC (rev 395)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-02-11 16:56:38 UTC (rev 396)
@@ -24,8 +24,10 @@
* #L%
*/
+import com.google.common.base.Charsets;
import fr.ifremer.tutti.service.TuttiServiceTechnicalException;
import fr.ifremer.tutti.service.config.TuttiServiceConfig;
+import fr.ifremer.tutti.service.config.TuttiServiceConfigOption;
import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
@@ -76,6 +78,7 @@
public TuttiApplicationConfig(String file, String... args) {
applicationConfig = new ApplicationConfig();
+ applicationConfig.setEncoding(Charsets.UTF_8.name());
// get all config providers
Set<ApplicationConfigProvider> providers =
@@ -92,8 +95,8 @@
Set<String> optionToSkip =
ApplicationConfigHelper.getTransientOrFinalOptionKey(providers);
- if (log.isInfoEnabled()) {
- log.info("Option that won't be saved: " + optionToSkip);
+ if (log.isDebugEnabled()) {
+ log.debug("Option that won't be saved: " + optionToSkip);
}
optionKeyToNotSave = optionToSkip.toArray(new String[optionToSkip.size()]);
@@ -108,7 +111,8 @@
}
//TODO Review this, this is very dirty to do this...
- File tuttiBasedir = getTuttiBasedir();
+ File tuttiBasedir = applicationConfig.getOptionAsFile(
+ TuttiServiceConfigOption.BASEDIR.getKey());
if (tuttiBasedir == null) {
tuttiBasedir = new File("");
@@ -125,10 +129,10 @@
if (log.isInfoEnabled()) {
log.info("Application basedir: " + tuttiBasedir);
}
- applicationConfig.setOption(TuttiApplicationConfigOption.TUTTI_APPLICATION_BASEDIR.getKey(), tuttiBasedir.getAbsolutePath());
+ applicationConfig.setOption(
+ TuttiServiceConfigOption.BASEDIR.getKey(),
+ tuttiBasedir.getAbsolutePath());
- log.info(this + " is initializing...");
-
serviceConfig = new TuttiServiceConfig(applicationConfig);
}
@@ -302,7 +306,7 @@
}
public File getTuttiBasedir() {
- return applicationConfig.getOptionAsFile(TuttiApplicationConfigOption.TUTTI_APPLICATION_BASEDIR.getKey());
+ return serviceConfig.getBasedir();
}
public String getUpdateUrl() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-02-11 16:32:28 UTC (rev 395)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-02-11 16:56:38 UTC (rev 396)
@@ -51,19 +51,10 @@
true
),
- TUTTI_APPLICATION_BASEDIR(
- "tutti.application.basedir",
- n_("tutti.option.application.basedir.description"),
- null,
- File.class,
- true,
- true
- ),
-
TUTTI_I18N_DIRECTORY(
"tutti.i18n.directory",
n_("tutti.option.i18n.directory.description"),
- "${tutti.application.basedir}/i18n",
+ "${tutti.basedir}/i18n",
File.class
),
@@ -78,9 +69,7 @@
"tutti.update.application.url",
n_("tutti.option.update.url.description"),
"http://appup.forge.codelutin.com/tutti/update-tutti.properties",
- String.class,
- true,
- false
+ String.class
),
UI_CONFIG_FILE(
1
0