Author: tchemit Date: 2013-02-03 12:41:42 +0100 (Sun, 03 Feb 2013) New Revision: 304 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/304 Log: refs #1711: [TECH] V?\195?\169rification de l'existence d'une nouvelle version refs #1893: [TECH] - Mise ?\195?\160 jour automatique de l'outil refs #1905: [TECH] Mise en place de la d?\195?\169tection et mise ?\195?\160 jour d'une nouvelle version de l'application refs #1818: [CONF] - Choix de la langue de l'outil refs #1896: [TECH] - Gestion du multilinguisme Added: trunk/tutti-persistence/src/test/startDbManager.sh Removed: trunk/tutti-ui-swing/src/main/assembly/min/update-database.properties Modified: trunk/src/site/update/update-application.properties trunk/tutti-persistence/README.txt trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java trunk/tutti-ui-swing/pom.xml trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh trunk/tutti-ui-swing/src/main/assembly/min/launch.sh trunk/tutti-ui-swing/src/main/assembly/min/tutti.properties trunk/tutti-ui-swing/src/main/assembly/min/update.bat trunk/tutti-ui-swing/src/main/assembly/min/update.sh trunk/tutti-ui-swing/src/main/assembly/standalone.xml trunk/tutti-ui-swing/src/main/assembly/tutti-full-component.xml 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/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/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 trunk/tutti-ui-swing/src/main/resources/log4j.properties Modified: trunk/src/site/update/update-application.properties =================================================================== --- trunk/src/site/update/update-application.properties 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/src/site/update/update-application.properties 2013-02-03 11:41:42 UTC (rev 304) @@ -25,10 +25,10 @@ tutti.url=zip:http://nexus.nuiton.org/nexus/content/repositories/other-releases/fr/ifremer... jre.version=@jreVersion@ #linux.amd64.jre.version=@jreVersion@ -linux.amd64.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... +linux.amd64.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... #linux.i386.jre.version=@jreVersion@ -linux.i386.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... +linux.i386.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... #windows.amd64.jre.version=@jreVersion@ -windows.amd64.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... +windows.amd64.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... #windows.i386.jre.version=@jreVersion@ -windows.i386.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... +windows.i386.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... Modified: trunk/tutti-persistence/README.txt =================================================================== --- trunk/tutti-persistence/README.txt 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-persistence/README.txt 2013-02-03 11:41:42 UTC (rev 304) @@ -15,4 +15,10 @@ Se connecter à une superbe ui swing de requétage ------------------------------------------------ -java -classpath ~/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar org.hsqldb.util.DatabaseManager \ No newline at end of file + +java -classpath ~/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar org.hsqldb.util.DatabaseManager + +ou bien + +(cd src/test ; ./startDbManager.sh) + Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java 2013-02-03 11:41:42 UTC (rev 304) @@ -122,8 +122,8 @@ return config.getOptionAsFile(TuttiPersistenceConfigOption.PROTOCOL_DIRECTORY.getKey()); } - public File getDbName() { - return config.getOptionAsFile(TuttiPersistenceConfigOption.DB_NAME.getKey()); + public String getDbName() { + return config.getOption(TuttiPersistenceConfigOption.DB_NAME.getKey()); } public boolean isDbExists() { Added: trunk/tutti-persistence/src/test/startDbManager.sh =================================================================== --- trunk/tutti-persistence/src/test/startDbManager.sh (rev 0) +++ trunk/tutti-persistence/src/test/startDbManager.sh 2013-02-03 11:41:42 UTC (rev 304) @@ -0,0 +1,3 @@ +#! /bin/sh +java -classpath ~/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar org.hsqldb.util.DatabaseManagerSwing + Property changes on: trunk/tutti-persistence/src/test/startDbManager.sh ___________________________________________________________________ Added: svn:executable + * Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native 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-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-02-03 11:41:42 UTC (rev 304) @@ -97,12 +97,15 @@ TuttiServiceConfig serviceConfig = context.getConfig(); - TuttiPersistenceConfig driverConfig = - serviceConfig.getAdagioDriverConfig(); - TuttiPersistenceConfig.setInstance(driverConfig); + TuttiPersistenceConfig config = serviceConfig.getPersistenceConfig(); + TuttiPersistenceConfig.setInstance(config); - if (driverConfig.isDbExists()) { + if (config.isDbExists()) { + String jdbcUrl = config.getJdbcUrl(); + if (log.isInfoEnabled()) { + log.info("Using database at " + jdbcUrl); + } // can use adagio driver driver = TuttiPersistenceServiceLocator.getPersistenceService(); @@ -119,7 +122,7 @@ log.warn("--------------------------------------------------------------------"); log.warn(""); - log.warn("Could not find database directory at " + driverConfig.getDbDirectory()); + log.warn("Could not find database directory at " + config.getDbDirectory()); log.warn("Will still use dev dataStorage in " + storageDirectory); log.warn(""); log.warn("--------------------------------------------------------------------"); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-02-03 11:41:42 UTC (rev 304) @@ -50,21 +50,21 @@ /** Delegate application config object containing configuration. */ protected final ApplicationConfig applicationConfig; - protected final TuttiPersistenceConfig adagioDriverConfig; + protected final TuttiPersistenceConfig persistenceConfig; public TuttiServiceConfig(ApplicationConfig applicationConfig) { this.applicationConfig = applicationConfig; - adagioDriverConfig = new TuttiPersistenceConfig(applicationConfig); + this.persistenceConfig = new TuttiPersistenceConfig(applicationConfig); } public ApplicationConfig getApplicationConfig() { return applicationConfig; } - public TuttiPersistenceConfig getAdagioDriverConfig() { - return adagioDriverConfig; + public TuttiPersistenceConfig getPersistenceConfig() { + return persistenceConfig; } /** @return {@link TuttiServiceConfigOption#VERSION} value */ Modified: trunk/tutti-ui-swing/pom.xml =================================================================== --- trunk/tutti-ui-swing/pom.xml 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/pom.xml 2013-02-03 11:41:42 UTC (rev 304) @@ -58,7 +58,7 @@ <jaxx.locales>fr</jaxx.locales> <!--<jaxx.helpTarget>src/main/help</jaxx.helpTarget>--> - <i18n.bundleOutputName>tutti-ui-swing</i18n.bundleOutputName> + <i18n.bundleOutputName>tutti-i18n</i18n.bundleOutputName> <!-- generate license bundled files --> <license.generateBundle>true</license.generateBundle> @@ -269,7 +269,14 @@ <artifactId>commons-logging</artifactId> </dependency> + <!-- used forApplicationUpdater --> <dependency> + <groupId>commons-httpclient</groupId> + <artifactId>commons-httpclient</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-validator</artifactId> </dependency> Modified: trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties =================================================================== --- trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2013-02-03 11:41:42 UTC (rev 304) @@ -2,6 +2,7 @@ #------------------------------------------------------------------------------- # Already used licenses in project : # - Affero General Public License (AGPL) +# - Apache License # - BSD License # - BSD-3 Clause License # - Common Development and Distribution License (CDDL) v1.0 @@ -24,8 +25,9 @@ # Please fill the missing licenses for dependencies : # # -#Fri Feb 01 12:08:25 CET 2013 +#Sat Feb 02 18:32:29 CET 2013 antlr--antlr--2.7.6=BSD License +commons-codec--commons-codec--1.2=The Apache Software License, Version 2.0 commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0 dom4j--dom4j--1.6.1=BSD License javax.transaction--jta--1.1=Common Development and Distribution License (CDDL) v1.0 Modified: trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-02-03 11:41:42 UTC (rev 304) @@ -13,7 +13,8 @@ copy tutti-app\update.bat . call update.bat -call tutti-app\launch.bat --option tutti.launch.mode=full +del update.bat +call tutti-app\launch.bat --option tutti.launch.mode full if errorlevel 88 goto start cd %OLDDIR% Modified: trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh 2013-02-03 11:41:42 UTC (rev 304) @@ -1,21 +1,23 @@ #!/bin/bash -REP=$(dirname $0) +REP=$(pwd) +export TUTTI_HOME=$REP/tutti export JAVA_HOME=$REP/jre export JAVA_COMMAND=$JAVA_HOME/bin/java cd $REP -echo "$REP" -echo "$JAVA_HOME" +echo "tutti basedir: $REP" +echo "tutti app home: $TUTTI_HOME" +echo "tutti jre home: $JAVA_HOME" while true; do - cp tutti-app/update.sh . + cp $TUTTI_HOME/update.sh . ./update.sh - ./tutti-app/launch.sh --option tutti.launch.mode=full + rm -fv update.sh + ./tutti/launch.sh --option tutti.launch.mode full exitcode=$? - echo "exitCode: $exitcode" if [ ! "$exitcode" -eq "88" ]; then # quit now! Modified: trunk/tutti-ui-swing/src/main/assembly/min/launch.sh =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/min/launch.sh 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/min/launch.sh 2013-02-03 11:41:42 UTC (rev 304) @@ -1,7 +1,7 @@ #!/bin/bash MEMORY="-Xmx1024M" -TUTTI_JVM_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000" +TUTTI_JVM_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000" REP=$(dirname $0) Modified: trunk/tutti-ui-swing/src/main/assembly/min/tutti.properties =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/min/tutti.properties 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/min/tutti.properties 2013-02-03 11:41:42 UTC (rev 304) @@ -28,8 +28,19 @@ # directory where tutti database is stored tutti.persistence.db.directory=${tutti.application.basedir}/db +# directory where db conf is stored +tutti.persistence.db.configurationPath=${tutti.application.basedir}/config/db/conf.properties + +# directory where db constant mapping is stored +tutti.persistence.db.enumerationPath=${tutti.application.basedir}/config/db/enumerations-v3.properties + +# directory where i18n files are stored +tutti.i18n.directory=${tutti.application.basedir}/config/i18n + # url to update jre and application -tutti.update.application.url=file://${tutti.application.directory}/update-application.properties +tutti.update.application.url=file://${project.basedir}/update-application.properties +#tutti.update.application.url=http://maven-site.forge.codelutin.com/tutti/update/update-application.proper... # url to update database -tutti.update.database.url=file://${tutti.application.directory}/update-database.properties +tutti.update.database.url=file://${project.basedir}/update-database.properties +#tutti.update.database.url=http://tuttidb:3RACev2Nw8uEDEvsy0vJ@tutti.nuiton.org/tutti/update-database.p... Deleted: trunk/tutti-ui-swing/src/main/assembly/min/update-database.properties =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/min/update-database.properties 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/min/update-database.properties 2013-02-03 11:41:42 UTC (rev 304) @@ -1,25 +0,0 @@ -### -# #%L -# Tutti :: UI -# $Id$ -# $HeadURL$ -# %% -# Copyright (C) 2012 - 2013 Ifremer -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### -db.version=2013.01.28 -db.url=zip:file:/tmp/adagio-2013.01.28.zip Modified: trunk/tutti-ui-swing/src/main/assembly/min/update.bat =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/min/update.bat 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/min/update.bat 2013-02-03 11:41:42 UTC (rev 304) @@ -16,16 +16,18 @@ :tutti -if not exist "NEW\tutti-app" goto end +if not exist "NEW\tutti" goto end rem deplacement de l'ancien tutti -set /p oldVersion=<tutti-app\version.appup -set /p newVersion=<NEW\tutti-app\version.appup -set backupdir=OLD\tutti-app-%oldVersion: =%-%BACKUP_DATE: =% -echo Update tutti-app version %oldVersion: =% to %newVersion: =% old jre keep in "%backupdir%" +set /p oldVersion=<tutti\version.appup +set /p newVersion=<NEW\tutti\version.appup +set backupdir=OLD\tutti-%oldVersion: =%-%BACKUP_DATE: =% +echo Update tutti version %oldVersion: =% to %newVersion: =% old jre keep in "%backupdir%" if not exist "OLD" mkdir OLD -move tutti-app "%backupdir%" -move NEW\tutti-app tutti-app +move tutti "%backupdir%" +move NEW\tutti tutti :end + +if exist "NEW" rmdir /Q NEW \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/assembly/min/update.sh =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/min/update.sh 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/min/update.sh 2013-02-03 11:41:42 UTC (rev 304) @@ -1,24 +1,30 @@ #!/bin/bash BACKUP_DATE=$(date +%Y%m%d%H%M%S) + if [ -d NEW/jre ]; then oldVersion=`cat jre/version.appup` newVersion=`cat NEW/jre/version.appup` echo "Update jre version $oldVersion to $newVersion" mkdir -p OLD backupdir=OLD/jre-$oldVersion-$BACKUP_DATE - echo "Backup jre old version to $backupDir" - #mv jre $backupDir - #mv NEW/jre . + echo "Backup jre old version to $backupdir" + mv jre $backupdir + mv NEW/jre . + chmod +x jre/bin/java fi -if [ -d NEW/tutti-app ]; then - oldVersion=`cat tutti-app/version.appup` - newVersion=`cat NEW/tutti-app/version.appup` +if [ -d NEW/tutti ]; then + oldVersion=`cat tutti/version.appup` + newVersion=`cat NEW/tutti/version.appup` echo "Update tutti version $oldVersion to $newVersion" mkdir -p OLD - backupdir=OLD/tutti-app-$oldVersion-$BACKUP_DATE - echo "Backup tutti old version to $backupDir" - #mv tutti-app $backupDir - #mv NEW/tutti-app . + backupdir=OLD/tutti-$oldVersion-$BACKUP_DATE + echo "Backup tutti old version to $backupdir" + mv tutti $backupdir + mv NEW/tutti . + chmod +x tutti/update.sh + chmod +x tutti/launch.sh fi + +rm -rf NEW Modified: trunk/tutti-ui-swing/src/main/assembly/standalone.xml =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/standalone.xml 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/standalone.xml 2013-02-03 11:41:42 UTC (rev 304) @@ -61,6 +61,9 @@ <includes> <include>launch.sh</include> <include>launch.bat</include> + <include>update.sh</include> + <include>update.bat</include> + <include>tutti.properties</include> </includes> </fileSet> Modified: trunk/tutti-ui-swing/src/main/assembly/tutti-full-component.xml =================================================================== --- trunk/tutti-ui-swing/src/main/assembly/tutti-full-component.xml 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/assembly/tutti-full-component.xml 2013-02-03 11:41:42 UTC (rev 304) @@ -32,7 +32,7 @@ <fileSet> <directory>target</directory> - <outputDirectory>tutti-app</outputDirectory> + <outputDirectory>tutti</outputDirectory> <includes> <include>${project.build.finalName}.${project.packaging}</include> </includes> @@ -40,7 +40,7 @@ <fileSet> <directory>target/lib</directory> - <outputDirectory>tutti-app/lib</outputDirectory> + <outputDirectory>tutti/lib</outputDirectory> <includes> <include>*.jar</include> </includes> @@ -51,7 +51,7 @@ <fileSet> <directory>src/main/assembly/min</directory> - <outputDirectory>tutti-app</outputDirectory> + <outputDirectory>tutti</outputDirectory> <filtered>true</filtered> <fileMode>0755</fileMode> <includes> @@ -62,7 +62,7 @@ <fileSet> <directory>src/main/assembly/min</directory> - <outputDirectory>tutti-app</outputDirectory> + <outputDirectory>tutti</outputDirectory> <filtered>true</filtered> <includes> <include>*</include> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-02-03 11:41:42 UTC (rev 304) @@ -133,7 +133,7 @@ } ApplicationUpdater up = new ApplicationUpdater(); - File dest = config.getTuttiBasedir(); + File dest = new File(config.getTuttiBasedir(), "NEW"); up.update(url, current, dest, @@ -147,8 +147,8 @@ String url = config.getDatabaseUpdateUrl(); ApplicationUpdater up = new ApplicationUpdater(); - File current = config.getServiceConfig().getAdagioDriverConfig().getDbDirectory(); - File dest = config.getNewTmpDirectory("NEW-database"); + File current = config.getServiceConfig().getPersistenceConfig().getDbDirectory(); + File dest = new File(config.getTuttiBasedir(), "NEW"); if (log.isInfoEnabled()) { log.info(String.format("Try to update database (current database location: %s), using update url: %s", current, url)); } @@ -156,6 +156,6 @@ current.getParentFile(), dest, false, - new TuttiDatabaseUpdaterCallBack()); + new TuttiDatabaseUpdaterCallBack(context, current)); } } \ No newline at end of file Modified: 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 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-02-03 11:41:42 UTC (rev 304) @@ -43,7 +43,7 @@ private static final Log log = LogFactory.getLog(TuttiApplicationUpdaterCallBack.class); - public static final String TUTTI_APP = "tutti-app"; + public static final String TUTTI = "tutti"; public static final String JRE = "jre"; @@ -58,7 +58,7 @@ } applicationInfo = getTuttiAppApplicationInfo(appToUpdate); if (applicationInfo != null) { - result.put(TUTTI_APP, applicationInfo); + result.put(TUTTI, applicationInfo); } return result; } @@ -84,16 +84,17 @@ "A jre update was downloaded (oldVersion: %s, newVersion: %s), will restart application to use it", info.oldVersion, info.newVersion)); } + doRestart = true; } - doRestart = true; + } - if (appUpdateError.containsKey(TUTTI_APP)) { + if (appUpdateError.containsKey(TUTTI)) { // something bad while updating application if (log.isErrorEnabled()) { - log.error("Could not update tutti-app", - appUpdateError.get(TUTTI_APP)); + log.error("Could not update tutti", + appUpdateError.get(TUTTI)); } } else { ApplicationUpdater.ApplicationInfo info = getTuttiAppApplicationInfo(appToUpdate); @@ -101,11 +102,11 @@ if (log.isInfoEnabled()) { log.info(String.format( - "A tutti-app update was downloaded (oldVersion: %s, newVersion: %s), will restart application to use it", + "A tutti update was downloaded (oldVersion: %s, newVersion: %s), will restart application to use it", info.oldVersion, info.newVersion)); } + doRestart = true; } - doRestart = true; } if (doRestart) { @@ -125,6 +126,6 @@ } protected ApplicationUpdater.ApplicationInfo getTuttiAppApplicationInfo(Map<String, ApplicationUpdater.ApplicationInfo> appToUpdate) { - return appToUpdate.get(TUTTI_APP); + return appToUpdate.get(TUTTI); } } Modified: 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 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDatabaseUpdaterCallBack.java 2013-02-03 11:41:42 UTC (rev 304) @@ -24,12 +24,16 @@ * #L% */ +import com.google.common.base.Preconditions; import com.google.common.collect.Maps; +import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationUpdater; import org.nuiton.util.Version; +import java.io.File; +import java.io.IOException; import java.util.Map; /** @@ -46,7 +50,12 @@ public static final String APP_KEY = "db"; + protected final TuttiUIContext context; + public TuttiDatabaseUpdaterCallBack(TuttiUIContext context, File current) { + this.context = context; + } + @Override public Map<String, ApplicationUpdater.ApplicationInfo> updateToDo(Map<String, ApplicationUpdater.ApplicationInfo> appToUpdate) { Map<String, ApplicationUpdater.ApplicationInfo> result = Maps.newHashMap(); @@ -55,6 +64,9 @@ applicationInfo = appToUpdate.get(APP_KEY); if (applicationInfo != null) { result.put(APP_KEY, applicationInfo); + applicationInfo.setAuthentication( + "t" + "u" + "t" + "t" + "i" + "d" + "b", + new char[]{'3', 'R', 'A', 'C', 'e', 'v', '2', 'N', 'w', '8', 'u', 'E', 'D', 'E', 'v', 's', 'y', '0', 'v', 'J'}); } return result; } @@ -63,7 +75,6 @@ public void updateDone(Map<String, ApplicationUpdater.ApplicationInfo> appToUpdate, Map<String, Exception> appUpdateError) { - boolean doRestart = false; if (appUpdateError.containsKey(APP_KEY)) { // something bad while updating jre @@ -102,6 +113,27 @@ if (log.isInfoEnabled()) { log.info("First time database was downloaded at version: " + info.newVersion); } + + File[] sources = info.destDir.listFiles(); + Preconditions.checkState( + sources != null && sources.length == 1, + "Downloaded db should contains one directory at " + info.destDir); + File source = sources[0]; + File target = context.getConfig().getServiceConfig().getPersistenceConfig().getDbDirectory(); + if (log.isInfoEnabled()) { + log.info("Copy from " + source + " to " + target); + } + try { + FileUtils.copyDirectory(source, target); + } catch (IOException e) { + throw new RuntimeException("Could not copy directory content from " + source + " to " + target, e); + } + try { + FileUtils.deleteDirectory(source.getParentFile()); + } catch (IOException e) { + throw new RuntimeException("Could not delete temporary directory " + target, e); + } + } protected void synchronizetDatabase(ApplicationUpdater.ApplicationInfo info) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-02-03 11:41:42 UTC (rev 304) @@ -42,11 +42,13 @@ import org.jdesktop.beans.AbstractBean; import org.nuiton.i18n.I18n; import org.nuiton.i18n.init.DefaultI18nInitializer; +import org.nuiton.i18n.init.UserI18nInitializer; import org.nuiton.widget.SwingSession; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Closeable; +import java.io.File; import java.io.IOException; import java.util.Locale; import java.util.Set; @@ -286,7 +288,7 @@ try { - getConfig().getServiceConfig().prepareDirectories(); + config.getServiceConfig().prepareDirectories(); } catch (IOException e) { throw Throwables.propagate(e); } @@ -307,14 +309,23 @@ })); try { - getConfig().getServiceConfig().getAdagioDriverConfig().initConfig(getResourceLoader()); + config.getServiceConfig().getPersistenceConfig().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); + File i18nDirectory = config.getI18nDirectory(); + Locale i18nLocale = config.getI18nLocale(); + + if (log.isInfoEnabled()) { + log.info(String.format("Starts i18n with locale [%s] at [%s]", + i18nLocale, i18nDirectory)); + } + I18n.init(new UserI18nInitializer( + i18nDirectory, new DefaultI18nInitializer("tutti-i18n")), + i18nLocale); } public void open() { @@ -338,12 +349,11 @@ } //check if programId is sane - PersistenceService persistenceService = - getService(PersistenceService.class); + PersistenceService service = getService(PersistenceService.class); if (isProtocolFilled()) { - if (!persistenceService.isProtocolExist(protocolId)) { + if (!service.isProtocolExist(protocolId)) { // not found in this db @@ -357,7 +367,7 @@ if (isProgramFilled()) { - Program program = persistenceService.getProgram(programId); + Program program = service.getProgram(programId); if (program == null) { // not found in this db @@ -380,7 +390,7 @@ // test cruiseId if (isCruiseFilled()) { - Cruise cruise = persistenceService.getCruise(cruiseId); + Cruise cruise = service.getCruise(cruiseId); if (cruise != null && !cruise.getProgram().getId().equals(programId)) { 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-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-02-03 11:41:42 UTC (rev 304) @@ -41,6 +41,7 @@ import java.awt.Color; import java.io.File; import java.net.URL; +import java.util.Locale; import java.util.Set; /** @@ -190,7 +191,7 @@ public Color getColorRowReadOnly() { return applicationConfig.getOptionAsColor(TuttiConfigOption.COLOR_ROW_READ_ONLY.getKey()); } - + public Color getColorCellWithValue() { return applicationConfig.getOptionAsColor(TuttiConfigOption.COLOR_CELL_WITH_VALUE.getKey()); } @@ -237,6 +238,16 @@ return serviceConfig.getDataDirectory(); } + public File getI18nDirectory() { + return applicationConfig.getOptionAsFile( + TuttiConfigOption.TUTTI_I18N_DIRECTORY.getKey()); + } + + public Locale getI18nLocale() { + return applicationConfig.getOptionAsLocale( + TuttiConfigOption.TUTTI_I18N_LOCALE.getKey()); + } + public void setProgramId(String programId) { if (programId == null) { programId = ""; 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-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-02-03 11:41:42 UTC (rev 304) @@ -30,6 +30,7 @@ import javax.swing.KeyStroke; import java.awt.Color; import java.io.File; +import java.util.Locale; import static org.nuiton.i18n.I18n.n_; @@ -59,6 +60,24 @@ true ), + TUTTI_I18N_DIRECTORY( + "tutti.i18n.directory", + n_("tutti.i18n.directory.description"), + "${tutti.data.directory}/i18n", + File.class, + true, + true + ), + + TUTTI_I18N_LOCALE( + "tutti.i18n.locale", + n_("tutti.i18n.locale.description"), + Locale.FRANCE.getCountry(), + Locale.class, + true, + true + ), + TUTTI_UPDATE_APPLICATION_URL( "tutti.update.application.url", n_("tutti.update.application.url.description"), Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-03 11:41:42 UTC (rev 304) @@ -125,6 +125,8 @@ tutti.errorTable.title=Rapport de contrôles tutti.file.csv=Extension d'un fichier csv tutti.file.protocol=Extension d'un fichier de protocole Tutti +tutti.i18n.directory.description=Répertoire des fichiers de traductions +tutti.i18n.locale.description=Langue utilisée dans l'application tutti.jre.directory.description=Répertoire de la jre tutti.label.attachmentEditor.file=Fichier tutti.label.attachmentEditor.fileComment=Commentaire Modified: trunk/tutti-ui-swing/src/main/resources/log4j.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/log4j.properties 2013-02-02 22:31:27 UTC (rev 303) +++ trunk/tutti-ui-swing/src/main/resources/log4j.properties 2013-02-03 11:41:42 UTC (rev 304) @@ -39,3 +39,4 @@ # tutti levels log4j.logger.fr.ifremer=INFO log4j.logger.org.nuiton.util=INFO +log4j.logger.org.nuiton.util.ApplicationUpdater=DEBUG