r249 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/config resources/i18n
Author: tchemit Date: 2013-01-28 12:26:25 +0100 (Mon, 28 Jan 2013) New Revision: 249 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/249 Log: refs #1893: [TECH] - Mise ?\195?\160 jour automatique de l'outil Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDatabaseUpdaterCallBack.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiJreUpdaterCallBack.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUpdaterCallBack.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/ Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-01-28 11:22:28 UTC (rev 248) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-01-28 11:26:25 UTC (rev 249) @@ -28,13 +28,12 @@ import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.i18n.I18n; -import org.nuiton.i18n.init.DefaultI18nInitializer; +import org.nuiton.util.ApplicationUpdater; import javax.swing.UIManager; import javax.swing.plaf.BorderUIResource; import java.awt.Color; -import java.util.Locale; +import java.io.File; /** * To start Tutti application. @@ -47,31 +46,27 @@ /** Logger. */ private static final Log log = LogFactory.getLog(RunTutti.class); + public static final int UPATE_EXIT_CODE = 88; + public static void main(String... args) { // Create configuration TuttiConfig config = new TuttiConfig("tutti.properties", args); // Create application context - final TuttiUIContext context = TuttiUIContext.newContext(config); + TuttiUIContext context = TuttiUIContext.newContext(config); - // use our special classLoader (which will read some files from resources from a configuration directory) - Thread.currentThread().setContextClassLoader(context.getResourceLoader()); + // prepare context (mainly init configs, i18n) + context.init(); - // Use shutdownHook to close context on System.exit - Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { + // try to update jre + updateTuttiJre(context); - @Override - public void run() { - if (log.isInfoEnabled()) { - log.info("Close context on shutdown"); - } - context.close(); - } - })); + // try to update application + updateTuttiApplication(context); - // Initialize i18n - I18n.init(new DefaultI18nInitializer("tutti-ui-swing"), Locale.UK); + // try to update database + updateTuttiDatabase(context); // Prepare ui look&feel and load ui properties try { @@ -88,6 +83,7 @@ //UIManager.put("BlockingLayerUI.blockingColor", new Color(50, 50, 50)); startTutti(context); + } public static void startTutti(TuttiUIContext context) { @@ -108,8 +104,79 @@ ui.dispose(); if (exit) { - System.exit(0); + System.exit(1); } } + public static void updateTuttiJre(TuttiUIContext context) { + + TuttiConfig config = context.getConfig(); + + File current = config.getJreDirectory(); + if (current == null || !current.exists()) { + + // can not update jre + if (log.isWarnEnabled()) { + log.warn("No jre directory defined, skip jre update."); + } + } else { + + String url = config.getApplicationUpdateUrl(); + if (log.isInfoEnabled()) { + log.info(String.format("Try to update jre (current jre location: %s), using update url: %s", current, url)); + } + ApplicationUpdater up = new ApplicationUpdater(); + File dest = config.getNewTmpDirectory("NEW-jre"); + up.update(url, + current, + dest, + false, + new TuttiJreUpdaterCallBack(context)); + } + } + + public static void updateTuttiApplication(TuttiUIContext context) { + TuttiConfig config = context.getConfig(); + + File current = config.getApplicationDirectory(); + if (current == null || !current.exists()) { + + // can not update application + if (log.isWarnEnabled()) { + log.warn("No application directory defined, skip application update."); + } + } else { + + String url = config.getApplicationUpdateUrl(); + if (log.isInfoEnabled()) { + log.info(String.format("Try to update application (current application location: %s), using update url: %s", current, url)); + } + ApplicationUpdater up = new ApplicationUpdater(); + + File dest = config.getNewTmpDirectory("NEW-tutti"); + up.update(url, + current, + dest, + false, + new TuttiApplicationUpdaterCallBack(context)); + } + + } + + public static void updateTuttiDatabase(TuttiUIContext context) { + TuttiConfig config = context.getConfig(); + String url = config.getDatabaseUpdateUrl(); + ApplicationUpdater up = new ApplicationUpdater(); + + File current = config.getServiceConfig().getAdagioDriverConfig().getDbDirectory(); + File dest = config.getNewTmpDirectory("NEW-database"); + if (log.isInfoEnabled()) { + log.info(String.format("Try to update database (current database location: %s), using update url: %s", current, url)); + } + up.update(url, + current, + dest, + false, + new TuttiDatabaseUpdaterCallBack(context)); + } } \ No newline at end of file Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-01-28 11:26:25 UTC (rev 249) @@ -0,0 +1,69 @@ +package fr.ifremer.tutti.ui.swing; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.ApplicationUpdater; + +/** + * CallBack to update jre. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class TuttiApplicationUpdaterCallBack extends TuttiUpdaterCallBack { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(TuttiApplicationUpdaterCallBack.class); + + public static final String APP_KEY = "tutti"; + + public TuttiApplicationUpdaterCallBack(TuttiUIContext context) { + super(context, APP_KEY); + } + + @Override + protected void updateDone(ApplicationUpdater.ApplicationInfo applicationInfo, + Exception error) { + + if (error != null) { + + //error when update database + if (log.isWarnEnabled()) { + log.warn("Could not update tutti application", error); + } + } else { + + // launch a referential synchronize operation + if (log.isInfoEnabled()) { + log.info(String.format("A tutti application update was downloaded (oldVersion: %s, newVersion: %s), will restart application to use it", applicationInfo.oldVersion, applicationInfo.newVersion)); + } + + System.exit(RunTutti.UPATE_EXIT_CODE); + } + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDatabaseUpdaterCallBack.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDatabaseUpdaterCallBack.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDatabaseUpdaterCallBack.java 2013-01-28 11:26:25 UTC (rev 249) @@ -0,0 +1,74 @@ +package fr.ifremer.tutti.ui.swing; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.ApplicationUpdater; +import org.nuiton.util.Version; + +/** + * CallBack to update tutti. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class TuttiDatabaseUpdaterCallBack extends TuttiUpdaterCallBack { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(TuttiDatabaseUpdaterCallBack.class); + + public static final String APP_KEY = "adagiodb"; + + public TuttiDatabaseUpdaterCallBack(TuttiUIContext context) { + super(context, APP_KEY); + } + + @Override + protected void updateDone(ApplicationUpdater.ApplicationInfo applicationInfo, + Exception error) { + + if (error != null) { + + //error when update database + if (log.isWarnEnabled()) { + log.warn("Could not update database", error); + } + } else if (Version.VZERO.toString().equals(applicationInfo.oldVersion)) { + + // first database, just copy it to correct directory + if (log.isInfoEnabled()) { + log.info("First time database was downloaded at version: " + applicationInfo.newVersion); + } + } else { + + // launch a referential synchronize operation + if (log.isInfoEnabled()) { + log.info(String.format("A database update was downloaded (oldVersion: %s, newVersion: %s), will launch a referential synchronize operation ", applicationInfo.oldVersion, applicationInfo.newVersion)); + } + } + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDatabaseUpdaterCallBack.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiJreUpdaterCallBack.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiJreUpdaterCallBack.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiJreUpdaterCallBack.java 2013-01-28 11:26:25 UTC (rev 249) @@ -0,0 +1,71 @@ +package fr.ifremer.tutti.ui.swing; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.ApplicationUpdater; + +/** + * CallBack to update jre. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class TuttiJreUpdaterCallBack extends TuttiUpdaterCallBack { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(TuttiJreUpdaterCallBack.class); + + + + public static final String APP_KEY = "jre"; + + public TuttiJreUpdaterCallBack(TuttiUIContext context) { + super(context, APP_KEY); + } + + @Override + protected void updateDone(ApplicationUpdater.ApplicationInfo applicationInfo, + Exception error) { + + if (error != null) { + + //error when update database + if (log.isWarnEnabled()) { + log.warn("Could not update database", error); + } + } else { + + // launch a referential synchronize operation + if (log.isInfoEnabled()) { + log.info(String.format("A jre update was downloaded (oldVersion: %s, newVersion: %s), will restart applicationto use it", applicationInfo.oldVersion, applicationInfo.newVersion)); + } + + System.exit(RunTutti.UPATE_EXIT_CODE); + } + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiJreUpdaterCallBack.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-01-28 11:22:28 UTC (rev 248) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-01-28 11:26:25 UTC (rev 249) @@ -25,6 +25,7 @@ */ import com.google.common.base.Preconditions; +import com.google.common.base.Throwables; import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.RessourceClassLoader; import fr.ifremer.tutti.persistence.entities.data.Cruise; @@ -40,11 +41,15 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.beans.AbstractBean; +import org.nuiton.i18n.I18n; +import org.nuiton.i18n.init.DefaultI18nInitializer; import org.nuiton.widget.SwingSession; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Closeable; +import java.io.IOException; +import java.util.Locale; import java.util.Set; /** @@ -278,6 +283,41 @@ firePropertyChange(PROPERTY_SCREEN, oldValue, screen); } + public void init() { + + + try { + getConfig().getServiceConfig().prepareDirectories(); + } catch (IOException e) { + throw Throwables.propagate(e); + } + + // use our special classLoader (which will read some files from resources from a configuration directory) + Thread.currentThread().setContextClassLoader(getResourceLoader()); + + // Use shutdownHook to close context on System.exit + Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { + + @Override + public void run() { + if (log.isInfoEnabled()) { + log.info("Close context on shutdown"); + } + close(); + } + })); + + try { + getConfig().getServiceConfig().getAdagioDriverConfig().initConfig(getResourceLoader()); + } catch (IOException e) { + + throw new RuntimeException("Could not init adagio configuration", e); + } + + // Initialize i18n + I18n.init(new DefaultI18nInitializer("tutti-ui-swing"), Locale.UK); + } + public void open() { if (programId == null) { Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUpdaterCallBack.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUpdaterCallBack.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUpdaterCallBack.java 2013-01-28 11:26:25 UTC (rev 249) @@ -0,0 +1,102 @@ +package fr.ifremer.tutti.ui.swing; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.Maps; +import org.nuiton.util.ApplicationUpdater; + +import java.util.Map; + +/** + * CallBack to update tutti. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public abstract class TuttiUpdaterCallBack implements ApplicationUpdater.ApplicationUpdaterCallback { + + protected final TuttiUIContext context; + + protected final String app; + + protected ApplicationUpdater.ApplicationInfo applicationInfo; + + protected Exception error; + + public TuttiUpdaterCallBack(TuttiUIContext context, String app) { + this.context = context; + this.app = app; + } + + public boolean isSuccess() { + return error == null; + } + + public boolean isUpdateDone() { + return applicationInfo != null; + } + + public ApplicationUpdater.ApplicationInfo getApplicationInfo() { + return applicationInfo; + } + + public Exception getError() { + return error; + } + + @Override + public final Map<String, ApplicationUpdater.ApplicationInfo> updateToDo(Map<String, ApplicationUpdater.ApplicationInfo> appToUpdate) { + ApplicationUpdater.ApplicationInfo applicationInfo = appToUpdate.get(app); + if (applicationInfo != null) { + appToUpdate = Maps.newHashMap(); + appToUpdate.put(app, applicationInfo); + } + return appToUpdate; + } + + @Override + public final void updateDone(Map<String, ApplicationUpdater.ApplicationInfo> appToUpdate, + Map<String, Exception> appUpdateError) { + + ApplicationUpdater.ApplicationInfo applicationInfo = appToUpdate.get(app); + Exception exception = appUpdateError.get(app); + if (applicationInfo != null) { + + this.error = exception; + if (exception == null) { + this.applicationInfo = applicationInfo; + } + updateDone(applicationInfo, exception); + } + } + + @Override + public void aborted(String propertiesURL, Exception eee) { + this.error = eee; + } + + protected abstract void updateDone(ApplicationUpdater.ApplicationInfo applicationInfo, + Exception error); +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUpdaterCallBack.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/config/TuttiConfig.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-28 11:22:28 UTC (rev 248) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-28 11:26:25 UTC (rev 249) @@ -24,7 +24,6 @@ * #L% */ -import com.google.common.base.Throwables; import fr.ifremer.tutti.service.TuttiServiceTechnicalException; import fr.ifremer.tutti.service.config.TuttiServiceConfig; import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; @@ -39,9 +38,16 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.ApplicationConfigHelper; +import org.nuiton.util.ApplicationConfigProvider; import org.nuiton.util.ArgumentsParserException; import org.nuiton.util.Version; +import javax.swing.KeyStroke; +import java.awt.Color; +import java.io.File; +import java.net.URL; +import java.util.Set; + /** * Tutti application config. * @@ -67,16 +73,28 @@ */ protected final TuttiServiceConfig serviceConfig; + protected final String[] optionKeyToNotSave; + public TuttiConfig(String file, String... args) { applicationConfig = new ApplicationConfig(); // load all config default options - ApplicationConfigHelper.loadAllDefaultOption(applicationConfig, - null, - null, - null, - true); + Set<ApplicationConfigProvider> providers = + ApplicationConfigHelper.loadAllDefaultOption(applicationConfig, + null, + null, + null, + true); + + Set<String> optionToSkip = + ApplicationConfigHelper.getTransientOrFinalOptionKey(providers); + + if (log.isInfoEnabled()) { + log.info("Option that won't be saved: " + optionToSkip); + } + optionKeyToNotSave = optionToSkip.toArray(new String[optionToSkip.size()]); + applicationConfig.setConfigFileName(file); try { @@ -87,16 +105,29 @@ "Could not parse configuration", e); } + //TODO Review this, this is very dirty to do this... + File tuttiBasedir = getTuttiBasedir(); + + if (tuttiBasedir == null) { + tuttiBasedir = new File(""); + } + if (!tuttiBasedir.isAbsolute()) { + tuttiBasedir = new File(tuttiBasedir.getAbsolutePath()); + } + if (tuttiBasedir.getName().equals("..")) { + tuttiBasedir = tuttiBasedir.getParentFile().getParentFile(); + } + if (tuttiBasedir.getName().equals(".")) { + tuttiBasedir = tuttiBasedir.getParentFile(); + } + if (log.isInfoEnabled()) { + log.info("Application basedir: " + tuttiBasedir); + } + applicationConfig.setOption(TuttiConfigOption.TUTTI_APPLICATION_BASEDIR.getKey(), tuttiBasedir.getAbsolutePath()); + log.info(this + " is initializing..."); serviceConfig = new TuttiServiceConfig(applicationConfig); - - - try { - serviceConfig.prepareDirectories(); - } catch (IOException e) { - throw Throwables.propagate(e); - } } public ApplicationConfig getApplicationConfig() { @@ -108,7 +139,7 @@ } public void save() { - applicationConfig.saveForUser(); + applicationConfig.saveForUser(optionKeyToNotSave); } @Override @@ -128,7 +159,7 @@ public boolean isShowNumberEditorButton() { return applicationConfig.getOptionAsBoolean(TuttiConfigOption.SHOW_NUMBER_EDITOR_BUTTON.getKey()); } - + public CoordinateEditorType getCoordinateEditorType() { String value = applicationConfig.getOption(TuttiConfigOption.COORDINATE_EDITOR_TYPE.getKey()); return CoordinateEditorType.valueOf(value); @@ -191,6 +222,10 @@ return serviceConfig.getTmpDirectory(); } + public File getNewTmpDirectory(String name) { + return new File(getTmpDirectory(), name + "_" + System.nanoTime()); + } + public File getDataDirectory() { return serviceConfig.getDataDirectory(); } @@ -215,4 +250,24 @@ } applicationConfig.setOption(TuttiConfigOption.PROTOCOL_ID.getKey(), protocolId); } + + public File getTuttiBasedir() { + return applicationConfig.getOptionAsFile(TuttiConfigOption.TUTTI_APPLICATION_BASEDIR.getKey()); + } + + public String getApplicationUpdateUrl() { + return applicationConfig.getOption(TuttiConfigOption.TUTTI_UPDATE_APPLICATION_URL.getKey()); + } + + public String getDatabaseUpdateUrl() { + return applicationConfig.getOption(TuttiConfigOption.TUTTI_UPDATE_DATABASE_URL.getKey()); + } + + public File getJreDirectory() { + return applicationConfig.getOptionAsFile(TuttiConfigOption.TUTTI_JRE_DIRECTORY.getKey()); + } + + public File getApplicationDirectory() { + return applicationConfig.getOptionAsFile(TuttiConfigOption.TUTTI_APPLICATION_DIRECTORY.getKey()); + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-28 11:22:28 UTC (rev 248) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-28 11:26:25 UTC (rev 249) @@ -41,6 +41,51 @@ */ public enum TuttiConfigOption implements ApplicationConfig.OptionDef { + TUTTI_APPLICATION_BASEDIR( + "tutti.application.basedir", + n_("tutti.application.basedir.description"), + null, + File.class, + true, + true + ), + + TUTTI_JRE_DIRECTORY( + "tutti.jre.directory", + n_("tutti.jre.directory.description"), + "${tutti.application.basedir}/jre", + File.class, + true, + true + ), + + TUTTI_APPLICATION_DIRECTORY( + "tutti.application.directory", + n_("tutti.application.directory.description"), + "${tutti.application.basedir}/tutti-app", + File.class, + true, + true + ), + + TUTTI_UPDATE_APPLICATION_URL( + "tutti.update.application.url", + n_("tutti.update.application.url.description"), + null, + String.class, + true, + false + ), + + TUTTI_UPDATE_DATABASE_URL( + "tutti.update.database.url", + n_("tutti.update.database.url.description"), + null, + String.class, + true, + false + ), + UI_CONFIG_FILE( "tutti.ui.config", n_("tutti.config.ui.config"), Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-28 11:22:28 UTC (rev 248) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-28 11:26:25 UTC (rev 249) @@ -77,7 +77,9 @@ tutti.action.validate=Valider tutti.action.validateCatches=Valider les captures tutti.action.validateCatches.tip=Valider les captures +tutti.application.basedir.description= tutti.application.config=Configuration de l'application Tutti +tutti.application.directory.description= tutti.application.name=Tutti tutti.config.category.applications=Application tutti.config.category.applications.description=Application @@ -102,6 +104,7 @@ tutti.duration.format=dj Hh m'm' tutti.errorTable.title=Table d'erreurs tutti.file.protocol=Extension d'un fichier de protocole Tutti +tutti.jre.directory.description= tutti.label.attachmentEditor.file=Fichier tutti.label.attachmentEditor.fileComment=Commentaire tutti.label.attachmentEditor.fileName=Nom @@ -332,6 +335,9 @@ tutti.to.be.done=< A FAIRE > tutti.tooltip.attachment.none=Pas de pièce-jointes tutti.tooltip.comment.none=Pas de commentaire +tutti.update.application.url.description= +tutti.update.database.url.description= +tutti.update.location.description= tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères) tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif tutti.validator.error.createSpeciesBatch.batchWeight.required=Le poids du lot est obligatoire
participants (1)
-
tchemit@users.forge.codelutin.com