Author: tchemit Date: 2013-04-23 18:23:05 +0200 (Tue, 23 Apr 2013) New Revision: 872 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/872 Log: fixes #2351: [TECH] Message d'erreur quand d?\195?\169marrage sans r?\195?\169seau 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/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/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/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-04-23 15:36:33 UTC (rev 871) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-04-23 16:23:05 UTC (rev 872) @@ -24,11 +24,13 @@ * #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.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; @@ -39,6 +41,8 @@ import java.awt.Color; import java.util.Arrays; +import static org.nuiton.i18n.I18n.n_; + /** * To start Tutti application. * @@ -96,12 +100,25 @@ log.info("Full launch mode, try to update."); } - // try to update jre - i18n - application - help and exit if so - UpdateApplicationAction logicAction = TuttiActionHelper.createLogicAction(new MainUIHandler(context), - UpdateApplicationAction.class); - TuttiActionHelper.runActionAndWait(logicAction); + boolean canUpdate = true; + try { + TuttiUIUtil.tryToConnectToUpdateUrl( + config.getUpdateUrl(), + n_("tutti.error.update.could.not.reach.url") + ); + } catch (TuttiBusinessException e) { + TuttiUIContext.getErrorHelper().showErrorDialog(e.getMessage()); + canUpdate = false; + } - reload = logicAction.isReload(); + if (canUpdate) { + // try to update jre - i18n - application - help and exit if so + UpdateApplicationAction logicAction = TuttiActionHelper.createLogicAction(new MainUIHandler(context), + UpdateApplicationAction.class); + TuttiActionHelper.runActionAndWait(logicAction); + + reload = logicAction.isReload(); + } } if (!reload) { 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-04-23 15:36:33 UTC (rev 871) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java 2013-04-23 16:23:05 UTC (rev 872) @@ -27,8 +27,11 @@ 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; +import fr.ifremer.tutti.ui.swing.util.TuttiErrorHelper; 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; @@ -50,6 +53,7 @@ import java.util.Map; import static org.nuiton.i18n.I18n._; +import static org.nuiton.i18n.I18n.n_; /** * To show about panel. @@ -68,7 +72,28 @@ super(handler, false); } + protected boolean canUpdate; + @Override + protected boolean prepareAction() throws Exception { + TuttiUIContext context = getContext(); + TuttiApplicationConfig config = context.getConfig(); + String url = config.getUpdateUrl(); + + try { + TuttiUIUtil.tryToConnectToUpdateUrl( + url, + n_("tutti.error.about.could.not.reach.url")); + canUpdate = true; + } catch (TuttiBusinessException e) { + new TuttiErrorHelper(getContext()).showErrorDialog(e.getMessage()); + canUpdate = false; + } + + return super.prepareAction(); + } + + @Override public void postSuccessAction() { super.postSuccessAction(); @@ -146,12 +171,31 @@ about.getTabs().add(_("tutti.about.translate.title"), translatePane); - // - // update tab - // + if (canUpdate) { + // + // update tab + // + + addUpdateTab(config); + + } + about.init(); + } + + protected void addUpdate(Map<String, ApplicationInfo> source, + Map<String, ApplicationInfo> target, + TuttiApplicationUpdaterCallBack.UpdateType... types) { + for (TuttiApplicationUpdaterCallBack.UpdateType type : types) { + String appName = type.name().toLowerCase(); + ApplicationInfo info = source.get(appName); + target.put(appName, info); + } + } + + protected void addUpdateTab(TuttiApplicationConfig config) { + File current = config.getTuttiBasedir(); String url = config.getUpdateUrl(); - File current = config.getTuttiBasedir(); ApplicationUpdater up = new ApplicationUpdater(); @@ -250,19 +294,6 @@ } }); about.getTabs().add(_("tutti.about.update.title"), updatePane); - - about.init(); } - protected void addUpdate(Map<String, ApplicationInfo> source, - Map<String, ApplicationInfo> target, - TuttiApplicationUpdaterCallBack.UpdateType... types) { - for (TuttiApplicationUpdaterCallBack.UpdateType type : types) { - String appName = type.name().toLowerCase(); - ApplicationInfo info = source.get(appName); - target.put(appName, info); - } - } - - } 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-04-23 15:36:33 UTC (rev 871) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-04-23 16:23:05 UTC (rev 872) @@ -24,11 +24,14 @@ * #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.TuttiErrorHelper; +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; @@ -38,6 +41,7 @@ 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. @@ -69,6 +73,25 @@ protected boolean reload; @Override + protected boolean prepareAction() throws Exception { + 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) { + new TuttiErrorHelper(getContext()).showErrorDialog(e.getMessage()); + return false; + } + + return super.prepareAction(); + } + + @Override protected void releaseAction() { super.releaseAction(); types = ALL_APPLICATION_TYPES; 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-04-23 15:36:33 UTC (rev 871) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-04-23 16:23:05 UTC (rev 872) @@ -24,11 +24,14 @@ * #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.TuttiErrorHelper; +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; @@ -37,6 +40,7 @@ import java.io.File; import static org.nuiton.i18n.I18n._; +import static org.nuiton.i18n.I18n.n_; /** * To update - install database. @@ -56,6 +60,25 @@ } @Override + protected boolean prepareAction() throws Exception { + 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) { + new TuttiErrorHelper(getContext()).showErrorDialog(e.getMessage()); + return false; + } + + return super.prepareAction(); + } + + @Override protected void doAction() { TuttiUIContext context = getContext(); TuttiApplicationConfig config = context.getConfig(); 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-04-23 15:36:33 UTC (rev 871) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-23 16:23:05 UTC (rev 872) @@ -25,6 +25,7 @@ */ import com.google.common.base.Preconditions; +import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.TuttiTechnicalException; import jaxx.runtime.FileChooserUtil; import jaxx.runtime.JAXXBinding; @@ -45,10 +46,11 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListenerProxy; import java.io.File; +import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; -import java.net.URLEncoder; +import java.net.URLConnection; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -350,4 +352,17 @@ } } + public static void tryToConnectToUpdateUrl(String url, String i18nKey) { + try { + URLConnection urlConnection = new URL(url).openConnection(); + urlConnection.setConnectTimeout(5000); + urlConnection.connect(); + } catch (IOException e) { + if (log.isErrorEnabled()) { + log.error("Could not connect to " + url, e); + } + // could not connect to + throw new TuttiBusinessException(_(i18nKey, url)); + } + } } 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-04-23 15:36:33 UTC (rev 871) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-23 16:23:05 UTC (rev 872) @@ -811,9 +811,11 @@ tutti.editSpeciesFrequencies.table.header.number= tutti.editSpeciesFrequencies.table.header.weight= tutti.editSpeciesFrequencies.title= +tutti.error.about.could.not.reach.url= tutti.error.errorpane.htmlmessage= tutti.error.ui.business.error= tutti.error.ui.other.error= +tutti.error.update.could.not.reach.url= tutti.exportCruise.action.success= tutti.exportCruiseForSumatra.action.chooseFile= tutti.exportCruiseForSumatra.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-04-23 15:36:33 UTC (rev 871) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-23 16:23:05 UTC (rev 872) @@ -798,9 +798,11 @@ tutti.editSpeciesFrequencies.table.header.number=Nombre tutti.editSpeciesFrequencies.table.header.weight=Poids observé (kg) tutti.editSpeciesFrequencies.title=Mensuration +tutti.error.about.could.not.reach.url=Récupération des versions de mises à jour impossible (l'url %s n'est pas joignable) tutti.error.errorpane.htmlmessage=<html><body><b>Une erreur s'est produite</b>\:<br/>%s</body></html> tutti.error.ui.business.error=Erreur tutti.error.ui.other.error=Erreur +tutti.error.update.could.not.reach.url=Mise à jour impossible (l'url %s n'est pas joignable) tutti.exportCruise.action.success=La campagne <strong>%s</strong> a été exportée dans le fichier <strong>%s</strong>. tutti.exportCruiseForSumatra.action.chooseFile=Choisir le fichier d'export tutti.exportCruiseForSumatra.action.success=Les captures ont correctement été exporté dans le fichier %s