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
August 2013
- 2 participants
- 7 discussions
23 Aug '13
Author: tchemit
Date: 2013-08-23 17:51:18 +0200 (Fri, 23 Aug 2013)
New Revision: 1167
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1167
Log:
fixes #3104: Am?\195?\169lioration de la barre de progression des actions
refs #3106: [TECH] Faciliter l'import d'une nouvelle base
refs #2890: [TECH] - V?\195?\169rification de la version utilis?\195?\169e par rapport ?\195?\160 la BDD
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/ProgressionModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/ProgressionModel.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/ProgressionModel.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/ProgressionModel.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -53,7 +53,7 @@
protected String message;
- public long getTotal() {
+ public int getTotal() {
return total;
}
@@ -64,6 +64,16 @@
setCurrent(0);
}
+ public void adaptTotal(int total) {
+ long current = getCurrent();
+ setTotal(total);
+ increments((int) current);
+ Object oldValue = getTotal();
+ this.total = total;
+ firePropertyChange(PROPERTY_TOTAL, oldValue, total);
+ setCurrent(current);
+ }
+
public long getCurrent() {
return current;
}
@@ -93,6 +103,11 @@
return message;
}
+ public void increments(String message) {
+ increments(1);
+ setMessage(message);
+ }
+
public void setMessage(String message) {
Object oldValue = getMessage();
this.message = message;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -242,7 +242,7 @@
*/
public void importDb(File file) {
- // can not do this operation on a opnened bd
+ // can not do this operation on a opened db
Preconditions.checkState(!isDbLoaded());
// need a file to export
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-08-23 15:51:18 UTC (rev 1167)
@@ -22,7 +22,7 @@
# #L%
###
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Sat Jul 27 15:12:29 CEST 2013
+#Fri Aug 23 16:40:22 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.action.save.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -69,6 +69,7 @@
tutti.dbManager.action.importDb.help=dbManager.html\#actions
tutti.dbManager.action.installDb.help=dbManager.html\#actions
tutti.dbManager.action.openDb.help=dbManager.html\#actions
+tutti.dbManager.action.reinstallDb.help=
tutti.dbManager.action.upgradeDb.help=dbManager.html\#actions
tutti.dbManager.help=dbManager.html
tutti.editAccidentalBatch.action.createBatch.help=editFishingOperation.html\#captureCapturesAccidentellesActions
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-08-23 15:51:18 UTC (rev 1167)
@@ -22,7 +22,7 @@
# #L%
###
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Sat Jul 27 15:12:29 CEST 2013
+#Fri Aug 23 16:40:22 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.action.save.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -69,6 +69,7 @@
tutti.dbManager.action.importDb.help=dbManager.html\#actions
tutti.dbManager.action.installDb.help=dbManager.html\#actions
tutti.dbManager.action.openDb.help=dbManager.html\#actions
+tutti.dbManager.action.reinstallDb.help=
tutti.dbManager.action.upgradeDb.help=dbManager.html\#actions
tutti.dbManager.help=dbManager.html
tutti.editAccidentalBatch.action.createBatch.help=editFishingOperation.html\#captureCapturesAccidentellesActions
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-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -642,7 +642,7 @@
public void clearDbContext() {
dataContext.clearContext();
- saveContextToConfig();
+// saveContextToConfig();
}
public void checkDbContext() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -54,7 +54,7 @@
*
* @since 1.0
*/
- protected final TuttiScreen screen;
+ protected TuttiScreen screen;
/**
* Flag to skip the check of current screen.
@@ -74,6 +74,10 @@
this.skipCheckCurrentScreen = skipCheckCurrentScreen;
}
+ protected void setScreen(TuttiScreen screen) {
+ this.screen = screen;
+ }
+
@Override
protected boolean prepareAction() throws Exception {
boolean result = super.prepareAction();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -39,8 +39,7 @@
import fr.ifremer.tutti.ui.swing.content.cruise.EditCruiseUIHandler;
import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUI;
import fr.ifremer.tutti.ui.swing.content.db.DbManagerUI;
-import fr.ifremer.tutti.ui.swing.content.db.LoadDbAction;
-import fr.ifremer.tutti.ui.swing.content.db.MigrateDbSchemaAction;
+import fr.ifremer.tutti.ui.swing.content.db.OpenDbAction;
import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI;
@@ -213,19 +212,11 @@
if (context.isDbExist()) {
// open tutti db (using a fake button to have simple api)
-// TuttiUIAction<LoadDbAction> uiAction = TuttiActionHelper.createUIAction(this, LoadDbAction.class);
-// LoadDbAction logicAction = uiAction.getLogicAction();
-// logicAction.setSkipCheckCurrentScreen(true);
- TuttiActionHelper.runActionAndWait(this, LoadDbAction.class);
-// uiAction.actionPerformed(null);
+ TuttiUIAction<OpenDbAction> uiAction = TuttiActionHelper.createUIAction(this, OpenDbAction.class);
+ OpenDbAction logicAction = uiAction.getLogicAction();
+ logicAction.setSkipCheckCurrentScreen(true);
+ uiAction.actionPerformed(null);
- // try to update schema
-
- TuttiUIAction<MigrateDbSchemaAction> uiAction2 = TuttiActionHelper.createUIAction(this, MigrateDbSchemaAction.class);
- MigrateDbSchemaAction logicAction2 = uiAction2.getLogicAction();
- logicAction2.setSkipCheckCurrentScreen(true);
- uiAction2.actionPerformed(null);
-
} else {
// clean db context
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -60,21 +60,25 @@
@Override
protected boolean prepareAction() throws Exception {
- TuttiUIContext context = getContext();
- TuttiApplicationConfig config = context.getConfig();
- String url = config.getUpdateUrl();
+ boolean doAction = super.prepareAction();
- try {
- TuttiUIUtil.tryToConnectToUpdateUrl(
- url,
- n_("tutti.error.update.could.not.reach.url")
- );
- } catch (TuttiBusinessException e) {
- TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage());
- return false;
+ if (doAction) {
+ TuttiUIContext context = getContext();
+ TuttiApplicationConfig config = context.getConfig();
+ String url = config.getUpdateUrl();
+
+ try {
+ TuttiUIUtil.tryToConnectToUpdateUrl(
+ url,
+ n_("tutti.error.update.could.not.reach.url")
+ );
+ } catch (TuttiBusinessException e) {
+ TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage());
+ return false;
+ }
}
- return super.prepareAction();
+ return doAction;
}
@Override
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -0,0 +1,92 @@
+package fr.ifremer.tutti.ui.swing.content.db;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
+import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
+import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * To close a db.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4
+ */
+public class CloseDbAction extends AbstractMainUITuttiAction {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(CloseDbAction.class);
+
+ protected String jdbcUrl;
+
+ public CloseDbAction(MainUIHandler handler) {
+ super(handler, true);
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+
+ boolean canContinue = super.prepareAction();
+ if (canContinue) {
+ jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
+ }
+ return canContinue;
+ }
+
+ @Override
+ protected void doAction() {
+
+ // close db
+ getContext().getPersistenceService().clearAllCaches();
+
+ // set to not reload a real db
+ getContext().setDbLoaded(false);
+
+ // close services + repon a fake persistence service
+ getHandler().reloadPersistenceService();
+
+ // clean db context
+ getContext().clearDbContext();
+
+ // Close the application, will exit and restart application
+ //RunTutti.closeTutti(getHandler(), RunTutti.DELETE_DB_EXIT_CODE);
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ sendMessage(_("tutti.flash.info.db.closed", jdbcUrl));
+
+ // make sure title is reloaded
+ getUI().getHandler().changeTitle();
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css 2013-08-23 15:51:18 UTC (rev 1167)
@@ -28,20 +28,23 @@
#informationLabel {
actionIcon: information;
- text: {handler.updateMessage(model.isDbExist(), model.isDbLoaded())};
horizontalAlignment: {JLabel.CENTER};
}
-#noDbActions {
- visible: {!model.isDbExist()};
+#informationArea {
+ editable: false;
+ focusable:false;
+ contentType: "text/html";
+ border: {new EmptyBorder(5, 5, 5, 5)};
+ text: {handler.updateMessage(model.isDbExist(), model.isDbLoaded())};
}
#installDbButton {
actionIcon: install-db;
- text: "tutti.dbManager.action.installDb";
- toolTipText: "tutti.dbManager.action.installDb.tip";
- i18nMnemonic: "tutti.dbManager.action.installDb.mnemonic";
- _tuttiAction: {UpdateDbAction.class};
+ text: {handler.getInstallButtonText(model.isDbExist())};
+ toolTipText: {handler.getInstallButtonTip(model.isDbExist())};
+ i18nMnemonic: {handler.getInstallButtonMnemonic(model.isDbExist())};
+ _tuttiAction: {InstallDbAction.class};
_help: {"tutti.dbManager.action.installDb.help"};
}
@@ -54,15 +57,31 @@
_help: {"tutti.dbManager.action.importDb.help"};
}
-#withDbActions {
- visible: {model.isDbExist()};
+#openDbButton {
+ actionIcon: open-db;
+ text: "tutti.dbManager.action.openDb";
+ i18nMnemonic: "tutti.dbManager.action.openDb.mnemonic";
+ visible: {model.isDbExist() && !model.isDbLoaded()};
+ _tuttiAction: {OpenDbAction.class};
+ toolTipText: "tutti.dbManager.action.openDb.tip";
+ _help: {"tutti.dbManager.action.openDb.help"};
}
+#closeDbButton {
+ actionIcon: close-db;
+ text: "tutti.dbManager.action.closeDb";
+ i18nMnemonic: "tutti.dbManager.action.closeDb.mnemonic";
+ visible: {model.isDbLoaded()};
+ _tuttiAction: {CloseDbAction.class};
+ toolTipText: "tutti.dbManager.action.closeDb.tip";
+ _help: {"tutti.dbManager.action.closeDb.help"};
+}
+
#upgradeDbButton {
actionIcon: update-referential;
text: "tutti.dbManager.action.upgradeDb";
i18nMnemonic: "tutti.dbManager.action.upgradeDb.mnemonic";
- enabled: {model.isDbLoaded()};
+ visible: {model.isDbLoaded()};
_tuttiAction: {UpdateDbAction.class};
toolTipText: "tutti.dbManager.action.upgradeDb.tip";
_help: {"tutti.dbManager.action.upgradeDb.help"};
@@ -72,18 +91,8 @@
actionIcon: export-db;
text: "tutti.dbManager.action.exportDb";
i18nMnemonic: "tutti.dbManager.action.exportDb.mnemonic";
- enabled: {model.isDbLoaded()};
+ visible: {model.isDbLoaded()};
_tuttiAction: {ExportDbAction.class};
toolTipText: "tutti.dbManager.action.exportDb.tip";
_help: {"tutti.dbManager.action.exportDb.help"};
-}
-
-#exportAndCleanDbButton {
- actionIcon: export-db;
- text: "tutti.dbManager.action.exportAndCleanDb";
- i18nMnemonic: "tutti.dbManager.action.exportAndCleanDb.mnemonic";
- enabled: {model.isDbLoaded()};
- _tuttiAction: {ExportAndCleanDbAction.class};
- toolTipText: "tutti.dbManager.action.exportAndCleanDb.tip";
- _help: {"tutti.dbManager.action.exportAndCleanDb.help"};
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx 2013-08-23 15:51:18 UTC (rev 1167)
@@ -30,6 +30,8 @@
fr.ifremer.tutti.ui.swing.content.UpdateDbAction
fr.ifremer.tutti.ui.swing.util.TuttiUI
+ javax.swing.border.EmptyBorder
+
static org.nuiton.i18n.I18n._
</import>
@@ -55,19 +57,19 @@
<TuttiHelpBroker id='broker' constructorParams='"tutti.dbManager.help"'/>
- <JLabel id='informationLabel' constraints='BorderLayout.CENTER'/>
- <JPanel id='centerPanel' layout='{new BorderLayout()}'
+ <JPanel id='infoPanel' layout='{new BorderLayout()}'
+ constraints='BorderLayout.CENTER'>
+ <!--<JLabel id='informationLabel' constraints='BorderLayout.WEST'/>-->
+ <JTextPane id='informationArea' constraints='BorderLayout.CENTER'/>
+ </JPanel>
+
+ <JPanel id='actions' layout='{new GridLayout(0, 1)}'
constraints='BorderLayout.SOUTH'>
- <JPanel id='noDbActions' constraints='BorderLayout.CENTER'
- layout='{new GridLayout(0, 1)}'>
- <JButton id='installDbButton'/>
- <JButton id='importDbButton'/>
- </JPanel>
- <JPanel id='withDbActions' constraints='BorderLayout.SOUTH'
- layout='{new GridLayout(0, 1)}'>
- <JButton id='upgradeDbButton'/>
- <JButton id='exportDbButton'/>
- <JButton id='exportAndCleanDbButton'/>
- </JPanel>
+ <JButton id='closeDbButton'/>
+ <JButton id='openDbButton'/>
+ <JButton id='installDbButton'/>
+ <JButton id='importDbButton'/>
+ <JButton id='upgradeDbButton'/>
+ <JButton id='exportDbButton'/>
</JPanel>
-</JPanel>
\ No newline at end of file
+</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -27,6 +27,7 @@
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import jaxx.runtime.validator.swing.SwingValidator;
+import org.nuiton.util.Version;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
@@ -56,8 +57,10 @@
if (dbLoaded) {
+ Version dbVersion = getContext().getPersistenceService().getDbVersion();
+
// db loaded
- message = _("tutti.dbManager.info.db.loaded", jdbcUrl);
+ message = _("tutti.dbManager.info.db.loaded", jdbcUrl, dbVersion);
} else {
@@ -78,10 +81,6 @@
initUI(ui);
- ui.applyDataBinding(DbManagerUI.BINDING_UPGRADE_DB_BUTTON_ENABLED);
- ui.applyDataBinding(DbManagerUI.BINDING_EXPORT_DB_BUTTON_ENABLED);
- ui.applyDataBinding(DbManagerUI.BINDING_EXPORT_AND_CLEAN_DB_BUTTON_ENABLED);
-
SwingUtilities.invokeLater(
new Runnable() {
@Override
@@ -106,4 +105,33 @@
return null;
}
+ public String getInstallButtonText(boolean dbExist) {
+ String result;
+ if (dbExist) {
+ result = _("tutti.dbManager.action.reinstallDb");
+ } else {
+ result = _("tutti.dbManager.action.installDb");
+ }
+ return result;
+ }
+
+ public String getInstallButtonTip(boolean dbExist) {
+ String result;
+ if (dbExist) {
+ result = _("tutti.dbManager.action.reinstallDb.tip");
+ } else {
+ result = _("tutti.dbManager.action.installDb.tip");
+ }
+ return result;
+ }
+
+ public String getInstallButtonMnemonic(boolean dbExist) {
+ String result;
+ if (dbExist) {
+ result = _("tutti.dbManager.action.reinstallDb.mnemonic");
+ } else {
+ result = _("tutti.dbManager.action.installDb.mnemonic");
+ }
+ return result;
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -49,6 +49,8 @@
/** Logger. */
private static final Log log = LogFactory.getLog(ExportDbAction.class);
+ public static final int TOTAL_STEP = 3;
+
protected File file;
public static final DateFormat df = new SimpleDateFormat("yyy-MM-dd");
@@ -83,7 +85,7 @@
ProgressionModel progressionModel = new ProgressionModel();
setProgressionModel(progressionModel);
- progressionModel.setTotal(3);
+ progressionModel.setTotal(TOTAL_STEP);
}
return doAction;
}
@@ -99,22 +101,20 @@
// close db
- progressionModel.setMessage(_("tutti.exportDb.closeDb"));
+ progressionModel.setMessage(_("tutti.exportDb.step.closeDb"));
getContext().setDbLoaded(false);
getHandler().reloadPersistenceService();
// export
- progressionModel.increments(1);
- progressionModel.setMessage(_("tutti.exportDb.createArchive", file));
+ progressionModel.increments(_("tutti.exportDb.step.createArchive", file));
getContext().getPersistenceService().exportDb(file);
// reopen db
- progressionModel.increments(1);
- progressionModel.setMessage(_("tutti.exportDb.openDb"));
+ progressionModel.increments(_("tutti.exportDb.step.openDb"));
getContext().setDbLoaded(true);
getHandler().reloadPersistenceService();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -25,15 +25,21 @@
*/
import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.Version;
+import javax.swing.JOptionPane;
import java.io.File;
+import java.util.Date;
import static org.nuiton.i18n.I18n._;
@@ -48,8 +54,22 @@
/** Logger. */
private static final Log log = LogFactory.getLog(ImportDbAction.class);
- protected File file;
+ protected File backupFile;
+ protected File importFile;
+
+ protected String jdbcUrl;
+
+ protected boolean doBackup;
+
+ protected boolean updateSchema;
+
+ protected boolean closeDb;
+
+ protected Version dbVersion;
+
+ protected Version applicationVersion;
+
public ImportDbAction(MainUIHandler handler) {
super(handler, true);
}
@@ -57,64 +77,282 @@
@Override
protected boolean prepareAction() throws Exception {
+ jdbcUrl = null;
+ dbVersion = applicationVersion = null;
+ backupFile = importFile = null;
+ doBackup = closeDb = updateSchema = false;
+
boolean doAction = super.prepareAction();
if (doAction) {
- // choose file to import
- file = chooseFile(
- _("tutti.dbManager.title.choose.dbImportFile"),
- _("tutti.dbManager.action.chooseDbFile"),
- "^.*\\.zip", _("tutti.common.file.zip")
- );
+ jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
- doAction = file != null;
+ if (getModel().isDbExist()) {
+ displayInfoMessage(
+ _("tutti.dbManager.title.backup.db"),
+ _("tutti.dbManager.action.importDb.backup.db")
+ );
+
+ // do backup
+
+ backupFile = saveFile(
+ getConfig().getServiceConfig().getPersistenceConfig().getDbBackupDirectory(),
+ "tutti-db-" + ExportDbAction.df.format(new Date()),
+ "zip",
+ _("tutti.dbManager.title.choose.dbExportFile"),
+ _("tutti.dbManager.action.chooseDbExportFile"),
+ "^.*\\.zip", _("tutti.common.file.zip")
+ );
+
+ if (backupFile == null) {
+
+ displayWarningMessage(
+ _("tutti.dbManager.title.backup.db"),
+ _("tutti.dbManager.action.importdb.no.backup.db.choosen")
+ );
+
+ doAction = false;
+ }
+ }
+
if (doAction) {
- getContext().getPersistenceService().checkImportStructure(file);
+ // choose file to import
+ importFile = chooseFile(
+ _("tutti.dbManager.title.choose.dbImportFile"),
+ _("tutti.dbManager.action.chooseDbFile"),
+ "^.*\\.zip", _("tutti.common.file.zip")
+ );
+
+ if (importFile == null) {
+
+ displayWarningMessage(
+ _("tutti.dbManager.title.choose.dbImportFile"),
+ _("tutti.dbManager.action.importdb.no.import.file.choosen")
+ );
+
+ doAction = false;
+ }
}
+
+ doBackup = backupFile != null;
+
+ if (doAction) {
+
+ ProgressionModel progressionModel = new ProgressionModel();
+ progressionModel.setTotal(3 + (doBackup ? 2 : 0));
+ setProgressionModel(progressionModel);
+
+ getContext().getPersistenceService().checkImportStructure(importFile);
+ }
}
return doAction;
}
@Override
protected void releaseAction() {
- file = null;
+ importFile = backupFile = null;
super.releaseAction();
}
@Override
protected void doAction() throws Exception {
- Preconditions.checkNotNull(file);
+ Preconditions.checkNotNull(importFile);
if (log.isInfoEnabled()) {
- log.info("Will import db: " + file);
+ log.info("Will import db: " + importFile);
}
- ProgressionModel progressionModel = new ProgressionModel();
- progressionModel.setTotal(3);
- setProgressionModel(progressionModel);
+ ProgressionModel progressionModel = getProgressionModel();
+ if (doBackup) {
- // import db
+ // ------------------------------------------------------------------ //
+ // --- backup current db //
+ // ------------------------------------------------------------------ //
- progressionModel.setMessage(_("tutti.importDb.unzipArchive"));
+ progressionModel.increments(_("tutti.importDb.step.backupDb", backupFile));
+ getContext().getPersistenceService().exportDb(backupFile);
- getContext().getPersistenceService().importDb(file);
- getContext().setDbExist(true);
+ // close current db
+ getContext().setDbLoaded(false);
+ getHandler().reloadPersistenceService();
+ }
- // open db
+ // ------------------------------------------------------------------ //
+ // --- import db //
+ // ------------------------------------------------------------------ //
- progressionModel.increments(1);
- progressionModel.setMessage(_("tutti.importDb.openDb"));
- TuttiActionHelper.runInternalAction(getHandler(), OpenDbAction.class);
+ progressionModel.increments(_("tutti.importDb.step.unzipArchive"));
+
+ getContext().getPersistenceService().importDb(importFile);
+
+ // ------------------------------------------------------------------ //
+ // --- open db //
+ // ------------------------------------------------------------------ //
+
+ progressionModel.increments(_("tutti.importDb.step.openDb", jdbcUrl));
+ try {
+ getContext().setDbLoaded(true);
+ getHandler().reloadPersistenceService();
+ } catch (Exception e) {
+
+ if (log.isErrorEnabled()) {
+ log.error("Could not open db", e);
+ }
+ // no more db
+ getContext().setDbLoaded(false);
+ getHandler().reloadPersistenceService();
+
+ // could not load db
+ throw new TuttiBusinessException(_("tutti.dbManager.action.importdb.couldNotOpen"), e);
+ }
+
+ // ------------------------------------------------------------------ //
+ // --- check schema version //
+ // ------------------------------------------------------------------ //
+
+ progressionModel.increments(_("tutti.importDb.step.checkSchemaVersion"));
+
+ TuttiPersistence persistenceService =
+ getHandler().getPersistenceService();
+
+ dbVersion = persistenceService.getDbVersion();
+
+ if (log.isInfoEnabled()) {
+ log.info("Detected database version: " + dbVersion);
+ }
+ applicationVersion = persistenceService.getApplicationVersion();
+
+ if (log.isInfoEnabled()) {
+ log.info("Detected schema application version:" + applicationVersion);
+ }
+
+ if (dbVersion == null) {
+
+ // no database version filled (can not migrate schema)
+ String message = _("tutti.dbManager.action.upgradeDb.schema.version.not.found");
+ displayWarningMessage(_("tutti.dbManager.title.schema.toupdate"), message);
+
+ closeDb = true;
+ } else if (dbVersion.equals(applicationVersion)) {
+
+ // database schema is up to date
+ if (log.isInfoEnabled()) {
+ log.info("Database schema is up-to-date at version: " + dbVersion);
+ }
+ } else if (dbVersion.compareTo(applicationVersion) < 0) {
+
+ // database schema need to migrate
+ // ask user to migrate or not (if not will close db)
+
+ String message = _("tutti.dbManager.action.upgradeDb.schema.to.update.message", dbVersion, applicationVersion);
+
+ String htmlMessage = String.format(
+ AbstractTuttiUIHandler.CONFIRMATION_FORMAT,
+ message,
+ _("tutti.dbManager.action.upgradeDb.schema.to.update.message.help"));
+ int i = JOptionPane.showConfirmDialog(
+ getHandler().getTopestUI(),
+ htmlMessage,
+ _("tutti.dbManager.title.schema.toupdate"),
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+ boolean continueAction = i == JOptionPane.OK_OPTION;
+
+ if (continueAction) {
+
+ // will migrate
+ updateSchema = true;
+ } else {
+
+ //close db
+ closeDb = true;
+ }
+
+
+ } else {
+
+ // database schema version is higher than application one
+ String message = _("tutti.dbManager.action.upgradeDb.schema.too.high", dbVersion, applicationVersion);
+
+ String htmlMessage = String.format(
+ AbstractTuttiUIHandler.CONFIRMATION_FORMAT,
+ message,
+ _("tutti.dbManager.action.upgradeDb.schema.too.high.help"));
+ int i = JOptionPane.showConfirmDialog(
+ getHandler().getTopestUI(),
+ htmlMessage,
+ _("tutti.dbManager.title.schema.toupdate"),
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+ boolean continueAction = i == JOptionPane.OK_OPTION;
+
+ if (!continueAction) {
+
+ //close db
+ closeDb = true;
+ }
+ }
+
+ if (closeDb) {
+
+ // ------------------------------------------------------------------ //
+ // --- close db //
+ // ------------------------------------------------------------------ //
+
+ progressionModel.increments(_("tutti.importDb.step.closeDb"));
+ TuttiActionHelper.runInternalAction(getHandler(), CloseDbAction.class);
+
+ return;
+ }
+
+ if (updateSchema) {
+
+ // need to migrate schema
+ progressionModel.adaptTotal(progressionModel.getTotal() + 1);
+
+ // ------------------------------------------------------------------ //
+ // --- update schema //
+ // ------------------------------------------------------------------ //
+
+ String message = _("tutti.importDb.step.will.migrateSchema",
+ dbVersion, applicationVersion);
+
+ progressionModel.increments(message);
+ sendMessage(message);
+ getHandler().getPersistenceService().updateSchema();
+
+ sendMessage(_("tutti.flash.info.db.schema.updated", dbVersion, applicationVersion));
+ }
+
+ // ------------------------------------------------------------------ //
+ // --- check db context //
+ // ------------------------------------------------------------------ //
+
+ String message = _("tutti.importDb.step.check.dbContext",
+ dbVersion, applicationVersion);
+
+ getProgressionModel().increments(message);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Check db context");
+ }
+ getContext().checkDbContext();
}
@Override
public void postSuccessAction() {
super.postSuccessAction();
- String jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
- sendMessage(_("tutti.flash.info.db.imported", jdbcUrl));
+ if (closeDb) {
+ sendMessage(_("tutti.flash.info.db.imported.but.closed", jdbcUrl));
+ } else {
+ sendMessage(_("tutti.flash.info.db.imported", jdbcUrl));
+ }
+
+ // make sure title is reloaded
+ getUI().getHandler().changeTitle();
}
}
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -0,0 +1,196 @@
+package fr.ifremer.tutti.ui.swing.content.db;
+
+/*
+ * #%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 com.google.common.base.Preconditions;
+import fr.ifremer.tutti.TuttiBusinessException;
+import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
+import fr.ifremer.tutti.ui.swing.TuttiApplicationUpdaterCallBack;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
+import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
+import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.updater.ApplicationUpdater;
+
+import java.io.File;
+import java.util.Date;
+
+import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.n_;
+
+/**
+ * To install (or reinstall) a db from last network one.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4
+ */
+public class InstallDbAction extends AbstractMainUITuttiAction {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(InstallDbAction.class);
+
+ protected File backupFile;
+
+ protected boolean doBackup;
+
+ protected String jdbcUrl;
+
+ public InstallDbAction(MainUIHandler handler) {
+ super(handler, true);
+ setActionDescription(_("tutti.dbManager.action.installDb.tip"));
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+ boolean doAction = super.prepareAction();
+
+ if (doAction) {
+
+ jdbcUrl = null;
+ backupFile = null;
+ doBackup = false;
+
+ jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
+
+ if (getModel().isDbExist()) {
+
+ displayInfoMessage(
+ _("tutti.dbManager.title.backup.db"),
+ _("tutti.dbManager.action.installDb.backup.db")
+ );
+
+ // do backup
+
+ backupFile = saveFile(
+ getConfig().getServiceConfig().getPersistenceConfig().getDbBackupDirectory(),
+ "tutti-db-" + ExportDbAction.df.format(new Date()),
+ "zip",
+ _("tutti.dbManager.title.choose.dbExportFile"),
+ _("tutti.dbManager.action.chooseDbExportFile"),
+ "^.*\\.zip", _("tutti.common.file.zip")
+ );
+
+ if (backupFile == null) {
+
+ displayWarningMessage(
+ _("tutti.dbManager.title.backup.db"),
+ _("tutti.dbManager.action.installDb.no.backup.db.choosen")
+ );
+
+ doAction = false;
+ } else {
+ doBackup = true;
+ }
+ }
+ }
+
+ if (doAction) {
+ TuttiUIContext context = getContext();
+ TuttiApplicationConfig config = context.getConfig();
+ String url = config.getUpdateUrl();
+
+ try {
+ TuttiUIUtil.tryToConnectToUpdateUrl(
+ url,
+ n_("tutti.error.update.could.not.reach.url")
+ );
+ } catch (TuttiBusinessException e) {
+ TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage());
+ doAction = false;
+ }
+ }
+
+ if (doAction) {
+
+ ProgressionModel progressionModel = new ProgressionModel();
+ progressionModel.setTotal(1 + (doBackup ? 2 : 0));
+ setProgressionModel(progressionModel);
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void doAction() {
+
+ ProgressionModel progressionModel = getProgressionModel();
+ if (doBackup) {
+
+ // ------------------------------------------------------------------ //
+ // --- backup current db //
+ // ------------------------------------------------------------------ //
+
+ progressionModel.increments(_("tutti.installDb.step.backupDb", backupFile));
+ getContext().getPersistenceService().exportDb(backupFile);
+
+ // close current db
+ getContext().setDbLoaded(false);
+ getHandler().reloadPersistenceService();
+ }
+
+ // ------------------------------------------------------------------ //
+ // --- install db //
+ // ------------------------------------------------------------------ //
+
+ TuttiUIContext context = getContext();
+ TuttiApplicationConfig config = context.getConfig();
+
+ File current = config.getDataDirectory();
+ String url = config.getUpdateUrl();
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Try to install / update db (current data location: %s), using update url: %s", current, url));
+ }
+
+ File dest = new File(config.getTuttiBasedir(), "NEW");
+
+ progressionModel.increments(_("tutti.dbManager.action.upgradeDb.check"));
+ TuttiApplicationUpdaterCallBack callback =
+ new TuttiApplicationUpdaterCallBack(this, progressionModel);
+ callback.setTypes(TuttiApplicationUpdaterCallBack.UpdateType.DB);
+ ApplicationUpdater up = new ApplicationUpdater();
+ up.update(url,
+ current,
+ dest,
+ false,
+ callback,
+ progressionModel);
+
+ Preconditions.checkState(callback.isDbInstalled());
+
+ progressionModel.increments(_("tutti.dbManager.action.upgradeDb.opening"));
+
+ getContext().setDbExist(true);
+
+ // open db
+ TuttiActionHelper.runInternalAction(getHandler(), OpenDbAction.class);
+
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -1,91 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.db;
-
-/*
- * #%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.TuttiBusinessException;
-import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
-import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * To load an existing db but do nothing in UI.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class LoadDbAction extends AbstractMainUITuttiAction {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(LoadDbAction.class);
-
- public LoadDbAction(MainUIHandler handler) {
- super(handler, true);
- setActionDescription(_("tutti.dbManager.action.openDb.tip"));
- }
-
- @Override
- public void doAction() throws Exception {
-
- if (log.isDebugEnabled()) {
- log.debug("Will open db...");
- }
-
- try {
- getContext().setDbLoaded(true);
- getHandler().reloadPersistenceService();
- } catch (Exception e) {
-
- if (log.isErrorEnabled()) {
- log.error("Could not open db", e);
- }
- // no more db
- getContext().setDbLoaded(false);
- getHandler().reloadPersistenceService();
-
- // could not load db
- throw new TuttiBusinessException(_("tutti.dbManager.action.openDb.couldNotOpen"));
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Check db context");
- }
- getContext().checkDbContext();
-
-// super.doAction();
- }
-
-// @Override
-// public void postSuccessAction() {
-//
-// String jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
-// sendMessage(_("tutti.flash.info.db.opened", jdbcUrl));
-//
-// // make sure title is reloaded
-// getUI().getHandler().changeTitle();
-// }
-}
\ No newline at end of file
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -1,169 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.db;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.ProgressionModel;
-import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.content.AbstractChangeScreenAction;
-import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.Version;
-
-import java.io.File;
-import java.util.Date;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * To migrate the schema of an existing database.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.4
- */
-public class MigrateDbSchemaAction extends AbstractChangeScreenAction {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(MigrateDbSchemaAction.class);
-
- protected Version dbVersion;
-
- protected Version applicationVersion;
-
- protected File file;
-
- protected boolean updateSchema;
-
- public MigrateDbSchemaAction(MainUIHandler handler) {
- super(handler, true, TuttiScreen.SELECT_CRUISE);
- }
-
- @Override
- protected boolean prepareAction() throws Exception {
- dbVersion = applicationVersion = null;
- updateSchema = false;
- boolean doAction = super.prepareAction();
-
- if (doAction) {
-
- PersistenceService persistenceService =
- getHandler().getPersistenceService();
-
- dbVersion = persistenceService.getDbVersion();
-
- applicationVersion = persistenceService.getApplicationVersion();
-
- if (dbVersion.equals(applicationVersion)) {
-
- // database schema is up to date
- if (log.isInfoEnabled()) {
- log.info("Database schema is up-to-date at version: " + dbVersion);
- }
- } else if (dbVersion.compareTo(applicationVersion) < 0) {
-
- // database schema need to migrate
- // ask user where to backup db
-
- String message = _("tutti.dbManager.action.upgradeDb.schema.to.update.message", dbVersion, applicationVersion);
- displayMessage(_("tutti.dbManager.title.schema.toupdate"), message);
-
- // ask user file where to export db
- while (file == null) {
- file = saveFile(
- "tutti-db-" + ExportDbAction.df.format(new Date()),
- "zip",
- _("tutti.dbManager.title.choose.dbExportFile"),
- _("tutti.dbManager.action.chooseDbExportFile"),
- "^.*\\.zip", _("tutti.common.file.zip")
- );
- }
- updateSchema = true;
-
- } else {
-
- // database schema version is higher than application one
- String message = _("tutti.dbManager.action.upgradeDb.schema.not.update.message", dbVersion, applicationVersion);
- displayMessage(_("tutti.dbManager.title.schema.toupdate"), message);
- }
- }
-
- if (doAction) {
-
- ProgressionModel progressionModel = new ProgressionModel();
- setProgressionModel(progressionModel);
- progressionModel.setTotal(4);
- }
-
- return doAction;
- }
-
- @Override
- protected void doAction() throws Exception {
-
- if (updateSchema) {
-
- // do the backup
-
- TuttiUIAction<ExportDbAction> backupAction =
- TuttiActionHelper.createUIAction(getHandler(), ExportDbAction.class);
- backupAction.getLogicAction().setProgressionModel(getProgressionModel());
- backupAction.getLogicAction().setFile(file);
- TuttiActionHelper.runInternalAction(backupAction.getLogicAction());
-
- // update schema
- String message = _("tutti.flash.info.db.schema.updating",
- dbVersion, applicationVersion);
-
- getProgressionModel().increments(1);
- getProgressionModel().setMessage(message);
- sendMessage(message);
- getHandler().getPersistenceService().updateSchema();
- }
-
- super.doAction();
- }
-
- @Override
- public void postSuccessAction() {
- super.postSuccessAction();
-
- if (updateSchema) {
- sendMessage(_("tutti.flash.info.db.schema.updated", dbVersion, applicationVersion));
- }
-
- String jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
- sendMessage(_("tutti.flash.info.db.opened", jdbcUrl));
-
- // make sure title is reloaded
- getUI().getHandler().changeTitle();
-
- }
-
-}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -25,13 +25,23 @@
*/
import fr.ifremer.tutti.TuttiBusinessException;
+import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.content.AbstractChangeScreenAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.Version;
+import javax.swing.JOptionPane;
+import java.io.File;
+import java.util.Date;
+
import static org.nuiton.i18n.I18n._;
/**
@@ -45,18 +55,53 @@
/** Logger. */
private static final Log log = LogFactory.getLog(OpenDbAction.class);
+ protected Version dbVersion;
+
+ protected Version applicationVersion;
+
+ protected File file;
+
+ protected boolean updateSchema;
+
+ protected boolean closeDb;
+
+ protected String jdbcUrl;
+
public OpenDbAction(MainUIHandler handler) {
super(handler, true, TuttiScreen.SELECT_CRUISE);
setActionDescription(_("tutti.dbManager.action.openDb.tip"));
}
@Override
+ protected boolean prepareAction() throws Exception {
+
+ boolean canContinue = super.prepareAction();
+ if (canContinue) {
+ jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
+ dbVersion = applicationVersion = null;
+ file = null;
+ closeDb = updateSchema = false;
+ }
+ return canContinue;
+ }
+
+ @Override
public void doAction() throws Exception {
if (log.isDebugEnabled()) {
log.debug("Will open db...");
}
+ // at the beginning 3 steps (open db + check version + check db context)
+ ProgressionModel progressionModel = new ProgressionModel();
+ setProgressionModel(progressionModel);
+ progressionModel.setTotal(3);
+
+ // ------------------------------------------------------------------ //
+ // --- open db //
+ // ------------------------------------------------------------------ //
+
+ progressionModel.increments(_("tutti.openDb.step.open", jdbcUrl));
try {
getContext().setDbLoaded(true);
getHandler().reloadPersistenceService();
@@ -73,6 +118,144 @@
throw new TuttiBusinessException(_("tutti.dbManager.action.openDb.couldNotOpen"));
}
+ // ------------------------------------------------------------------ //
+ // --- check schema version //
+ // ------------------------------------------------------------------ //
+
+ progressionModel.increments(_("tutti.openDb.step.checkSchemaVersion"));
+
+ TuttiPersistence persistenceService =
+ getHandler().getPersistenceService();
+
+ dbVersion = persistenceService.getDbVersion();
+
+ if (log.isInfoEnabled()) {
+ log.info("Detected database version: " + dbVersion);
+ }
+ applicationVersion = persistenceService.getApplicationVersion();
+
+ if (log.isInfoEnabled()) {
+ log.info("Detected schema application version:" + applicationVersion);
+ }
+
+ if (dbVersion.equals(applicationVersion)) {
+
+ // database schema is up to date
+ if (log.isInfoEnabled()) {
+ log.info("Database schema is up-to-date at version: " + dbVersion);
+ }
+ } else if (dbVersion.compareTo(applicationVersion) < 0) {
+
+ // database schema need to migrate
+ // ask user to migrate or not (if not will close db)
+
+ // ask user where to backup db
+
+ String message = _("tutti.dbManager.action.upgradeDb.schema.to.update.message", dbVersion, applicationVersion);
+
+ String htmlMessage = String.format(
+ AbstractTuttiUIHandler.CONFIRMATION_FORMAT,
+ message,
+ _("tutti.dbManager.action.upgradeDb.schema.to.update.message.help"));
+ int i = JOptionPane.showConfirmDialog(
+ getHandler().getTopestUI(),
+ htmlMessage,
+ _("tutti.dbManager.title.schema.toupdate"),
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+ boolean continueAction = i == JOptionPane.OK_OPTION;
+
+ if (continueAction) {
+
+ // ask user file where to backup db
+
+ file = saveFile(
+ getConfig().getServiceConfig().getPersistenceConfig().getDbBackupDirectory(),
+ "tutti-db-" + ExportDbAction.df.format(new Date()),
+ "zip",
+ _("tutti.dbManager.title.choose.dbBackupFile"),
+ _("tutti.dbManager.action.chooseDbBackupFile"),
+ "^.*\\.zip", _("tutti.common.file.zip")
+ );
+
+ if (file == null) {
+
+ // won't migrate db
+ closeDb = true;
+
+ displayWarningMessage(
+ _("tutti.dbManager.title.choose.dbBackupFile"),
+ _("tutti.dbManager.action.upgradeDb.no.backup.db.choosen")
+ );
+ } else {
+
+ updateSchema = true;
+ }
+ } else {
+
+ //close db
+ closeDb = true;
+ }
+
+ } else {
+
+ // database schema version is higher than application one
+ displayWarningMessage(
+ _("tutti.dbManager.title.schema.toupdate"),
+ _("tutti.dbManager.action.upgradeDb.schema.not.update.message", dbVersion, applicationVersion)
+ );
+ }
+
+ if (closeDb) {
+
+ // ------------------------------------------------------------------ //
+ // --- backup current db //
+ // ------------------------------------------------------------------ //
+
+ progressionModel.increments(_("tutti.importDb.step.closeDb"));
+ TuttiActionHelper.runInternalAction(getHandler(), CloseDbAction.class);
+
+ setScreen(TuttiScreen.MANAGE_DB);
+ super.doAction();
+ return;
+ }
+
+ if (updateSchema) {
+
+ // need to export db + migrate schema)
+ progressionModel.adaptTotal(progressionModel.getTotal() + ExportDbAction.TOTAL_STEP + 1);
+
+ // ------------------------------------------------------------------ //
+ // --- backup current db //
+ // ------------------------------------------------------------------ //
+
+ TuttiUIAction<ExportDbAction> backupAction =
+ TuttiActionHelper.createUIAction(getHandler(), ExportDbAction.class);
+ backupAction.getLogicAction().setProgressionModel(getProgressionModel());
+ backupAction.getLogicAction().setFile(file);
+ TuttiActionHelper.runInternalAction(backupAction.getLogicAction());
+
+ // ------------------------------------------------------------------ //
+ // --- update schema //
+ // ------------------------------------------------------------------ //
+
+ String message = _("tutti.openDb.step.will.migrateSchema",
+ dbVersion, applicationVersion);
+
+ progressionModel.increments(message);
+ sendMessage(message);
+ getHandler().getPersistenceService().updateSchema();
+ }
+
+ // ------------------------------------------------------------------ //
+ // --- check db context //
+ // ------------------------------------------------------------------ //
+
+ String message = _("tutti.openDb.step.check.dbContext",
+ dbVersion, applicationVersion);
+
+ getProgressionModel().increments(message);
+
if (log.isDebugEnabled()) {
log.debug("Check db context");
}
@@ -84,10 +267,19 @@
@Override
public void postSuccessAction() {
- String jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
- sendMessage(_("tutti.flash.info.db.opened", jdbcUrl));
-
// make sure title is reloaded
getUI().getHandler().changeTitle();
+
+ if (closeDb) {
+ sendMessage(_("tutti.flash.info.db.not.opened", jdbcUrl));
+ } else {
+
+ if (updateSchema) {
+
+ sendMessage(_("tutti.flash.info.db.schema.updated", dbVersion, applicationVersion));
+ }
+
+ sendMessage(_("tutti.flash.info.db.opened", jdbcUrl));
+ }
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -226,6 +226,32 @@
* @return le fichier choisi ou {@code null} si pas de fichier choisi ou
* pas voulu écrasé un fichier existant.
*/
+ protected File saveFile(File defaultFile,
+ String filename,
+ String extension,
+ String title,
+ String buttonLabel,
+ String... filters) {
+
+ if (defaultFile != null && FileChooserUtil.isCurrentDirectoryDefault()) {
+
+ // set default directory to this one
+ FileChooserUtil.setCurrentDirectory(defaultFile);
+ }
+ File file = saveFile(filename, extension, title, buttonLabel, filters);
+ return file;
+ }
+
+ /**
+ * Sauver un fichier via un sélecteur graphique de fichiers.
+ *
+ * @param title le titre du dialogue de sélection
+ * @param buttonLabel le label du boutton d'acceptation
+ * @param filters les filtres + descriptions sur le sélecteur de
+ * fichiers
+ * @return le fichier choisi ou {@code null} si pas de fichier choisi ou
+ * pas voulu écrasé un fichier existant.
+ */
protected File saveFile(String filename,
String extension,
String title,
@@ -304,12 +330,20 @@
return result;
}
- protected void displayMessage(String title, String message) {
+ protected void displayInfoMessage(String title, String message) {
JOptionPane.showMessageDialog(
getHandler().getTopestUI(),
message,
title,
- JOptionPane.QUESTION_MESSAGE);
+ JOptionPane.INFORMATION_MESSAGE);
}
+ protected void displayWarningMessage(String title, String message) {
+ JOptionPane.showMessageDialog(
+ getHandler().getTopestUI(),
+ message,
+ title,
+ JOptionPane.WARNING_MESSAGE);
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUI.jaxx 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUI.jaxx 2013-08-23 15:51:18 UTC (rev 1167)
@@ -32,8 +32,6 @@
jaxx.runtime.swing.BlockingLayerUI
javax.swing.border.EmptyBorder
-
- static org.nuiton.i18n.I18n._
</import>
<script><![CDATA[
@@ -81,9 +79,4 @@
</JPanel>
</JPanel>
- <!--JPanel id='informationPanel' constraints='BorderLayout.SOUTH'
- layout='{new BorderLayout()}'>
- <JLabel id='informationLabel' constraints='BorderLayout.CENTER'/>
- <JButton id='okAction' constraints='BorderLayout.SOUTH' onActionPerformed='handler.closeAction()'/>
- </JPanel-->
</JDialog>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java 2013-08-23 15:51:18 UTC (rev 1167)
@@ -29,6 +29,7 @@
import fr.ifremer.tutti.ui.swing.content.MainUI;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import jaxx.runtime.SwingUtil;
+import jaxx.runtime.swing.StatusMessagePanel;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -36,6 +37,9 @@
import javax.swing.JComponent;
import java.awt.Container;
import java.awt.Cursor;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -77,42 +81,48 @@
}
};
- //------------------------------------------------------------------------//
- //-- AbstractTuttiUIHandler methods --//
- //------------------------------------------------------------------------//
+ protected ComponentListener listener = new ComponentAdapter() {
+ boolean moving;
- protected void hideAction() {
- ui.setVisible(false);
- }
+ boolean resizing;
- protected void showAction(AbstractTuttiAction action) {
- ui.setTitle(_("tutti.main.title.action",
- getConfig().getVersion(),
- action.getActionDescription()));
- ui.getGlobalActionLabel().setText(
- _("tutti.message.action.running",
- action.getActionDescription()));
- ui.pack();
+ @Override
+ public void componentMoved(ComponentEvent e) {
- MainUI mainUI = getContext().getMainUI();
- if (mainUI != null) {
- Container component = mainUI.getBody();
- int width = component == null ? 0 : component.getWidth();
- int height = component == null ? 0 : component.getHeight();
- int x;
- int y;
- if (height == 0) {
- x = mainUI.getX() + 5;
- y = mainUI.getY() + 20;
- } else {
- x = mainUI.getX() + (mainUI.getWidth() - width);
- y = mainUI.getY() + (mainUI.getHeight() - height);
+ MainUI mainUI = (MainUI) e.getSource();
+
+ if (!moving && mainUI.isShowing()) {
+
+ moving = true;
+ try {
+ setLocation(mainUI);
+ } finally {
+ moving = false;
+ }
}
- ui.setLocation(x, y);
}
- ui.setVisible(true);
- }
+ @Override
+ public void componentResized(ComponentEvent e) {
+
+ MainUI mainUI = (MainUI) e.getSource();
+
+ if (!resizing && mainUI.isShowing()) {
+
+ resizing = true;
+ try {
+ setSize(mainUI);
+ } finally {
+ resizing = false;
+ }
+ }
+ }
+ };
+
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
+
@Override
public void beforeInitUI() {
TuttiActionUIModel model = new TuttiActionUIModel();
@@ -159,12 +169,10 @@
if (newValue == null) {
// remove progression model
-// ui.getGlobalProgressBar().setVisible(true);
ui.getTaskPanel().setVisible(false);
} else {
// use progression model
-// ui.getGlobalProgressBar().setVisible(false);
ui.getTaskPanel().setVisible(true);
newValue.addPropertyChangeListener(progressionListener);
@@ -199,4 +207,65 @@
return null;
}
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
+ protected void hideAction() {
+ ui.setVisible(false);
+ }
+
+ protected void showAction(AbstractTuttiAction action) {
+ ui.setTitle(_("tutti.main.title.action",
+ getConfig().getVersion(),
+ action.getActionDescription()));
+ ui.getGlobalActionLabel().setText(
+ _("tutti.message.action.running",
+ action.getActionDescription()));
+ ui.pack();
+
+ MainUI mainUI = getContext().getMainUI();
+ if (mainUI != null) {
+ mainUI.addComponentListener(listener);
+
+ setLocation(mainUI);
+ setSize(mainUI);
+ }
+ try {
+ ui.setVisible(true);
+ } finally {
+ if (mainUI != null) {
+ mainUI.removeComponentListener(listener);
+ }
+ }
+ }
+
+ protected void setLocation(MainUI mainUI) {
+ Container component = mainUI.getBody();
+ StatusMessagePanel status = mainUI.getStatus();
+ int width = component == null ? 0 : component.getWidth();
+ int height = component == null ? 0 : component.getHeight() + status.getHeight();
+
+ int x;
+ int y;
+ if (height == 0) {
+ x = mainUI.getX() + 5;
+ y = mainUI.getY() + 15;
+ } else {
+ x = mainUI.getX() + (mainUI.getWidth() - width);
+ y = mainUI.getY() + (mainUI.getHeight() - height);
+ }
+ ui.setLocation(x, y);
+ }
+
+ protected void setSize(MainUI mainUI) {
+ Container component = mainUI.getBody();
+ int width = component == null ? 0 : component.getWidth();
+
+ ui.pack();
+
+ if (width != 0 && ui.getWidth() < width) {
+ ui.setSize(width, ui.getHeight());
+ }
+ }
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-08-23 15:51:18 UTC (rev 1167)
@@ -241,8 +241,12 @@
tutti.createSpeciesMelag.message=
tutti.createSpeciesMelag.title=
tutti.dbMabager.title=
+tutti.dbManager.action.chooseDbBackupFile=
tutti.dbManager.action.chooseDbExportFile=
tutti.dbManager.action.chooseDbFile=
+tutti.dbManager.action.closeDb=
+tutti.dbManager.action.closeDb.mnemonic=
+tutti.dbManager.action.closeDb.tip=
tutti.dbManager.action.exportAndCleanDb=
tutti.dbManager.action.exportAndCleanDb.mnemonic=
tutti.dbManager.action.exportAndCleanDb.tip=
@@ -250,25 +254,44 @@
tutti.dbManager.action.exportDb.mnemonic=
tutti.dbManager.action.exportDb.tip=
tutti.dbManager.action.importDb=
+tutti.dbManager.action.importDb.backup.db=
tutti.dbManager.action.importDb.mnemonic=
tutti.dbManager.action.importDb.tip=
+tutti.dbManager.action.importdb.backup.db=
+tutti.dbManager.action.importdb.couldNotOpen=
+tutti.dbManager.action.importdb.no.backup.db.choosen=
+tutti.dbManager.action.importdb.no.import.file.choosen=
tutti.dbManager.action.installDb=
+tutti.dbManager.action.installDb.backup.db=
tutti.dbManager.action.installDb.mnemonic=
+tutti.dbManager.action.installDb.no.backup.db.choosen=
tutti.dbManager.action.installDb.tip=
+tutti.dbManager.action.openDb=
tutti.dbManager.action.openDb.couldNotOpen=
+tutti.dbManager.action.openDb.mnemonic=
tutti.dbManager.action.openDb.tip=
+tutti.dbManager.action.reinstallDb=
+tutti.dbManager.action.reinstallDb.mnemonic=
+tutti.dbManager.action.reinstallDb.tip=
tutti.dbManager.action.upgradeDb=
tutti.dbManager.action.upgradeDb.check=
tutti.dbManager.action.upgradeDb.mnemonic=
+tutti.dbManager.action.upgradeDb.no.backup.db.choosen=
tutti.dbManager.action.upgradeDb.opening=
tutti.dbManager.action.upgradeDb.reloading=
tutti.dbManager.action.upgradeDb.schema.not.update.message=
tutti.dbManager.action.upgradeDb.schema.to.update.message=
+tutti.dbManager.action.upgradeDb.schema.to.update.message.help=
+tutti.dbManager.action.upgradeDb.schema.too.high=
+tutti.dbManager.action.upgradeDb.schema.too.high.help=
+tutti.dbManager.action.upgradeDb.schema.version.not.found=
tutti.dbManager.action.upgradeDb.tip=
tutti.dbManager.action.upgradeDb.upToDate=
tutti.dbManager.info.db.loaded=
tutti.dbManager.info.no.db.exist=
tutti.dbManager.info.no.db.loaded=
+tutti.dbManager.title.backup.db=
+tutti.dbManager.title.choose.dbBackupFile=
tutti.dbManager.title.choose.dbExportFile=
tutti.dbManager.title.choose.dbImportFile=
tutti.dbManager.title.schema.toupdate=
@@ -964,6 +987,9 @@
tutti.exportDb.createArchive=
tutti.exportDb.openDb=
tutti.exportDb.reloadApplication=
+tutti.exportDb.step.closeDb=
+tutti.exportDb.step.createArchive=
+tutti.exportDb.step.openDb=
tutti.exportProgram.action.success=
tutti.exportProtocol.action.success=
tutti.fishingOperations.action.deleteFishingOperation.mnemonic=
@@ -987,9 +1013,12 @@
tutti.flash.info.caractristic.exported.from.protocol=
tutti.flash.info.cruiseCreated=
tutti.flash.info.cruiseSaved=
+tutti.flash.info.db.closed=
tutti.flash.info.db.exported=
tutti.flash.info.db.exported.and.clean=
tutti.flash.info.db.imported=
+tutti.flash.info.db.imported.but.closed=
+tutti.flash.info.db.not.opened=
tutti.flash.info.db.opened=
tutti.flash.info.db.schema.updated=
tutti.flash.info.db.schema.updating=
@@ -1016,6 +1045,13 @@
tutti.i18n.deleteCache.error=
tutti.i18n.mkDir.error=
tutti.importDb.openDb=
+tutti.importDb.step.backupDb=
+tutti.importDb.step.check.dbContext=
+tutti.importDb.step.checkSchemaVersion=
+tutti.importDb.step.closeDb=
+tutti.importDb.step.openDb=
+tutti.importDb.step.unzipArchive=
+tutti.importDb.step.will.migrateSchema=
tutti.importDb.unzipArchive=
tutti.importProtocol.action.success=
tutti.importPupitri.carrouselFile.extension=
@@ -1027,6 +1063,7 @@
tutti.importPupitri.title=
tutti.importPupitri.trunkFile.extension=
tutti.importPupitri.trunkFile.extension.description=
+tutti.installDb.step.backupDb=
tutti.label.tab.accidental=
tutti.label.tab.benthos=
tutti.label.tab.catches=
@@ -1177,6 +1214,10 @@
tutti.multiPostImportLog.title=
tutti.multiPostImportLog.totalSortedWeight=
tutti.multiPostImportLog.totalWeight=
+tutti.openDb.step.check.dbContext=
+tutti.openDb.step.checkSchemaVersion=
+tutti.openDb.step.open=
+tutti.openDb.step.will.migrateSchema=
tutti.option.cancel=
tutti.option.cleanAndClone=
tutti.option.cleanAndEdit=
@@ -1359,3 +1400,4 @@
tutti.vesselUseFeatureTable.table.header.key=
tutti.vesselUseFeatureTable.table.header.value=
tutti.vesselUseFeatureTable.title=
+{handler.getInstallButtonMnemonic(model.isDbExist())}=
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-08-23 14:18:23 UTC (rev 1166)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-08-23 15:51:18 UTC (rev 1167)
@@ -232,35 +232,57 @@
tutti.createSpeciesMelag.message=Combien pesait le MELAG (mélange) (kg) ?
tutti.createSpeciesMelag.title=Poids du MELAG (mélange) (kg)
tutti.dbMabager.title=Gérer les bases de données
+tutti.dbManager.action.chooseDbBackupFile=Sauvegarder la base de données
tutti.dbManager.action.chooseDbExportFile=Exporter la base de données
tutti.dbManager.action.chooseDbFile=Choisir la base à importer
-tutti.dbManager.action.exportAndCleanDb=Exporter et supprimer
+tutti.dbManager.action.closeDb=Fermer la base
+tutti.dbManager.action.closeDb.mnemonic=F
+tutti.dbManager.action.closeDb.tip=Fermer la base en cours d'utilisation
tutti.dbManager.action.exportAndCleanDb.mnemonic=s
tutti.dbManager.action.exportAndCleanDb.tip=Exporter la base de données au format zip puis supprimer les fichiers de l'application
tutti.dbManager.action.exportDb=Exporter
tutti.dbManager.action.exportDb.mnemonic=x
tutti.dbManager.action.exportDb.tip=Exporter la base de données au format zip
tutti.dbManager.action.importDb=Importer une base
+tutti.dbManager.action.importDb.backup.db=
tutti.dbManager.action.importDb.mnemonic=i
tutti.dbManager.action.importDb.tip=Importer la base de données au format zip
+tutti.dbManager.action.importdb.backup.db=Avant de pouvoir importer une nouvelle base, vous devez sauvegarder la base courante.
+tutti.dbManager.action.importdb.couldNotOpen=
+tutti.dbManager.action.importdb.no.backup.db.choosen=Import annulé (vous n'avez pas choisi de fichier de sauvegarde).
+tutti.dbManager.action.importdb.no.import.file.choosen=Import annulé (vous n'avez pas choisi de fichier d'import).
tutti.dbManager.action.installDb=Installer
+tutti.dbManager.action.installDb.backup.db=Avant de pouvoir réinstaller une nouvelle base, vous devez sauvegarder la base courante.
tutti.dbManager.action.installDb.mnemonic=n
+tutti.dbManager.action.installDb.no.backup.db.choosen=Réinstallation annulée (vous n'avez pas choisi de fichier de sauvegarde).
tutti.dbManager.action.installDb.tip=Télécharger puis installer la base de données
+tutti.dbManager.action.openDb=Ouvrir la base
tutti.dbManager.action.openDb.couldNotOpen=Impossible d'ouvrir la base, elle est peut-être déjà utilisée par une autre application (ou une autre instance de l'application)
+tutti.dbManager.action.openDb.mnemonic=O
tutti.dbManager.action.openDb.tip=Ouvrir la base de données
+tutti.dbManager.action.reinstallDb=Réinstaller
+tutti.dbManager.action.reinstallDb.mnemonic=n
+tutti.dbManager.action.reinstallDb.tip=Télécharger puis ré-installer la base de données
tutti.dbManager.action.removeBatch.confirm.message=
tutti.dbManager.action.upgradeDb=Mettre à jour les référentiels
tutti.dbManager.action.upgradeDb.check=Recherche des mises à jour de la base
tutti.dbManager.action.upgradeDb.mnemonic=V
+tutti.dbManager.action.upgradeDb.no.backup.db.choosen=La base ne sera pas migrée (vous avez annulé la sauvegarde avant migration).
tutti.dbManager.action.upgradeDb.opening=Ouverture de la base de données
tutti.dbManager.action.upgradeDb.reloading=Rechargement de la base de données
tutti.dbManager.action.upgradeDb.schema.not.update.message=<html><body>Votre base de données est en version %s et le bon fonctionnement de l'application est garanti sur une version plus ancienne (%s).<br/>Il se peut que l'application ne fonctionne pas correctement avec cette version de la base.<hr/>Nous vous recommandons \:<ul><li>De vérifier si une nouvelle version de l'application n'est pas disponible</li><li>De vous renseigner auprès des administrateurs de l'application</li></ul></body></html>
-tutti.dbManager.action.upgradeDb.schema.to.update.message=<html><body>Votre base de données est en version %s, et le bon fonctionnement de l'application est garanti sur une version plus récente (%s).<hr/>Une sauvegarde de la base va être effectuée avant la migration.</body></html>
-tutti.dbManager.action.upgradeDb.tip=
+tutti.dbManager.action.upgradeDb.schema.to.update.message=Votre base de données est en version %s, et le bon fonctionnement de l'application est garanti sur une version plus récente (%s).
+tutti.dbManager.action.upgradeDb.schema.to.update.message.help=Que voulez-vous faire ?<ul><li><strong>Oui</strong> pour migrer la base</li><li><strong>Annuler</strong> pour ne pas migrer et ne pas charger la base (la base ne sera alors pas utilisable dans cette version du logiciel).</li></ul>
+tutti.dbManager.action.upgradeDb.schema.too.high=Votre base de données est en version %s et le bon fonctionnement de l'application est garanti sur une version plus ancienne (%s).<br/>Il se peut que l'application ne fonctionne pas correctement avec cette version de la base.<br/>Nous vous recommandons \:<ul><li>De vérifier si une nouvelle version de l'application n'est pas disponible</li><li>De vous renseigner auprès des administrateurs de l'application</li></ul>
+tutti.dbManager.action.upgradeDb.schema.too.high.help=Souhaitez-vous poursuivre l'import de la base de données ?<ul><li><strong>Oui</strong> pour charger la base en version plus récente</li><li><strong>Annuler</strong> pour ne pas charger la base</li></ul>
+tutti.dbManager.action.upgradeDb.schema.version.not.found=L'application n'a pas pu déterminer la version de la base de données à importer. L'import ne peut pas être réalisé, veuillez contacter les administrateurs de l'application.
+tutti.dbManager.action.upgradeDb.tip=Mettre à jour les référentiels
tutti.dbManager.action.upgradeDb.upToDate=Aucune mise à jour de base détectée
-tutti.dbManager.info.db.loaded=Tutti est connecté à une base de données<hr/>Url de connexion \: <strong>%s</strong>
-tutti.dbManager.info.no.db.exist=Aucune base détectée, vous pouvez installer la dernière disponible sur le réseau ou bien en importer une
-tutti.dbManager.info.no.db.loaded=L'application possède une base (<strong>%s</strong>).<br/>Elle n'a pas pu être ouverte, elle doit être probablement utilisée par une autre application.<hr/>Quitter les applications l'utilisant puis redémarrer
+tutti.dbManager.info.db.loaded=Tutti est connecté à une base de données<hr/>Caractéristiques de cette base \:<ul><li>Url de connexion \: <strong>%s</strong></li><li>Version\: <strong>%s</strong></li></ul>
+tutti.dbManager.info.no.db.exist=Aucune base détectée.<hr/>Vous pouvez installer la dernière disponible sur le réseau via l'action <strong>installer</strong>; ou bien en importer une via l'action <strong>importer</strong>.
+tutti.dbManager.info.no.db.loaded=Une base a été détectée (<strong>%s</strong>).<hr/>La base n'est pas ouverte, vous pouvez l'ouvrir via l'action <strong>Ouvrir</strong>.<br/>Si l'ouverture ne fonctionne pas; veuillez bien prendre soin de quitter les applications qui pourraient utiliser cette base.
+tutti.dbManager.title.backup.db=Sauvegarde de la base
+tutti.dbManager.title.choose.dbBackupFile=Sauvegarder la base de données
tutti.dbManager.title.choose.dbExportFile=Exporter la base de données
tutti.dbManager.title.choose.dbImportFile=Importer la base de données
tutti.dbManager.title.schema.toupdate=Mise à jour de la base détéctée
@@ -949,10 +971,12 @@
tutti.exportCruiseForSumatra.action.success=Les captures ont correctement été exporté dans le fichier %s
tutti.exportCruiseForSumatra.choose.exportFile.default=sumatra_%s_%s
tutti.exportCruiseForSumatra.title.choose.exportFile=Exporter les captures de la campagne
-tutti.exportDb.closeDb=Fermeture de la base courante
-tutti.exportDb.createArchive=Création de l'archive %s
-tutti.exportDb.openDb=Réouverture de la base courante
+tutti.exportDb.closeDb=
+tutti.exportDb.createArchive=
tutti.exportDb.reloadApplication=Redémarrage de l'application
+tutti.exportDb.step.closeDb=Fermeture de la base courante
+tutti.exportDb.step.createArchive=Création de l'archive %s
+tutti.exportDb.step.openDb=Réouverture de la base courante
tutti.exportProgram.action.success=La série de campagne <strong>%s</strong> a été exportée dans le fichier <strong>%s</strong>.
tutti.exportProtocol.action.success=Protocole [%1s] exporté dans le fichier <strong>%2s</strong>.
tutti.fishingOperations.action.deleteFishingOperation.mnemonic=S
@@ -976,12 +1000,14 @@
tutti.flash.info.caractristic.exported.from.protocol=Caractéristiques du protocole exportées dans le fichier <strong>%s</strong>.
tutti.flash.info.cruiseCreated=La campagne <strong>%s</strong> a été créée.
tutti.flash.info.cruiseSaved=La campagne <strong>%s</strong> a été enregistrée.
+tutti.flash.info.db.closed=La base <strong>%s</strong> est fermée.
tutti.flash.info.db.exported=Base exportée dans l'archive <strong>%s</strong>.
tutti.flash.info.db.exported.and.clean=Base exportée dans l'archive <strong>%s</strong>.
tutti.flash.info.db.imported=La base de données <strong>%s</strong> est importée.
+tutti.flash.info.db.imported.but.closed=La base de données <strong>%s</strong> est importée mais n'a pas été ouverte.
+tutti.flash.info.db.not.opened=La base <strong>%s</strong> n'a pas été ouverte.
tutti.flash.info.db.opened=La base de données <strong>%s</strong> est ouverte.
tutti.flash.info.db.schema.updated=Le schéma de la base (version %s) a été mise à jour vers la version %s
-tutti.flash.info.db.schema.updating=Démarrage de la mise à jour du schéma de la base depuis la version %s vers la version %s
tutti.flash.info.programCreated=La série de campagne <strong>%s</strong> a été créée.
tutti.flash.info.programSaved=La série de campagne <strong>%s</strong> a été enregistrée.
tutti.flash.info.protocolCreated=Le protocole <strong>%s</strong> a été créé.
@@ -1004,8 +1030,13 @@
tutti.help.mkDir.error=Erreur à la création du dossier d'aide
tutti.i18n.deleteCache.error=Erreur à la suppression du cache de l'internationalisation
tutti.i18n.mkDir.error=Erreur à la création du dossier d'internationalisation
-tutti.importDb.openDb=Ouverture de la base de données
-tutti.importDb.unzipArchive=Décompression de l'archive
+tutti.importDb.step.backupDb=Sauvegarde de la base dans l'archive %s
+tutti.importDb.step.check.dbContext=Vérification du context de saisie
+tutti.importDb.step.checkSchemaVersion=Vérification de la version de la base
+tutti.importDb.step.closeDb=Fermeture de la base
+tutti.importDb.step.openDb=Ouverture de la base de données %s
+tutti.importDb.step.unzipArchive=Décompression de l'archive
+tutti.importDb.step.will.migrateSchema=Démarrage de la mise à jour du schéma de la base depuis la version %s vers la version %s
tutti.importProtocol.action.success=Protocole [%s] lu depuis le fichier.
tutti.importPupitri.carrouselFile.extension=car
tutti.importPupitri.carrouselFile.extension.description=Fichier du carrousel (.car)
@@ -1016,6 +1047,7 @@
tutti.importPupitri.title=Import Pupitri
tutti.importPupitri.trunkFile.extension=tnk
tutti.importPupitri.trunkFile.extension.description=Fichier du trémie (.tnk)
+tutti.installDb.step.backupDb=Sauvegarde de la base dans l'archive %s
tutti.label.tab.accidental=Captures accidentelles
tutti.label.tab.benthos=Benthos
tutti.label.tab.catches=Captures
@@ -1156,7 +1188,7 @@
tutti.manageTemporaryReferential.title.choose.importTemporaryPersonFile=Importer un référentiel Personne
tutti.manageTemporaryReferential.title.choose.importTemporarySpeciesFile=Importer un référentiel Espèce
tutti.manageTemporaryReferential.title.choose.importTemporaryVesselFile=Importer un référentiel Navire
-tutti.message.action.running=<html>Action <strong>%s</strong> en cours d'exécution...<hr/></html>
+tutti.message.action.running=<html>Action <strong>%s</strong> en cours d'exécution...</html>
tutti.multiPostImportLog.close=Fermer
tutti.multiPostImportLog.close.mnemonic=F
tutti.multiPostImportLog.close.tip=Fermer la popup
@@ -1166,6 +1198,10 @@
tutti.multiPostImportLog.title=Lots non importés
tutti.multiPostImportLog.totalSortedWeight=Poids total trié \: %s kg
tutti.multiPostImportLog.totalWeight=Poids total \: %s kg
+tutti.openDb.step.check.dbContext=Vérification du context de saisie
+tutti.openDb.step.checkSchemaVersion=Vérification de la compatibilité de la base
+tutti.openDb.step.open=Ouverture de la base %s
+tutti.openDb.step.will.migrateSchema=Démarrage de la mise à jour du schéma de la base depuis la version %s vers la version %s
tutti.option.cancel=Annuler
tutti.option.cleanAndClone=Nettoyer et Cloner
tutti.option.cleanAndEdit=Nettoyer et Éditer
@@ -1341,3 +1377,4 @@
tutti.vesselUseFeatureTable.table.header.key=Caractéristique
tutti.vesselUseFeatureTable.table.header.value=Valeur
tutti.vesselUseFeatureTable.title=Autres paramètres
+{handler.getInstallButtonMnemonic(model.isDbExist())}=
1
0
Author: tchemit
Date: 2013-08-23 16:18:23 +0200 (Fri, 23 Aug 2013)
New Revision: 1166
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1166
Log:
use stable versions for release
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-08-22 19:22:29 UTC (rev 1165)
+++ trunk/pom.xml 2013-08-23 14:18:23 UTC (rev 1166)
@@ -125,19 +125,19 @@
<nuitonCsvVersion>3.0-alpha-1</nuitonCsvVersion>
<nuitonDecoratorVersion>3.0-alpha-1</nuitonDecoratorVersion>
<nuitonUpdaterVersion>3.0-alpha-1</nuitonUpdaterVersion>
- <nuitonUtilsVersion>2.7.1-SNAPSHOT</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.7.1</nuitonUtilsVersion>
<nuitonValidatorVersion>3.0-alpha-1</nuitonValidatorVersion>
<eugenePluginVersion>2.7</eugenePluginVersion>
<hibernateVersion>3.6.10.Final</hibernateVersion>
- <jaxxVersion>2.6-SNAPSHOT</jaxxVersion>
+ <jaxxVersion>2.5.25</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.15.1</xworkVersion>
<slf4jVersion>1.7.5</slf4jVersion>
- <adagioVersion>3.4-SNAPSHOT</adagioVersion>
+ <adagioVersion>3.4</adagioVersion>
<i18n.bundles>fr_FR,en_GB</i18n.bundles>
<i18n.silent>true</i18n.silent>
1
0
See <http://ci.nuiton.org/jenkins/job/tutti/956/changes>
Changes:
[Tony Chemit] - add license headers
- refs #2889: [TECH] - Prise en compte de nouvelles catégories dans l'applicatif (integration adagio 3.4.0)
- migration des bases de tests
------------------------------------------
Started by an SCM change
Building on master in workspace <http://ci.nuiton.org/jenkins/job/tutti/ws/>
Updating http://svn.forge.codelutin.com/svn/tutti/trunk at revision '2013-08-22T20:16:10.039 +0200'
U tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
U tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java
AU tutti-service/src/test/java/fr/ifremer/tutti/service/UpdateSchemaTest.java
U tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostExportServiceTest.java
U tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportServiceTest.java
U tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/TuttiCatchesSumatraExportServiceTest.java
D tutti-service/src/test/resources/tutti-test-write-dbCGFS.properties
D tutti-service/src/test/resources/tutti-test-write-dbExport.properties
U tutti-service/src/test/resources/tutti-test-read-dbExport.properties
U tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties
U tutti-service/src/test
D src/site/resources
AU src/site/rst/dbversions.rst
U src/site/site_fr.xml
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java
A tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
AU tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelTableModel.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIHandler.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIModel.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/SaveSampleCategoryModelAction.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/EditSampleCategoryModelAction.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryAble.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/SaveAttachmentAction.java
U tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
U tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
U tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
U pom.xml
U README.txt
U tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java
U tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java
U tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java
U tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigTest.java
AU tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceWriteTest.java
D tutti-persistence/src/test/resources/tutti-test-write.properties
D tutti-persistence/src/test/resources/tutti-test-write-dbEmpty.properties
U tutti-persistence/src/test/resources/tutti-test-read.properties
U tutti-persistence/src/test/resources/tutti-test-read-dbEmpty.properties
U tutti-persistence/src/test
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/TuttiCatchBatchValidator.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocolBean1.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocolBean1.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocol1.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocol1.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModel.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModelEntry.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/SampleCategoryModelConverter.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java
U tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
U tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties
U tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties
U tutti-persistence/src/main/resources/tutti-db-conf.properties
At revision 1164
Parsing POMs
Modules changed, recalculating dependency graph
[trunk] $ /opt/jdk/bin/java -Xmx256m -XX:-UseGCOverheadLimit -cp /var/local/jenkins/data/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.3.jar:/opt/maven3/boot/plexus-classworlds-2.4.jar org.jvnet.hudson.maven3.agent.Maven3Main /opt/maven3 /opt/repository/apache-tomcat-7.0.42/webapps/jenkins/WEB-INF/lib/remoting-2.28.jar /var/local/jenkins/data/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.3.jar 49168
<===[JENKINS REMOTING CAPACITY]===> channel started
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
Executing Maven: -B -f <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/pom.xml> -U -e clean install
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Tutti
[INFO] Tutti :: Persistence
[INFO] Tutti :: Service
[INFO] Tutti :: UI
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti 2.4-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/target>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti ---
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (generate-surefire-workdir) @ tutti ---
[INFO] Executing tasks
main:
[mkdir] Created dir: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/target/surefire-workdir>
[INFO] Executed tasks
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ tutti ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ tutti ---
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/pom.xml> to /var/local/maven/data/repository/fr/ifremer/tutti/2.4-SNAPSHOT/tutti-2.4-SNAPSHOT.pom
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/target/tutti-2.4-SNAPSHOT-s…> to /var/local/maven/data/repository/fr/ifremer/tutti/2.4-SNAPSHOT/tutti-2.4-SNAPSHOT-site_fr.xml
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Persistence 2.4-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/fr/ifremer/adagio/adagi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/fr/ifremer/adagio/adagi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/liquibase/liquibase…
Downloaded: http://nexus.nuiton.org/nexus/content/groups/public/org/liquibase/liquibase… (8 KB at 146.6 KB/sec)
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/liquibase/liquibase…
Downloaded: http://nexus.nuiton.org/nexus/content/groups/public/org/liquibase/liquibase… (11 KB at 278.9 KB/sec)
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/nuiton/nuiton-…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/nuiton/nuiton-utils…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/nuiton/nuiton-utils…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/nuiton/nuiton-…
[WARNING] The POM for org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT is missing, no dependency information available
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/nuiton/nuiton-utils…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/nuiton/nuiton-…
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Tutti ............................................. SUCCESS [2.620s]
[INFO] Tutti :: Persistence .............................. FAILURE [2.071s]
[INFO] Tutti :: Service .................................. SKIPPED
[INFO] Tutti :: UI ....................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.330s
[INFO] Finished at: Thu Aug 22 20:16:22 CEST 2013
[INFO] Final Memory: 17M/223M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-08-22_20-16-15/archive/fr.ifremer.tutti/tutti-service/2.4-SNAPSHOT/tutti-service-2.4-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-ui-swing/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-08-22_20-16-15/archive/fr.ifremer.tutti/tutti-ui-swing/2.4-SNAPSHOT/tutti-ui-swing-2.4-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-08-22_20-16-15/archive/fr.ifremer/tutti/2.4-SNAPSHOT/tutti-2.4-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/target/tutti-2.4-SNAPSHOT-s…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-08-22_20-16-15/archive/fr.ifremer/tutti/2.4-SNAPSHOT/tutti-2.4-SNAPSHOT-site_fr.xml
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-persistence/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-08-22_20-16-15/archive/fr.ifremer.tutti/tutti-persistence/2.4-SNAPSHOT/tutti-persistence-2.4-SNAPSHOT.pom
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal on project tutti-persistence: Could not resolve dependencies for project fr.ifremer.tutti:tutti-persistence:jar:2.4-SNAPSHOT: Could not find artifact org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT in central (http://nexus.nuiton.org/nexus/content/groups/public)
cause : Could not resolve dependencies for project fr.ifremer.tutti:tutti-persistence:jar:2.4-SNAPSHOT: Could not find artifact org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT in central (http://nexus.nuiton.org/nexus/content/groups/public)
Stack trace :
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project tutti-persistence: Could not resolve dependencies for project fr.ifremer.tutti:tutti-persistence:jar:2.4-SNAPSHOT: Could not find artifact org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT in central (http://nexus.nuiton.org/nexus/content/groups/public)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:210)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:117)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:258)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:201)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:174)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:100)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:66)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project fr.ifremer.tutti:tutti-persistence:jar:2.4-SNAPSHOT: Could not find artifact org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT in central (http://nexus.nuiton.org/nexus/content/groups/public)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:189)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:185)
... 30 more
Caused by: org.sonatype.aether.resolution.DependencyResolutionException: Could not find artifact org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT in central (http://nexus.nuiton.org/nexus/content/groups/public)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:375)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:183)
... 31 more
Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Could not find artifact org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT in central (http://nexus.nuiton.org/nexus/content/groups/public)
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:538)
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:216)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:358)
... 32 more
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT in central (http://nexus.nuiton.org/nexus/content/groups/public)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:947)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:941)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:669)
at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:60)
... 3 more
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com chemit(a)codelutin.com
channel stopped
1
2
22 Aug '13
See <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-persistence/9…>
Changes:
[Tony Chemit] - add license headers
- refs #2889: [TECH] - Prise en compte de nouvelles catégories dans l'applicatif (integration adagio 3.4.0)
- migration des bases de tests
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Persistence 2.4-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/fr/ifremer/adagio/adagi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/fr/ifremer/adagio/adagi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/fr/ifremer/adagio/…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/liquibase/liquibase…
Downloaded: http://nexus.nuiton.org/nexus/content/groups/public/org/liquibase/liquibase… (8 KB at 146.6 KB/sec)
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/liquibase/liquibase…
Downloaded: http://nexus.nuiton.org/nexus/content/groups/public/org/liquibase/liquibase… (11 KB at 278.9 KB/sec)
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/nuiton/nuiton-…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/nuiton/nuiton-utils…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/nuiton/nuiton-utils…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/nuiton/nuiton-…
[WARNING] The POM for org.nuiton:nuiton-utils:jar:2.7.1-SNAPSHOT is missing, no dependency information available
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/nuiton/nuiton-utils…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/nuiton/nuiton-…
1
2
22 Aug '13
Author: tchemit
Date: 2013-08-22 21:22:29 +0200 (Thu, 22 Aug 2013)
New Revision: 1165
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1165
Log:
optimize dependencies
Modified:
trunk/tutti-persistence/pom.xml
trunk/tutti-ui-swing/pom.xml
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-08-22 18:08:02 UTC (rev 1164)
+++ trunk/tutti-persistence/pom.xml 2013-08-22 19:22:29 UTC (rev 1165)
@@ -90,6 +90,11 @@
</dependency>
<dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-08-22 18:08:02 UTC (rev 1164)
+++ trunk/tutti-ui-swing/pom.xml 2013-08-22 19:22:29 UTC (rev 1165)
@@ -121,6 +121,11 @@
</dependency>
<dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-decorator</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.nuiton.i18n</groupId>
<artifactId>nuiton-i18n</artifactId>
</dependency>
1
0
22 Aug '13
Author: tchemit
Date: 2013-08-22 20:08:02 +0200 (Thu, 22 Aug 2013)
New Revision: 1164
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1164
Log:
- add license headers
- refs #2889: [TECH] - Prise en compte de nouvelles cat?\195?\169gories dans l'applicatif (integration adagio 3.4.0)
- migration des bases de tests
Added:
trunk/src/site/rst/dbversions.rst
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceWriteTest.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/UpdateSchemaTest.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java
Removed:
trunk/src/site/resources/
trunk/tutti-persistence/src/test/resources/tutti-test-write-dbEmpty.properties
trunk/tutti-persistence/src/test/resources/tutti-test-write.properties
trunk/tutti-service/src/test/resources/tutti-test-write-dbCGFS.properties
trunk/tutti-service/src/test/resources/tutti-test-write-dbExport.properties
Modified:
trunk/README.txt
trunk/pom.xml
trunk/src/site/site_fr.xml
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/SampleCategoryModelConverter.java
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/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModel.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModelEntry.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocol1.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocolBean1.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocol1.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocolBean1.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/TuttiCatchBatchValidator.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java
trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties
trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties
trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties
trunk/tutti-persistence/src/test/
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java
trunk/tutti-persistence/src/test/resources/tutti-test-read-dbEmpty.properties
trunk/tutti-persistence/src/test/resources/tutti-test-read.properties
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java
trunk/tutti-service/src/test/
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostExportServiceTest.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportServiceTest.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/TuttiCatchesSumatraExportServiceTest.java
trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties
trunk/tutti-service/src/test/resources/tutti-test-read-dbExport.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/EditSampleCategoryModelAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/SaveSampleCategoryModelAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryAble.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.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/create/CreateSpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/SaveAttachmentAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/README.txt
===================================================================
--- trunk/README.txt 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/README.txt 2013-08-22 18:08:02 UTC (rev 1164)
@@ -3,10 +3,21 @@
Fournir la version de la base à utiliser, renseigner la propriété *dbVersion*
-mvn release:prepare -Darguments="-DdbVersion=2013.06.04"
-mvn release:perform -Darguments="-DdbVersion=2013.06.04"
+mvn release:prepare -Darguments="-DdbVersion=2013.08.22"
+mvn release:perform -Darguments="-DdbVersion=2013.08.22"
Pour préparer une release complête, lancer la commande :
- mvn release:prepare -Darguments="-DperformFullRelease -DdbVersion=2013.06.04"
- mvn release:perform -Darguments="-DperformFullRelease -DdbVersion=2013.06.04"
\ No newline at end of file
+mvn release:prepare -Darguments="-DperformFullRelease -DdbVersion=2013.08.22"
+mvn release:perform -Darguments="-DperformFullRelease -DdbVersion=2013.08.22"
+
+Historique des versions de base
+-------------------------------
+
++---------------------+------------+---------------------------+
+| Application version | Db version | Allegro db schema version |
++=====================+============+===========================+
++ 2.3 + 2013.06.04 + 3.2.1.01 +
++---------------------+------------+---------------------------+
++ 2.4 + 2013.08.22 + 3.2.3 +
++---------------------+------------+---------------------------+
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/pom.xml 2013-08-22 18:08:02 UTC (rev 1164)
@@ -121,6 +121,11 @@
<!-- libraries version -->
<nuitonI18nVersion>2.5.2</nuitonI18nVersion>
+ <nuitonConfigVersion>3.0-alpha-1</nuitonConfigVersion>
+ <nuitonCsvVersion>3.0-alpha-1</nuitonCsvVersion>
+ <nuitonDecoratorVersion>3.0-alpha-1</nuitonDecoratorVersion>
+ <nuitonUpdaterVersion>3.0-alpha-1</nuitonUpdaterVersion>
+ <nuitonUtilsVersion>2.7.1-SNAPSHOT</nuitonUtilsVersion>
<nuitonValidatorVersion>3.0-alpha-1</nuitonValidatorVersion>
<eugenePluginVersion>2.7</eugenePluginVersion>
@@ -132,7 +137,7 @@
<slf4jVersion>1.7.5</slf4jVersion>
- <adagioVersion>3.3.7</adagioVersion>
+ <adagioVersion>3.4-SNAPSHOT</adagioVersion>
<i18n.bundles>fr_FR,en_GB</i18n.bundles>
<i18n.silent>true</i18n.silent>
@@ -159,7 +164,7 @@
<jreVersion>1.7.25</jreVersion>
<!-- Last tutti db version -->
- <!--<dbVersion>2013.04.22</dbVersion>-->
+ <!--<dbVersion>2013.08.22</dbVersion>-->
</properties>
@@ -200,31 +205,31 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
- <version>3.0-SNAPSHOT</version>
+ <version>${nuitonUtilsVersion}</version>
</dependency>
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-decorator</artifactId>
- <version>3.0-alpha-1</version>
+ <version>${nuitonDecoratorVersion}</version>
</dependency>
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-config</artifactId>
- <version>3.0-alpha-1</version>
+ <version>${nuitonConfigVersion}</version>
</dependency>
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-updater</artifactId>
- <version>3.0-alpha-1</version>
+ <version>${nuitonUpdaterVersion}</version>
</dependency>
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-csv</artifactId>
- <version>3.0-alpha-1</version>
+ <version>${nuitonCsvVersion}</version>
</dependency>
<dependency>
Added: trunk/src/site/rst/dbversions.rst
===================================================================
--- trunk/src/site/rst/dbversions.rst (rev 0)
+++ trunk/src/site/rst/dbversions.rst 2013-08-22 18:08:02 UTC (rev 1164)
@@ -0,0 +1,58 @@
+.. -
+.. * #%L
+.. * Tutti
+.. * $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%
+.. -
+
+==========================================================
+Relation entre les versions de l'applicative et de la base
+==========================================================
+
+Présentation
+------------
+
+Depuis la version **2.4**, on est capable de faire des migrations de schémas, i.e
+que lors de l'ouverture (ou import) d'une base, on vérifie la version du schéma
+requit par l'applicatif (fait par adagio). (voir http://forge.codelutin.com/issues/2890)
+
+Si la version du schéma de la base est inférieure à celle de l'applicatif, on
+propose alors une migration de schéma.
+
+Historique des versions de base
+-------------------------------
+
+Le tableau suivant résume les différents liens entre les versions :
+
++---------------------+------------+---------------------------+
+| Application version | Db version | Allegro db schema version |
++=====================+============+===========================+
++ 2.3 + 2013.06.04 + 3.2.1.01 +
++---------------------+------------+---------------------------+
++ 2.4 + 2013.08.22 + 3.2.3 +
++---------------------+------------+---------------------------+
+
+Légende :
+
+- *Application version* : Version de l'applicatif
+- *Db version* : Version de la dernière base disponible sur le réseau en
+ téléchargement ou pour mise à jour.
+- *Allegro db schema version* : Version du schéma compatible avec l'applicatif
+ (fourni par adagio).
Property changes on: trunk/src/site/rst/dbversions.rst
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/src/site/site_fr.xml 2013-08-22 18:08:02 UTC (rev 1164)
@@ -109,6 +109,7 @@
<item name="Référentiel" href="./referential.html"/>
<item name="Mise à jour des versions" href="./update.html"/>
<item name="Correspondance Ecrans/BDD" href="./mapping.html"/>
+ <item name="Versions de base" href="./dbversions.html"/>
</menu>
<menu ref="reports"/>
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -49,6 +49,7 @@
import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.service.TuttiEnumerationFile;
+import org.nuiton.util.Version;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
@@ -77,6 +78,10 @@
*/
void clearAllCaches();
+ /**
+ * @return the enumeration file (where all constant mapping are defined).
+ * @since 2.4
+ */
TuttiEnumerationFile getEnumerationFile();
/**
@@ -88,11 +93,17 @@
* @param call call to invoke
* @param <V> return type
* @return the return of the call
- * @since 2.5
+ * @since 2.4
*/
@Transactional(readOnly = false)
<V> V invoke(Callable<V> call);
+ Version getDbVersion();
+
+ Version getApplicationVersion();
+
+ void updateSchema();
+
//------------------------------------------------------------------------//
//-- Referential methods --//
//------------------------------------------------------------------------//
@@ -237,7 +248,7 @@
/**
* @return all caracteristics of the system useable for {@link SampleCategoryModel}.
- * @since 2.5
+ * @since 2.4
*/
List<Caracteristic> getAllCaracteristicForSampleCategory();
@@ -536,7 +547,7 @@
* @param sampleCategoryModel [optional] sample category model to check
* @return the list of root {@link SpeciesBatch}
* @throws InvalidBatchModelException if batch does not respect the sample category model
- * @since 2.5
+ * @since 2.4
*/
BatchContainer<SpeciesBatch> getRootSpeciesBatch(String fishingOperationId,
SampleCategoryModel sampleCategoryModel) throws InvalidBatchModelException;
@@ -594,7 +605,7 @@
* @param sampleCategoryModel [optional] sample category model to check
* @return the list of root {@link BenthosBatch}
* @throws InvalidBatchModelException if batch does not respect the sample category model
- * @since 2.5
+ * @since 2.4
*/
BatchContainer<BenthosBatch> getRootBenthosBatch(String fishingOperationId,
SampleCategoryModel sampleCategoryModel) throws InvalidBatchModelException;
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -26,6 +26,9 @@
import com.google.common.base.Predicate;
import com.google.common.collect.Maps;
+import fr.ifremer.adagio.core.dao.technical.DatabaseSchemaDao;
+import fr.ifremer.adagio.core.dao.technical.DatabaseSchemaUpdateException;
+import fr.ifremer.adagio.core.dao.technical.VersionNotFoundException;
import fr.ifremer.adagio.core.service.technical.CacheService;
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
@@ -71,6 +74,8 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.Version;
+import org.nuiton.util.VersionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.File;
@@ -128,6 +133,9 @@
@Autowired
protected CacheService cacheService;
+ @Autowired
+ protected DatabaseSchemaDao databaseSchemaDao;
+
protected Predicate<SpeciesBatch> speciesBatchVracPredicate;
protected Predicate<BenthosBatch> benthosBatchVracPredicate;
@@ -163,6 +171,40 @@
}
@Override
+ public Version getDbVersion() {
+ Version version = getDbVersion0();
+ return version;
+ }
+
+ private Version getDbVersion0() {
+ fr.ifremer.adagio.core.dao.technical.Version version;
+ try {
+ version = databaseSchemaDao.getSchemaVersion();
+ } catch (VersionNotFoundException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Could not find db version", e);
+ }
+ version = null;
+ }
+ return version == null ? null : VersionUtil.valueOf(version.toString());
+ }
+
+ @Override
+ public Version getApplicationVersion() {
+ fr.ifremer.adagio.core.dao.technical.Version version = databaseSchemaDao.getSchemaVersionIfUpdate();
+ return VersionUtil.valueOf(version.toString());
+ }
+
+ @Override
+ public void updateSchema() {
+ try {
+ databaseSchemaDao.updateSchema();
+ } catch (DatabaseSchemaUpdateException e) {
+ throw new TuttiTechnicalException(e.getCause());
+ }
+ }
+
+ @Override
public void init() {
if (log.isInfoEnabled()) {
log.info("Open persistence driver " + getImplementationName());
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -49,6 +49,7 @@
import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.service.TuttiEnumerationFile;
+import org.nuiton.util.Version;
import java.io.File;
import java.io.IOException;
@@ -79,6 +80,21 @@
}
@Override
+ public Version getDbVersion() {
+ throw notImplemented();
+ }
+
+ @Override
+ public Version getApplicationVersion() {
+ throw notImplemented();
+ }
+
+ @Override
+ public void updateSchema() {
+ throw notImplemented();
+ }
+
+ @Override
public boolean isVracSpeciesBatch(SpeciesBatch speciesBatch) {
throw notImplemented();
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/SampleCategoryModelConverter.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/SampleCategoryModelConverter.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/SampleCategoryModelConverter.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -42,7 +42,7 @@
* Each entry is a couple (categoryId,label).
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class SampleCategoryModelConverter implements Converter {
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-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -83,8 +83,9 @@
TuttiIOUtil.forceMkdir(directory, _("tutti.persistence.mkDir.error", directory));
directory = getProtocolDirectory();
TuttiIOUtil.forceMkdir(directory, _("tutti.persistence.mkDir.error", directory));
+ directory = getDbBackupDirectory();
+ TuttiIOUtil.forceMkdir(directory, _("tutti.persistence.mkDir.error", directory));
-
// add a predicate to search the configuration file from his directory instead of the class-path
resourceLoader.addSearchInDirectoriesPredicate(new Predicate<String>() {
@@ -130,6 +131,10 @@
return config.getOptionAsFile(TuttiPersistenceConfigOption.DB_CACHE_DIRECTORY.getKey());
}
+ public File getDbBackupDirectory() {
+ return config.getOptionAsFile(TuttiPersistenceConfigOption.DB_BACKUP_DIRECTORY.getKey());
+ }
+
public File getProtocolDirectory() {
return config.getOptionAsFile(TuttiPersistenceConfigOption.DB_PROTOCOL_DIRECTORY.getKey());
}
@@ -177,18 +182,18 @@
}
public boolean isHibernateShowSql() {
- Boolean result = config.getOptionAsBoolean(TuttiPersistenceConfigOption.HIBERNATE_SHOW_SQL.getKey());
- return result != null && result;
+ boolean result = config.getOptionAsBoolean(TuttiPersistenceConfigOption.HIBERNATE_SHOW_SQL.getKey());
+ return result;
}
public boolean isHibernateUseSqlComment() {
- Boolean result = config.getOptionAsBoolean(TuttiPersistenceConfigOption.HIBERNATE_USE_SQL_COMMENT.getKey());
- return result != null && result;
+ boolean result = config.getOptionAsBoolean(TuttiPersistenceConfigOption.HIBERNATE_USE_SQL_COMMENT.getKey());
+ return result;
}
public boolean isHibernateFormatSql() {
- Boolean result = config.getOptionAsBoolean(TuttiPersistenceConfigOption.HIBERNATE_FORMAT_SQL.getKey());
- return result != null && result;
+ boolean result = config.getOptionAsBoolean(TuttiPersistenceConfigOption.HIBERNATE_FORMAT_SQL.getKey());
+ return result;
}
public ApplicationConfig getConfig() {
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-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -46,6 +46,7 @@
n_("tutti.config.option.persistence.db.directory.description"),
"${tutti.data.directory}/db",
File.class),
+
DB_ATTACHMENT_DIRECTORY(
"tutti.persistence.db.attachment.directory",
n_("tutti.config.option.persistence.db.attachment.directory.description"),
@@ -64,6 +65,12 @@
"${tutti.data.directory}/protocol",
File.class),
+ DB_BACKUP_DIRECTORY(
+ "tutti.persistence.db.backup.directory",
+ n_("tutti.config.option.persistence.db.backup.directory.description"),
+ "${tutti.data.directory}/dbbackup",
+ File.class),
+
DB_CONFIGURATION_PATH(
"tutti.persistence.db.configurationPath",
n_("tutti.config.option.persistence.db.configurationPath.description"),
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -43,7 +43,7 @@
/**
* Sample category definition.
*
- * @since 2.5
+ * @since 2.4
*/
protected SampleCategoryModelEntry categoryDef;
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModel.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModel.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -38,7 +38,7 @@
* Define the complete sample category model.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class SampleCategoryModel implements Serializable {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModelEntry.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModelEntry.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategoryModelEntry.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -38,7 +38,7 @@
* It just wrap the underligned category, his order and his label.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class SampleCategoryModelEntry implements Comparable<SampleCategoryModelEntry>, Serializable {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocol1.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocol1.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocol1.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -34,7 +34,7 @@
* To migrate old species protocol to last version.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
@Generated(value = "org.nuiton.eugene.java.SimpleJavaBeanTransformer", date = "Wed Jul 24 16:30:03 CEST 2013")
public interface SpeciesProtocol1 extends TuttiEntity {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocolBean1.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocolBean1.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/SpeciesProtocolBean1.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -32,7 +32,7 @@
* To migrate old species protocol to last version.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
@Generated(value = "org.nuiton.eugene.java.SimpleJavaBeanTransformer", date = "Wed Jul 24 16:08:49 CEST 2013")
public class SpeciesProtocolBean1 extends TuttiEntityBean implements SpeciesProtocol1 {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocol1.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocol1.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocol1.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -35,7 +35,7 @@
* To migrate old protocol to last version.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
@Generated(value = "org.nuiton.eugene.java.SimpleJavaBeanTransformer", date = "Wed Jul 24 16:08:49 CEST 2013")
public interface TuttiProtocol1 extends CommentAware, TuttiEntity {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocolBean1.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocolBean1.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v1/TuttiProtocolBean1.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -34,7 +34,7 @@
* To migrate old protocol to last version.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
@Generated(value = "org.nuiton.eugene.java.SimpleJavaBeanTransformer", date = "Wed Jul 24 16:08:49 CEST 2013")
public class TuttiProtocolBean1 extends TuttiEntityBean implements TuttiProtocol1 {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -206,7 +206,7 @@
/**
* @return all caracteristics of the system useable for {@link SampleCategoryModel}.
- * @since 2.5
+ * @since 2.4
*/
List<Caracteristic> getAllCaracteristicForSampleCategory();
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceService.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -58,7 +58,7 @@
* @param sampleCategoryModel [optional] sample category model to check
* @return the list of root {@link SpeciesBatch}
* @throws InvalidBatchModelException if batch does not respect the sample category model
- * @since 2.5
+ * @since 2.4
*/
BatchContainer<SpeciesBatch> getRootSpeciesBatch(String fishingOperationId,
SampleCategoryModel sampleCategoryModel) throws InvalidBatchModelException;
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/TuttiCatchBatchValidator.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/TuttiCatchBatchValidator.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/TuttiCatchBatchValidator.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -37,7 +37,7 @@
* Override adagio validator to add a validate within a {@link SampleCategoryModel}.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public interface TuttiCatchBatchValidator extends CatchBatchValidator {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseFixtures.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -47,6 +47,8 @@
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
import org.junit.Assert;
+import org.nuiton.util.Version;
+import org.nuiton.util.VersionUtil;
import java.io.Serializable;
import java.util.Calendar;
@@ -62,6 +64,10 @@
*/
public class DatabaseFixtures {
+ public Version lastAdagioSchemaVersion() {return VersionUtil.valueOf("3.2.3"); }
+
+ public Version currentAdagioSchemaVersion() {return VersionUtil.valueOf("3.2.1.01"); }
+
public String programCode() {
// campaign CGFS
return "CAM-CGFS";
@@ -173,7 +179,7 @@
}
public String refSpeciesRefTaxCode() {
- return "SEPIOFF ";
+ return "SEPIOFF";
}
public String refSpeciesVernacularCode() {
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/test/DatabaseResource.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -31,6 +31,7 @@
import com.google.common.collect.Sets;
import com.google.common.io.Files;
import fr.ifremer.tutti.persistence.RessourceClassLoader;
+import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfigOption;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
@@ -73,9 +74,6 @@
/** Logger. */
private static final Log log = LogFactory.getLog(DatabaseResource.class);
- public static final String TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT =
- "tutti.persistence.jdbc.createScript";
-
public static long BUILD_TIMESTAMP = System.nanoTime();
private static ClassLoader oldClassLoader;
@@ -96,6 +94,8 @@
private String dbName;
+ private boolean destroyResources;
+
public static DatabaseResource readDb() {
return new DatabaseResource("");
}
@@ -152,6 +152,13 @@
return new File(resourceDirectory, name);
}
+ public void setDestroyResources(boolean destroyResources) {
+ this.destroyResources = destroyResources;
+ }
+
+ public void updateSchema(TuttiPersistence persistenceService) {
+
+ }
@Override
public Statement apply(final Statement base, final Description description) {
@@ -234,9 +241,18 @@
}
configFilename += ".properties";
InputStream resourceAsStream = getClass().getResourceAsStream("/" + configFilename);
- Preconditions.checkNotNull(resourceAsStream, "Could not find " + configFilename + " in test class-path");
- ApplicationConfig applicationConfig = new ApplicationConfig(configFilename);
+ ApplicationConfig applicationConfig;
+
+ if (resourceAsStream == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("No configuration file found in classpath at " + configFilename);
+ }
+ applicationConfig = new ApplicationConfig();
+ } else {
+ applicationConfig = new ApplicationConfig(configFilename);
+ }
+
prepareConfig(applicationConfig, resourceDirectory);
applicationConfig.parse();
@@ -249,7 +265,7 @@
// check db exist in src/test/dbName
- db = new File("src/test/" + dbName);
+ db = FileUtil.getFileFromPaths(new File("src"), "test", dbName);
} else {
// check config.dbDirectory exist
@@ -267,7 +283,7 @@
}
if (writeDb) {
- copyDb(config.getDbDirectory(), !writeDb, null);
+ copyDb(config.getDbDirectory(), false, null);
}
toDetroy.add(config.getDbAttachmentDirectory());
@@ -327,7 +343,7 @@
}
public void copyDb(File target, boolean readonly, Properties p) throws IOException {
- File db = new File("src/test/" + dbName);
+ File db = FileUtil.getFileFromPaths(new File("src"), "test", dbName);
if (!db.exists()) {
if (log.isWarnEnabled()) {
@@ -371,7 +387,7 @@
Set<Failure> failures = TuttiRunListener.getFailuresForClass(
description.getClassName());
- if (failures.isEmpty()) {
+ if (destroyResources && failures.isEmpty()) {
// can destroy directories
for (File file : toDetroy) {
@@ -389,8 +405,14 @@
}
}
} else {
- if (log.isWarnEnabled()) {
- log.warn("Won't destroy directories cause of failures in test.");
+ if (!destroyResources) {
+ if (log.isWarnEnabled()) {
+ log.warn("Won't destroy directories (destroyResources flag was false).");
+ }
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Won't destroy directories cause of failures in test.");
+ }
}
}
@@ -414,25 +436,10 @@
}
public Connection createEmptyDb(String dbDirectory,
- String dbName) throws IOException, SQLException {
- return createEmptyDb(dbDirectory, dbName, null);
- }
-
- public Connection createEmptyDb(String dbDirectory,
- String dbName, Properties p) throws IOException, SQLException {
- File externalDbFile = getResourceDirectory(dbDirectory);
- return createEmptyDb(externalDbFile, dbName, p);
- }
-
- public Connection createEmptyDb(File directory,
- String dbName) throws SQLException, IOException {
-
- return createEmptyDb(directory, dbName, null);
- }
-
- public Connection createEmptyDb(File directory,
- String dbName, Properties p) throws SQLException, IOException {
-
+ String scriptDbname,
+ String dbName,
+ Properties p) throws IOException, SQLException {
+ File directory = getResourceDirectory(dbDirectory);
if (log.isInfoEnabled()) {
log.info("Create new db at " + directory);
}
@@ -444,9 +451,10 @@
if (p != null) {
TuttiEntities.fillConnectionProperties(p, jdbcUrl, user, password);
}
- File scriptFile = config.getConfig().getOptionAsFile(TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT);
- Preconditions.checkNotNull("Could not find db script in configuration with key " + TUTTI_PERSISTENCE_JDBC_CREATE_SCRIPT);
+ File scriptFile = FileUtil.getFileFromPaths(new File("src"), "test", scriptDbname, "allegro.script");
+
+ Preconditions.checkNotNull("Could not find db script in configuration at " + scriptFile);
Preconditions.checkState(scriptFile.exists(), "Could not find db script at " + scriptFile);
if (log.isInfoEnabled()) {
Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -3,6 +3,7 @@
tutti.common.protocol.categories.not.compatible=
tutti.config.option.persistence.SampleCategoryModel.description=
tutti.config.option.persistence.db.attachment.directory.description=
+tutti.config.option.persistence.db.backup.directory.description=
tutti.config.option.persistence.db.cache.directory.description=
tutti.config.option.persistence.db.configurationPath.description=
tutti.config.option.persistence.db.directory.description=
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-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -3,6 +3,7 @@
tutti.common.protocol.categories.not.compatible=Le protocole utilise des catégories non connues par la configuration des catégorisations \: <ul>%s</ul>
tutti.config.option.persistence.SampleCategoryModel.description=Configuration des catégories d'échantillonnage
tutti.config.option.persistence.db.attachment.directory.description=Répertoire où sont stockées les pièces-jointes
+tutti.config.option.persistence.db.backup.directory.description=Répertoire où sont enregistrées les sauvegardes de la base
tutti.config.option.persistence.db.cache.directory.description=Répertoire où sont stockées les caches de persistance
tutti.config.option.persistence.db.configurationPath.description=Chemin du fichier de configuration d'Adagio
tutti.config.option.persistence.db.directory.description=Répertoire où est la base de données
Modified: trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -47,4 +47,7 @@
hibernate.query.substitutions=true 1, false 0
hibernate.hbm2ddl.auto=none
hibernate.default_batch_fetch_size=1
-adagio.cache.use_tree_cache=true
\ No newline at end of file
+adagio.cache.use_tree_cache=true
+
+# migration configuration
+liquibase.should.run=false
\ No newline at end of file
Property changes on: trunk/tutti-persistence/src/test
___________________________________________________________________
Modified: svn:ignore
- db
dbEmpty
+ db*
Added: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceWriteTest.java (rev 0)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceWriteTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -0,0 +1,70 @@
+package fr.ifremer.tutti.persistence;
+
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.nuiton.util.Version;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4
+ */
+@Ignore
+public class TuttiPersistenceWriteTest {
+
+ @ClassRule
+ public static final DatabaseResource dbResource =
+ DatabaseResource.writeDb("db_3.2.1.01");
+
+ protected TuttiPersistence persistence;
+
+ @Before
+ public void setUp() throws Exception {
+ persistence = TuttiPersistenceServiceLocator.getPersistenceService();
+ }
+
+ @Test
+ public void updateSchema() {
+
+ dbResource.setDestroyResources(false);
+
+ Version dbVersion = persistence.getDbVersion();
+ Assert.assertEquals(dbResource.getFixtures().currentAdagioSchemaVersion(), dbVersion);
+
+ Version applicationVersion = persistence.getApplicationVersion();
+ Assert.assertEquals(dbResource.getFixtures().lastAdagioSchemaVersion(), applicationVersion);
+
+ persistence.updateSchema();
+
+ Version newDbVersion = persistence.getDbVersion();
+ Assert.assertEquals(applicationVersion, newDbVersion);
+ }
+}
Property changes on: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceWriteTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigTest.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -42,7 +42,7 @@
/**
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class TuttiPersistenceConfigTest {
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -24,8 +24,8 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
@@ -66,15 +66,14 @@
@Test
public void getProgram(/*String id*/) {
String programCode = dbResource.getFixtures().programCode();
+ String zoneId = dbResource.getFixtures().zoneId();
Program actual = service.getProgram(programCode);
Assert.assertNotNull(actual);
Assert.assertNotNull(actual.getId());
Assert.assertNotNull(actual.getName());
Assert.assertNotNull(actual.getDescription());
- //FIXME-TC Change to NotNull when CGFS data will be ok
- //FIXME-TC See http://forge.codelutin.com/issues/2221
-// Assert.assertNotNull(actual.getZone());
- Assert.assertNull(actual.getZone());
+ Assert.assertNotNull(actual.getZone());
+ Assert.assertEquals(zoneId, actual.getZone().getId());
Assert.assertEquals(programCode, actual.getId());
}
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -922,6 +922,7 @@
protected void createExternalDb() throws IOException, SQLException {
externalConnection = dbResource.createEmptyDb(
n.getMethodName(),
+ "db",
"newDb",
externalConnectionProperties = new Properties());
Assert.assertNotNull(externalConnection);
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceCopyTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -24,11 +24,10 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.test.DatabaseResource;
import fr.ifremer.tutti.persistence.ProgressionModel;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
-import org.hibernate.dialect.Dialect;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -77,7 +76,7 @@
protected Connection localConnection;
- private Dialect dialect;
+// private Dialect dialect;
protected ReferentialSynchronizeHelper helper;
@@ -92,7 +91,7 @@
// create grab local stuff
localConnectionProperties = service.getLocalConnectionProperties();
- dialect = service.getLocalDialect();
+// dialect = service.getLocalDialect();
// create read-only remote db
remoteConnectionProperties = new Properties();
@@ -116,10 +115,9 @@
}
service = null;
remoteConnectionProperties = null;
- dialect = null;
+// dialect = null;
helper = null;
JdbcUtils.closeConnection(localConnection);
-
JdbcUtils.closeConnection(remoteConnection);
}
Modified: trunk/tutti-persistence/src/test/resources/tutti-test-read-dbEmpty.properties
===================================================================
--- trunk/tutti-persistence/src/test/resources/tutti-test-read-dbEmpty.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/test/resources/tutti-test-read-dbEmpty.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -24,4 +24,4 @@
tutti.persistence.db.directory=src/test/dbEmpty
tutti.persistence.jdbc.url=jdbc:hsqldb:file:src/test/dbEmpty/allegro
#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
-tutti.persistence.jdbc.createScript=src/test/dbEmpty/allegro.script
+#tutti.persistence.jdbc.createScript=src/test/dbEmpty/allegro.script
Modified: trunk/tutti-persistence/src/test/resources/tutti-test-read.properties
===================================================================
--- trunk/tutti-persistence/src/test/resources/tutti-test-read.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/test/resources/tutti-test-read.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -24,4 +24,4 @@
tutti.persistence.db.directory=src/test/db
tutti.persistence.jdbc.url=jdbc:hsqldb:file:src/test/db/allegro
#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
-tutti.persistence.jdbc.createScript=src/test/db/allegro.script
+#tutti.persistence.jdbc.createScript=src/test/db/allegro.script
Deleted: trunk/tutti-persistence/src/test/resources/tutti-test-write-dbEmpty.properties
===================================================================
--- trunk/tutti-persistence/src/test/resources/tutti-test-write-dbEmpty.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/test/resources/tutti-test-write-dbEmpty.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -1,24 +0,0 @@
-###
-# #%L
-# Tutti :: Persistence API
-# $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%
-###
-tutti.persistence.jdbc.createScript=src/test/dbEmpty/allegro.script
Deleted: trunk/tutti-persistence/src/test/resources/tutti-test-write.properties
===================================================================
--- trunk/tutti-persistence/src/test/resources/tutti-test-write.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-persistence/src/test/resources/tutti-test-write.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -1,24 +0,0 @@
-###
-# #%L
-# Tutti :: Persistence API
-# $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%
-###
-tutti.persistence.jdbc.createScript=src/test/db/allegro.script
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -64,6 +64,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.commons.vfs2.AllFileSelector;
import org.apache.commons.vfs2.FileObject;
+import org.nuiton.util.Version;
import java.io.File;
import java.io.IOException;
@@ -118,6 +119,21 @@
return driver.invoke(call);
}
+ @Override
+ public Version getDbVersion() {
+ return driver.getDbVersion();
+ }
+
+ @Override
+ public Version getApplicationVersion() {
+ return driver.getApplicationVersion();
+ }
+
+ @Override
+ public void updateSchema() {
+ driver.updateSchema();
+ }
+
public static final DateFormat EXPORT_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
public static final String EXPORT_DIRECTORY_FORMAT = "tutti-%s-%s";
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -114,7 +114,7 @@
/**
* Model of sampling as defined in configuration.
*
- * @since 2.5
+ * @since 2.4
*/
protected SampleCategoryModel sampleCategoryModel;
Property changes on: trunk/tutti-service/src/test
___________________________________________________________________
Modified: svn:ignore
- dbCGFS
dbExport
+ db*
Added: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/UpdateSchemaTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/UpdateSchemaTest.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/UpdateSchemaTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -0,0 +1,73 @@
+package fr.ifremer.tutti.service;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.TuttiPersistence;
+import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
+import fr.ifremer.tutti.persistence.test.DatabaseResource;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.nuiton.util.Version;
+
+/**
+ * Pour mettre à jour le schéma d'une base de test.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4
+ */
+@Ignore
+public class UpdateSchemaTest {
+
+ @ClassRule
+ public static final DatabaseResource dbResource =
+ DatabaseResource.writeDb("dbCGFS_old");
+
+ protected TuttiPersistence persistence;
+
+ @Before
+ public void setUp() throws Exception {
+ persistence = TuttiPersistenceServiceLocator.getPersistenceService();
+ }
+
+ @Test
+ public void updateSchema() {
+
+ dbResource.setDestroyResources(false);
+
+ Version dbVersion = persistence.getDbVersion();
+ Assert.assertEquals(dbResource.getFixtures().currentAdagioSchemaVersion(), dbVersion);
+
+ Version applicationVersion = persistence.getApplicationVersion();
+ Assert.assertEquals(dbResource.getFixtures().lastAdagioSchemaVersion(), applicationVersion);
+
+ persistence.updateSchema();
+
+ Version newDbVersion = persistence.getDbVersion();
+ Assert.assertEquals(applicationVersion, newDbVersion);
+ }
+}
Property changes on: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/UpdateSchemaTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostExportServiceTest.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostExportServiceTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -37,7 +37,7 @@
/**
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
* //FIXME Add more data in db
*/
public class TuttiMultiPostExportServiceTest {
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportServiceTest.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportServiceTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -41,7 +41,7 @@
/**
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class TuttiPupitriImportExportServiceTest {
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/TuttiCatchesSumatraExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/TuttiCatchesSumatraExportServiceTest.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/sumatra/TuttiCatchesSumatraExportServiceTest.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -34,7 +34,7 @@
/**
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class TuttiCatchesSumatraExportServiceTest {
Modified: trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties
===================================================================
--- trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/test/resources/tutti-test-read-dbCGFS.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -23,5 +23,4 @@
###
tutti.persistence.db.directory=src/test/dbCGFS
tutti.persistence.jdbc.url=jdbc:hsqldb:file:src/test/dbCGFS/allegro
-#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
-#tutti.persistence.jdbc.createScript=src/test/dbEmpty/allegro.script
\ No newline at end of file
+#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
\ No newline at end of file
Modified: trunk/tutti-service/src/test/resources/tutti-test-read-dbExport.properties
===================================================================
--- trunk/tutti-service/src/test/resources/tutti-test-read-dbExport.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/test/resources/tutti-test-read-dbExport.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -23,5 +23,4 @@
###
tutti.persistence.db.directory=src/test/dbExport
tutti.persistence.jdbc.url=jdbc:hsqldb:file:src/test/dbExport/allegro
-#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
-#tutti.persistence.jdbc.createScript=src/test/dbEmpty/allegro.script
\ No newline at end of file
+#tutti.persistence.jdbc.url=jdbc:hsqldb:hsql://localhost/allegro
\ No newline at end of file
Deleted: trunk/tutti-service/src/test/resources/tutti-test-write-dbCGFS.properties
===================================================================
--- trunk/tutti-service/src/test/resources/tutti-test-write-dbCGFS.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/test/resources/tutti-test-write-dbCGFS.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -1,24 +0,0 @@
-###
-# #%L
-# Tutti :: Service
-# $Id$
-# $HeadURL$
-# %%
-# Copyright (C) 2012 - 2013 Ifremer
-# %%
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with this program. If not, see
-# <http://www.gnu.org/licenses/gpl-3.0.html>.
-# #L%
-###
-tutti.persistence.jdbc.createScript=src/test/dbCGFS/allegro.script
\ No newline at end of file
Deleted: trunk/tutti-service/src/test/resources/tutti-test-write-dbExport.properties
===================================================================
--- trunk/tutti-service/src/test/resources/tutti-test-write-dbExport.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-service/src/test/resources/tutti-test-write-dbExport.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -1,24 +0,0 @@
-###
-# #%L
-# Tutti :: Service
-# $Id$
-# $HeadURL$
-# %%
-# Copyright (C) 2012 - 2013 Ifremer
-# %%
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with this program. If not, see
-# <http://www.gnu.org/licenses/gpl-3.0.html>.
-# #L%
-###
-tutti.persistence.jdbc.createScript=src/test/dbExport/allegro.script
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -43,7 +43,7 @@
/**
* To edit {@link SampleCategoryModel}.
*
- * @since 2.5
+ * @since 2.4
*/
EDIT_SAMPLE_CATEGORY_MODEL,
/**
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/EditSampleCategoryModelAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/EditSampleCategoryModelAction.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/EditSampleCategoryModelAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -32,7 +32,7 @@
* To show {@link TuttiScreen#EDIT_SAMPLE_CATEGORY_MODEL} config screen.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class EditSampleCategoryModelAction extends AbstractChangeScreenAction {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -39,7 +39,8 @@
import fr.ifremer.tutti.ui.swing.content.cruise.EditCruiseUIHandler;
import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUI;
import fr.ifremer.tutti.ui.swing.content.db.DbManagerUI;
-import fr.ifremer.tutti.ui.swing.content.db.OpenDbAction;
+import fr.ifremer.tutti.ui.swing.content.db.LoadDbAction;
+import fr.ifremer.tutti.ui.swing.content.db.MigrateDbSchemaAction;
import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI;
@@ -212,10 +213,19 @@
if (context.isDbExist()) {
// open tutti db (using a fake button to have simple api)
- TuttiUIAction<OpenDbAction> uiAction = TuttiActionHelper.createUIAction(this, OpenDbAction.class);
- OpenDbAction logicAction = uiAction.getLogicAction();
- logicAction.setSkipCheckCurrentScreen(true);
- uiAction.actionPerformed(null);
+// TuttiUIAction<LoadDbAction> uiAction = TuttiActionHelper.createUIAction(this, LoadDbAction.class);
+// LoadDbAction logicAction = uiAction.getLogicAction();
+// logicAction.setSkipCheckCurrentScreen(true);
+ TuttiActionHelper.runActionAndWait(this, LoadDbAction.class);
+// uiAction.actionPerformed(null);
+
+ // try to update schema
+
+ TuttiUIAction<MigrateDbSchemaAction> uiAction2 = TuttiActionHelper.createUIAction(this, MigrateDbSchemaAction.class);
+ MigrateDbSchemaAction logicAction2 = uiAction2.getLogicAction();
+ logicAction2.setSkipCheckCurrentScreen(true);
+ uiAction2.actionPerformed(null);
+
} else {
// clean db context
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelTableModel.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelTableModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -36,7 +36,7 @@
* Model of table of {@link SampleCategoryModelEntry}.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class EditSampleCategoryModelTableModel extends AbstractTuttiTableModel<EditSampleCategoryModelRowModel> {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIHandler.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIHandler.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -55,7 +55,7 @@
* Handler of ui {@link EditSampleCategoryModelUI}.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class EditSampleCategoryModelUIHandler extends AbstractTuttiTableUIHandler<EditSampleCategoryModelRowModel, EditSampleCategoryModelUIModel, EditSampleCategoryModelUI> implements Cancelable, CloseableUI {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIModel.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelUIModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -40,7 +40,7 @@
* TODO
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class EditSampleCategoryModelUIModel extends AbstractTuttiTableUIModel<SampleCategoryModel, EditSampleCategoryModelRowModel, EditSampleCategoryModelUIModel> {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/SaveSampleCategoryModelAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/SaveSampleCategoryModelAction.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/SaveSampleCategoryModelAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -33,7 +33,7 @@
* To save the sample category model.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class SaveSampleCategoryModelAction extends AbstractTuttiAction<EditSampleCategoryModelUIModel, EditSampleCategoryModelUI, EditSampleCategoryModelUIHandler> {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -57,6 +57,10 @@
super(handler, true);
}
+ public void setFile(File file) {
+ this.file = file;
+ }
+
@Override
protected boolean prepareAction() throws Exception {
file = null;
@@ -65,8 +69,6 @@
if (doAction) {
// ask user file where to export db
-
- // choose file to import
file = saveFile(
"tutti-db-" + df.format(new Date()),
"zip",
@@ -76,6 +78,13 @@
);
doAction = file != null;
}
+
+ if (doAction) {
+
+ ProgressionModel progressionModel = new ProgressionModel();
+ setProgressionModel(progressionModel);
+ progressionModel.setTotal(3);
+ }
return doAction;
}
@@ -86,9 +95,7 @@
log.info("Will export db to " + file);
}
- ProgressionModel progressionModel = new ProgressionModel();
- setProgressionModel(progressionModel);
- progressionModel.setTotal(3);
+ ProgressionModel progressionModel = getProgressionModel();
// close db
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java (from rev 1154, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/LoadDbAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -0,0 +1,91 @@
+package fr.ifremer.tutti.ui.swing.content.db;
+
+/*
+ * #%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.TuttiBusinessException;
+import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
+import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * To load an existing db but do nothing in UI.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class LoadDbAction extends AbstractMainUITuttiAction {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(LoadDbAction.class);
+
+ public LoadDbAction(MainUIHandler handler) {
+ super(handler, true);
+ setActionDescription(_("tutti.dbManager.action.openDb.tip"));
+ }
+
+ @Override
+ public void doAction() throws Exception {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Will open db...");
+ }
+
+ try {
+ getContext().setDbLoaded(true);
+ getHandler().reloadPersistenceService();
+ } catch (Exception e) {
+
+ if (log.isErrorEnabled()) {
+ log.error("Could not open db", e);
+ }
+ // no more db
+ getContext().setDbLoaded(false);
+ getHandler().reloadPersistenceService();
+
+ // could not load db
+ throw new TuttiBusinessException(_("tutti.dbManager.action.openDb.couldNotOpen"));
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Check db context");
+ }
+ getContext().checkDbContext();
+
+// super.doAction();
+ }
+
+// @Override
+// public void postSuccessAction() {
+//
+// String jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
+// sendMessage(_("tutti.flash.info.db.opened", jdbcUrl));
+//
+// // make sure title is reloaded
+// getUI().getHandler().changeTitle();
+// }
+}
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -0,0 +1,169 @@
+package fr.ifremer.tutti.ui.swing.content.db;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.content.AbstractChangeScreenAction;
+import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.Version;
+
+import java.io.File;
+import java.util.Date;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * To migrate the schema of an existing database.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4
+ */
+public class MigrateDbSchemaAction extends AbstractChangeScreenAction {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(MigrateDbSchemaAction.class);
+
+ protected Version dbVersion;
+
+ protected Version applicationVersion;
+
+ protected File file;
+
+ protected boolean updateSchema;
+
+ public MigrateDbSchemaAction(MainUIHandler handler) {
+ super(handler, true, TuttiScreen.SELECT_CRUISE);
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+ dbVersion = applicationVersion = null;
+ updateSchema = false;
+ boolean doAction = super.prepareAction();
+
+ if (doAction) {
+
+ PersistenceService persistenceService =
+ getHandler().getPersistenceService();
+
+ dbVersion = persistenceService.getDbVersion();
+
+ applicationVersion = persistenceService.getApplicationVersion();
+
+ if (dbVersion.equals(applicationVersion)) {
+
+ // database schema is up to date
+ if (log.isInfoEnabled()) {
+ log.info("Database schema is up-to-date at version: " + dbVersion);
+ }
+ } else if (dbVersion.compareTo(applicationVersion) < 0) {
+
+ // database schema need to migrate
+ // ask user where to backup db
+
+ String message = _("tutti.dbManager.action.upgradeDb.schema.to.update.message", dbVersion, applicationVersion);
+ displayMessage(_("tutti.dbManager.title.schema.toupdate"), message);
+
+ // ask user file where to export db
+ while (file == null) {
+ file = saveFile(
+ "tutti-db-" + ExportDbAction.df.format(new Date()),
+ "zip",
+ _("tutti.dbManager.title.choose.dbExportFile"),
+ _("tutti.dbManager.action.chooseDbExportFile"),
+ "^.*\\.zip", _("tutti.common.file.zip")
+ );
+ }
+ updateSchema = true;
+
+ } else {
+
+ // database schema version is higher than application one
+ String message = _("tutti.dbManager.action.upgradeDb.schema.not.update.message", dbVersion, applicationVersion);
+ displayMessage(_("tutti.dbManager.title.schema.toupdate"), message);
+ }
+ }
+
+ if (doAction) {
+
+ ProgressionModel progressionModel = new ProgressionModel();
+ setProgressionModel(progressionModel);
+ progressionModel.setTotal(4);
+ }
+
+ return doAction;
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+
+ if (updateSchema) {
+
+ // do the backup
+
+ TuttiUIAction<ExportDbAction> backupAction =
+ TuttiActionHelper.createUIAction(getHandler(), ExportDbAction.class);
+ backupAction.getLogicAction().setProgressionModel(getProgressionModel());
+ backupAction.getLogicAction().setFile(file);
+ TuttiActionHelper.runInternalAction(backupAction.getLogicAction());
+
+ // update schema
+ String message = _("tutti.flash.info.db.schema.updating",
+ dbVersion, applicationVersion);
+
+ getProgressionModel().increments(1);
+ getProgressionModel().setMessage(message);
+ sendMessage(message);
+ getHandler().getPersistenceService().updateSchema();
+ }
+
+ super.doAction();
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ if (updateSchema) {
+ sendMessage(_("tutti.flash.info.db.schema.updated", dbVersion, applicationVersion));
+ }
+
+ String jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
+ sendMessage(_("tutti.flash.info.db.opened", jdbcUrl));
+
+ // make sure title is reloaded
+ getUI().getHandler().changeTitle();
+
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/MigrateDbSchemaAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -63,7 +63,7 @@
} catch (Exception e) {
if (log.isErrorEnabled()) {
- log.error("Could not open db",e);
+ log.error("Could not open db", e);
}
// no more db
getContext().setDbLoaded(false);
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-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -116,14 +116,14 @@
/**
* To keep catch validation error while loading batches.
*
- * @since 2.5
+ * @since 2.4
*/
protected List<String> errorMessages = Lists.newArrayList();
/**
* Flag to know if this action is part of another action.
*
- * @since 2.5
+ * @since 2.4
*/
protected boolean internalAction;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -126,7 +126,7 @@
* <strong>Note:</strong> When value is {@code false}, then
* {@link #catchEnabled} is always to {@code false} too.
*
- * @since 2.5
+ * @since 2.4
*/
protected boolean sampleCatchModelValid = true;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryAble.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryAble.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryAble.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -27,10 +27,10 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
/**
- * TODO
+ * Contract for model using {@link SampleCategory}.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public interface SampleCategoryAble<E extends SampleCategoryAble> {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -102,7 +102,7 @@
/**
* All categories(can not be null).
*
- * @since 2.5
+ * @since 2.4
*/
protected final SampleCategory<?>[] categories;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -72,7 +72,7 @@
/**
* First sample category.
*
- * @since 2.5
+ * @since 2.4
*/
protected CaracteristicQualitativeValue sampleCategory;
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-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -92,7 +92,7 @@
/**
* All categories(can not be null).
*
- * @since 2.5
+ * @since 2.4
*/
protected final SampleCategory<?>[] categories;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -71,7 +71,7 @@
/**
* First sample category.
*
- * @since 2.5
+ * @since 2.4
*/
protected CaracteristicQualitativeValue sampleCategory;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -86,7 +86,7 @@
/**
* Flag when a incoming protocol is cleaned.
*
- * @since 2.5
+ * @since 2.4
*/
protected boolean cleaned;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -116,7 +116,7 @@
this.actionDescription = actionDescription;
}
- protected void setProgressionModel(ProgressionModel progressionModel) {
+ public void setProgressionModel(ProgressionModel progressionModel) {
getContext().getActionUI().getModel().setProgressionModel(progressionModel);
}
@@ -196,7 +196,7 @@
* @param filters les filtres + descriptions sur le sélecteur de
* fichiers
* @return le fichier choisi ou le fichier incoming si l'opération a été
- * annulée
+ * annulée
*/
protected File chooseFile(String title,
String buttonLabel,
@@ -224,7 +224,7 @@
* @param filters les filtres + descriptions sur le sélecteur de
* fichiers
* @return le fichier choisi ou {@code null} si pas de fichier choisi ou
- * pas voulu écrasé un fichier existant.
+ * pas voulu écrasé un fichier existant.
*/
protected File saveFile(String filename,
String extension,
@@ -304,5 +304,12 @@
return result;
}
+ protected void displayMessage(String title, String message) {
+ JOptionPane.showMessageDialog(
+ getHandler().getTopestUI(),
+ message,
+ title,
+ JOptionPane.QUESTION_MESSAGE);
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/SaveAttachmentAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/SaveAttachmentAction.java 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/SaveAttachmentAction.java 2013-08-22 18:08:02 UTC (rev 1164)
@@ -37,7 +37,7 @@
* To persist a attachment.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.5
+ * @since 2.4
*/
public class SaveAttachmentAction extends AbstractTuttiAction<TuttiUIContext, AttachmentEditorUI, AttachmentEditorUIHandler> {
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -262,6 +262,8 @@
tutti.dbManager.action.upgradeDb.mnemonic=
tutti.dbManager.action.upgradeDb.opening=
tutti.dbManager.action.upgradeDb.reloading=
+tutti.dbManager.action.upgradeDb.schema.not.update.message=
+tutti.dbManager.action.upgradeDb.schema.to.update.message=
tutti.dbManager.action.upgradeDb.tip=
tutti.dbManager.action.upgradeDb.upToDate=
tutti.dbManager.info.db.loaded=
@@ -269,6 +271,7 @@
tutti.dbManager.info.no.db.loaded=
tutti.dbManager.title.choose.dbExportFile=
tutti.dbManager.title.choose.dbImportFile=
+tutti.dbManager.title.schema.toupdate=
tutti.editAccidentalBatch.action.createBatch=
tutti.editAccidentalBatch.action.createBatch.mnemonic=
tutti.editAccidentalBatch.action.createBatch.tip=
@@ -988,6 +991,8 @@
tutti.flash.info.db.exported.and.clean=
tutti.flash.info.db.imported=
tutti.flash.info.db.opened=
+tutti.flash.info.db.schema.updated=
+tutti.flash.info.db.schema.updating=
tutti.flash.info.programCreated=
tutti.flash.info.programSaved=
tutti.flash.info.protocolCreated=
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-08-09 10:08:54 UTC (rev 1163)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-08-22 18:08:02 UTC (rev 1164)
@@ -248,18 +248,22 @@
tutti.dbManager.action.installDb.tip=Télécharger puis installer la base de données
tutti.dbManager.action.openDb.couldNotOpen=Impossible d'ouvrir la base, elle est peut-être déjà utilisée par une autre application (ou une autre instance de l'application)
tutti.dbManager.action.openDb.tip=Ouvrir la base de données
+tutti.dbManager.action.removeBatch.confirm.message=
tutti.dbManager.action.upgradeDb=Mettre à jour les référentiels
tutti.dbManager.action.upgradeDb.check=Recherche des mises à jour de la base
tutti.dbManager.action.upgradeDb.mnemonic=V
tutti.dbManager.action.upgradeDb.opening=Ouverture de la base de données
tutti.dbManager.action.upgradeDb.reloading=Rechargement de la base de données
-tutti.dbManager.action.upgradeDb.tip=Mettre à jour les référentiels si nécessaire
+tutti.dbManager.action.upgradeDb.schema.not.update.message=<html><body>Votre base de données est en version %s et le bon fonctionnement de l'application est garanti sur une version plus ancienne (%s).<br/>Il se peut que l'application ne fonctionne pas correctement avec cette version de la base.<hr/>Nous vous recommandons \:<ul><li>De vérifier si une nouvelle version de l'application n'est pas disponible</li><li>De vous renseigner auprès des administrateurs de l'application</li></ul></body></html>
+tutti.dbManager.action.upgradeDb.schema.to.update.message=<html><body>Votre base de données est en version %s, et le bon fonctionnement de l'application est garanti sur une version plus récente (%s).<hr/>Une sauvegarde de la base va être effectuée avant la migration.</body></html>
+tutti.dbManager.action.upgradeDb.tip=
tutti.dbManager.action.upgradeDb.upToDate=Aucune mise à jour de base détectée
tutti.dbManager.info.db.loaded=Tutti est connecté à une base de données<hr/>Url de connexion \: <strong>%s</strong>
tutti.dbManager.info.no.db.exist=Aucune base détectée, vous pouvez installer la dernière disponible sur le réseau ou bien en importer une
tutti.dbManager.info.no.db.loaded=L'application possède une base (<strong>%s</strong>).<br/>Elle n'a pas pu être ouverte, elle doit être probablement utilisée par une autre application.<hr/>Quitter les applications l'utilisant puis redémarrer
tutti.dbManager.title.choose.dbExportFile=Exporter la base de données
tutti.dbManager.title.choose.dbImportFile=Importer la base de données
+tutti.dbManager.title.schema.toupdate=Mise à jour de la base détéctée
tutti.editAccidentalBatch.action.createBatch=Créer une capture accidentelle
tutti.editAccidentalBatch.action.createBatch.mnemonic=C
tutti.editAccidentalBatch.action.createBatch.tip=Créer une capture accidentelle
@@ -976,6 +980,8 @@
tutti.flash.info.db.exported.and.clean=Base exportée dans l'archive <strong>%s</strong>.
tutti.flash.info.db.imported=La base de données <strong>%s</strong> est importée.
tutti.flash.info.db.opened=La base de données <strong>%s</strong> est ouverte.
+tutti.flash.info.db.schema.updated=Le schéma de la base (version %s) a été mise à jour vers la version %s
+tutti.flash.info.db.schema.updating=Démarrage de la mise à jour du schéma de la base depuis la version %s vers la version %s
tutti.flash.info.programCreated=La série de campagne <strong>%s</strong> a été créée.
tutti.flash.info.programSaved=La série de campagne <strong>%s</strong> a été enregistrée.
tutti.flash.info.protocolCreated=Le protocole <strong>%s</strong> a été créé.
1
0
Author: tchemit
Date: 2013-08-09 12:08:54 +0200 (Fri, 09 Aug 2013)
New Revision: 1163
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1163
Log:
updates mavenpom to 4.0
Modified:
trunk/pom.xml
trunk/tutti-ui-swing/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-07-31 18:19:34 UTC (rev 1162)
+++ trunk/pom.xml 2013-08-09 10:08:54 UTC (rev 1163)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>3.4.13</version>
+ <version>4.0</version>
</parent>
<groupId>fr.ifremer</groupId>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-07-31 18:19:34 UTC (rev 1162)
+++ trunk/tutti-ui-swing/pom.xml 2013-08-09 10:08:54 UTC (rev 1163)
@@ -85,6 +85,9 @@
<tutti.log.file>
\$\{java.io.tmpdir\}/tutti-${project.version}.log
</tutti.log.file>
+
+ <!-- Post Release configuration -->
+ <skipPostRelease>false</skipPostRelease>
</properties>
1
0