Author: tchemit Date: 2013-09-17 11:25:46 +0200 (Tue, 17 Sep 2013) New Revision: 1171 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1171 Log: fixes #3259: [TECH] Utiliser deux fichiers de configuration pour les mises ?\195?\160 jour (applicatif / base de donn?\195?\169es) Added: trunk/src/update/tutti-application.properties trunk/src/update/tutti-db.properties Removed: trunk/src/update/update-tutti.properties Modified: trunk/README.txt trunk/pom.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/TuttiUIContext.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.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/config/TuttiConfigUIHandler.java 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/ReinstallDbAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.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-09-13 16:21:34 UTC (rev 1170) +++ trunk/README.txt 2013-09-17 09:25:46 UTC (rev 1171) @@ -1,16 +1,21 @@ -Faire une nouvelle version --------------------------- +Faire une nouvelle version mineure +---------------------------------- -Fournir la version de la base à utiliser, renseigner la propriété *dbVersion* +Cette release va juste déployer sur le dépot nexus les artifacts + mettre à jour +le fichier de mises à jour sur http://appup.forge.codelutin.com/tutti. -mvn release:prepare -Darguments="-DdbVersion=2013.08.22" -mvn release:perform -Darguments="-DdbVersion=2013.08.22" +mvn release:prepare +mvn release:perform -Pour préparer une release complête, lancer la commande : +Faire une nouvelle version majeure +---------------------------------- -mvn release:prepare -Darguments="-DperformFullRelease -DdbVersion=2013.08.22" -mvn release:perform -Darguments="-DperformFullRelease -DdbVersion=2013.08.22" +Cette release va en plus générer et deployer sur forge.codelutin.com les zip +incluant la jre + l'application. +mvn release:prepare -Darguments="-DperformFullRelease" +mvn release:perform -Darguments="-DperformFullRelease" + Historique des versions de base ------------------------------- @@ -19,5 +24,7 @@ +=====================+============+===========================+ + 2.3 + 2013.06.04 + 3.2.1.01 + +---------------------+------------+---------------------------+ -+ 2.4 + 2013.08.22 + 3.2.3 + ++ 2.4 + 2013.06.04 + 3.2.3 + +---------------------+------------+---------------------------+ ++ 2.5 + 2013.08.22 + 3.2.3 + ++---------------------+------------+---------------------------+ Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/pom.xml 2013-09-17 09:25:46 UTC (rev 1171) @@ -164,8 +164,10 @@ <jreVersion>1.7.40</jreVersion> <!-- Last tutti db version --> + <dbVersion>2013.06.04</dbVersion> + <!-- for next release --> <!--<dbVersion>2013.08.22</dbVersion>--> - + </properties> <repositories> @@ -547,6 +549,10 @@ <configuration> <rules> <requireProperty> + <property>jdkVersion</property> + <message>You must set a jdkVersion property!</message> + </requireProperty> + <requireProperty> <property>dbVersion</property> <message>You must set a dbVersion property!</message> </requireProperty> @@ -603,7 +609,7 @@ </profile> <profile> - <id>deploy-update</id> + <id>deploy-tutti-application-update</id> <activation> <property> <name>performRelease</name> @@ -617,20 +623,86 @@ <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> - <id>copy update-properties to site</id> + <id>copy tutti-application.properties to site</id> <phase>package</phase> <inherited>false</inherited> <configuration> <tasks> - <echo message="Copy model to site" /> + <echo message="copy tutti-application.properties to site" /> <copy verbose="true" failonerror="false" overwrite="true" filtering="true" todir="${project.build.directory}/update"> <filterset> <filter value="${project.version}" token="projectVersion" /> <filter value="${jreVersion}" token="jreVersion" /> + </filterset> + <fileset dir="${basedir}/src/update/"> + <include name="tutti-application.properties" /> + </fileset> + </copy> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>wagon-maven-plugin</artifactId> + <version>1.0-beta-4</version> + <executions> + <execution> + <phase>deploy</phase> + <inherited>false</inherited> + <goals> + <goal>upload-single</goal> + </goals> + <configuration> + <serverId>forge.codelutin.com</serverId> + <fromFile> + ${project.build.directory}/update/tutti-application.properties + </fromFile> + <url> + scpexe://forge.codelutin.com/var/www/ApplicationUpdate/http/tutti + </url> + </configuration> + </execution> + </executions> + + </plugin> + </plugins> + </build> + + </profile> + + <profile> + <id>deploy-tutti-db-update</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + + <build> + <plugins> + <plugin> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>copy tutti-db.properties to site</id> + <phase>package</phase> + <inherited>false</inherited> + <configuration> + <tasks> + <echo message="copy tutti-db.properties to site" /> + <copy verbose="true" failonerror="false" overwrite="true" filtering="true" todir="${project.build.directory}/update"> + <filterset> <filter value="${dbVersion}" token="dbVersion" /> </filterset> <fileset dir="${basedir}/src/update/"> - <include name="update-tutti.properties" /> + <include name="tutti-db.properties" /> </fileset> </copy> </tasks> @@ -656,7 +728,7 @@ <configuration> <serverId>forge.codelutin.com</serverId> <fromFile> - ${project.build.directory}/update/update-tutti.properties + ${project.build.directory}/update/tutti-db.properties </fromFile> <url> scpexe://forge.codelutin.com/var/www/ApplicationUpdate/http/tutti Copied: trunk/src/update/tutti-application.properties (from rev 1169, trunk/src/update/update-tutti.properties) =================================================================== --- trunk/src/update/tutti-application.properties (rev 0) +++ trunk/src/update/tutti-application.properties 2013-09-17 09:25:46 UTC (rev 1171) @@ -0,0 +1,55 @@ +### +# #%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% +### + +################################################################################ +### JRE Updates ################################################################ +################################################################################ + +jre.version=@jreVersion@ +linux.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... +windows.x86.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... +#windows.amd64.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... + +################################################################################ +### Tutti Updates ############################################################## +################################################################################ + +tutti.version=@projectVersion@ +tutti.url=zip:http://nexus.nuiton.org/nexus/content/repositories/other-releases/fr/ifremer... + +################################################################################ +### I18n Updates ############################################################### +################################################################################ + +i18n.version=@projectVersion@ +i18n.url=zip:http://nexus.nuiton.org/nexus/content/repositories/other-releases/fr/ifremer... + +################################################################################ +### Help Updates ############################################################### +################################################################################ + +help.version=@projectVersion@ +help.url=zip:http://nexus.nuiton.org/nexus/content/repositories/other-releases/fr/ifremer... Added: trunk/src/update/tutti-db.properties =================================================================== --- trunk/src/update/tutti-db.properties (rev 0) +++ trunk/src/update/tutti-db.properties 2013-09-17 09:25:46 UTC (rev 1171) @@ -0,0 +1,31 @@ +### +# #%L +# Tutti +# $Id$ +# $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/src/update/tutti-application.... $ +# %% +# 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 Updates ################################################################# +################################################################################ + +db.version=@dbVersion@ +db.url=zip:http://appup.nuiton.org/tutti/auth/tutti-db-@dbVersion@.zip +db.auth=true \ No newline at end of file Property changes on: trunk/src/update/tutti-db.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Deleted: trunk/src/update/update-tutti.properties =================================================================== --- trunk/src/update/update-tutti.properties 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/src/update/update-tutti.properties 2013-09-17 09:25:46 UTC (rev 1171) @@ -1,63 +0,0 @@ -### -# #%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% -### - -################################################################################ -### JRE Updates ################################################################ -################################################################################ - -jre.version=@jreVersion@ -linux.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... -windows.x86.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... -#windows.amd64.jre.url=zip:http://nexus.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/@jreVe... - -################################################################################ -### Tutti Updates ############################################################## -################################################################################ - -tutti.version=@projectVersion@ -tutti.url=zip:http://nexus.nuiton.org/nexus/content/repositories/other-releases/fr/ifremer... - -################################################################################ -### I18n Updates ############################################################### -################################################################################ - -i18n.version=@projectVersion@ -i18n.url=zip:http://nexus.nuiton.org/nexus/content/repositories/other-releases/fr/ifremer... - -################################################################################ -### Help Updates ############################################################### -################################################################################ - -help.version=@projectVersion@ -help.url=zip:http://nexus.nuiton.org/nexus/content/repositories/other-releases/fr/ifremer... - -################################################################################ -### DB Updates ################################################################# -################################################################################ - -db.version=@dbVersion@ -db.url=zip:http://appup.nuiton.org/tutti/auth/tutti-db-@dbVersion@.zip -db.auth=true \ No newline at end of file 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-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -24,14 +24,12 @@ * #L% */ -import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; import fr.ifremer.tutti.ui.swing.content.MainUI; import fr.ifremer.tutti.ui.swing.content.MainUIHandler; import fr.ifremer.tutti.ui.swing.content.StartAction; import fr.ifremer.tutti.ui.swing.content.UpdateApplicationAction; import fr.ifremer.tutti.ui.swing.util.TuttiExceptionHandler; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; @@ -43,8 +41,6 @@ import java.awt.Color; import java.util.Arrays; -import static org.nuiton.i18n.I18n.n_; - /** * To start Tutti application. * @@ -104,16 +100,17 @@ log.info("Full launch mode, try to update."); } - boolean canUpdate = true; - try { - TuttiUIUtil.tryToConnectToUpdateUrl( - config.getUpdateUrl(), - n_("tutti.error.update.could.not.reach.url") - ); - } catch (TuttiBusinessException e) { - TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); - canUpdate = false; - } + // check application url is reachable + boolean canUpdate = context.checkUpdateApplicationReachable(); +// try { +// TuttiUIUtil.tryToConnectToUpdateUrl( +// config.getUpdateApplicationUrl(), +// n_("tutti.error.update.could.not.reach.url") +// ); +// } catch (TuttiBusinessException e) { +// TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); +// canUpdate = false; +// } if (canUpdate) { // try to update jre - i18n - application - help and exit if so 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-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -28,6 +28,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import fr.ifremer.tutti.PropagatePropertyChangeListener; +import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.TuttiIOUtil; import fr.ifremer.tutti.TuttiTechnicalException; import fr.ifremer.tutti.persistence.RessourceClassLoader; @@ -87,6 +88,7 @@ import java.util.Set; import static org.nuiton.i18n.I18n._; +import static org.nuiton.i18n.I18n.n_; /** * UI application context. @@ -867,4 +869,44 @@ setScreen(TuttiScreen.MANAGE_DB); } } + + public boolean checkUpdateApplicationReachable() { + + boolean result = true; + TuttiApplicationConfig config = getConfig(); + String url = config.getUpdateApplicationUrl(); + + try { + TuttiUIUtil.tryToConnectToUpdateUrl( + url, + n_("tutti.error.update.bad.url.syntax"), + n_("tutti.error.update.could.not.reach.url"), + n_("tutti.error.update.could.not.found.url") + ); + } catch (TuttiBusinessException e) { + TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); + result = false; + } + return result; + } + + public boolean checkUpdateDbReachable() { + + boolean result = true; + TuttiApplicationConfig config = getConfig(); + String url = config.getUpdateDbUrl(); + + try { + TuttiUIUtil.tryToConnectToUpdateUrl( + url, + n_("tutti.error.update.bad.url.syntax"), + n_("tutti.error.update.could.not.reach.url"), + n_("tutti.error.update.could.not.found.url") + ); + } catch (TuttiBusinessException e) { + TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); + result = false; + } + return result; + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -347,10 +347,14 @@ return serviceConfig.getBasedir(); } - public String getUpdateUrl() { - return applicationConfig.getOption(TuttiApplicationConfigOption.TUTTI_UPDATE_URL.getKey()); + public String getUpdateApplicationUrl() { + return applicationConfig.getOption(TuttiApplicationConfigOption.TUTTI_UPDATE_APPLICATION_URL.getKey()); } + public String getUpdateDbUrl() { + return applicationConfig.getOption(TuttiApplicationConfigOption.TUTTI_UPDATE_DB_URL.getKey()); + } + public String getAdminPassword() { return applicationConfig.getOption(TuttiApplicationConfigOption.ADMIN_PASSWORD.getKey()); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -84,12 +84,18 @@ Locale.class ), - TUTTI_UPDATE_URL( + TUTTI_UPDATE_APPLICATION_URL( "tutti.update.application.url", - n_("tutti.config.option.update.url.description"), - "http://appup.forge.codelutin.com/tutti/update-tutti.properties", + n_("tutti.config.option.update.application.url.description"), + "http://appup.forge.codelutin.com/tutti/tutti-application.properties", String.class ), + TUTTI_UPDATE_DB_URL( + "tutti.update.db.url", + n_("tutti.config.option.update.db.url.description"), + "http://appup.forge.codelutin.com/tutti/tutti-db.properties", + String.class + ), UI_CONFIG_FILE( "tutti.ui.config.file", Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -27,7 +27,6 @@ import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.ui.swing.TuttiApplicationUpdaterCallBack; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; @@ -51,7 +50,6 @@ import java.util.Map; import static org.nuiton.i18n.I18n._; -import static org.nuiton.i18n.I18n.n_; /** * To show about panel. @@ -74,21 +72,27 @@ @Override public 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.about.could.not.reach.url")); - canUpdate = true; - } catch (TuttiBusinessException e) { - TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); - canUpdate = false; + if (doAction) { + // check db url is reachable + TuttiUIContext context = getContext(); + canUpdate = context.checkUpdateApplicationReachable(); } +// TuttiApplicationConfig config = context.getConfig(); +// String url = config.getUpdateApplicationUrl(); +// +// try { +// TuttiUIUtil.tryToConnectToUpdateUrl( +// url, +// n_("tutti.error.about.could.not.reach.url")); +// canUpdate = true; +// } catch (TuttiBusinessException e) { +// TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); +// canUpdate = false; +// } - return super.prepareAction(); + return doAction; } @Override @@ -190,7 +194,7 @@ protected void addUpdateTab(TuttiApplicationConfig config) { File current = config.getTuttiBasedir(); - String url = config.getUpdateUrl(); + String url = config.getUpdateApplicationUrl(); ApplicationUpdater up = new ApplicationUpdater(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -24,13 +24,11 @@ * #L% */ -import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.ui.swing.RunTutti; 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.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper; import org.apache.commons.logging.Log; @@ -40,7 +38,6 @@ import java.io.File; import static org.nuiton.i18n.I18n._; -import static org.nuiton.i18n.I18n.n_; /** * To update jre / i18n or tutti using the {@link ApplicationUpdater} mecanism. @@ -73,21 +70,26 @@ @Override public 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) { + // check application url is reachable + TuttiUIContext context = getContext(); + doAction = context.checkUpdateApplicationReachable(); +// TuttiApplicationConfig config = context.getConfig(); +// String url = config.getUpdateApplicationUrl(); +// +// try { +// TuttiUIUtil.tryToConnectToUpdateUrl( +// url, +// n_("tutti.error.update.could.not.reach.url") +// ); +// } catch (TuttiBusinessException e) { +// TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); +// doAction = false; +// } } - - return super.prepareAction(); + return doAction; } @Override @@ -113,7 +115,7 @@ } } else { - String url = config.getUpdateUrl(); + String url = config.getUpdateApplicationUrl(); File dest = new File(config.getTuttiBasedir(), "NEW"); if (log.isInfoEnabled()) { 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-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -24,13 +24,11 @@ * #L% */ -import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.persistence.ProgressionModel; 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.db.OpenDbAction; -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; @@ -39,7 +37,6 @@ import java.io.File; import static org.nuiton.i18n.I18n._; -import static org.nuiton.i18n.I18n.n_; /** * To update - install database. @@ -63,19 +60,21 @@ boolean doAction = super.prepareAction(); if (doAction) { + // check db url is reachable 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; - } + doAction = context.checkUpdateDbReachable(); +// TuttiApplicationConfig config = context.getConfig(); +// String url = config.getUpdateDbUrl(); +// +// try { +// TuttiUIUtil.tryToConnectToUpdateUrl( +// url, +// n_("tutti.error.update.could.not.reach.url") +// ); +// } catch (TuttiBusinessException e) { +// TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); +// doAction = false; +// } } return doAction; @@ -87,7 +86,7 @@ TuttiApplicationConfig config = context.getConfig(); File current = config.getDataDirectory(); - String url = config.getUpdateUrl(); + String url = config.getUpdateDbUrl(); if (log.isInfoEnabled()) { log.info(String.format("Try to install / update db (current data location: %s), using update url: %s", current, url)); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -173,7 +173,8 @@ .addOption(TuttiPersistenceConfigOption.DB_ENUMERATION_PATH) .addOption(TuttiPersistenceConfigOption.JDBC_URL) .addOption(TuttiServiceConfigOption.SITE_URL) - .addOption(TuttiApplicationConfigOption.TUTTI_UPDATE_URL); + .addOption(TuttiApplicationConfigOption.TUTTI_UPDATE_APPLICATION_URL) + .addOption(TuttiApplicationConfigOption.TUTTI_UPDATE_DB_URL); helper.setFinalizer(new MainCallBackFinalizer(CALLBACK_APPLICATION)); Modified: 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 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -25,14 +25,12 @@ */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.persistence.ProgressionModel; 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; @@ -41,7 +39,6 @@ import java.io.File; import static org.nuiton.i18n.I18n._; -import static org.nuiton.i18n.I18n.n_; /** * To install (or reinstall) a db from last network one. @@ -71,19 +68,23 @@ boolean doAction = super.prepareAction(); if (doAction) { + + // check db url is reachable TuttiUIContext context = getContext(); - TuttiApplicationConfig config = context.getConfig(); - String url = config.getUpdateUrl(); + doAction = context.checkUpdateDbReachable(); - try { - TuttiUIUtil.tryToConnectToUpdateUrl( - url, - n_("tutti.error.update.could.not.reach.url") - ); - } catch (TuttiBusinessException e) { - TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); - doAction = false; - } +// TuttiApplicationConfig config = context.getConfig(); +// String url = config.getUpdateDbUrl(); +// +// try { +// TuttiUIUtil.tryToConnectToUpdateUrl( +// url, +// n_("tutti.error.update.could.not.reach.url") +// ); +// } catch (TuttiBusinessException e) { +// TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); +// doAction = false; +// } } if (doAction) { @@ -108,7 +109,7 @@ TuttiApplicationConfig config = context.getConfig(); File current = config.getDataDirectory(); - String url = config.getUpdateUrl(); + String url = config.getUpdateDbUrl(); if (log.isInfoEnabled()) { log.info(String.format("Try to install / update db (current data location: %s), using update url: %s", current, url)); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ReinstallDbAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ReinstallDbAction.java 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ReinstallDbAction.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -25,16 +25,13 @@ */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.TuttiIOUtil; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig; import fr.ifremer.tutti.ui.swing.RunTutti; 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 org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -42,7 +39,6 @@ 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. @@ -73,19 +69,21 @@ // check we can connect to remote install server + // check db url is reachable 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; - } + doAction = context.checkUpdateDbReachable(); +// TuttiApplicationConfig config = context.getConfig(); +// String url = config.getUpdateApplicationUrl(); +// +// try { +// TuttiUIUtil.tryToConnectToUpdateUrl( +// url, +// n_("tutti.error.update.could.not.reach.url") +// ); +// } catch (TuttiBusinessException e) { +// TuttiUIContext.getErrorHelper().showWarningDialog(e.getMessage()); +// doAction = false; +// } } if (doAction) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-09-17 09:25:46 UTC (rev 1171) @@ -28,6 +28,7 @@ import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.TuttiTechnicalException; import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.decorator.HighlightPredicate; @@ -35,6 +36,8 @@ import java.awt.Color; import java.awt.Desktop; +import java.io.InputStream; +import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; @@ -226,18 +229,49 @@ } } - public static void tryToConnectToUpdateUrl(String url, String i18nKey) { + public static void tryToConnectToUpdateUrl(String urlAsString, + String badUrlFormatI18nKey, + String notReachI18nKey, + String notFoundI18nKey) { + URL url; + // get url try { - URLConnection urlConnection = new URL(url).openConnection(); + url = new URL(urlAsString); + } catch (MalformedURLException e) { + if (log.isDebugEnabled()) { + log.debug("Bad url syntax at " + urlAsString, e); + } + throw new TuttiBusinessException(_(badUrlFormatI18nKey, urlAsString)); + } + + URLConnection urlConnection; + // try to connect (fail if network or remote host does not exists) + try { + urlConnection = url.openConnection(); urlConnection.setConnectTimeout(10000); urlConnection.connect(); } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Could not connect to " + url, e); + if (log.isDebugEnabled()) { + log.debug("Could not connect to " + urlAsString, e); } - // could not connect to - throw new TuttiBusinessException(_(i18nKey, url)); + throw new TuttiBusinessException(_(notReachI18nKey, urlAsString)); } + + // try to open the resource (fail if resources does not exist) + try { + urlConnection.setReadTimeout(1000); + InputStream inputStream = null; + try { + inputStream = urlConnection.getInputStream(); + } finally { + IOUtils.closeQuietly(inputStream); + } + } catch (Exception e) { + if (log.isDebugEnabled()) { + log.debug("Could not found file at to " + urlAsString, e); + } + throw new TuttiBusinessException(_(notFoundI18nKey, urlAsString)); + } } public static float getRoundedLengthStep(float lengthStep, boolean aroundUp) { 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-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-17 09:25:46 UTC (rev 1171) @@ -128,6 +128,8 @@ tutti.config.option.ui.dateFormat.description= tutti.config.option.ui.shortcut.closePopup.description= tutti.config.option.ui.showNumberEditorButton.description= +tutti.config.option.update.application.url.description= +tutti.config.option.update.db.url.description= tutti.config.option.update.url.description= tutti.config.option.weights.rate.difference.totalAndSorted.description= tutti.config.parse.error= @@ -980,6 +982,8 @@ tutti.error.ui.business.error= tutti.error.ui.business.warning= tutti.error.ui.other.error= +tutti.error.update.bad.url.syntax= +tutti.error.update.could.not.found.url= tutti.error.update.could.not.reach.url= tutti.error.write.startActionFile=could not write action content to file %s tutti.exportCruise.action.success= 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-09-13 16:21:34 UTC (rev 1170) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-17 09:25:46 UTC (rev 1171) @@ -124,7 +124,8 @@ tutti.config.option.ui.dateFormat.description=Format de dates tutti.config.option.ui.shortcut.closePopup.description=Fermer une popup tutti.config.option.ui.showNumberEditorButton.description=Afficher le pavé numérique de saisie -tutti.config.option.update.url.description=URL de mise à jour +tutti.config.option.update.application.url.description=URL de mise à jour des applicatifs +tutti.config.option.update.db.url.description=URL de mise à jour de la base de données tutti.config.option.weights.rate.difference.totalAndSorted.description=Pourcentage de différence entre les Poids totaux VRAC triés et les poids totaux VRAC en dessous duquel on demande confirmation sur la saisie tutti.config.parse.error=Erreur de parsing du fichier de configuration tutti.config.sampleOrder.title=Catégorie d'échantillonnage @@ -968,6 +969,8 @@ tutti.error.ui.business.error=Erreur tutti.error.ui.business.warning=Avertissement tutti.error.ui.other.error=Erreur +tutti.error.update.bad.url.syntax=Mise à jour impossible (le format de l'url <strong>%s</strong> n'est pas valide) +tutti.error.update.could.not.found.url=Mise à jour impossible (l'url <strong>%s</strong> n'existe pas) tutti.error.update.could.not.reach.url=Mise à jour impossible (l'url <strong>%s</strong> n'est pas joignable) tutti.error.write.startActionFile=impossible d'écrire dans le fichier %s tutti.exportCruise.action.success=La campagne <strong>%s</strong> a été exportée dans le fichier <strong>%s</strong>.