r1365 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: content content/db util/action
Author: tchemit Date: 2013-11-20 09:11:09 +0100 (Wed, 20 Nov 2013) New Revision: 1365 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1365 Log: fixes #3841: [TECH] Am?\195?\169lioration du d?\195?\169marrage de l'application 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/StartAction.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/TuttiActionHelper.java 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-11-19 18:25:58 UTC (rev 1364) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-11-20 08:11:09 UTC (rev 1365) @@ -40,7 +40,6 @@ 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.DbManagerUIHandler; -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; @@ -54,9 +53,7 @@ import fr.ifremer.tutti.ui.swing.util.RemoveablePropertyChangeListener; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper; import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI; -import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction; import jaxx.runtime.JAXXBinding; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.session.SwingSession; @@ -106,9 +103,10 @@ public void reloadDbManagerText() { - AbstractTuttiUIHandler currentHandler = getCurrentHandler(); - if (currentHandler instanceof DbManagerUIHandler) { - DbManagerUIHandler dbManagerUIHandler = (DbManagerUIHandler) currentHandler; + TuttiUI<?, ?> body = (TuttiUI<?, ?>) currentBody; + + if (body != null && body.getHandler() instanceof DbManagerUIHandler) { + DbManagerUIHandler dbManagerUIHandler = (DbManagerUIHandler) body.getHandler(); dbManagerUIHandler.updateMessage(); } } @@ -207,37 +205,6 @@ JToolBar bar = ui.getBottomBar(); ui.getStatus().addWidget(bar, 0); - - if (context.isDbLoaded()) { - - // db already opened (happens when reloading ui) - // just go to select cruise screen - TuttiUIAction<SelectCruiseAction> uiAction = TuttiActionHelper.createUIAction(this, SelectCruiseAction.class); - SelectCruiseAction logicAction = uiAction.getLogicAction(); - logicAction.setSkipCheckCurrentScreen(true); - logicAction.setActionDescription(ui.getMenuActionSelectCruise().getToolTipText()); - uiAction.actionPerformed(null); - - } else { - - 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); - logicAction.setUpdateReferentiel(true); - uiAction.actionPerformed(null); - - } else { - - // clean db context - context.clearDbContext(); - - // go to manage db screen (to install db) - context.setScreen(TuttiScreen.MANAGE_DB); - } - } } @Override @@ -377,11 +344,6 @@ return canClose; } - public AbstractTuttiUIHandler getCurrentHandler() { - TuttiUI<?, ?> body = (TuttiUI<?, ?>) currentBody; - return body.getHandler(); - } - /** * Reload the persistence service and set the new ne into the handler. * Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/StartAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/StartAction.java 2013-11-19 18:25:58 UTC (rev 1364) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/StartAction.java 2013-11-20 08:11:09 UTC (rev 1365) @@ -25,8 +25,10 @@ */ import fr.ifremer.tutti.TuttiIOUtil; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.db.ImportDbAction; import fr.ifremer.tutti.ui.swing.content.db.InstallDbAction; +import fr.ifremer.tutti.ui.swing.content.db.OpenDbAction; import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -36,8 +38,10 @@ import static org.nuiton.i18n.I18n._; /** - * Start action (when the start action file is present when - * starting application). + * Start action. + * <p/> + * If there is a start action file, then load it and run inside actions, otherwise + * just starts normal ui action (open db if exists, or go to manage db screen). * * @author tchemit <chemit@codelutin.com> * @since 2.4 @@ -69,22 +73,28 @@ if (InstallDbAction.class.getName().equals(content)) { // install db - delegateAction = TuttiActionHelper.createLogicAction(getHandler(), InstallDbAction.class); + delegateAction = TuttiActionHelper.createLogicAction(handler, InstallDbAction.class); if (log.isInfoEnabled()) { log.info("Found install db action"); } + deleteOldDatabaseDirectory(); + } else if (content.startsWith(ImportDbAction.class.getName())) { // import db - ImportDbAction action = TuttiActionHelper.createLogicAction(getHandler(), ImportDbAction.class); + ImportDbAction action = TuttiActionHelper.createLogicAction(handler, ImportDbAction.class); File importFile = new File(content.substring(ImportDbAction.class.getName().length() + 1)); action.setImportFile(importFile); delegateAction = action; if (log.isInfoEnabled()) { log.info("Found import db action (with file " + importFile + ")"); } + deleteOldDatabaseDirectory(); } else { + if (log.isWarnEnabled()) { + log.warn("Unknown start action: " + content); + } doAction = false; } @@ -97,11 +107,46 @@ } } + if (!doAction) { - if (doAction) { - setActionDescription(delegateAction.getActionDescription()); - doAction = delegateAction.prepareAction(); + // no start action, normal start + + TuttiUIContext context = getContext(); + + if (context.isDbLoaded()) { + + // db already opened (happens when reloading ui) + // just go to select cruise screen + SelectCruiseAction action = TuttiActionHelper.createLogicAction(handler, SelectCruiseAction.class); + action.setSkipCheckCurrentScreen(true); + action.setActionDescription(getUI().getMenuActionSelectCruise().getToolTipText()); + delegateAction = action; + + } else { + + if (context.isDbExist()) { + + // open tutti db (using a fake button to have simple api) + OpenDbAction action = TuttiActionHelper.createLogicAction(handler, OpenDbAction.class); + action.setSkipCheckCurrentScreen(true); + action.setUpdateReferentiel(true); + delegateAction = action; + + } else { + + // clean db context + context.clearDbContext(); + + // go to manage db screen (to install db) + ManageDbAction action = TuttiActionHelper.createLogicAction(handler, ManageDbAction.class); + action.setSkipCheckCurrentScreen(true); + delegateAction = action; + } + } } + + setActionDescription(delegateAction.getActionDescription()); + doAction = delegateAction.prepareAction(); return doAction; } @@ -116,4 +161,16 @@ delegateAction = null; super.releaseAction(); } + + protected void deleteOldDatabaseDirectory() { + File dbDirectory = getConfig().getServiceConfig().getPersistenceConfig().getDbDirectory(); + if (dbDirectory.exists()) { + + // delete it before install + if (log.isInfoEnabled()) { + log.info("Delete previous database directory: " + dbDirectory); + } + TuttiIOUtil.deleteDirectory(dbDirectory, "Could not delete old db directory"); + } + } } 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-11-19 18:25:58 UTC (rev 1364) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-11-20 08:11:09 UTC (rev 1365) @@ -337,7 +337,7 @@ String message = _("tutti.openDb.step.check.dbContext", dbVersion, applicationVersion); - getProgressionModel().increments(message); + progressionModel.increments(message); if (log.isDebugEnabled()) { log.debug("Check db context"); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-11-19 18:25:58 UTC (rev 1364) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-11-20 08:11:09 UTC (rev 1365) @@ -29,6 +29,8 @@ import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import org.apache.commons.lang3.reflect.ConstructorUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import javax.swing.AbstractButton; import javax.swing.Action; @@ -43,6 +45,9 @@ */ public class TuttiActionHelper { + /** Logger. */ + private static final Log log = LogFactory.getLog(TuttiActionHelper.class); + public static <A extends AbstractTuttiAction> void runInternalAction(A action) { Throwable error = null; @@ -51,6 +56,9 @@ action.postSuccessAction(); } catch (Throwable e) { error = e; + if (log.isErrorEnabled()) { + log.error("Error in action:", e); + } throw TuttiActionException.propagateError(action, e); } finally { try {
participants (1)
-
tchemit@users.forge.codelutin.com