This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit ea0960779ae18ecd66658c27400148a784c69239 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Sep 18 15:28:11 2015 +0200 lancement de l'application + connexion aux bases H2 et PG (refs #7528 #7529) --- observe-application-swing/pom.xml | 1 + .../java/fr/ird/observe/ObserveActionExecutor.java | 22 +- .../main/java/fr/ird/observe/ObserveCLAction.java | 30 +- .../main/java/fr/ird/observe/ObserveConfig.java | 1004 ----- .../fr/ird/observe/ObserveResourceManager.java | 20 +- .../main/java/fr/ird/observe/ObserveRunner.java | 76 +- .../{business => }/ObserveServiceHelper.java | 24 +- ...xt.java => ObserveSwingApplicationContext.java} | 348 +- .../fr/ird/observe/business/IObserveConfig.java | 4 +- .../business/ObserveApplicationContext.java | 9 +- .../ird/observe/business/db/DataSourceConfig.java | 2 +- .../ird/observe/business/db/DataSourceFactory.java | 2 +- .../db/constants/CommonDataSourceConfigParam.java | 1 + .../business/validation/ObserveValidator.java | 6 +- .../validation/ValidationMessageDetector.java | 2 +- .../ObserveApplicationConfigProvider.java | 7 +- .../ObserveSwingApplicationConfig.java | 1152 ++++++ .../ObserveSwingApplicationConfigOption.java} | 217 +- .../ObserveSwingApplicationConfigProvider.java | 37 + .../constantes}/ConnexionStatus.java | 2 +- .../constants => db/constantes}/CreationMode.java | 28 +- .../db/constants => db/constantes}/DbMode.java | 7 +- .../src/main/java/fr/ird/observe/package.html | 2 +- .../main/java/fr/ird/observe/ui/ObserveMainUI.jaxx | 4 +- .../fr/ird/observe/ui/ObserveMainUIHandler.java | 27 +- .../java/fr/ird/observe/ui/ObserveUICallback.java | 12 +- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 18 +- .../actions/ChangeApplicationLanguageAction.java | 12 +- .../observe/ui/actions/ChangeDbLanguageAction.java | 12 +- .../observe/ui/actions/ChangeStorageAction.java | 6 +- .../observe/ui/actions/CloseApplicationAction.java | 6 +- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 8 +- .../ird/observe/ui/actions/CloseStorageAction.java | 4 +- .../fr/ird/observe/ui/actions/GotoSiteAction.java | 8 +- .../ui/actions/ImportStorageFromFileAction.java | 9 +- .../ird/observe/ui/actions/LaunchAdminAction.java | 4 +- .../ui/actions/ReloadApplicationAction.java | 8 +- .../actions/ReloadDefaultConfigurationAction.java | 12 +- .../observe/ui/actions/ReloadResourcesAction.java | 8 +- .../observe/ui/actions/ReloadStorageAction.java | 12 +- .../ui/actions/SaveStorageToFileAction.java | 10 +- .../ird/observe/ui/actions/ShowConfigAction.java | 126 +- .../observe/ui/actions/ShowStorageInfoAction.java | 4 +- .../observe/ui/actions/StartServerModeAction.java | 7 +- .../ui/actions/shared/CloseAndCreateUIAction.java | 6 +- .../ui/actions/shared/CloseOpenUIAction.java | 6 +- .../observe/ui/actions/shared/ReOpenUIAction.java | 5 +- .../java/fr/ird/observe/ui/admin/AdminStep.java | 2 +- .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 6 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 8 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 10 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 31 +- .../observe/ui/admin/config/ConfigUIHandler.java | 2 - .../ui/admin/gps/GPSActivityTableModel.java | 4 +- .../observe/ui/admin/gps/ImportGPSConfigUI.jaxx | 6 +- .../ObsoleteEntityListCellRenderer.java | 6 +- .../ui/admin/validate/ValidateConfigUI.jaxx | 6 +- .../validate/ValidateEntityListCellRenderer.java | 4 +- .../observe/ui/admin/validate/ValidateModel.java | 6 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 10 +- .../ird/observe/ui/content/ContentUIHandler.java | 133 +- .../observe/ui/content/ContentUIInitializer.java | 178 +- .../impl/longline/LonglineDetailCompositionUI.jaxx | 4 +- .../LonglineDetailCompositionUIHandler.java | 28 +- .../impl/longline/LonglineGlobalCompositionUI.jaxx | 14 +- .../open/impl/longline/TripLonglineUIHandler.java | 5 +- .../ui/content/open/impl/seine/RouteUIHandler.java | 10 +- .../open/impl/seine/TripSeineUIHandler.java | 4 +- .../ui/content/ref/ContentReferenceUIHandler.java | 45 +- .../ref/ReferentialContentUIInitializer.java | 17 + .../ui/content/ref/UniqueKeyTableModel.java | 6 +- .../ui/content/table/ContentTableUIHandler.java | 2 +- .../impl/longline/CatchLonglineUIHandler.java | 23 +- .../table/impl/longline/EncounterUIHandler.java | 6 +- .../longline/GearUseFeaturesLonglineUIHandler.java | 12 +- .../table/impl/longline/SensorUsedUIHandler.java | 9 +- .../content/table/impl/longline/TdrUIHandler.java | 16 +- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 12 +- .../table/impl/seine/NonTargetCatchUIHandler.java | 18 +- .../impl/seine/ObjectObservedSpeciesUIHandler.java | 6 +- .../impl/seine/ObjectSchoolEstimateUIHandler.java | 6 +- .../table/impl/seine/SchoolEstimateUIHandler.java | 10 +- .../table/impl/seine/TargetCatchUIHandler.java | 2 +- .../impl/seine/TargetDiscardCatchUIHandler.java | 2 +- .../ird/observe/ui/storage/RemoteUILauncher.java | 3 +- .../ui/storage/StorageBackupUILauncher.java | 6 +- .../ird/observe/ui/storage/StorageUIHandler.java | 583 ++- .../ird/observe/ui/storage/StorageUILauncher.java | 52 +- .../fr/ird/observe/ui/storage/StorageUIModel.java | 767 ++-- .../ird/observe/ui/storage/tabs/ChooseDbModeUI.css | 13 + .../observe/ui/storage/tabs/ChooseDbModeUI.jaxx | 14 +- .../ird/observe/ui/storage/tabs/ConfigDataUI.jaxx | 2 +- .../ui/storage/tabs/ConfigReferentielUI.jaxx | 2 +- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 17 + .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 29 +- .../ui/storage/tabs/StorageTabUIHandler.java | 33 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 8 +- .../ui/tree/NavigationTreeSelectionModel.java | 4 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 7 +- .../java/fr/ird/observe/ui/usage/UsagesUI.jaxx | 6 +- .../fr/ird/observe/ui/usage/UsagesUIHandler.java | 4 +- ...ObserveSimpleValidatorMessageTableRenderer.java | 4 +- .../util/ObserveValidatorMessageTableRenderer.java | 4 +- .../observe/ui/util/tripMap/TripMapUIHandler.java | 12 +- .../org.nuiton.config.ApplicationConfigProvider | 2 +- .../observe-application-swing_en_GB.properties | 1803 ++++---- .../observe-application-swing_es_ES.properties | 2105 +++++----- .../observe-application-swing_fr_FR.properties | 4320 ++++++++++---------- .../src/main/resources/observeSwing.conf | 5 + ...glineDetailCompositionValidatorServiceTest.java | 124 +- .../controller/v1/DataSourceServiceController.java | 3 +- observe-entities/pom.xml | 62 +- .../src/main/xmi/observe-common.properties | 2 +- .../src/main/xmi/observe-longline.properties | 2 +- .../src/main/xmi/observe-seine.properties | 2 +- observe-services-configuration-api/pom.xml | 6 + .../configuration/ObserveDataSourceConnection.java | 4 + .../ObserveDataSourceConnectionSupport.java | 13 +- observe-services-configuration-rest/pom.xml | 6 + .../ObserveDataSourceConnectionRest.java | 7 +- observe-services-configuration-topia/pom.xml | 4 +- .../ObserveDataSourceConnectionTopia.java | 7 +- .../fr/ird/observe/services/ObserveJdbcHelper.java | 35 + .../services/service/DataSourceServiceTopia.java | 12 +- .../ObserveDataSourceConnectionTopiaTaiste.java | 3 +- pom.xml | 3 + 127 files changed, 7510 insertions(+), 6598 deletions(-) diff --git a/observe-application-swing/pom.xml b/observe-application-swing/pom.xml index 5d71b8e..9af2045 100644 --- a/observe-application-swing/pom.xml +++ b/observe-application-swing/pom.xml @@ -295,6 +295,7 @@ </resource> <resource> <directory>src/main/resources</directory> + <filtering>true</filtering> <includes> <include>**/*</include> </includes> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveActionExecutor.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveActionExecutor.java index 9ec858c..dd89d5f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveActionExecutor.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveActionExecutor.java @@ -65,7 +65,7 @@ public class ObserveActionExecutor extends ActionExecutor { return; } - if (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -77,7 +77,7 @@ public class ObserveActionExecutor extends ActionExecutor { model.setStepState(WizardState.RUNNING); // return; } - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); if (ui != null) { ui.setBusy(true); } @@ -92,7 +92,7 @@ public class ObserveActionExecutor extends ActionExecutor { "] failed with error " + error.getCause(), error); } } - if (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -104,7 +104,7 @@ public class ObserveActionExecutor extends ActionExecutor { model.setStepState(WizardState.FAILED); return; } - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); if (ui != null) { ui.getStatus().setStatus("Action [" + source.getActionLabel() + "] arrêté à cause d'un erreur " + error.getMessage()); } @@ -115,7 +115,7 @@ public class ObserveActionExecutor extends ActionExecutor { if (log.isDebugEnabled()) { log.debug("Action [" + source.getActionLabel() + "] was canceled"); } - if (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -125,7 +125,7 @@ public class ObserveActionExecutor extends ActionExecutor { admin.getHandler().getModel().setStepState(WizardState.CANCELED); return; } - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); if (ui != null) { ui.getStatus().setStatus("Action [" + source.getActionLabel() + "] annulée"); } @@ -136,7 +136,7 @@ public class ObserveActionExecutor extends ActionExecutor { if (log.isDebugEnabled()) { log.debug("Action [" + source.getActionLabel() + " ] was done in " + source.getTime()); } - if (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -154,7 +154,7 @@ public class ObserveActionExecutor extends ActionExecutor { } return; } - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); if (ui != null) { ui.getStatus().setStatus("Action [" + source.getActionLabel() + "] terminée."); } @@ -166,7 +166,7 @@ public class ObserveActionExecutor extends ActionExecutor { if (log.isDebugEnabled()) { log.debug("Action [" + source.getActionLabel() + " ] is consumed (still " + count + " tasks to treat)."); } - if (ObserveContext.isClosed()) { + if (ObserveSwingApplicationContext.isClosed()) { // l'application est déjà fermée, on ne fait rien return; @@ -177,7 +177,7 @@ public class ObserveActionExecutor extends ActionExecutor { log.info("Action [" + source.getActionLabel() + "] terminée à " + new Date(source.getStartTime())); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); if (log.isDebugEnabled()) { log.debug("Unlock main context " + context); } @@ -190,7 +190,7 @@ public class ObserveActionExecutor extends ActionExecutor { //admin.getHandler().getUi().removePropertyChangeListener(admin.getHandler().getUi()); // return; } - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); if (count < 1 && ui != null) { ui.setBusy(false); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveCLAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveCLAction.java index f35d5de..ea491cd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveCLAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveCLAction.java @@ -21,6 +21,8 @@ */ package fr.ird.observe; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminUILauncher; @@ -45,7 +47,7 @@ import static org.nuiton.i18n.I18n.t; * possibles. * * @author Tony Chemit - chemit@codelutin.com - * @see ObserveConfig + * @see ObserveSwingApplicationConfig * @see ObserveRunner * @since 1.0 */ @@ -167,7 +169,7 @@ public class ObserveCLAction { } /** La configuration de l'application. */ - protected ObserveConfig config; + protected ObserveSwingApplicationConfig config; public ObserveCLAction() { } @@ -197,14 +199,14 @@ public class ObserveCLAction { out.append('\n'); out.append("Options (set with --option <key> <value>:"); out.append('\n'); - for (ObserveConfigOption o : ObserveConfigOption.values()) { + for (ObserveSwingApplicationConfigOption o : ObserveSwingApplicationConfigOption.values()) { out.append("\t"); - out.append(o.key); + out.append(o.getKey()); out.append("("); - out.append(o.defaultValue); + out.append(o.getDefaultValue()); out.append(") :"); - out.append(t(o.description)); + out.append(t(o.getDescription())); out.append('\n'); } @@ -228,7 +230,7 @@ public class ObserveCLAction { public void configure() throws InterruptedException { disableMainUI(); - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = context.getContextValue(ObserveMainUIHandler.class); @@ -262,7 +264,7 @@ public class ObserveCLAction { return; } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); AdminUILauncher launcher = AdminUILauncher.newLauncher(context, operation); @@ -287,14 +289,14 @@ public class ObserveCLAction { return; } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); // FIXME // getConfig().setOption(AbstractDataSourceMigration.AUTO_MIGRATE, "false"); if (operation == ObstunaAdminAction.UPDATE || operation == ObstunaAdminAction.CREATE) { - getConfig().setOption(ObserveConfigOption.OBSTUNA_CAN_MIGRATE, true); + getConfig().setOption(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE, true); } RemoteUILauncher launcher = operation.newLauncher(context, null); @@ -314,7 +316,7 @@ public class ObserveCLAction { } } else { - ObserveContext.get().setContextValue( + ObserveSwingApplicationContext.get().setContextValue( true, ActionDefinition.H2_SERVER_MODE.name()); } @@ -361,9 +363,9 @@ public class ObserveCLAction { // } } - protected ObserveConfig getConfig() { + protected ObserveSwingApplicationConfig getConfig() { if (config == null) { - config = ObserveContext.get().getConfig(); + config = ObserveSwingApplicationContext.get().getConfig(); } return config; } @@ -385,7 +387,7 @@ public class ObserveCLAction { executor.addAction(action); // on attends la fin de l'opération - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); if (log.isDebugEnabled()) { log.debug("Lock main context " + context); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfig.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfig.java deleted file mode 100644 index b965eea..0000000 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfig.java +++ /dev/null @@ -1,1004 +0,0 @@ -/* - * #%L - * ObServe :: Swing - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * 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% - */ -package fr.ird.observe; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import fr.ird.observe.business.IObserveConfig; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; -import fr.ird.observe.ui.UIHelper; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.config.ApplicationConfig; -import org.nuiton.util.version.Version; -import org.nuiton.util.version.Versions; - -import javax.swing.*; -import java.awt.*; -import java.beans.PropertyChangeListener; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Locale; -import java.util.Properties; -import java.util.Set; - -import static fr.ird.observe.ObserveConfigOption.*; -import static fr.ird.observe.ObserveResourceManager.Resource; -import static org.nuiton.i18n.I18n.t; - -/** - * La configuration de l'application. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.0 - */ -public class ObserveConfig extends ApplicationConfig implements IObserveConfig { - - /** Logger */ - static private Log log = LogFactory.getLog(ObserveConfig.class); - - /** - * un drepeau pour savoir s'il faut lancer l'interface graphique. Cette - * valeur peut être programmées lors des actions. - */ - protected boolean displayMainUI = true; - - /** drapeau pour savoir si une base locale existe */ - protected boolean localStorageExist; - - /** - * drapeau pour savoir si le dump initial a ete chargee depuis la base - * centrale - */ - protected boolean initialDumpExist; - - /** drapeau pour savoir si une source de données est ouverte */ - protected boolean mainStorageOpened; - - /** - * drapeau pour savoir si la source ouverte est locale (attention, lorsqu'il - * n'y a pas de storage d'ouvert, la valeur est null). - */ - protected Boolean mainStorageOpenedLocal; - - /** - * drapeau pour savoir si on peut utiliser des ui dans l'environnement. - * <p/> - * Par defaut, on suppose qu'on peut utiliser l'environnement graphique et - * si on désactive explicitement ou si pas d'environnement graphique - * trouvé. - */ - protected boolean canUseUI = true; - - /** La version de l'application */ - private Version version; - - /** Texte du copyright (calculé dynamiquement). */ - protected String copyrightText; - - /** - * Liste des options qu'on ne peut pas sauvegarder (les mots de passes, - * les options d'admin pour les simples utilisateurs,...). - * - * @since 1.5 - */ - protected String[] unsavables; - - //FIXME - private final ImmutableSet<String> longlinVesselTypeIds = ImmutableSet.copyOf( - Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505", - "fr.ird.observe.entities.referentiel.VesselType#1239832675736#0.8708229847859869", - "fr.ird.observe.entities.referentiel.VesselType#1239832686137#0.1")); - - private final ImmutableSet<String> seineVesselTypeIds = ImmutableSet.copyOf( - Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505", - "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.307197212385357", - "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.7380146830307519", - "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.9086075071905084", - "fr.ird.observe.entities.referentiel.VesselType#1239832675737#0.43324169605639407")); - - public ObserveConfig() { - setConfigFileName(CONFIG_FILE.defaultValue); - loadDefaultOptions(ObserveConfigOption.values()); - } - - public boolean containActions(Step action) { - List<Action> list = actions.get(action.ordinal()); - return !(list == null || list.isEmpty()); - } - - public void initConfig(ObserveResourceManager manager) throws IOException { - - Version version = null; - - Properties p = manager.getResource(Resource.application); - - for (Object k : p.keySet()) { - String key = String.valueOf(k); - Object value = p.get(k); - if (log.isDebugEnabled()) { - log.debug("install property [" + k + "] : " + value); - } - String strValue = String.valueOf(value); - if (APPLICATION_VERSION.equals(key)) { - version = Versions.valueOf(strValue); - if (version.isSnapshot()) { - version = Versions.removeSnapshot(version); - } - - } else { - setDefaultOption(key, strValue); - } - } - - if (version == null) { - throw new IllegalStateException("No application.version found in application configuration."); - } - - setVersion(version); - setDefaultOption(VERSION, version.getVersion()); - setDefaultOption(APPLICATION_VERSION, version.getVersion()); - - //TC-200100204 La version de la base n'est pas liéé à la version - // de l'application - //FIXME -// Version dbVersion; -// -// dbVersion = Versions.valueOf(ObserveDAOHelper.getModelVersion()); -// -// setDefaultOption(DB_VERSION, dbVersion.getVersion()); - - // creation des actions disponibles - for (ObserveCLAction.ActionDefinition a : ObserveCLAction.ActionDefinition.values()) { - - for (String alias : a.aliases) { - addActionAlias(alias, a.action); - } - } - } - - @Override - protected void migrateUserConfigurationFile(File oldHomeConfig, - File homeConfig) throws IOException { - super.migrateUserConfigurationFile(oldHomeConfig, homeConfig); - // on previent l'utilisateur que son fichier de configuration a été - // deplacé - JOptionPane.showInternalMessageDialog(null, - t("observe.title.config.migrate"), - t("observe.runner.config.migrate.file", - oldHomeConfig.getName(), - oldHomeConfig, - homeConfig - ), - JOptionPane.WARNING_MESSAGE); - } - - protected void installSaveAction() { - // ajout de l'action de sauvegarde automatique sur certaines propriétés - - List<String> result = new ArrayList<String>(); - - for (ObserveConfigOption option : values()) { - String key = option.getPropertyKey(); - if (key != null) { - // add a listener - if (log.isDebugEnabled()) { - log.debug("register action listener for property " + key); - } - result.add(key); - } - } - - installSaveUserAction(result.toArray(new String[result.size()])); - } - - @Override - public String getCopyrightText() { - if (copyrightText == null) { - Date date = new Date(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - int year = calendar.get(Calendar.YEAR); - copyrightText = "Version " + getVersion() + " IRD @ 2008-" + year; - } - return copyrightText; - } - - @Override - public boolean isDevMode() { - boolean result = getOptionAsBoolean(DEV_MODE.key); - return result; - } - - @Override - public Version getVersion() { - return version; - } - - @Override - public Version getDbVersion() { - //FIXME -// Version option = getOption(Version.class, DB_VERSION); -// return option; - return null; - } - - @Override - public boolean isAutoPopupNumberEditor() { - boolean result = getOptionAsBoolean(AUTO_POPUP_NUMBER_EDITOR.key); - return result; - } - - @Override - public boolean isShowNumberEditorButton() { - boolean result = getOptionAsBoolean(SHOW_NUMBER_EDITOR_BUTTON.key); - return result; - } - - @Override - public boolean isShowTimeEditorSlider() { - boolean result = getOptionAsBoolean(SHOW_DATE_TIME_EDITOR_SLIDER.key); - return result; - } - - @Override - public boolean isFullScreen() { - boolean result = getOptionAsBoolean(FULL_SCREEN.key); - return result; - } - - public File getDataDirectory() { - File file = getOptionAsFile(ObserveConfigOption.DATA_DIRECTORY.key); - return file; - } - - - @Override - public File getValidationReportDirectory() { - File file = getOptionAsFile(ObserveConfigOption.VALIDATION_REPORT_DIRECTORY.key); - return file; - } - - @Override - public File getLocalDBDirectory() { - File result = getOptionAsFile(DB_DIRECTORY.key); - return result; - } - - @Override - public File getResourcesDirectory() { - File result = getOptionAsFile(RESOURCES_DIRECTORY.key); - return result; - } - - @Override - public File getI18nDirectory() { - File result = getOptionAsFile(I18N_DIRECTORY.key); - return result; - } - - @Override - public void setResourcesDirectory(File newValue) { - setOption(RESOURCES_DIRECTORY, newValue); - } - - @Override - public File getInitialDbDump() { - File result = getOptionAsFile(INITIAL_DB_DUMP.key); - return result; - } - - @Override - public File getBackupDirectory() { - File result = getOptionAsFile(BACKUP_DIRECTORY.key); - return result; - } - - @Override - public File getReportDirectory() { - File result = getOptionAsFile(REPORT_DIRECTORY.key); - return result; - } - - @Override - public File getTmpDirectory() { - File result = getOptionAsFile(TMP_DIRECTORY.key); - return result; - } - - @Override - public File getLogConfigurationFile() { - File result = getOptionAsFile(LOG_CONFIGURATION_FILE.key); - return result; - } - - @Override - public String getH2Login() { - String result = getOption(H2_LOGIN.key); - return result; - } - - @Override - public char[] getH2Password() { - String result = getOption(H2_PASSWORD.key); - char[] r = result.toCharArray(); - return r; - } - - @Override - public int getH2ServerPort() { - Integer port = getOptionAsInt(H2_SERVER_PORT.key); - return port; - } - - @Override - public String getObstunaUrl() { - String result = getOption(OBSTUNA_URL.key); - return result; - } - - @Override - public String getObstunaLogin() { - String result = getOption(OBSTUNA_LOGIN.key); - return result; - } - - @Override - public char[] getObstunaPassword() { - String result = getOption(OBSTUNA_PASSWORD.key); - char[] r = result.toCharArray(); - return r; - } - - @Override - public boolean isObstunaUseSsl() { - boolean result = getOptionAsBoolean(OBSTUNA_USE_SSL_CERT.key); - return result; - } - - @Override - public DbMode getDefaultDbMode() { - DbMode result = getOption(DbMode.class, DEFAULT_DB_MODE.key); - return result; - } - - @Override - public CreationMode getDefaultCreationMode() { - CreationMode result = - getOption(CreationMode.class, DEFAULT_CREATION_MODE.key); - return result; - } - - @Override - public boolean isShowMigrationSql() { - boolean result = getOptionAsBoolean(SHOW_MIGRATION_SQL.key); - return result; - } - - @Override - public boolean isShowMigrationProgression() { - boolean result = getOptionAsBoolean(SHOW_MIGRATION_PROGRESSION.key); - return result; - } - - @Override - public boolean isShowSql() { - boolean result = getOptionAsBoolean(SHOW_SQL.key); - return result; - } - - @Override - public int getDefaultGpsMaxDelay() { - Integer i = getOptionAsInt(DEFAULT_GPS_MAX_DELAY.key); - return i; - } - - @Override - public float getDefaultGpsMaxSpeed() { - double i = getOptionAsDouble(DEFAULT_GPS_MAX_SPEED.key); - return (float) i; - } - - @Override - public boolean isChangeSynchroSrc() { - boolean result = getOptionAsBoolean(CHANGE_SYNCHRO_SRC.key); - return result; - } - - @Override - public boolean isStoreRemoteStorage() { - boolean result = getOptionAsBoolean(STORE_REMOTE_STORAGE.key); - return result; - } - - @Override - public boolean isCanMigrateObstuna() { - boolean result = getOptionAsBoolean(OBSTUNA_CAN_MIGRATE.key); - return result; - } - - @Override - public boolean isCanMigrateH2() { - boolean result = getOptionAsBoolean(H2_CAN_MIGRATE.key); - return result; - } - - @Override - public boolean isLoadLocalStorage() { - boolean result = getOptionAsBoolean(LOAD_LOCAL_STORAGE.key); - return result; - } - - @Override - public Locale getLocale() { - Locale result = getOption(Locale.class, LOCALE.key); - return result; - } - - @Override - public Locale getDbLocale() { - Locale result = getOption(Locale.class, DB_LOCALE.key); - return result; - } - - @Override - public int getNonTargetObservation() { - int value = getOptionAsInt(NON_TARGET_OBSERVATION.key); - return value; - } - - @Override - public int getTargetDiscardsObservation() { - int value = getOptionAsInt(TARGET_DISCARDS_OBSERVATION.key); - return value; - } - - @Override - public int getSamplesObservation() { - int value = getOptionAsInt(SAMPLES_OBSERVATION.key); - return value; - } - - @Override - public int getObjectsObservation() { - int value = getOptionAsInt(OBJECTS_OBSERVATION.key); - return value; - } - - @Override - public int getDetailledActivitiesObservation() { - int value = getOptionAsInt(DETAILLED_ACTIVITIES_OBSERVATION.key); - return value; - } - - @Override - public int getMammalsObservation() { - int value = getOptionAsInt(MAMMALS_OBSERVATION.key); - return value; - } - - @Override - public int getBirdsObservation() { - int value = getOptionAsInt(BIRDS_OBSERVATION.key); - return value; - } - - @Override - public int getBaitObservation() { - int value = getOptionAsInt(BAIT_OBSERVATION.key); - return value; - } - - @Override - public boolean isDisplayMainUI() { - return displayMainUI; - } - - @Override - public boolean isCanUseUI() { - return canUseUI; - } - - @Override - public boolean isLocalStorageExist() { - return localStorageExist; - } - - @Override - public boolean isInitialDumpExist() { - return initialDumpExist; - } - - @Override - public boolean isMainStorageOpened() { - return mainStorageOpened; - } - - @Override - public Boolean getMainStorageOpenedLocal() { - return mainStorageOpenedLocal; - } - - public void setLocalStorageExist(boolean newValue) { - localStorageExist = newValue; - // always force propagation - firePropertyChange(PROPERTY_LOCAL_STORAGE_EXIST, newValue); - } - - public void setInitialDumpExist(boolean newValue) { - initialDumpExist = newValue; - // always force propagation - firePropertyChange(PROPERTY_INITIAL_DUMP_EXIST, newValue); - } - - public void setMainStorageOpened(boolean newValue) { - mainStorageOpened = newValue; - if (!newValue) { - // on force la reinitialisation - setMainStorageOpenedLocal(null); - } - // always force propagation - firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED, newValue); - } - - public void setMainStorageOpenedLocal(Boolean newValue) { - mainStorageOpenedLocal = newValue; - // always force propagation - firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED + "Local", newValue); - } - - public void setDisplayMainUI(boolean b) { - displayMainUI = b; - } - - public void setCanUseUI(boolean canUseUI) { - this.canUseUI = canUseUI; - if (!canUseUI) { - // on ne pourra pas lancer l'ui principale - setDisplayMainUI(false); - } - } - - @Override - public void setAutoPopupNumberEditor(boolean newValue) { - setOption(AUTO_POPUP_NUMBER_EDITOR, newValue); - } - - @Override - public void setShowNumberEditorButton(boolean newValue) { - setOption(SHOW_NUMBER_EDITOR_BUTTON, newValue); - } - - @Override - public void setShowTimeEditorSlider(boolean newValue) { - setOption(SHOW_DATE_TIME_EDITOR_SLIDER, newValue); - } - - @Override - public void setFullScreen(boolean newValue) { - setOption(FULL_SCREEN, newValue); - } - - @Override - public void setChangeSynchroSrc(boolean newValue) { - setOption(CHANGE_SYNCHRO_SRC, newValue); - } - - @Override - public void setStoreRemoteStorage(boolean newValue) { - setOption(STORE_REMOTE_STORAGE, newValue); - } - - @Override - public void setLoadLocalStorage(boolean newValue) { - setOption(LOAD_LOCAL_STORAGE, newValue); - } - - @Override - public void setDefaultDbMode(DbMode newValue) { - setOption(DEFAULT_DB_MODE, newValue); - } - - @Override - public void setDefaultCreationMode(CreationMode newValue) { - setOption(DEFAULT_CREATION_MODE, newValue); - } - - @Override - public void setDefaultGpsMaxDelay(int newValue) { - setOption(DEFAULT_GPS_MAX_DELAY, newValue); - } - - @Override - public void setDefaultGpsMaxSpeed(float newValue) { - setOption(DEFAULT_GPS_MAX_SPEED, newValue); - } - - @Override - public void setLocale(Locale newValue) { - setOption(LOCALE, newValue); - } - - @Override - public void setDbLocale(Locale newValue) { - setOption(DB_LOCALE, newValue); - } - - @Override - public void setCanMigrateObstuna(Boolean newValue) { - setOption(OBSTUNA_CAN_MIGRATE, newValue); - } - - @Override - public void setCanMigrateH2(Boolean newValue) { - setOption(H2_CAN_MIGRATE, newValue); - } - - @Override - public void setNonTargetObservation(int newValue) { - setOption(NON_TARGET_OBSERVATION, newValue); - } - - @Override - public void setTargetDiscardsObservation(int newValue) { - setOption(TARGET_DISCARDS_OBSERVATION, newValue); - } - - @Override - public void setSamplesObservation(int newValue) { - setOption(SAMPLES_OBSERVATION, newValue); - } - - @Override - public void setObjectsObservation(int newValue) { - setOption(OBJECTS_OBSERVATION, newValue); - } - - @Override - public void setDetailledActivitiesObservation(int newValue) { - setOption(DETAILLED_ACTIVITIES_OBSERVATION, newValue); - } - - @Override - public void setMammalsObservation(int newValue) { - setOption(MAMMALS_OBSERVATION, newValue); - } - - @Override - public void setBirdsObservation(int newValue) { - setOption(BIRDS_OBSERVATION, newValue); - } - - @Override - public void setBaitObservation(int newValue) { - setOption(BAIT_OBSERVATION, newValue); - } - - @Override - public void setShowMigrationSql(boolean showMigrationSql) { - setOption(SHOW_MIGRATION_SQL, showMigrationSql); - } - - @Override - public void setShowMigrationProgression(boolean showMigrationProgression) { - setOption(SHOW_MIGRATION_PROGRESSION, showMigrationProgression); - } - - @Override - public void setShowSql(boolean showSql) { - setOption(SHOW_SQL, showSql); - } - - @Override - public String getSpeciesListSeineNonTargetCatchId() { - String value = getOption(SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID.key); - return value; - } - - @Override - public String getSpeciesListSeineTargetCatchId() { - String value = getOption(SPECIES_LIST_SEINE_TARGET_CATCH_ID.key); - return value; - } - - @Override - public String getSpeciesListSeineSchoolEstimateId() { - String value = getOption(SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID.key); - return value; - } - - @Override - public String getSpeciesListSeineObjectObservedSpeciesId() { - String value = getOption(SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID.key); - return value; - } - - @Override - public String getSpeciesListSeineObjectSchoolEstimateId() { - String value = getOption(SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID.key); - return value; - } - - @Override - public String getSpeciesListLonglineCatchId() { - String value = getOption(SPECIES_LIST_LONGLINE_CATCH_ID.key); - return value; - } - - @Override - public String getSpeciesListLonglineEncounterId() { - String value = getOption(SPECIES_LIST_LONGLINE_ENCOUNTER_ID.key); - return value; - } - - @Override - public String getSpeciesListLonglineDepredatorId() { - String value = getOption(SPECIES_LIST_LONGLINE_DEPREDATOR_ID.key); - return value; - } - - @Override - public void setSpeciesListSeineNonTargetCatchId(String speciesListSeineNonTargetCatchId) { - setOption(SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID, speciesListSeineNonTargetCatchId); - } - - @Override - public void setSpeciesListSeineTargetCatchId(String speciesListSeineTargetCatchId) { - setOption(SPECIES_LIST_SEINE_TARGET_CATCH_ID, speciesListSeineTargetCatchId); - } - - @Override - public void setSpeciesListSeineSchoolEstimateId(String speciesListSeineSchoolEstimateId) { - setOption(SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID, speciesListSeineSchoolEstimateId); - } - - @Override - public void setSpeciesListSeineObjectObservedSpeciesId(String speciesListSeineObjectObservedSpeciesId) { - setOption(SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID, speciesListSeineObjectObservedSpeciesId); - } - - @Override - public void setSpeciesListSeineObjectSchoolEstimateId(String speciesListseineObjectSchoolEstimateId) { - setOption(SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID, speciesListseineObjectSchoolEstimateId); - } - - @Override - public void setSpeciesListLonglineCatchId(String speciesListLonglineCatchId) { - setOption(SPECIES_LIST_LONGLINE_CATCH_ID, speciesListLonglineCatchId); - } - - @Override - public void setSpeciesListLonglineEncounterId(String speciesListLonglineEncounterId) { - setOption(SPECIES_LIST_LONGLINE_ENCOUNTER_ID, speciesListLonglineEncounterId); - } - - @Override - public void setSpeciesListLonglineDepredatorId(String speciesListLonglineDepredatorId) { - setOption(SPECIES_LIST_LONGLINE_DEPREDATOR_ID, speciesListLonglineDepredatorId); - } - - public Color getMapBackgroundColor() { - Color result = getOptionAsColor(MAP_BACKGROUND_COLOR.key); - return result; - } - - public List<File> getMapLayerFiles() { - List<File> layers = Lists.newLinkedList(); - - for (ObserveConfigOption layerOption : ObserveConfigOption.MAP_LAYERS) { - File layerFile = getOptionAsFile(layerOption.key); - if (layerFile != null && layerFile.exists()) { - layers.add(layerFile); - } - } - return layers; - } - - public File getMapStyleFile() { - File result = getOptionAsFile(ObserveConfigOption.MAP_STYLE_FILE.key); - return result; - } - - public String[] getUnsavables() { - if (unsavables == null) { - List<String> tmp = new ArrayList<String>(); - tmp.add(OBSTUNA_PASSWORD.getKey()); -// tmp.add(OBSTUNA_SSL_CERTIFICAT_PASSWORD.getKey()); - tmp.add(H2_PASSWORD.getKey()); - tmp.add(OBSTUNA_CAN_MIGRATE.getKey()); - -// if (!ObserveRunner.isAdmin()) { -// // toutes les options dite admin ne sont pas sauvables -// -// for (ObserveConfigOption option : values()) { -// if (option.isAdmin()) { -// -// // ne pas ajouter les options d'admin pour le simple utilisateur -// tmp.add(option.key); -// } -// } -// } - unsavables = tmp.toArray(new String[tmp.size()]); - } - return unsavables; - } - - @Override - public void saveForUser(String... excludeKeys) { - if (log.isInfoEnabled()) { - log.info(t("observe.message.save.configuration", getUserConfigFile())); - } - super.saveForUser(getUnsavables()); - } - - //FIXME -// @Override -// public void fromStorageConfig(H2DataSourceConfig config) { -// setOption(SHOW_MIGRATION_PROGRESSION, config.isShowMigrationProgression()); -// setOption(SHOW_MIGRATION_SQL, config.isShowMigrationSql()); -// saveForUser(); -// } - -// @Override -// public void fromStorageConfig(PGDataSourceConfig config) { -// setOption(OBSTUNA_URL.getKey(), config.getUrl()); -// setOption(OBSTUNA_LOGIN.getKey(), config.getLogin()); -// setOption(OBSTUNA_PASSWORD.getKey(), -// new String(config.getPassword())); -// boolean useSsl = config.isUseSsl(); -// setOption(OBSTUNA_USE_SSL_CERT, useSsl); -//// if (useSsl) { -//// setOption(OBSTUNA_SSL_CERTIFICAT_FILE, -//// config.getSslCertificatFile().getAbsolutePath()); -//// setOption(OBSTUNA_SSL_CERTIFICAT_PASSWORD, -//// new String(config.getSslCertificatPassword())); -//// } else { -//// setOption(OBSTUNA_SSL_CERTIFICAT_FILE.key, ""); -//// setOption(OBSTUNA_SSL_CERTIFICAT_PASSWORD, EMPTY_CHAR_ARRAY); -//// } -// setOption(SHOW_MIGRATION_PROGRESSION, config.isShowMigrationProgression()); -// setOption(SHOW_MIGRATION_SQL, config.isShowMigrationSql()); -// //TODO-TC20100311 : on devrait pas regarder si l'utilisateur veut sauver -// //TODO-TC20100311 : la configuration ? -// saveForUser(); -// } - - //FIXME -// @Override -// public H2DataSourceConfig toH2StorageConfig(String label) { -// H2DataSourceConfig result; -// result = DataSourceFactory.newH2Config( -// label, -// CommonDataSourceConfigParam.LOGIN, getH2Login(), -// CommonDataSourceConfigParam.PASSWORD, getH2Password(), -// CommonDataSourceConfigParam.CAN_MIGRATE, isCanMigrateH2(), -// CommonDataSourceConfigParam.SHOW_MIGRATION_PROGRESSION, isShowMigrationProgression(), -// CommonDataSourceConfigParam.SHOW_MIGRATION_SQL, isShowMigrationSql(), -// H2DataSourceConfigParam.DIRECTORY, getLocalDBDirectory() -// ); -// return result; -// } - - //FIXME -// @Override -// public PGDataSourceConfig toPostgresStorageConfig(String label) { -// PGDataSourceConfig result; -// result = DataSourceFactory.newPGConfig( -// label, -// PGDataSourceConfigParam.URL, getObstunaUrl(), -// CommonDataSourceConfigParam.LOGIN, getObstunaLogin(), -// CommonDataSourceConfigParam.PASSWORD, getObstunaPassword(), -// CommonDataSourceConfigParam.CAN_MIGRATE, isCanMigrateObstuna(), -// CommonDataSourceConfigParam.SHOW_MIGRATION_PROGRESSION, isShowMigrationProgression(), -// CommonDataSourceConfigParam.SHOW_MIGRATION_SQL, isShowMigrationSql(), -// PGDataSourceConfigParam.USE_SSL, isObstunaUseSsl() -// ); -// return result; -// } - - public void removeJaxxPropertyChangeListener() { - List<String> tmp = new ArrayList<String>(); - for (ObserveConfigOption option : values()) { - String propertyName = option.getPropertyKey(); - if (propertyName != null) { - tmp.add(propertyName); - } - } - if (log.isDebugEnabled()) { - log.debug("property names to seek for options : " + tmp); - } - String[] propertyNames = tmp.toArray( - new String[tmp.size()]); - - PropertyChangeListener[] toRemove = - UIHelper.findJaxxPropertyChangeListener( - propertyNames, - getPropertyChangeListeners()); - if (toRemove == null || toRemove.length == 0) { - return; - } - if (log.isDebugEnabled()) { - log.debug("before remove : " + getPropertyChangeListeners().length); - log.debug("toRemove : " + toRemove.length); - } - for (PropertyChangeListener listener : toRemove) { - removePropertyChangeListener(listener); - } - if (log.isDebugEnabled()) { - log.debug("after remove : " + getPropertyChangeListeners().length); - } - } - - public void setOption(ObserveConfigOption option, Object newValue) { - String key = option.getKey(); - Object oldValue = getOption(key); - String value = String.valueOf(newValue); - setOption(key, value); - if (log.isDebugEnabled()) { - log.debug("set option " + key + " value : " + value); - } - String propertyName = option.getPropertyKey(); - if (propertyName != null) { - // l'option est javabeans, declanchement d'un changement - if (log.isTraceEnabled()) { - log.trace("fires config change from option " + key); - } - firePropertyChange(propertyName, oldValue, newValue); - } - } - - void setVersion(Version version) { - this.version = version; - } - - public Set<String> getSeineVesselTypeIds() { - return seineVesselTypeIds; - } - - public Set<String> getLonglineVesselTypeIds() { - return longlinVesselTypeIds; - } - - @Override - public String replaceRecursiveOptions(String option) { - return super.replaceRecursiveOptions(option); - } - - ////////////////////////////////////////////////// - // Toutes les étapes d'actions - ////////////////////////////////////////////////// - - public enum Step { - - AfterInit, BeforeExit - } - - protected void firePropertyChange(String propertyName, Object newValue) { - pcs.firePropertyChange(propertyName, null, newValue); - } -} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveResourceManager.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveResourceManager.java index 3cd0908..2ae8455 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveResourceManager.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveResourceManager.java @@ -21,6 +21,8 @@ */ package fr.ird.observe; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -236,9 +238,9 @@ public class ObserveResourceManager { * @return le fichier * @throws IOException pour tout problème de création de répertoire */ - protected File createDirectory(ObserveConfig config, - ObserveConfigOption option) throws IOException { - File dir = config.getOptionAsFile(option.key); + protected File createDirectory(ObserveSwingApplicationConfig config, + ObserveSwingApplicationConfigOption option) throws IOException { + File dir = config.getOptionAsFile(option.getKey()); createDirectory(dir); return dir; } @@ -251,10 +253,10 @@ public class ObserveResourceManager { * @param options les options qui représentent des répertoires ou fichiers. * @throws IOException pour tout problème de création de répertoire */ - protected void createParentDirectory(ObserveConfig config, - ObserveConfigOption... options) throws IOException { - for (ObserveConfigOption option : options) { - File dir = config.getOptionAsFile(option.key).getParentFile(); + protected void createParentDirectory(ObserveSwingApplicationConfig config, + ObserveSwingApplicationConfigOption... options) throws IOException { + for (ObserveSwingApplicationConfigOption option : options) { + File dir = config.getOptionAsFile(option.getKey()).getParentFile(); createDirectory(dir); } } @@ -306,9 +308,9 @@ public class ObserveResourceManager { } } - public File unzipToDirectory(Resource resource, ObserveConfig config, ObserveConfigOption option, String message) throws IOException { + public File unzipToDirectory(Resource resource, ObserveSwingApplicationConfig config, ObserveSwingApplicationConfigOption option, String message) throws IOException { - File dir = config.getOptionAsFile(option.key); + File dir = config.getOptionAsFile(option.getKey()); createDirectory(dir); InputStream inputStream = openInternalStream(resource.getUrl()); try { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java index b7cd96e..3a844fa 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java @@ -22,9 +22,9 @@ package fr.ird.observe; import com.google.common.base.Preconditions; -import fr.ird.observe.business.ObserveServiceHelper; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.converter.FloatConverter; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.UIHelper; @@ -62,7 +62,7 @@ import java.util.Locale; import java.util.Map; import java.util.Properties; -import static fr.ird.observe.ObserveConfigOption.*; +import static fr.ird.observe.configuration.ObserveSwingApplicationConfigOption.*; import static fr.ird.observe.ObserveResourceManager.Resource; import static org.nuiton.i18n.I18n.t; @@ -192,7 +192,7 @@ public abstract class ObserveRunner extends ApplicationRunner { // 1 - preparation de la configuration - ObserveConfig config = initConfig(); + ObserveSwingApplicationConfig config = initConfig(); if (log.isInfoEnabled()) { log.info(t("observe.runner.config.loaded", config.getVersion())); @@ -240,7 +240,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - protected void initLog(ObserveConfig config) throws IOException { + protected void initLog(ObserveSwingApplicationConfig config) throws IOException { File logFile = config.getLogConfigurationFile(); Preconditions.checkState(logFile.exists(), "Le fichier de configuration des logs %s n'existe pas.", logFile); @@ -281,7 +281,7 @@ public abstract class ObserveRunner extends ApplicationRunner { Arrays.toString(args))); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); if (log.isDebugEnabled()) { log.debug("Will use context : " + context); @@ -289,20 +289,19 @@ public abstract class ObserveRunner extends ApplicationRunner { UIHelper.checkJAXXContextEntries( context, - ObserveContext.CONFIG_ENTRY_DEF, - ObserveContext.ACTIONS_ENTRY_DEF, - //FIXME -// ObserveContext.DATA_SERVICE_ENTRY_DEF, - ObserveContext.DECORATOR_SERVICE_ENTRY_DEF + ObserveSwingApplicationContext.CONFIG_ENTRY_DEF, + ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF, + ObserveSwingApplicationContext.SERVICE_MAIN_FACTORY_ENTRY_DEF, + ObserveSwingApplicationContext.DECORATOR_SERVICE_ENTRY_DEF ); // 1 - launch commandline actions - ObserveConfig config = context.getConfig(); + ObserveSwingApplicationConfig config = context.getConfig(); - if (config.containActions(ObserveConfig.Step.AfterInit)) { + if (config.containActions(ObserveSwingApplicationConfig.Step.AfterInit)) { - config.doAction(ObserveConfig.Step.AfterInit.ordinal()); + config.doAction(ObserveSwingApplicationConfig.Step.AfterInit.ordinal()); if (log.isInfoEnabled()) { log.info("Operation terminées..."); @@ -369,7 +368,7 @@ public abstract class ObserveRunner extends ApplicationRunner { if (log.isDebugEnabled()) { log.debug("Will close context..."); } - ObserveContext.get().close(); + ObserveSwingApplicationContext.get().close(); } } @@ -404,9 +403,9 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - protected ObserveConfig initConfig() throws Exception { + protected ObserveSwingApplicationConfig initConfig() throws Exception { - ObserveConfig config = new ObserveConfig(); + ObserveSwingApplicationConfig config = new ObserveSwingApplicationConfig(); // init config (load application configuration) config.initConfig(resourceManager); @@ -420,7 +419,7 @@ public abstract class ObserveRunner extends ApplicationRunner { return config; } - protected void initUserDirectories(ObserveConfig config) throws IOException { + protected void initUserDirectories(ObserveSwingApplicationConfig config) throws IOException { // 1 - user data directory @@ -507,15 +506,14 @@ public abstract class ObserveRunner extends ApplicationRunner { } - protected void detectLocalDataBase(ObserveConfig config) throws IOException { - //FIXME -// boolean hasLocalStorage = ObserveServiceHelper.isLocalStorageExists(config); -// config.setLocalStorageExist(hasLocalStorage); -// if (!hasLocalStorage) { -// if (log.isInfoEnabled()) { -// log.info(t("observe.init.no.local.db.detected", config.getLocalDBDirectory())); -// } -// } + protected void detectLocalDataBase(ObserveSwingApplicationConfig config) throws IOException { + boolean hasLocalStorage = config.getLocalDBDirectory().exists(); + config.setLocalStorageExist(hasLocalStorage); + if (!hasLocalStorage) { + if (log.isInfoEnabled()) { + log.info(t("observe.init.no.local.db.detected", config.getLocalDBDirectory())); + } + } boolean hasInitialDb = ObserveServiceHelper.isInitialDbExists(config); config.setInitialDumpExist(hasInitialDb); @@ -527,7 +525,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - protected void initI18n(ObserveConfig config) { + protected void initI18n(ObserveSwingApplicationConfig config) { I18n.close(); @@ -562,7 +560,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - protected void initUIConfiguration(ObserveConfig config) throws IOException { + protected void initUIConfiguration(ObserveSwingApplicationConfig config) throws IOException { // prepare ui look&feel and load ui properties try { @@ -588,7 +586,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - public void loadUIConfig(ObserveConfig config) { + public void loadUIConfig(ObserveSwingApplicationConfig config) { // chargement de la configuration des uis File dir = config.getResourcesDirectory(); @@ -630,26 +628,22 @@ public abstract class ObserveRunner extends ApplicationRunner { * @return le context applicatif * @throws IllegalStateException si un contexte applicatif a déja été positionné. */ - public ObserveContext initContext(ObserveConfig config) throws Exception { + public ObserveSwingApplicationContext initContext(ObserveSwingApplicationConfig config) throws Exception { if (ObserveServiceHelper.isInit()) { throw new IllegalStateException( "there is an already application context registred."); } - ObserveContext instance = new ObserveContext(); + ObserveSwingApplicationContext instance = new ObserveSwingApplicationContext(); // add config - ObserveContext.CONFIG_ENTRY_DEF.setContextValue(instance, config); - - // add dataService - //FIXME -// instance.getDataService(); + ObserveSwingApplicationContext.CONFIG_ENTRY_DEF.setContextValue(instance, config); - // add data context - instance.getDataContext(); + // add service main factory + instance.getObserveServiceMainFactory(); // add actions - ObserveContext.ACTIONS_ENTRY_DEF.setContextValue(instance, new ObserveCLAction()); + ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF.setContextValue(instance, new ObserveCLAction()); // referencement du context applicatif sur le helper de service ObserveServiceHelper.set(instance); @@ -660,8 +654,8 @@ public abstract class ObserveRunner extends ApplicationRunner { return instance; } - protected ObserveMainUI startUI(ObserveContext context, - ObserveConfig config) { + protected ObserveMainUI startUI(ObserveSwingApplicationContext context, + ObserveSwingApplicationConfig config) { ObserveMainUIHandler uiHandler = context.getContextValue(ObserveMainUIHandler.class); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveServiceHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java similarity index 91% rename from observe-application-swing/src/main/java/fr/ird/observe/business/ObserveServiceHelper.java rename to observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java index 6b2bbcd..e4b7f05 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveServiceHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java @@ -19,12 +19,12 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.business; +package fr.ird.observe; import fr.ird.observe.business.gps.GPSService; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.business.validation.ValidationService; -import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -36,7 +36,7 @@ public class ObserveServiceHelper { private static Log log = LogFactory.getLog(ObserveServiceHelper.class); /** Le context applicatif. */ - public static ObserveApplicationContext context; + public static ObserveSwingApplicationContext context; /** Un drapeau pour savoir quand l'application est en cours de fermeture. */ protected static boolean closed; @@ -54,7 +54,7 @@ public class ObserveServiceHelper { * @return l'instance partagé du contexte. * @throws IllegalStateException si le contexte n'a pas été initialisé */ - public static ObserveApplicationContext get() throws IllegalStateException { + public static ObserveSwingApplicationContext get() throws IllegalStateException { checkInit(); return context; } @@ -72,7 +72,7 @@ public class ObserveServiceHelper { return context != null; } - public static void set(ObserveApplicationContext context) { + public static void set(ObserveSwingApplicationContext context) { if (isInit()) { throw new IllegalStateException( "application context already registred."); @@ -132,7 +132,7 @@ public class ObserveServiceHelper { public static ValidationContext getValidationContext() { checkInit(); - ObserveApplicationContext context = get(); + ObserveSwingApplicationContext context = get(); ValidationContext dataContext = context.getValidationContext(); return dataContext; } @@ -144,7 +144,7 @@ public class ObserveServiceHelper { */ public static GPSService getGPSService() { checkInit(); - ObserveApplicationContext context = get(); + ObserveSwingApplicationContext context = get(); GPSService service = context.getGPSService(); return service; } @@ -183,7 +183,7 @@ public class ObserveServiceHelper { */ public static DecoratorService getDecoratorService() { checkInit(); - ObserveApplicationContext context = get(); + ObserveSwingApplicationContext context = get(); DecoratorService service = context.getDecoratorService(); return service; } @@ -199,7 +199,7 @@ public class ObserveServiceHelper { */ //FIXME // public static DataSource newEmptyTempStorage( -// IObserveConfig config, +// ObserveSwingApplicationConfig config, // String label, // String prefixName) throws IOException { // String dbfileName = (prefixName == null ? "tmp_" : prefixName + "_") @@ -254,7 +254,7 @@ public class ObserveServiceHelper { * @see DataSource */ //FIXME -// public static H2DataSource newLocalStorageService(IObserveConfig config) throws IOException, IllegalStateException { +// public static H2DataSource newLocalStorageService(ObserveSwingApplicationConfig config) throws IOException, IllegalStateException { // // // H2DataSourceConfig c = @@ -280,7 +280,7 @@ public class ObserveServiceHelper { * @throws IOException si pb d'IO */ //FIXME -// public static boolean isLocalStorageExists(IObserveConfig config) throws IOException { +// public static boolean isLocalStorageExists(ObserveSwingApplicationConfig config) throws IOException { // // // build a local storage service config // H2DataSourceConfig storageConfig = config.toH2StorageConfig( @@ -303,7 +303,7 @@ public class ObserveServiceHelper { * @param config la configuration à utiliser * @return {@code true} si le dump existe, {@code false} sinon. */ - public static boolean isInitialDbExists(IObserveConfig config) { + public static boolean isInitialDbExists(ObserveSwingApplicationConfig config) { boolean dbExists = config.getInitialDbDump().exists(); return dbExists; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java similarity index 60% rename from observe-application-swing/src/main/java/fr/ird/observe/ObserveContext.java rename to observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index df5267a..decdfb3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -21,10 +21,23 @@ */ package fr.ird.observe; -import fr.ird.observe.business.ObserveApplicationContext; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.business.BinderService; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.business.gps.GPSService; +import fr.ird.observe.business.validation.ObserveValidator; +import fr.ird.observe.business.validation.ValidationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceInitializer; +import fr.ird.observe.services.ObserveServiceMainFactory; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; @@ -44,18 +57,24 @@ import fr.ird.observe.ui.actions.shared.SaveEditUIAction; import fr.ird.observe.ui.actions.shared.SelectNodeUIAction; import fr.ird.observe.ui.actions.shared.SelectOpenNodeUIAction; import fr.ird.observe.ui.content.ContentUI; -import fr.ird.observe.ui.tree.ObserveTreeHelper; +import jaxx.runtime.JAXXUtil; +import jaxx.runtime.context.DefaultApplicationContext; import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.cfg.Environment; +import org.nuiton.decorator.Decorator; -import javax.swing.*; -import java.awt.*; +import javax.swing.ActionMap; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import java.awt.Component; +import java.io.File; import java.util.Arrays; import java.util.List; +import java.util.Locale; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -71,14 +90,62 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.0 */ -public class ObserveContext extends ObserveApplicationContext { +public class ObserveSwingApplicationContext extends DefaultApplicationContext { /** Logger */ - static private Log log = LogFactory.getLog(ObserveContext.class); + static private Log log = LogFactory.getLog(ObserveSwingApplicationContext.class); - //------------------------------------------- - // UI instances - //------------------------------------------- + /** the jaxx context entry to store the config */ + public static final JAXXContextEntryDef<ObserveSwingApplicationConfig> CONFIG_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveSwingApplicationConfig.class); + + /** the jaxx context entry to store the decorator service */ + public static final JAXXContextEntryDef<DecoratorService> DECORATOR_SERVICE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(DecoratorService.class); + + /** the jaxx context entry to store the service main factory */ + public static final JAXXContextEntryDef<ObserveServiceMainFactory> SERVICE_MAIN_FACTORY_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveServiceMainFactory.class); + + /** the jaxx context entry to store the data source configuration factory */ + public static final JAXXContextEntryDef<ObserveDataSourceConfigurationMainFactory> DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveDataSourceConfigurationMainFactory.class); + + /** the jaxx context entry to store the data source configuration */ + public static final JAXXContextEntryDef<ObserveDataSourceConfiguration> DATA_SOURCE_CONFIGURATION_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveDataSourceConfiguration.class); + + /** the jaxx context entry to store the data source connexion */ + public static final JAXXContextEntryDef<ObserveDataSourceConnection> DATA_SOURCE_CONNECTION_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveDataSourceConnection.class); + + /** the jaxx context entry to store the decorator service */ + public static final JAXXContextEntryDef<BinderService> BINDER_SERVICE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(BinderService.class); + + /** the jaxx context entry to store the gps service */ + public static final JAXXContextEntryDef<GPSService> GPS_SERVICE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(GPSService.class); + + //FIXME +// /** the jaxx context entry to store the consolidate data service */ +// public static final JAXXContextEntryDef<ConsolidateDataService> CONSOLIDATE_DATA_SERVICE_ENTRY_DEF = +// JAXXUtil.newContextEntryDef(ConsolidateDataService.class); + //FIXME +// /** the jaxx context entry to store the data service */ +// public static final JAXXContextEntryDef<DataService> DATA_SERVICE_ENTRY_DEF = +// JAXXUtil.newContextEntryDef(DataService.class); + + /** the jaxx context entry to store the data service */ + public static final JAXXContextEntryDef<DataContext> DATA_CONTEXT_ENTRY_DEF = + JAXXUtil.newContextEntryDef(DataContext.class); + + /** the jaxx context entry to store the data source (says the ui data source) */ + public static final JAXXContextEntryDef<DataSource> DATA_SOURCE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(DataSource.class); + + public static final JAXXContextEntryDef<ValidationContext> VALIDATION_CONTEXT_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ValidationContext.class); /** the jaxx context entry to store the main ui */ private static final JAXXContextEntryDef<ObserveMainUI> MAIN_UI_ENTRY_DEF = @@ -96,26 +163,255 @@ public class ObserveContext extends ObserveApplicationContext { public static final JAXXContextEntryDef<List<String>> NODE_TO_RESELECT_ENTRY_DEF = UIHelper.newListContextEntryDef("nodeToReselect"); + public <O> Decorator<O> getDecorator(Class<O> clazz) { + DecoratorService provider = getDecoratorService(); + Decorator<O> value = provider.getDecoratorByType(clazz); + return value; + } + + public <O> Decorator<O> getDecorator(Class<O> clazz, String name) { + DecoratorService provider = getDecoratorService(); + Decorator<O> value = provider.getDecoratorByType(clazz, name); + return value; + } + + public ObserveSwingApplicationConfig getConfig() { + return CONFIG_ENTRY_DEF.getContextValue(this); + } + + + + public final DataSource getDataSource() { + DataSource dataSource = DATA_SOURCE_ENTRY_DEF.getContextValue(this); + return dataSource; + } + + public final void setDataSource(DataSource source) { + if (source == null) { + DATA_SOURCE_ENTRY_DEF.removeContextValue(this); + } else { + DATA_SOURCE_ENTRY_DEF.setContextValue(this, source); + } + } + + public final DecoratorService getDecoratorService() { + DecoratorService decoratorService = + DECORATOR_SERVICE_ENTRY_DEF.getContextValue(this); + if (decoratorService == null) { + + // initialisation du service de décoration + // initialisation + ObserveSwingApplicationConfig config = getConfig(); + ReferentialLocale loc = ReferentialLocale.FR; + if (config != null) { + Locale dbLocale = config.getDbLocale(); + if (dbLocale != null) { + loc = ReferentialLocale.valueOf(dbLocale); + } + } + decoratorService = new DecoratorService(loc); + DECORATOR_SERVICE_ENTRY_DEF.setContextValue(this, decoratorService); + } + return decoratorService; + } + + public final ObserveServiceMainFactory getObserveServiceMainFactory() { + + ObserveServiceMainFactory serviceMainFactory = SERVICE_MAIN_FACTORY_ENTRY_DEF.getContextValue(this); + + if (serviceMainFactory == null) { + + serviceMainFactory = ObserveServiceMainFactory.get(); + + SERVICE_MAIN_FACTORY_ENTRY_DEF.setContextValue(this, serviceMainFactory); + + } + + return serviceMainFactory; + } + + public final ObserveDataSourceConfigurationMainFactory getObserveDataSourceConfigurationMainFactory() { + + ObserveDataSourceConfigurationMainFactory configurationMainFactory = DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF.getContextValue(this); + + if (configurationMainFactory == null) { + + configurationMainFactory = new ObserveDataSourceConfigurationMainFactory(); + + DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF.setContextValue(this, configurationMainFactory); + + } + + return configurationMainFactory; + } + + public final void setObserveDataSourceConfiguration(ObserveDataSourceConfiguration sourceConfiguration) { + DATA_SOURCE_CONFIGURATION_ENTRY_DEF.setContextValue(this, sourceConfiguration); + } + + public final ObserveDataSourceConfiguration getObserveDataSourceConfiguration() { + return DATA_SOURCE_CONFIGURATION_ENTRY_DEF.getContextValue(this); + } + + public final void setObserveDataSourceConnection(ObserveDataSourceConnection connection) { + DATA_SOURCE_CONNECTION_ENTRY_DEF.setContextValue(this, connection); + } + + public final ObserveDataSourceConnection getObserveDataSourceConnection() { + return DATA_SOURCE_CONNECTION_ENTRY_DEF.getContextValue(this); + } + + public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + + return newService(dataSourceConfiguration, null, serviceType); + } + + public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { + + ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(dataSourceConfiguration, dataSourceConnection); + + ObserveServiceMainFactory serviceFactory = getObserveServiceMainFactory(); + + return serviceFactory.newService(observeServiceInitializer, serviceType); + } + + public ObserveServiceInitializer getObserveServiceInitializer() { + + ObserveDataSourceConnection connection = getObserveDataSourceConnection(); + + ObserveDataSourceConfiguration configuration = getObserveDataSourceConfiguration(); + + ObserveServiceInitializer serviceInitializer = getObserveServiceInitializer(configuration, connection); + + return serviceInitializer; + } + + protected ObserveServiceInitializer getObserveServiceInitializer(ObserveDataSourceConfiguration dataSourceConfiguration, ObserveDataSourceConnection dataSourceConnection) { + + Locale locale = getConfig().getLocale(); + + File tmpDirectory = getConfig().getTmpDirectory(); + + ReferentialLocale referentialLocale = ReferentialLocale.valueOf(locale); + + ObserveDataSourceConfigurationAndConnection configurationAndConnection = new ObserveDataSourceConfigurationAndConnection(dataSourceConfiguration, dataSourceConnection); + + ObserveServiceInitializer observeServiceInitializer = ObserveServiceInitializer.create( + locale, + referentialLocale, + tmpDirectory, + configurationAndConnection + ); + + return observeServiceInitializer; + } + + public <S extends ObserveService> S newService(Class<S> serviceType) { + + ObserveServiceMainFactory serviceFactory = getObserveServiceMainFactory(); + + S service = serviceFactory.newService(getObserveServiceInitializer(), serviceType); + + return service; + } + + public final BinderService getBinderService() { + BinderService service = BINDER_SERVICE_ENTRY_DEF.getContextValue(this); + if (service == null) { + service = new BinderService(); + BINDER_SERVICE_ENTRY_DEF.setContextValue(this, service); + } + return service; + } + + public final GPSService getGPSService() { + GPSService service = + GPS_SERVICE_ENTRY_DEF.getContextValue(this); + if (service == null) { + service = new GPSService(); + GPS_SERVICE_ENTRY_DEF.setContextValue(this, service); + } + return service; + } + + //FIXME +// public ConsolidateDataService getConsolidateDataService() { +// +// ConsolidateDataService service = +// CONSOLIDATE_DATA_SERVICE_ENTRY_DEF.getContextValue(this); +// if (service == null) { +// service = new ConsolidateDataService(); +// CONSOLIDATE_DATA_SERVICE_ENTRY_DEF.setContextValue(this, service); +// } +// return service; +// } + + public final DataContext getDataContext() { + DataContext result = DATA_CONTEXT_ENTRY_DEF.getContextValue(this); + if (result == null) { + result = new DataContext(); + DATA_CONTEXT_ENTRY_DEF.setContextValue(this, result); + } + return result; + } + + public final ValidationContext getValidationContext() { + ValidationContext result = + VALIDATION_CONTEXT_ENTRY_DEF.getContextValue(this); + if (result == null) { + result = new ValidationContext(); + ObserveValidator.setValidationContext(result); + result.setDataContext(getDataContext()); + VALIDATION_CONTEXT_ENTRY_DEF.setContextValue(this, result); + } + return result; + } + + /** + * close the application's context. + * + * @throws Exception if any pb while closing + */ + public void close() throws Exception { + if (log.isDebugEnabled()) { + log.debug("closing context " + this); + } + + // fermeture du context de données + if (getDataSource() != null) { + setDataSource(null); + } + + getValidationContext().closeDataSource(); + + // fermeture des services de persistances ouverts + //FIXME +// DataSourceFactory.dispose(); + + // fermeture du context principal + clear(); + + //FIXME +// ObserveServiceHelper.close(); + } + + + //------------------------------------------- + // UI instances + //------------------------------------------- + /** * Récupération du contexte applicatif. * * @return l'instance partagé du contexte. * @throws IllegalStateException si le contexte n'a pas été initialisé */ - public static ObserveContext get() throws IllegalStateException { - //FIXME -// return (ObserveContext) ObserveServiceHelper.get(); - return null; + public static ObserveSwingApplicationContext get() throws IllegalStateException { + return ObserveServiceHelper.get(); } public static boolean isClosed() { - //FIXME -// return ObserveServiceHelper.isClosed(); - return false; - } - - public ObserveConfig getConfig() { - return (ObserveConfig) super.getConfig(); + return ObserveServiceHelper.isClosed(); } public ObserveMainUI getObserveMainUI() { @@ -207,7 +503,7 @@ public class ObserveContext extends ObserveApplicationContext { /** Un objet pour bloquer le context */ protected final Object lock = new Object(); - public ObserveContext() { + public ObserveSwingApplicationContext() { } @SuppressWarnings({"UnconditionalWait", "WaitOrAwaitWithoutTimeout", "WaitNotInLoop"}) @@ -231,7 +527,7 @@ public class ObserveContext extends ObserveApplicationContext { ObserveRunner.getRunner().setReload(true); } - public void initStorage(ObserveConfig config, + public void initStorage(ObserveSwingApplicationConfig config, ObserveMainUI mainUI, boolean askToCreate) { try { @@ -264,7 +560,7 @@ public class ObserveContext extends ObserveApplicationContext { } } - protected void createStorage(ObserveConfig config, + protected void createStorage(ObserveSwingApplicationConfig config, ObserveMainUIHandler uiHandler) { int reponse = UIHelper.askUser( @@ -471,7 +767,7 @@ public class ObserveContext extends ObserveApplicationContext { // // // toutes les données sont chargées, on peut declarer le service // // comme ouvert dans la configuration -// ObserveConfig config = getConfig(); +// ObserveSwingApplicationConfig config = getConfig(); // config.setMainStorageOpened(true); // config.setMainStorageOpenedLocal(source instanceof H2DataSource); // diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/IObserveConfig.java b/observe-application-swing/src/main/java/fr/ird/observe/business/IObserveConfig.java index 282c604..3d0322a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/IObserveConfig.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/IObserveConfig.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.business; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; import org.nuiton.util.version.Version; import java.beans.PropertyChangeListener; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java index 5037233..66b1965 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.business; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.gps.GPSService; @@ -51,8 +52,8 @@ public class ObserveApplicationContext extends DefaultApplicationContext { static private Log log = LogFactory.getLog(ObserveApplicationContext.class); /** the jaxx context entry to store the config */ - public static final JAXXContextEntryDef<IObserveConfig> CONFIG_ENTRY_DEF = - JAXXUtil.newContextEntryDef(IObserveConfig.class); + public static final JAXXContextEntryDef<ObserveSwingApplicationConfig> CONFIG_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveSwingApplicationConfig.class); /** the jaxx context entry to store the decorator service */ public static final JAXXContextEntryDef<DecoratorService> DECORATOR_SERVICE_ENTRY_DEF = @@ -98,7 +99,7 @@ public class ObserveApplicationContext extends DefaultApplicationContext { return value; } - public IObserveConfig getConfig() { + public ObserveSwingApplicationConfig getConfig() { return CONFIG_ENTRY_DEF.getContextValue(this); } @@ -122,7 +123,7 @@ public class ObserveApplicationContext extends DefaultApplicationContext { // initialisation du service de décoration // initialisation - IObserveConfig config = getConfig(); + ObserveSwingApplicationConfig config = getConfig(); ReferentialLocale loc = ReferentialLocale.FR; if (config != null) { Locale dbLocale = config.getDbLocale(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceConfig.java b/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceConfig.java index 7ce6315..ead8e9a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceConfig.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceConfig.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.business.db; -import fr.ird.observe.business.db.constants.CreationMode; +import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.business.db.constants.DataPolicy; import fr.ird.observe.business.db.constants.DataSourceState; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceFactory.java b/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceFactory.java index 39838fb..6846264 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceFactory.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/db/DataSourceFactory.java @@ -85,7 +85,7 @@ public class DataSourceFactory { // }; //FIXME -// public static Version getDbVersion() { +// public static Version getModelVersion() { // if (ObserveServiceHelper.context != null) { // ApplicationConfig config; // config = ObserveServiceHelper.context.getContextValue(ApplicationConfig.class); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CommonDataSourceConfigParam.java b/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CommonDataSourceConfigParam.java index a41bd4d..3aa71f6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CommonDataSourceConfigParam.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CommonDataSourceConfigParam.java @@ -23,6 +23,7 @@ package fr.ird.observe.business.db.constants; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceConfigParam; +import fr.ird.observe.db.constantes.CreationMode; import org.hibernate.cfg.Environment; import org.nuiton.topia.migration.TopiaMigrationEngine; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ObserveValidator.java b/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ObserveValidator.java index 39d1af5..621740d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ObserveValidator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ObserveValidator.java @@ -23,8 +23,8 @@ package fr.ird.observe.business.validation; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ValueStack; -import fr.ird.observe.business.ObserveApplicationContext; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSourceFactory; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; @@ -111,7 +111,7 @@ public class ObserveValidator<B> extends SwingValidator<B> { if (log.isDebugEnabled()) { log.debug("No validation context registred, try in application context..."); } - ObserveApplicationContext rootContext; + ObserveSwingApplicationContext rootContext; rootContext = ObserveServiceHelper.get(); if (rootContext == null) { throw new IllegalStateException( diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ValidationMessageDetector.java b/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ValidationMessageDetector.java index 6d0b462..0898862 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ValidationMessageDetector.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/validation/ValidationMessageDetector.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.business.validation; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.services.dto.IdDto; import org.apache.commons.logging.Log; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveApplicationConfigProvider.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveApplicationConfigProvider.java similarity index 90% rename from observe-application-swing/src/main/java/fr/ird/observe/ObserveApplicationConfigProvider.java rename to observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveApplicationConfigProvider.java index 95171d1..3408e52 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveApplicationConfigProvider.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveApplicationConfigProvider.java @@ -19,8 +19,9 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe; +package fr.ird.observe.configuration; +import fr.ird.observe.ObserveCLAction; import org.nuiton.config.ApplicationConfigProvider; import org.nuiton.config.ConfigActionDef; import org.nuiton.config.ConfigOptionDef; @@ -39,7 +40,7 @@ public class ObserveApplicationConfigProvider implements ApplicationConfigProvid @Override public String getName() { - return "observe"; + return "observeSwing"; } @Override @@ -49,7 +50,7 @@ public class ObserveApplicationConfigProvider implements ApplicationConfigProvid @Override public ConfigOptionDef[] getOptions() { - return ObserveConfigOption.values(); + return ObserveSwingApplicationConfigOption.values(); } @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfig.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfig.java new file mode 100644 index 0000000..499bfe8 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfig.java @@ -0,0 +1,1152 @@ +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit + * %% + * 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% + */ +package fr.ird.observe.configuration; + +import com.google.common.base.Charsets; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import fr.ird.observe.ObserveCLAction; +import fr.ird.observe.ObserveResourceManager; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.ui.UIHelper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.config.ApplicationConfig; +import org.nuiton.config.ApplicationConfigHelper; +import org.nuiton.config.ApplicationConfigProvider; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; + +import javax.swing.JOptionPane; +import java.awt.Color; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.Properties; +import java.util.Set; + +import static fr.ird.observe.ObserveResourceManager.Resource; +import static org.nuiton.i18n.I18n.t; + +/** + * La configuration de l'application. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.0 + */ +public class ObserveSwingApplicationConfig extends ApplicationConfig { + + + /** + * le fichier de configuration de l'application avec les informations sur le + * projet (version, license,...) et la configuration des ui (icons, ...) + */ + public static final String APPLICATION_PROPERTIES = "/observe.properties"; + + /** le lastName du repertoire ou sont les donnees de l'application */ + public static final String USER_DIRECTORY_FILENAME = ".observe"; + + /** le pattern du fichier de sauvegarde d'une base locale */ + public static final String BACKUP_DB_PATTERN = "obstuna-local-%1$tF--%1$tk-%1$tM-%1$tS.sql.gz"; + + /** le pattern du fichier de sauvegarde d'une base access importée */ + public static final String ACCESS_DB_PATTERN = "import-access-%1$tF--%1$tk-%1$tM-%1$tS.sql.gz"; + + /** le pattern du fichier de rapport après validation */ + public static final String REPORT_PATTERN = "report-%1$tF--%1$tk-%1$tM-%1$tS.sql.gz"; + + public static final String DB_NAME = "obstuna"; + + /** + * La version de l'application. + */ + public static final String APPLICATION_VERSION = "application.version"; + + public static final String VERSION = "version"; + + public static final String PROPERTY_DEFAULT_DB_MODE = "defaultDbMode"; + + public static final String PROPERTY_DEFAULT_CREATION_MODE = "defaultCreationMode"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_TARGET_CATCH_ID = "speciesListSeineTargetCatchId"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID = "speciesListSeineSchoolEstimateId"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID = "speciesListSeineObjectSchoolEstimateId"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID = "speciesListSeineNonTargetCatchId"; + + public static final String PROPERTY_SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID = "speciesListSeineObjectObservedSpeciesId"; + + public static final String PROPERTY_SPECIES_LIST_LONGLINE_CATCH_ID = "speciesListLonglineCatchId"; + + public static final String PROPERTY_SPECIES_LIST_LONGLINE_ENCOUNTER_ID = "speciesListLonglineEncounterId"; + + public static final String PROPERTY_SPECIES_LIST_LONGLINE_DEPREDATOR_ID = "speciesListLonglineDepredatorId"; + + public static final String PROPERTY_VERSION = "version"; + + public static final String PROPERTY_DB_VERSION = "dbVersion"; + + public static final String PROPERTY_AUTO_POPUP_NUMBER_EDITOR = "autoPopupNumberEditor"; + + public static final String PROPERTY_SHOW_NUMBER_EDITOR_BUTTON = "showNumberEditorButton"; + + public static final String PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER= "showTimeEditorSlider"; + + public static final String PROPERTY_LOCAL_STORAGE_EXIST = "localStorageExist"; + + public static final String PROPERTY_INITIAL_DUMP_EXIST = "initialDumpExist"; + + public static final String PROPERTY_MAIN_STORAGE_OPENED = "mainStorageOpened"; + + public static final String PROPERTY_STORE_REMOTE_STORAGE = "storeRemoteStorage"; + + public static final String PROPERTY_DEFAULT_GPS_MAX_DELAY = "defaultGpsMaxDelay"; + + public static final String PROPERTY_DEFAULT_GPS_MAX_SPEED = "defaultGpsMaxSpeed"; + + public static final String PROPERTY_CHANGE_SYNCHRO_SRC = "changeSynchroSrc"; + + public static final String PROPERTY_NON_TARGET_OBSERVATION = "nonTargetObservation"; + + public static final String PROPERTY_TARGET_DISCARDS_OBSERVATION = "targetDiscardsObservation"; + + public static final String PROPERTY_SAMPLES_OBSERVATION = "samplesObservation"; + + public static final String PROPERTY_OBJECTS_OBSERVATION = "objectsObservation"; + + public static final String PROPERTY_DETAILLED_ACTIVITIES_OBSERVATION = "detailledActivitiesObservation"; + + public static final String PROPERTY_MAMMALS_OBSERVATION = "mammalsObservation"; + + public static final String PROPERTY_BIRDS_OBSERVATION = "birdsObservation"; + + public static final String PROPERTY_BAIT_OBSERVATION = "baitObservation"; + + public static final String PROPERTY_RESOURCES_DIRECTORY = "resourcesDirectory"; + + public static final String PROPERTY_LOCALE = "locale"; + + public static final String PROPERTY_DB_LOCALE = "dbLocale"; + + public static final String PROPERTY_CAN_MIGRATE_OBSTUNA = "canMigrateObstuna"; + + public static final String PROPERTY_CAN_MIGRATE_H2 = "canMigrateH2"; + + public static final String PROPERTY_MAIN_STORAGE_OPENED_LOCAL = "mainStorageOpenedLocal"; + + public static final String PROPERTY_COPYRIGHT_TEXT = "copyrightText"; + + public static final String PROPERTY_FULL_SCREEN = "fullScreen"; + + public static final String PROPERTY_LOCAL_DBDIRECTORY = "localDBDirectory"; + + public static final String PROPERTY_I18N_DIRECTORY = "i18nDirectory"; + + public static final String PROPERTY_INITIAL_DB_DUMP = "initialDbDump"; + + public static final String PROPERTY_BACKUP_DIRECTORY = "backupDirectory"; + + public static final String PROPERTY_REPORT_DIRECTORY = "reportDirectory"; + + public static final String PROPERTY_MAP_DIRECTORY = "mapDirectory"; + + public static final String PROPERTY_TMP_DIRECTORY = "tmpDirectory"; + + public static final String PROPERTY_DISPLAY_MAIN_UI = "displayMainUI"; + + public static final String PROPERTY_CAN_USE_UI = "canUseUI"; + + public static final String PROPERTY_ADJUSTING = "adjusting"; + + public static final String PROPERTY_H2_LOGIN = "h2Login"; + + public static final String PROPERTY_H2_PASSWORD = "h2Password"; + + public static final String PROPERTY_OBSTUNA_URL = "obstunaUrl"; + + public static final String PROPERTY_OBSTUNA_LOGIN = "obstunaLogin"; + + public static final String PROPERTY_OBSTUNA_PASSWORD = "obstunaPassword"; + + public static final String PROPERTY_OBSTUNA_USE_SSL = "obstunaUseSsl"; + + public static final String PROPERTY_LOAD_LOCAL_STORAGE = "loadLocalStorage"; + + public static final String PROPERTY_SHOW_MIGRATION_PROGRESSION = "showMigrationProgression"; + + public static final String PROPERTY_SHOW_MIGRATION_SQL = "showMigrationSql"; + + public static final String PROPERTY_VALIDATION_REPORT_DIRECTORY = "validationReportDirectory"; + + public static final String PROPERTY_SHOW_SQL = "showSql"; + + public static final String PROPERTY_H2_SERVER_PORT = "h2ServerPort"; + + public static final String PROPERTY_DEV_MODE = "devMode"; + + /** Logger */ + static private Log log = LogFactory.getLog(ObserveSwingApplicationConfig.class); + + protected static final String DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME = "observeSwing.conf"; + + /** + * un drepeau pour savoir s'il faut lancer l'interface graphique. Cette + * valeur peut être programmées lors des actions. + */ + protected boolean displayMainUI = true; + + /** drapeau pour savoir si une base locale existe */ + protected boolean localStorageExist; + + /** + * drapeau pour savoir si le dump initial a ete chargee depuis la base + * centrale + */ + protected boolean initialDumpExist; + + /** drapeau pour savoir si une source de données est ouverte */ + protected boolean mainStorageOpened; + + /** + * drapeau pour savoir si la source ouverte est locale (attention, lorsqu'il + * n'y a pas de storage d'ouvert, la valeur est null). + */ + protected Boolean mainStorageOpenedLocal; + + /** + * drapeau pour savoir si on peut utiliser des ui dans l'environnement. + * <p/> + * Par defaut, on suppose qu'on peut utiliser l'environnement graphique et + * si on désactive explicitement ou si pas d'environnement graphique + * trouvé. + */ + protected boolean canUseUI = true; + + /** La version de l'application */ + private Version version; + + /** Texte du copyright (calculé dynamiquement). */ + protected String copyrightText; + + /** + * Liste des options qu'on ne peut pas sauvegarder (les mots de passes, + * les options d'admin pour les simples utilisateurs,...). + * + * @since 1.5 + */ + protected String[] unsavables; + + //FIXME + private final ImmutableSet<String> longlinVesselTypeIds = ImmutableSet.copyOf( + Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505", + "fr.ird.observe.entities.referentiel.VesselType#1239832675736#0.8708229847859869", + "fr.ird.observe.entities.referentiel.VesselType#1239832686137#0.1")); + + private final ImmutableSet<String> seineVesselTypeIds = ImmutableSet.copyOf( + Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505", + "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.307197212385357", + "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.7380146830307519", + "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.9086075071905084", + "fr.ird.observe.entities.referentiel.VesselType#1239832675737#0.43324169605639407")); + + public ObserveSwingApplicationConfig() { + this(DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME); + } + + public ObserveSwingApplicationConfig(String confFileName) { + setEncoding(Charsets.UTF_8.name()); + setConfigFileName(confFileName); + ApplicationConfigProvider applicationConfigProvider = ApplicationConfigHelper.getProvider(getClass().getClassLoader(), ObserveSwingApplicationConfigProvider.OBSERVE_SWING_CONFIGURATION_PROVIDER_NAME); + loadDefaultOptions(applicationConfigProvider.getOptions()); + } + + public boolean containActions(Step action) { + List<Action> list = actions.get(action.ordinal()); + return !(list == null || list.isEmpty()); + } + + public void initConfig(ObserveResourceManager manager) throws IOException { + + Version version = null; + + Properties p = manager.getResource(Resource.application); + + for (Object k : p.keySet()) { + String key = String.valueOf(k); + Object value = p.get(k); + if (log.isDebugEnabled()) { + log.debug("install property [" + k + "] : " + value); + } + String strValue = String.valueOf(value); + if (APPLICATION_VERSION.equals(key)) { + version = Versions.valueOf(strValue); + if (version.isSnapshot()) { + version = Versions.removeSnapshot(version); + } + + } else { + setDefaultOption(key, strValue); + } + } + + if (version == null) { + throw new IllegalStateException("No application.version found in application configuration."); + } + + setVersion(version); + setDefaultOption(VERSION, version.getVersion()); + setDefaultOption(APPLICATION_VERSION, version.getVersion()); + + // creation des actions disponibles + for (ObserveCLAction.ActionDefinition a : ObserveCLAction.ActionDefinition.values()) { + + for (String alias : a.aliases) { + addActionAlias(alias, a.action); + } + } + + if (log.isInfoEnabled()) { + String message = getConfigurationDescription(); + log.info(message); + } + } + + @Override + protected void migrateUserConfigurationFile(File oldHomeConfig, + File homeConfig) throws IOException { + super.migrateUserConfigurationFile(oldHomeConfig, homeConfig); + // on previent l'utilisateur que son fichier de configuration a été + // deplacé + JOptionPane.showInternalMessageDialog(null, + t("observe.title.config.migrate"), + t("observe.runner.config.migrate.file", + oldHomeConfig.getName(), + oldHomeConfig, + homeConfig + ), + JOptionPane.WARNING_MESSAGE); + } + + public void installSaveAction() { + // ajout de l'action de sauvegarde automatique sur certaines propriétés + + List<String> result = new ArrayList<String>(); + + for (ObserveSwingApplicationConfigOption option : ObserveSwingApplicationConfigOption.values()) { + String key = option.getPropertyKey(); + if (key != null) { + // add a listener + if (log.isDebugEnabled()) { + log.debug("register action listener for property " + key); + } + result.add(key); + } + } + + installSaveUserAction(result.toArray(new String[result.size()])); + } + + public String getCopyrightText() { + if (copyrightText == null) { + Date date = new Date(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int year = calendar.get(Calendar.YEAR); + copyrightText = "Version " + getVersion() + " IRD @ 2008-" + year; + } + return copyrightText; + } + + public boolean isDevMode() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.DEV_MODE.key); + return result; + } + + public Version getVersion() { + return version; + } + + public Version getModelVersion() { + Version result = getOption(Version.class, ObserveSwingApplicationConfigOption.MODEL_VERSION.key); + return result; + } + + public boolean isAutoPopupNumberEditor() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.AUTO_POPUP_NUMBER_EDITOR.key); + return result; + } + + public boolean isShowNumberEditorButton() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_NUMBER_EDITOR_BUTTON.key); + return result; + } + + public boolean isShowTimeEditorSlider() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER.key); + return result; + } + + public boolean isFullScreen() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.FULL_SCREEN.key); + return result; + } + + public File getDataDirectory() { + File file = getOptionAsFile(ObserveSwingApplicationConfigOption.DATA_DIRECTORY.key); + return file; + } + + public File getValidationReportDirectory() { + File file = getOptionAsFile(ObserveSwingApplicationConfigOption.VALIDATION_REPORT_DIRECTORY.key); + return file; + } + + public File getLocalDBDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.DB_DIRECTORY.key); + return result; + } + + public File getResourcesDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.RESOURCES_DIRECTORY.key); + return result; + } + + public File getI18nDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.I18N_DIRECTORY.key); + return result; + } + + public void setResourcesDirectory(File newValue) { + setOption(ObserveSwingApplicationConfigOption.RESOURCES_DIRECTORY, newValue); + } + + public File getInitialDbDump() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.INITIAL_DB_DUMP.key); + return result; + } + + public File getBackupDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.BACKUP_DIRECTORY.key); + return result; + } + + public File getReportDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.REPORT_DIRECTORY.key); + return result; + } + + public File getTmpDirectory() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.TMP_DIRECTORY.key); + return result; + } + + public File getLogConfigurationFile() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.LOG_CONFIGURATION_FILE.key); + return result; + } + + public String getH2Login() { + String result = getOption(ObserveSwingApplicationConfigOption.H2_LOGIN.key); + return result; + } + + public char[] getH2Password() { + String result = getOption(ObserveSwingApplicationConfigOption.H2_PASSWORD.key); + char[] r = result.toCharArray(); + return r; + } + + public int getH2ServerPort() { + Integer port = getOptionAsInt(ObserveSwingApplicationConfigOption.H2_SERVER_PORT.key); + return port; + } + + public String getObstunaUrl() { + String result = getOption(ObserveSwingApplicationConfigOption.OBSTUNA_URL.key); + return result; + } + + public void setObstunaUrl(String jdbcUrl) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_URL.key, jdbcUrl); + } + + public String getObstunaLogin() { + String result = getOption(ObserveSwingApplicationConfigOption.OBSTUNA_LOGIN.key); + return result; + } + + public void setObstunaLogin(String login) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_LOGIN.key, login); + } + + public char[] getObstunaPassword() { + String result = getOption(ObserveSwingApplicationConfigOption.OBSTUNA_PASSWORD.key); + char[] r = result.toCharArray(); + return r; + } + + public void setObstunaPassword(char[] password) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_PASSWORD.key, new String(password)); + } + + public boolean isObstunaUseSsl() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.OBSTUNA_USE_SSL_CERT.key); + return result; + } + + public void setObstunaUseSsl(boolean useSsl) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_USE_SSL_CERT, useSsl); + } + + public URL getServerUrl() { + URL result = (URL) getOption(ObserveSwingApplicationConfigOption.SERVER_URL); + return result; + } + + public void setServerUrl(URL serverUrl) { + setOption(ObserveSwingApplicationConfigOption.SERVER_URL, serverUrl); + } + + public String getServerLogin() { + String result = getOption(ObserveSwingApplicationConfigOption.SERVER_LOGIN.key); + return result; + } + + public void setServerLogin(String serverLoginl) { + setOption(ObserveSwingApplicationConfigOption.SERVER_LOGIN.key, serverLoginl); + } + + public char[] getServerPassword() { + String result = getOption(ObserveSwingApplicationConfigOption.SERVER_PASSWORD.key); + char[] r = result.toCharArray(); + return r; + } + + public void setServerPassword(char[] password) { + setOption(ObserveSwingApplicationConfigOption.SERVER_PASSWORD.key, new String(password)); + } + + public String getServerDataBaseName() { + String result = getOption(ObserveSwingApplicationConfigOption.SERVER_DATABASE_NAME.key); + return result; + } + + public void setServerDataBaseName(String dataBaseName) { + setOption(ObserveSwingApplicationConfigOption.SERVER_DATABASE_NAME.key, dataBaseName); + } + + public DbMode getDefaultDbMode() { + DbMode result = getOption(DbMode.class, ObserveSwingApplicationConfigOption.DEFAULT_DB_MODE.key); + return result; + } + + public CreationMode getDefaultCreationMode() { + CreationMode result = + getOption(CreationMode.class, ObserveSwingApplicationConfigOption.DEFAULT_CREATION_MODE.key); + return result; + } + + public boolean isShowMigrationSql() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_SQL.key); + return result; + } + + public boolean isShowMigrationProgression() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_PROGRESSION.key); + return result; + } + + public boolean isShowSql() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.SHOW_SQL.key); + return result; + } + + public int getDefaultGpsMaxDelay() { + Integer i = getOptionAsInt(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_DELAY.key); + return i; + } + + public float getDefaultGpsMaxSpeed() { + double i = getOptionAsDouble(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_SPEED.key); + return (float) i; + } + + public boolean isChangeSynchroSrc() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.CHANGE_SYNCHRO_SRC.key); + return result; + } + + public boolean isStoreRemoteStorage() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.STORE_REMOTE_STORAGE.key); + return result; + } + + public boolean isCanMigrateObstuna() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE.key); + return result; + } + + public boolean isCanMigrateH2() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.H2_CAN_MIGRATE.key); + return result; + } + + public boolean isLoadLocalStorage() { + boolean result = getOptionAsBoolean(ObserveSwingApplicationConfigOption.LOAD_LOCAL_STORAGE.key); + return result; + } + + public Locale getLocale() { + Locale result = getOption(Locale.class, ObserveSwingApplicationConfigOption.LOCALE.key); + return result; + } + + public Locale getDbLocale() { + Locale result = getOption(Locale.class, ObserveSwingApplicationConfigOption.DB_LOCALE.key); + return result; + } + + public int getNonTargetObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.NON_TARGET_OBSERVATION.key); + return value; + } + + public int getTargetDiscardsObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.TARGET_DISCARDS_OBSERVATION.key); + return value; + } + + public int getSamplesObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.SAMPLES_OBSERVATION.key); + return value; + } + + public int getObjectsObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.OBJECTS_OBSERVATION.key); + return value; + } + + public int getDetailledActivitiesObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.DETAILLED_ACTIVITIES_OBSERVATION.key); + return value; + } + + public int getMammalsObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.MAMMALS_OBSERVATION.key); + return value; + } + + public int getBirdsObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.BIRDS_OBSERVATION.key); + return value; + } + + public int getBaitObservation() { + int value = getOptionAsInt(ObserveSwingApplicationConfigOption.BAIT_OBSERVATION.key); + return value; + } + + public boolean isDisplayMainUI() { + return displayMainUI; + } + + public boolean isCanUseUI() { + return canUseUI; + } + + public boolean isLocalStorageExist() { + return localStorageExist; + } + + public boolean isInitialDumpExist() { + return initialDumpExist; + } + + public boolean isMainStorageOpened() { + return mainStorageOpened; + } + + public Boolean getMainStorageOpenedLocal() { + return mainStorageOpenedLocal; + } + + public void setLocalStorageExist(boolean newValue) { + localStorageExist = newValue; + // always force propagation + firePropertyChange(PROPERTY_LOCAL_STORAGE_EXIST, newValue); + } + + public void setInitialDumpExist(boolean newValue) { + initialDumpExist = newValue; + // always force propagation + firePropertyChange(PROPERTY_INITIAL_DUMP_EXIST, newValue); + } + + public void setMainStorageOpened(boolean newValue) { + mainStorageOpened = newValue; + if (!newValue) { + // on force la reinitialisation + setMainStorageOpenedLocal(null); + } + // always force propagation + firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED, newValue); + } + + public void setMainStorageOpenedLocal(Boolean newValue) { + mainStorageOpenedLocal = newValue; + // always force propagation + firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED + "Local", newValue); + } + + public void setDisplayMainUI(boolean b) { + displayMainUI = b; + } + + public void setCanUseUI(boolean canUseUI) { + this.canUseUI = canUseUI; + if (!canUseUI) { + // on ne pourra pas lancer l'ui principale + setDisplayMainUI(false); + } + } + + public void setAutoPopupNumberEditor(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.AUTO_POPUP_NUMBER_EDITOR, newValue); + } + + public void setShowNumberEditorButton(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.SHOW_NUMBER_EDITOR_BUTTON, newValue); + } + + public void setShowTimeEditorSlider(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER, newValue); + } + + public void setFullScreen(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.FULL_SCREEN, newValue); + } + + public void setChangeSynchroSrc(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.CHANGE_SYNCHRO_SRC, newValue); + } + + public void setStoreRemoteStorage(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.STORE_REMOTE_STORAGE, newValue); + } + + public void setLoadLocalStorage(boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.LOAD_LOCAL_STORAGE, newValue); + } + + public void setDefaultDbMode(DbMode newValue) { + setOption(ObserveSwingApplicationConfigOption.DEFAULT_DB_MODE, newValue); + } + + public void setDefaultCreationMode(CreationMode newValue) { + setOption(ObserveSwingApplicationConfigOption.DEFAULT_CREATION_MODE, newValue); + } + + public void setDefaultGpsMaxDelay(int newValue) { + setOption(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_DELAY, newValue); + } + + public void setDefaultGpsMaxSpeed(float newValue) { + setOption(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_SPEED, newValue); + } + + public void setLocale(Locale newValue) { + setOption(ObserveSwingApplicationConfigOption.LOCALE, newValue); + } + + public void setDbLocale(Locale newValue) { + setOption(ObserveSwingApplicationConfigOption.DB_LOCALE, newValue); + } + + public void setCanMigrateObstuna(Boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE, newValue); + } + + public void setCanMigrateH2(Boolean newValue) { + setOption(ObserveSwingApplicationConfigOption.H2_CAN_MIGRATE, newValue); + } + + public void setNonTargetObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.NON_TARGET_OBSERVATION, newValue); + } + + public void setTargetDiscardsObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.TARGET_DISCARDS_OBSERVATION, newValue); + } + + public void setSamplesObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.SAMPLES_OBSERVATION, newValue); + } + + public void setObjectsObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.OBJECTS_OBSERVATION, newValue); + } + + public void setDetailledActivitiesObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.DETAILLED_ACTIVITIES_OBSERVATION, newValue); + } + + public void setMammalsObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.MAMMALS_OBSERVATION, newValue); + } + + public void setBirdsObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.BIRDS_OBSERVATION, newValue); + } + + public void setBaitObservation(int newValue) { + setOption(ObserveSwingApplicationConfigOption.BAIT_OBSERVATION, newValue); + } + + public void setShowMigrationSql(boolean showMigrationSql) { + setOption(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_SQL, showMigrationSql); + } + + public void setShowMigrationProgression(boolean showMigrationProgression) { + setOption(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_PROGRESSION, showMigrationProgression); + } + + public void setShowSql(boolean showSql) { + setOption(ObserveSwingApplicationConfigOption.SHOW_SQL, showSql); + } + + public String getSpeciesListSeineNonTargetCatchId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID.key); + return value; + } + + public String getSpeciesListSeineTargetCatchId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_TARGET_CATCH_ID.key); + return value; + } + + public String getSpeciesListSeineSchoolEstimateId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID.key); + return value; + } + + public String getSpeciesListSeineObjectObservedSpeciesId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID.key); + return value; + } + + public String getSpeciesListSeineObjectSchoolEstimateId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID.key); + return value; + } + + public String getSpeciesListLonglineCatchId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_CATCH_ID.key); + return value; + } + + public String getSpeciesListLonglineEncounterId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_ENCOUNTER_ID.key); + return value; + } + + public String getSpeciesListLonglineDepredatorId() { + String value = getOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_DEPREDATOR_ID.key); + return value; + } + + public void setSpeciesListSeineNonTargetCatchId(String speciesListSeineNonTargetCatchId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID, speciesListSeineNonTargetCatchId); + } + + public void setSpeciesListSeineTargetCatchId(String speciesListSeineTargetCatchId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_TARGET_CATCH_ID, speciesListSeineTargetCatchId); + } + + public void setSpeciesListSeineSchoolEstimateId(String speciesListSeineSchoolEstimateId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID, speciesListSeineSchoolEstimateId); + } + + public void setSpeciesListSeineObjectObservedSpeciesId(String speciesListSeineObjectObservedSpeciesId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID, speciesListSeineObjectObservedSpeciesId); + } + + public void setSpeciesListSeineObjectSchoolEstimateId(String speciesListseineObjectSchoolEstimateId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID, speciesListseineObjectSchoolEstimateId); + } + + public void setSpeciesListLonglineCatchId(String speciesListLonglineCatchId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_CATCH_ID, speciesListLonglineCatchId); + } + + public void setSpeciesListLonglineEncounterId(String speciesListLonglineEncounterId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_ENCOUNTER_ID, speciesListLonglineEncounterId); + } + + public void setSpeciesListLonglineDepredatorId(String speciesListLonglineDepredatorId) { + setOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_DEPREDATOR_ID, speciesListLonglineDepredatorId); + } + + public Color getMapBackgroundColor() { + Color result = getOptionAsColor(ObserveSwingApplicationConfigOption.MAP_BACKGROUND_COLOR.key); + return result; + } + + public List<File> getMapLayerFiles() { + List<File> layers = Lists.newLinkedList(); + + for (ObserveSwingApplicationConfigOption layerOption : ObserveSwingApplicationConfigOption.MAP_LAYERS) { + File layerFile = getOptionAsFile(layerOption.key); + if (layerFile != null && layerFile.exists()) { + layers.add(layerFile); + } + } + return layers; + } + + public File getMapStyleFile() { + File result = getOptionAsFile(ObserveSwingApplicationConfigOption.MAP_STYLE_FILE.key); + return result; + } + + public String[] getUnsavables() { + if (unsavables == null) { + List<String> tmp = new ArrayList<String>(); + tmp.add(ObserveSwingApplicationConfigOption.OBSTUNA_PASSWORD.getKey()); +// tmp.add(OBSTUNA_SSL_CERTIFICAT_PASSWORD.getKey()); + tmp.add(ObserveSwingApplicationConfigOption.H2_PASSWORD.getKey()); + tmp.add(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE.getKey()); + +// if (!ObserveRunner.isAdmin()) { +// // toutes les options dite admin ne sont pas sauvables +// +// for (ObserveSwingApplicationConfigOption option : values()) { +// if (option.isAdmin()) { +// +// // ne pas ajouter les options d'admin pour le simple utilisateur +// tmp.add(option.key); +// } +// } +// } + unsavables = tmp.toArray(new String[tmp.size()]); + } + return unsavables; + } + + public void saveForUser(String... excludeKeys) { + if (log.isInfoEnabled()) { + log.info(t("observe.message.save.configuration", getUserConfigFile())); + } + super.saveForUser(getUnsavables()); + } + + + public void fromStorageConfig(ObserveDataSourceConfigurationTopiaH2 config) { + setShowMigrationProgression(config.isShowMigrationProgression()); + setShowMigrationSql(config.isShowMigrationSql()); + saveForUser(); + } + + public void fromStorageConfig(ObserveDataSourceConfigurationTopiaPG config) { + setObstunaUrl(config.getJdbcUrl()); + setObstunaLogin(config.getUsername()); + setObstunaPassword(config.getPassword()); + setObstunaUseSsl(config.isUseSsl()); +// if (useSsl) { +// setOption(OBSTUNA_SSL_CERTIFICAT_FILE, +// config.getSslCertificatFile().getAbsolutePath()); +// setOption(OBSTUNA_SSL_CERTIFICAT_PASSWORD, +// new String(config.getSslCertificatPassword())); +// } else { +// setOption(OBSTUNA_SSL_CERTIFICAT_FILE.key, ""); +// setOption(OBSTUNA_SSL_CERTIFICAT_PASSWORD, EMPTY_CHAR_ARRAY); +// } + setShowMigrationProgression(config.isShowMigrationProgression()); + setShowMigrationSql(config.isShowMigrationSql()); + //TODO-TC20100311 : on devrait pas regarder si l'utilisateur veut sauver + //TODO-TC20100311 : la configuration ? + saveForUser(); + } + + public void fromStorageConfig(ObserveDataSourceConfigurationRest config) { + setServerUrl(config.getServerUrl()); + setServerLogin(config.getLogin()); + setServerPassword(config.getPassword()); + setServerDataBaseName(config.getOptionalDatabaseName().orNull()); + saveForUser(); + } + + + public ObserveDataSourceConfigurationTopiaH2 getDataSourceConfigurationH2(String label) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + + File dbDirectory = new File(getLocalDBDirectory(), DB_NAME); + + ObserveDataSourceConfigurationTopiaH2 result = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( + label, + dbDirectory, + DB_NAME, + getH2Login(), + getH2Password(), + isShowMigrationProgression(), + isShowMigrationSql() + ); + return result; + } + + public ObserveDataSourceConfigurationTopiaPG getDataSourceConfigurationPG(String label) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + + ObserveDataSourceConfigurationTopiaPG result = configurationMainFactory.createObserveDataSourceConfigurationTopiaPG( + label, + getObstunaUrl(), + getUsername(), + getObstunaPassword(), + isObstunaUseSsl(), + isShowMigrationProgression(), + isShowMigrationSql() + ); + return result; + } + + public ObserveDataSourceConfigurationRest getDataSourceConfigurationRest(String label) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + + ObserveDataSourceConfigurationRest result = configurationMainFactory.createObserveDataSourceConfigurationRest( + label, + getServerUrl(), + getServerLogin(), + getServerPassword(), + getServerDataBaseName() + ); + return result; + } + + public void removeJaxxPropertyChangeListener() { + List<String> tmp = new ArrayList<String>(); + for (ObserveSwingApplicationConfigOption option : ObserveSwingApplicationConfigOption.values()) { + String propertyName = option.getPropertyKey(); + if (propertyName != null) { + tmp.add(propertyName); + } + } + if (log.isDebugEnabled()) { + log.debug("property names to seek for options : " + tmp); + } + String[] propertyNames = tmp.toArray( + new String[tmp.size()]); + + PropertyChangeListener[] toRemove = + UIHelper.findJaxxPropertyChangeListener( + propertyNames, + getPropertyChangeListeners()); + if (toRemove == null || toRemove.length == 0) { + return; + } + if (log.isDebugEnabled()) { + log.debug("before remove : " + getPropertyChangeListeners().length); + log.debug("toRemove : " + toRemove.length); + } + for (PropertyChangeListener listener : toRemove) { + removePropertyChangeListener(listener); + } + if (log.isDebugEnabled()) { + log.debug("after remove : " + getPropertyChangeListeners().length); + } + } + + public void setOption(ObserveSwingApplicationConfigOption option, Object newValue) { + String key = option.getKey(); + Object oldValue = getOption(key); + String value = String.valueOf(newValue); + setOption(key, value); + if (log.isDebugEnabled()) { + log.debug("set option " + key + " value : " + value); + } + String propertyName = option.getPropertyKey(); + if (propertyName != null) { + // l'option est javabeans, declanchement d'un changement + if (log.isTraceEnabled()) { + log.trace("fires config change from option " + key); + } + firePropertyChange(propertyName, oldValue, newValue); + } + } + + void setVersion(Version version) { + this.version = version; + } + + public Set<String> getSeineVesselTypeIds() { + return seineVesselTypeIds; + } + + public Set<String> getLonglineVesselTypeIds() { + return longlinVesselTypeIds; + } + + public String replaceRecursiveOptions(String option) { + return super.replaceRecursiveOptions(option); + } + + public String getConfigurationDescription() { + StringBuilder builder = new StringBuilder(); + builder.append("\n====================================================================================================================="); + builder.append("\n=== Observe Swing configuration ====================================================================================="); + builder.append(String.format("\n=== %1$-40s = %2$s", "Filename", getConfigFileName())); + for (ObserveSwingApplicationConfigOption option : ObserveSwingApplicationConfigOption.orderedByNameValues()) { + builder.append(String.format("\n=== %1$-40s = %2$s", option.getKey(), getOption(option))); + } + builder.append("\n====================================================================================================================="); + return builder.toString(); + } + + ////////////////////////////////////////////////// + // Toutes les étapes d'actions + ////////////////////////////////////////////////// + + public enum Step { + + AfterInit, BeforeExit + } + + protected void firePropertyChange(String propertyName, Object newValue) { + pcs.firePropertyChange(propertyName, null, newValue); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfigOption.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java similarity index 75% rename from observe-application-swing/src/main/java/fr/ird/observe/ObserveConfigOption.java rename to observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java index ab551f1..8c5a421 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveConfigOption.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java @@ -19,17 +19,21 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe; +package fr.ird.observe.configuration; import com.google.common.collect.ImmutableList; -import fr.ird.observe.business.IObserveConfig; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; +import com.google.common.collect.Lists; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; import org.nuiton.config.ApplicationConfig; import org.nuiton.config.ConfigOptionDef; +import org.nuiton.util.version.Version; import java.awt.Color; import java.io.File; +import java.net.URL; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Locale; @@ -43,13 +47,13 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.2 */ -public enum ObserveConfigOption implements ConfigOptionDef { +public enum ObserveSwingApplicationConfigOption implements ConfigOptionDef { /** le lastName du fichier de configuration (sans le prefix .) */ CONFIG_FILE( ApplicationConfig.CONFIG_FILE_NAME, n("observe.config.configFileName.description"), - "observe-admin-config", + ObserveSwingApplicationConfig.DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME, String.class, true, true @@ -57,7 +61,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour afficher automatiquement la popup du clavier numerique */ DEV_MODE( - "observe." + IObserveConfig.PROPERTY_DEV_MODE, + "observe." + ObserveSwingApplicationConfig.PROPERTY_DEV_MODE, n("observe.config.devMode"), "true", Boolean.class, @@ -65,6 +69,16 @@ public enum ObserveConfigOption implements ConfigOptionDef { true ), + /** version du modèle de données */ + MODEL_VERSION( + "observe.model.version", + n("observe.model.version"), + null, + Version.class, + true, + true + ), + // directories /** le repertoire ou est stoquee la base locale */ @@ -113,7 +127,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees toutes les ressources de l'utilisateur */ RESOURCES_DIRECTORY( "resources.directory", - IObserveConfig.PROPERTY_RESOURCES_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_RESOURCES_DIRECTORY, n("observe.config.defaultResourcesDirectory.description"), "${data.directory}/resources-${version}", File.class, @@ -124,7 +138,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees les traduction i18n de l'utilisateur */ I18N_DIRECTORY( "i18n.directory", - IObserveConfig.PROPERTY_I18N_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_I18N_DIRECTORY, n("observe.config.defaultI18nDirectory.description"), "${resources.directory}/i18n", File.class, @@ -135,7 +149,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees les reports de l'utilisateur */ REPORT_DIRECTORY( "report.directory", - IObserveConfig.PROPERTY_REPORT_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_REPORT_DIRECTORY, n("observe.config.defaultReportDirectory.description"), "${resources.directory}/report", File.class, @@ -146,7 +160,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees les cartes de l'utilisateur */ MAP_DIRECTORY( "map.directory", - IObserveConfig.PROPERTY_MAP_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_MAP_DIRECTORY, n("observe.config.defaultMapDirectory.description"), "${resources.directory}/map", File.class, @@ -157,7 +171,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le repertoire ou sont stockees les reports de validation de l'utilisateur */ VALIDATION_REPORT_DIRECTORY( "validation.report.directory", - IObserveConfig.PROPERTY_VALIDATION_REPORT_DIRECTORY, + ObserveSwingApplicationConfig.PROPERTY_VALIDATION_REPORT_DIRECTORY, n("observe.config.defaultValidationReportDirectory.description"), "${data.directory}/validation-report", File.class, @@ -279,12 +293,54 @@ public enum ObserveConfigOption implements ConfigOptionDef { false ), + // Rest server config + + /** url du serveur restflag pour mettre a jour obstuna */ + SERVER_URL( + "server.url", + n("observe.config.server.url.description"), + null, + URL.class, + false, + false + ), + + /** url du serveur restflag pour mettre a jour obstuna */ + SERVER_LOGIN( + "server.login", + n("observe.config.server.login.description"), + "", + String.class, + false, + false + ), + + /** url du serveur restflag pour mettre a jour obstuna */ + SERVER_PASSWORD( + "server.password", + n("observe.config.server.password.description"), + "", + String.class, + false, + false + ), + + /** url du serveur restflag pour mettre a jour obstuna */ + SERVER_DATABASE_NAME( + "server.dataBaseName", + n("observe.config.server.dataBaseName.description"), + "", + String.class, + false, + false + ), + // change storage options /** le mode de connexion par defaut */ DEFAULT_DB_MODE( - IObserveConfig.PROPERTY_DEFAULT_DB_MODE, - IObserveConfig.PROPERTY_DEFAULT_DB_MODE, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_DB_MODE, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_DB_MODE, n("observe.config.defaultDbMode"), DbMode.USE_LOCAL.name(), DbMode.class, @@ -294,8 +350,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le mode de creation par defaut de base locale */ DEFAULT_CREATION_MODE( - IObserveConfig.PROPERTY_DEFAULT_CREATION_MODE, - IObserveConfig.PROPERTY_DEFAULT_CREATION_MODE, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_CREATION_MODE, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_CREATION_MODE, n("observe.config.defaultCreationMode"), CreationMode.IMPORT_EXTERNAL_DUMP.name(), CreationMode.class, @@ -305,8 +361,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour sauvegarder le paramétrage de la connexion a obstuna */ STORE_REMOTE_STORAGE( - "ui." + IObserveConfig.PROPERTY_STORE_REMOTE_STORAGE, - IObserveConfig.PROPERTY_STORE_REMOTE_STORAGE, + "ui." + ObserveSwingApplicationConfig.PROPERTY_STORE_REMOTE_STORAGE, + ObserveSwingApplicationConfig.PROPERTY_STORE_REMOTE_STORAGE, n("observe.config.ui.storeRemoteStorage"), "true", Boolean.class, @@ -316,8 +372,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour charge ou non la base locale au démarrage */ LOAD_LOCAL_STORAGE( - "ui." + IObserveConfig.PROPERTY_LOAD_LOCAL_STORAGE, - IObserveConfig.PROPERTY_LOAD_LOCAL_STORAGE, + "ui." + ObserveSwingApplicationConfig.PROPERTY_LOAD_LOCAL_STORAGE, + ObserveSwingApplicationConfig.PROPERTY_LOAD_LOCAL_STORAGE, n("observe.config.ui.loadLocalStorage"), "true", Boolean.class, @@ -327,8 +383,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** pour afficher la progression de la migration dans les logs */ SHOW_MIGRATION_PROGRESSION( - IObserveConfig.PROPERTY_SHOW_MIGRATION_PROGRESSION, - IObserveConfig.PROPERTY_SHOW_MIGRATION_PROGRESSION, + ObserveSwingApplicationConfig.PROPERTY_SHOW_MIGRATION_PROGRESSION, + ObserveSwingApplicationConfig.PROPERTY_SHOW_MIGRATION_PROGRESSION, n("observe.config.showMigrationProgression"), "true", Boolean.class, @@ -338,8 +394,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** pour affichier les requetes sql lors de la migration dans les logs */ SHOW_MIGRATION_SQL( - IObserveConfig.PROPERTY_SHOW_MIGRATION_SQL, - IObserveConfig.PROPERTY_SHOW_MIGRATION_SQL, + ObserveSwingApplicationConfig.PROPERTY_SHOW_MIGRATION_SQL, + ObserveSwingApplicationConfig.PROPERTY_SHOW_MIGRATION_SQL, n("observe.config.showMigrationSql"), "true", Boolean.class, @@ -348,8 +404,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { ), /** pour affichier toutes les requetes sql dans les logs */ SHOW_SQL( - IObserveConfig.PROPERTY_SHOW_SQL, - IObserveConfig.PROPERTY_SHOW_SQL, + ObserveSwingApplicationConfig.PROPERTY_SHOW_SQL, + ObserveSwingApplicationConfig.PROPERTY_SHOW_SQL, n("observe.config.showSql"), "false", Boolean.class, @@ -360,8 +416,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** temps maximum autorise en deux points gps */ DEFAULT_GPS_MAX_DELAY( - IObserveConfig.PROPERTY_DEFAULT_GPS_MAX_DELAY, - IObserveConfig.PROPERTY_DEFAULT_GPS_MAX_DELAY, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_GPS_MAX_DELAY, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_GPS_MAX_DELAY, n("observe.config.defaultGpsMaxDelay"), "60", Integer.class, @@ -371,8 +427,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** vitesse maximum (en noeud) entre deux points gps */ DEFAULT_GPS_MAX_SPEED( - IObserveConfig.PROPERTY_DEFAULT_GPS_MAX_SPEED, - IObserveConfig.PROPERTY_DEFAULT_GPS_MAX_SPEED, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_GPS_MAX_SPEED, + ObserveSwingApplicationConfig.PROPERTY_DEFAULT_GPS_MAX_SPEED, n("observe.config.defaultGpsMaxSpeed"), "25.0f", Float.class, @@ -384,8 +440,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour autoriser le choix de la base source */ CHANGE_SYNCHRO_SRC( - "ui." + IObserveConfig.PROPERTY_CHANGE_SYNCHRO_SRC, - IObserveConfig.PROPERTY_CHANGE_SYNCHRO_SRC, + "ui." + ObserveSwingApplicationConfig.PROPERTY_CHANGE_SYNCHRO_SRC, + ObserveSwingApplicationConfig.PROPERTY_CHANGE_SYNCHRO_SRC, n("observe.config.ui.changeSynchroSrc"), "false", Boolean.class, @@ -397,8 +453,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour voir le boutton d'affichage de la popup de clavier numerique) */ SHOW_NUMBER_EDITOR_BUTTON( - "ui." + IObserveConfig.PROPERTY_SHOW_NUMBER_EDITOR_BUTTON, - IObserveConfig.PROPERTY_SHOW_NUMBER_EDITOR_BUTTON, + "ui." + ObserveSwingApplicationConfig.PROPERTY_SHOW_NUMBER_EDITOR_BUTTON, + ObserveSwingApplicationConfig.PROPERTY_SHOW_NUMBER_EDITOR_BUTTON, n("observe.config.ui.showNumberEditorButton"), "true", Boolean.class, @@ -408,8 +464,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour afficher automatiquement la popup du clavier numerique */ AUTO_POPUP_NUMBER_EDITOR( - "ui." + IObserveConfig.PROPERTY_AUTO_POPUP_NUMBER_EDITOR, - IObserveConfig.PROPERTY_AUTO_POPUP_NUMBER_EDITOR, + "ui." + ObserveSwingApplicationConfig.PROPERTY_AUTO_POPUP_NUMBER_EDITOR, + ObserveSwingApplicationConfig.PROPERTY_AUTO_POPUP_NUMBER_EDITOR, n("observe.config.ui.autoPopupNumberEditor"), "false", Boolean.class, @@ -419,8 +475,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour voir la réglette d'affichage des heures dans l'éditeur des temps */ SHOW_DATE_TIME_EDITOR_SLIDER( - "ui." + IObserveConfig.PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER, - IObserveConfig.PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER, + "ui." + ObserveSwingApplicationConfig.PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER, + ObserveSwingApplicationConfig.PROPERTY_SHOW_DATE_TIME_EDITOR_SLIDER, n("observe.config.ui.showTimeEditorSlider"), "true", Boolean.class, @@ -430,8 +486,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** flag pour lancer l'application en mode plein ecran */ FULL_SCREEN( - "ui." + IObserveConfig.PROPERTY_FULL_SCREEN, - IObserveConfig.PROPERTY_FULL_SCREEN, + "ui." + ObserveSwingApplicationConfig.PROPERTY_FULL_SCREEN, + ObserveSwingApplicationConfig.PROPERTY_FULL_SCREEN, n("observe.config.ui.fullscreen"), "false", Boolean.class, @@ -441,8 +497,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** locale a utiliser dans l'application */ LOCALE( - "ui." + IObserveConfig.PROPERTY_LOCALE, - IObserveConfig.PROPERTY_LOCALE, + "ui." + ObserveSwingApplicationConfig.PROPERTY_LOCALE, + ObserveSwingApplicationConfig.PROPERTY_LOCALE, n("observe.config.ui.locale"), Locale.FRANCE.toString(), Locale.class, @@ -452,8 +508,8 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** locale du referentiel */ DB_LOCALE( - "db." + IObserveConfig.PROPERTY_LOCALE, - IObserveConfig.PROPERTY_DB_LOCALE, + "db." + ObserveSwingApplicationConfig.PROPERTY_LOCALE, + ObserveSwingApplicationConfig.PROPERTY_DB_LOCALE, n("observe.config.db.locale"), Locale.FRANCE.toString(), Locale.class, @@ -466,7 +522,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations faune associe */ NON_TARGET_OBSERVATION( "observation.fauneAssociee", - IObserveConfig.PROPERTY_NON_TARGET_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_NON_TARGET_OBSERVATION, n("observe.config.observation.fauneAssociee"), "1", Integer.class, @@ -477,7 +533,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations rejet thons */ TARGET_DISCARDS_OBSERVATION( "observation.rejetsThons", - IObserveConfig.PROPERTY_TARGET_DISCARDS_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_TARGET_DISCARDS_OBSERVATION, n("observe.config.observation.rejetsThons"), "1", Integer.class, @@ -488,7 +544,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations mensuration */ SAMPLES_OBSERVATION( "observation.mensurations", - IObserveConfig.PROPERTY_SAMPLES_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_SAMPLES_OBSERVATION, n("observe.config.observation.mensurations"), "1", Integer.class, @@ -499,7 +555,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations objet flottant */ OBJECTS_OBSERVATION( "observation.floatingObject", - IObserveConfig.PROPERTY_OBJECTS_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_OBJECTS_OBSERVATION, n("observe.config.observation.floatingObject"), "1", Integer.class, @@ -510,7 +566,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations activitys detaillees */ DETAILLED_ACTIVITIES_OBSERVATION( "observation.activitysDetaillees", - IObserveConfig.PROPERTY_DETAILLED_ACTIVITIES_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_DETAILLED_ACTIVITIES_OBSERVATION, n("observe.config.observation.activitysDetaillees"), "1", Integer.class, @@ -521,7 +577,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations mammiferes */ MAMMALS_OBSERVATION( "observation.mammiferes", - IObserveConfig.PROPERTY_MAMMALS_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_MAMMALS_OBSERVATION, n("observe.config.observation.mammiferes"), "1", Integer.class, @@ -532,7 +588,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations oiseaux */ BIRDS_OBSERVATION( "observation.oiseaux", - IObserveConfig.PROPERTY_BIRDS_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_BIRDS_OBSERVATION, n("observe.config.observation.oiseaux"), "1", Integer.class, @@ -543,7 +599,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** la valeur maximale de qualification des observations gleure */ BAIT_OBSERVATION( "observation.gleure", - IObserveConfig.PROPERTY_BAIT_OBSERVATION, + ObserveSwingApplicationConfig.PROPERTY_BAIT_OBSERVATION, n("observe.config.observation.gleure"), "1", Integer.class, @@ -555,7 +611,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les captures cibles (seine) */ SPECIES_LIST_SEINE_TARGET_CATCH_ID( "speciesList.seine.targetCatch", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_TARGET_CATCH_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_TARGET_CATCH_ID, n("observe.config.speciesList.seine.targetCatch"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.1", // espece thon String.class, @@ -566,7 +622,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèce pour les Estimation banc (seine) */ SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID( "speciesList.seine.schoolEstimate", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID, n("observe.config.speciesList.seine.schoolEstimate"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.1", // espece thons String.class, @@ -577,7 +633,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les Estimation banc objet (seine) */ SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID( "speciesList.seine.objectSchoolEstimate", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID, n("observe.config.speciesList.seine.objectSchoolEstimate"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.1", // espece thon String.class, @@ -588,7 +644,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les captures non cibles (seine) */ SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID( "speciesList.seine.nonTargetCatch", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID, n("observe.config.speciesList.seine.nonTargetCatch"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.2", // espece faune String.class, @@ -599,7 +655,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les Faune observée (seine) */ SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID( "speciesList.seine.objectObservedSpecies", - IObserveConfig.PROPERTY_SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID, n("observe.config.speciesList.seine.objectObservedSpecies"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.2", // espece faune String.class, @@ -610,7 +666,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les captures (longline) */ SPECIES_LIST_LONGLINE_CATCH_ID( "speciesList.longline.catch", - IObserveConfig.PROPERTY_SPECIES_LIST_LONGLINE_CATCH_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_LONGLINE_CATCH_ID, n("observe.config.speciesList.longline.catch"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.3", // catch String.class, @@ -621,7 +677,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les rencontres (longline) */ SPECIES_LIST_LONGLINE_ENCOUNTER_ID( "speciesList.longline.encounter", - IObserveConfig.PROPERTY_SPECIES_LIST_LONGLINE_ENCOUNTER_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_LONGLINE_ENCOUNTER_ID, n("observe.config.speciesList.longline.encounter"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.4", // encounter String.class, @@ -631,7 +687,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { /** le type de liste d'espèces pour les deprédations (longline) */ SPECIES_LIST_LONGLINE_DEPREDATOR_ID( "speciesList.longline.depredator", - IObserveConfig.PROPERTY_SPECIES_LIST_LONGLINE_DEPREDATOR_ID, + ObserveSwingApplicationConfig.PROPERTY_SPECIES_LIST_LONGLINE_DEPREDATOR_ID, n("observe.config.speciesList.longline.encounter"), "fr.ird.observe.entities.referentiel.SpeciesList#1239832675370#0.5", // encounter String.class, @@ -747,7 +803,7 @@ public enum ObserveConfigOption implements ConfigOptionDef { false, false); - public static List<ObserveConfigOption> MAP_LAYERS = ImmutableList.of(MAP_LAYER_1, MAP_LAYER_2, MAP_LAYER_3, + public static List<ObserveSwingApplicationConfigOption> MAP_LAYERS = ImmutableList.of(MAP_LAYER_1, MAP_LAYER_2, MAP_LAYER_3, MAP_LAYER_4, MAP_LAYER_5, MAP_LAYER_6, MAP_LAYER_7, MAP_LAYER_8, MAP_LAYER_9, MAP_LAYER_10); /** @@ -784,22 +840,22 @@ public enum ObserveConfigOption implements ConfigOptionDef { // */ // protected boolean admin; - ObserveConfigOption(String key, - String description, - String defaultValue, - Class<?> type, - boolean _transient, - boolean _final) { + ObserveSwingApplicationConfigOption(String key, + String description, + String defaultValue, + Class<?> type, + boolean _transient, + boolean _final) { this(key, null, description, defaultValue, type, _transient, _final); } - ObserveConfigOption(String key, - String propertyKey, - String description, - String defaultValue, - Class<?> type, - boolean _transient, - boolean _final) { + ObserveSwingApplicationConfigOption(String key, + String propertyKey, + String description, + String defaultValue, + Class<?> type, + boolean _transient, + boolean _final) { this.key = key; this.description = description; this.defaultValue = defaultValue; @@ -866,4 +922,17 @@ public enum ObserveConfigOption implements ConfigOptionDef { return propertyKey; } + public static ImmutableList<ObserveSwingApplicationConfigOption> orderedByNameValues() { + + List<ObserveSwingApplicationConfigOption> values = Lists.newArrayList(values()); + Collections.sort(values, new Comparator<ObserveSwingApplicationConfigOption>() { + + @Override + public int compare(ObserveSwingApplicationConfigOption o1, ObserveSwingApplicationConfigOption o2) { + return o1.getKey().compareTo(o2.getKey()); + } + }); + return ImmutableList.copyOf(values); + + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java new file mode 100644 index 0000000..3e8550c --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigProvider.java @@ -0,0 +1,37 @@ +package fr.ird.observe.configuration; + +import org.nuiton.config.ApplicationConfigProvider; +import org.nuiton.config.ConfigActionDef; +import org.nuiton.config.ConfigOptionDef; + +import java.util.Locale; + +import static org.nuiton.i18n.I18n.l; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserveSwingApplicationConfigProvider implements ApplicationConfigProvider { + + public static final String OBSERVE_SWING_CONFIGURATION_PROVIDER_NAME = "observeSwing"; + + @Override + public String getName() { + return OBSERVE_SWING_CONFIGURATION_PROVIDER_NAME; + } + + @Override + public String getDescription(Locale locale) { + return l(locale, "observeweb.configuration.description"); + } + + @Override + public ConfigOptionDef[] getOptions() { + return ObserveSwingApplicationConfigOption.values(); + } + + @Override + public ConfigActionDef[] getActions() { + return new ConfigActionDef[0]; + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/ConnexionStatus.java b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/ConnexionStatus.java similarity index 97% rename from observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/ConnexionStatus.java rename to observe-application-swing/src/main/java/fr/ird/observe/db/constantes/ConnexionStatus.java index 5ec2f9b..ef25fcf 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/ConnexionStatus.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/ConnexionStatus.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.business.db.constants; +package fr.ird.observe.db.constantes; import static org.nuiton.i18n.I18n.n; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CreationMode.java b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/CreationMode.java similarity index 72% rename from observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CreationMode.java rename to observe-application-swing/src/main/java/fr/ird/observe/db/constantes/CreationMode.java index c7be632..51471f8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/CreationMode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/CreationMode.java @@ -19,7 +19,9 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.business.db.constants; +package fr.ird.observe.db.constantes; + +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import static org.nuiton.i18n.I18n.n; @@ -61,6 +63,14 @@ public enum CreationMode { IMPORT_REMOTE_STORAGE( n("observe.storage.creationMode.importRemoteStorage"), n("observe.storage.creationMode.importRemoteStorage.description") + ), + /** + * creer une nouvelle base vide et importer le referentiel via une base + * distante. + */ + IMPORT_SERVER_STORAGE( + n("observe.storage.creationMode.importServerStorage"), + n("observe.storage.creationMode.importServerStorage.description") ); private final String label; @@ -79,4 +89,20 @@ public enum CreationMode { public String getDescription() { return description; } + + public static CreationMode valueOf(DataSourceCreateConfigurationDto createConfigurationDto) { + CreationMode result = EMPTY; + + if (createConfigurationDto != null) { + if (createConfigurationDto.isImportData()) { + result = IMPORT_INTERNAL_DUMP; + } else if (createConfigurationDto.isImportDatabase()) { + result = IMPORT_REMOTE_STORAGE; + } else if (createConfigurationDto.isImportReferential()) { + result = IMPORT_EXTERNAL_DUMP; + } + } + + return result; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/DbMode.java b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/DbMode.java similarity index 88% rename from observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/DbMode.java rename to observe-application-swing/src/main/java/fr/ird/observe/db/constantes/DbMode.java index 31d697e..a7a2876 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/db/constants/DbMode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/constantes/DbMode.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.business.db.constants; +package fr.ird.observe.db.constantes; import static org.nuiton.i18n.I18n.n; @@ -44,6 +44,11 @@ public enum DbMode { USE_REMOTE( n("observe.storage.dbMode.useRemote"), n("observe.storage.dbMode.useRemote.description") + ), + /** Pour utiliser une un serveur web distante */ + USE_SERVER( + n("observe.storage.dbMode.useServer"), + n("observe.storage.dbMode.useServer.description") ); private final String label; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/package.html b/observe-application-swing/src/main/java/fr/ird/observe/package.html index 797e554..061a248 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/package.html +++ b/observe-application-swing/src/main/java/fr/ird/observe/package.html @@ -24,7 +24,7 @@ <h1>Paquetage principal fr.ird.observe</h1> Le paquetage contenant la classe de lancement de l'application (ObserveMain), la -configuration (ObserveConfig) et le +configuration (ObserveSwingApplicationConfig) et le contexte applicatif (ObserveContext), ainsi que des services (non ui) : - DecoratorProvider un provider de décorateurs. diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx index dda06dc..54f7e60 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.jaxx @@ -24,7 +24,7 @@ onWindowClosing='new fr.ird.observe.ui.actions.CloseApplicationAction(this).run()'> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.business.db.DataContext fr.ird.observe.services.dto.seine.RouteDto @@ -70,7 +70,7 @@ <JMenu id="navigationMoveTripAction"/> </JPopupMenu> - <ObserveConfig id='config' initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='config' initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <ObserveMainUIHandler id='handler' initializer='getContextValue(ObserveMainUIHandler.class)'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java index 42e1ebf..53b3b0c 100755 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java @@ -21,11 +21,14 @@ */ package fr.ird.observe.ui; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.services.dto.AbstractObserveDto; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUI; @@ -84,7 +87,7 @@ public class ObserveMainUIHandler { public void changeNavigationNode(ObserveMainUI ui, TreeSelectionEvent event) { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (source == null || !source.isOpen()) { // no open data source @@ -184,7 +187,7 @@ public class ObserveMainUIHandler { * @param config la configuration a utiliser * @return l'ui instancie et initialisee mais non visible encore */ - public ObserveMainUI initUI(ObserveContext context, ObserveConfig config) { + public ObserveMainUI initUI(ObserveSwingApplicationContext context, ObserveSwingApplicationConfig config) { SwingValidatorMessageTableModel errorModel = new ObserveSwingValidatorMessageTableModel(); @@ -266,7 +269,7 @@ public class ObserveMainUIHandler { public static final String H2_SERVER_URL_PATTERN = "jdbc:h2:%s/%s/obstuna"; public static DataSource getStorage() { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); return source; } @@ -275,7 +278,7 @@ public class ObserveMainUIHandler { // } public static void restartEdit() { - ContentUI<?> selectedUI = ObserveContext.get().getSelectedContentUI(); + ContentUI<?> selectedUI = ObserveSwingApplicationContext.get().getSelectedContentUI(); if (selectedUI == null) { // pas d'écran selectionne @@ -309,7 +312,7 @@ public class ObserveMainUIHandler { * @param rootContext le contexte applicatif * @param config la configuration a utiliser */ - protected void reloadUI(ObserveContext rootContext, ObserveConfig config) { + protected void reloadUI(ObserveSwingApplicationContext rootContext, ObserveSwingApplicationConfig config) { // must remove all properties listener on config config.removeJaxxPropertyChangeListener(); @@ -393,7 +396,7 @@ public class ObserveMainUIHandler { if (ui.getConfig().isMainStorageOpened()) { - DataSource service = ObserveContext.get().getDataSource(); + DataSource service = ObserveSwingApplicationContext.get().getDataSource(); //FIXME // if (service instanceof H2DataSource) { // icon = (Icon) ui.storageStatus.getClientProperty("localIcon"); @@ -409,7 +412,7 @@ public class ObserveMainUIHandler { protected String updateStorageSatutText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - DataSource service = ObserveContext.get().getDataSource(); + DataSource service = ObserveSwingApplicationContext.get().getDataSource(); text = service.getShortLabel(); } else { text = t("observe.message.db.none.loaded"); @@ -420,7 +423,7 @@ public class ObserveMainUIHandler { protected String updateStorageStatutToolTipText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); text = t("observe.message.loaded.tip", source.getLabel()); } else { text = t("observe.message.db.none.loaded.tip"); @@ -471,7 +474,7 @@ public class ObserveMainUIHandler { if (context instanceof ObserveMainUI) { return (ObserveMainUI) context; } - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); return ui; } @@ -516,7 +519,7 @@ public class ObserveMainUIHandler { if (selectedNode.equals(o) || !selectedNode.isNodeAncestor(o)) { return; } - boolean canChange = ObserveContext.get().closeSelectedContentUI(ui); + boolean canChange = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (!canChange) { throw new ExpandVetoException(event, "Can not collapse node " + event.getPath()); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveUICallback.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveUICallback.java index e2879ef..57804cc 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveUICallback.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveUICallback.java @@ -22,8 +22,8 @@ package fr.ird.observe.ui; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.ui.actions.CloseApplicationAction; import fr.ird.observe.ui.actions.ReloadStorageAction; import org.apache.commons.logging.Log; @@ -48,7 +48,7 @@ public enum ObserveUICallback implements Runnable { if (log.isInfoEnabled()) { log.info("will reload application"); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = new ObserveMainUIHandler(); ObserveMainUI ui = handler.getUI(context); context.askReload(); @@ -62,10 +62,10 @@ public enum ObserveUICallback implements Runnable { if (log.isInfoEnabled()) { log.info("will reload ui"); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = new ObserveMainUIHandler(); ObserveMainUI ui = handler.getUI(context); - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); handler.reloadUI(context, config); } }, @@ -77,7 +77,7 @@ public enum ObserveUICallback implements Runnable { log.info("will reload db"); } - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUIHandler handler = new ObserveMainUIHandler(); ObserveMainUI ui = handler.getUI(context); new ReloadStorageAction(ui).run(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java index 7db3ffa..ba37f9a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/UIHelper.java @@ -21,6 +21,8 @@ */ package fr.ird.observe.ui; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveContext; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.ui.util.table.ObserveBooleanTableCellRenderer; @@ -132,7 +134,7 @@ public class UIHelper extends SwingUtil { public static void displayInfo(String text) { - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); if (ui == null) { JOptionPane.showMessageDialog(null, text); } else { @@ -142,7 +144,7 @@ public class UIHelper extends SwingUtil { public static void displayWarning(String title, String text) { - ObserveMainUI ui = ObserveContext.get().getObserveMainUI(); + ObserveMainUI ui = ObserveSwingApplicationContext.get().getObserveMainUI(); JOptionPane.showMessageDialog(ui, text, title, JOptionPane.WARNING_MESSAGE); } @@ -169,9 +171,9 @@ public class UIHelper extends SwingUtil { Object[] options, int defaultOption) { if (parent == null) { - ObserveContext tx = ObserveContext.get(); + ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); if (tx != null) { - parent = ObserveContext.get().getObserveMainUI(); + parent = ObserveSwingApplicationContext.get().getObserveMainUI(); } } int response = JOptionPane.showOptionDialog( @@ -293,7 +295,7 @@ public class UIHelper extends SwingUtil { Class<E> beanClass, E bean, String extraMessage) { - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); if (parent == null) { // on cherche l'ui principale @@ -303,7 +305,7 @@ public class UIHelper extends SwingUtil { if (mainUI != null) { mainUI.setBusy(true); } - DecoratorService decoratorService = ObserveContext.get().getDecoratorService(); + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<E> decorator = decoratorService.getDecoratorByType(beanClass); String beanStr; String messageDelete = null; @@ -343,13 +345,13 @@ public class UIHelper extends SwingUtil { public static DecoratorTableCellRenderer newDecorateTableCellRenderer( TableCellRenderer renderer, Class<?> entityClass) { - Decorator<?> decorator = ObserveContext.get().getDecorator(entityClass); + Decorator<?> decorator = ObserveSwingApplicationContext.get().getDecorator(entityClass); return new DecoratorTableCellRenderer(renderer, decorator); } public static DecoratorTableCellRenderer newDecorateTableCellRenderer( TableCellRenderer renderer, Class<?> entityClass, String context) { - Decorator<?> decorator = ObserveContext.get().getDecorator(entityClass, context); + Decorator<?> decorator = ObserveSwingApplicationContext.get().getDecorator(entityClass, context); return new DecoratorTableCellRenderer(renderer, decorator); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeApplicationLanguageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeApplicationLanguageAction.java index b9a9aa0..34cfd6e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeApplicationLanguageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeApplicationLanguageAction.java @@ -22,9 +22,9 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveConfigOption; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUICallback; import jaxx.runtime.SwingUtil; @@ -68,12 +68,12 @@ public class ChangeApplicationLanguageAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe changing application language..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); // sauvegarde de la nouvelle locale - config.setOption(ObserveConfigOption.LOCALE, newLocale); + config.setOption(ObserveSwingApplicationConfigOption.LOCALE, newLocale); ObserveUICallback.ui.run(); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeDbLanguageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeDbLanguageAction.java index 47d49d9..f8f52ac 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeDbLanguageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeDbLanguageAction.java @@ -22,9 +22,9 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveConfigOption; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.*; import fr.ird.observe.ui.ObserveUICallback; @@ -68,14 +68,14 @@ public class ChangeDbLanguageAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe changing db language..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (!canContinue) { return; } - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); // sauvegarde de la nouvelle locale - config.setOption(ObserveConfigOption.DB_LOCALE, newLocale.getLocale()); + config.setOption(ObserveSwingApplicationConfigOption.DB_LOCALE, newLocale.getLocale()); ObserveUICallback.ui.run(); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeStorageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeStorageAction.java index 1a1e6d3..ff7de1e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeStorageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ChangeStorageAction.java @@ -22,8 +22,8 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.storage.StorageUILauncher; import jaxx.runtime.SwingUtil; @@ -79,7 +79,7 @@ public class ChangeStorageAction extends AbstractAction { public void run() { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { if (log.isInfoEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseApplicationAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseApplicationAction.java index 5f77c4b..d6b2578 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseApplicationAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseApplicationAction.java @@ -22,15 +22,15 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveRunner; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.ObserveMainUI; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; -import fr.ird.observe.ui.*; import static org.nuiton.i18n.I18n.t; @@ -70,7 +70,7 @@ public class CloseApplicationAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe quitting..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { try { ui.dispose(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java index e0813c7..7e8c02d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java @@ -22,13 +22,15 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveUIMode; import jaxx.runtime.SwingUtil; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; -import fr.ird.observe.ui.*; + import static org.nuiton.i18n.I18n.t; /** @@ -59,7 +61,7 @@ public class CloseHelpAction extends AbstractAction { if (oldMode == null) { // on regarde si une base est chargee - DataSource mainStorage = ObserveContext.get().getDataSource(); + DataSource mainStorage = ObserveSwingApplicationContext.get().getDataSource(); if (mainStorage == null) { oldMode = ObserveUIMode.NO_DB; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java index e6f2149..504a0f0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.ui.ObserveMainUI; @@ -70,7 +70,7 @@ public class CloseStorageAction extends AbstractAction { public void run() { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { ui.setBusy(true); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/GotoSiteAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/GotoSiteAction.java index 39d04f2..e0f1b04 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/GotoSiteAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/GotoSiteAction.java @@ -22,7 +22,9 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.UIHelper; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; @@ -32,7 +34,7 @@ import javax.swing.AbstractAction; import java.awt.Desktop; import java.awt.event.ActionEvent; import java.net.URL; -import fr.ird.observe.ui.*; + import static org.nuiton.i18n.I18n.t; /** @@ -62,7 +64,7 @@ public class GotoSiteAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); URL siteURL = config.getOptionAsURL("application.site.url"); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ImportStorageFromFileAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ImportStorageFromFileAction.java index 32ad905..e466ab7 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ImportStorageFromFileAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ImportStorageFromFileAction.java @@ -22,9 +22,9 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.storage.StorageStep; import fr.ird.observe.ui.storage.StorageUI; @@ -62,7 +62,7 @@ public class ImportStorageFromFileAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { new StorageUILauncher(ui, ui, t("observe.title.import.localDB")) { @@ -74,6 +74,7 @@ public class ImportStorageFromFileAction extends AbstractAction { model.setCanCreateLocalService(true); model.setCanUseLocalService(false); model.setCanUseRemoteService(false); + model.setCanUseServerService(false); model.setDbMode(DbMode.CREATE_LOCAL); model.setCreationMode(CreationMode.IMPORT_EXTERNAL_DUMP); if (model.isLocalStorageExist()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/LaunchAdminAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/LaunchAdminAction.java index 06628e2..7f155ac 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/LaunchAdminAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/LaunchAdminAction.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminUILauncher; @@ -64,7 +64,7 @@ public class LaunchAdminAction extends AbstractAction { @Override public void actionPerformed(ActionEvent event) { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { if (log.isInfoEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadApplicationAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadApplicationAction.java index 2587b54..92f4d2a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadApplicationAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadApplicationAction.java @@ -22,14 +22,16 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveUICallback; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; -import fr.ird.observe.ui.*; + import static org.nuiton.i18n.I18n.t; /** @@ -62,7 +64,7 @@ public class ReloadApplicationAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe reloading..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { ObserveUICallback.application.run(); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadDefaultConfigurationAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadDefaultConfigurationAction.java index eb15a47..aae5805 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadDefaultConfigurationAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadDefaultConfigurationAction.java @@ -22,8 +22,10 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveUICallback; import jaxx.runtime.SwingUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; @@ -33,7 +35,7 @@ import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import java.io.File; import java.io.IOException; -import fr.ird.observe.ui.*; + import static org.nuiton.i18n.I18n.t; /** @@ -67,9 +69,9 @@ public class ReloadDefaultConfigurationAction extends AbstractAction { log.info("ObServe reloading default configuration..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); File directory = config.getResourcesDirectory(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadResourcesAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadResourcesAction.java index e07eee2..9a10144 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadResourcesAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadResourcesAction.java @@ -23,8 +23,8 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUICallback; @@ -72,9 +72,9 @@ public class ReloadResourcesAction extends AbstractAction { log.info("ObServe reloading resources..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); File directory = config.getResourcesDirectory(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java index 9b337a8..dc5c598 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java @@ -22,12 +22,13 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.business.db.DataSourceFactory; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveMainUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; @@ -37,7 +38,6 @@ import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import static org.nuiton.i18n.I18n.t; -import fr.ird.observe.ui.*; /** * Created on 1/17/15. * @@ -72,7 +72,7 @@ public class ReloadStorageAction extends AbstractAction { public void run() { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); DataSource storage = ObserveMainUIHandler.getStorage(); @@ -99,7 +99,7 @@ public class ReloadStorageAction extends AbstractAction { } } - ObserveConfig appConfig = ObserveContext.get().getConfig(); + ObserveSwingApplicationConfig appConfig = ObserveSwingApplicationContext.get().getConfig(); //FIXME // if (config instanceof H2DataSourceConfig) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java index 5d453ae..83123cc 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java @@ -22,16 +22,18 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.ui.storage.StorageBackupUILauncher; +import fr.ird.observe.ui.ObserveMainUI; +import fr.ird.observe.ui.ObserveMainUIHandler; +import fr.ird.observe.ui.UIHelper; import jaxx.runtime.SwingUtil; import javax.swing.AbstractAction; import javax.swing.JOptionPane; import java.awt.event.ActionEvent; -import static org.nuiton.i18n.I18n.t;import fr.ird.observe.ui.*; +import static org.nuiton.i18n.I18n.t; /** * Created on 1/17/15. @@ -57,7 +59,7 @@ public class SaveStorageToFileAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { // on teste que l'utilisateur peut lire-ecrire sur la source de données diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java index 87917e6..5bd0238 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java @@ -22,20 +22,18 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveConfigOption; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUICallback; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.config.ConfigUIHelper; import jaxx.runtime.swing.config.model.ConfigUIModelBuilder; -import jaxx.runtime.swing.config.model.MainCallBackFinalizer; import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -93,12 +91,12 @@ public class ShowConfigAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("ObServe opening configuration ui..."); } - boolean canContinue = ObserveContext.get().closeSelectedContentUI(ui); + boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - DataSource dataSource = ObserveContext.get().getDataSource(); + DataSource dataSource = ObserveSwingApplicationContext.get().getDataSource(); - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); ObserveConfigUIBuilder helper; @@ -116,7 +114,7 @@ public class ShowConfigAction extends AbstractAction { } - protected ObserveConfigUIBuilder buildUI(ObserveConfig config, DataSource dataSource) throws DataSourceException { + protected ObserveConfigUIBuilder buildUI(ObserveSwingApplicationConfig config, DataSource dataSource) throws DataSourceException { //FIXME // SpeciesListTableCellEditor editor; @@ -209,13 +207,13 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.directories"), n("observe.config.category.directories.description")); - helper.addOption(ObserveConfigOption.CONFIG_FILE); - helper.addOption(ObserveConfigOption.DATA_DIRECTORY); - helper.addOption(ObserveConfigOption.DB_DIRECTORY); - helper.addOption(ObserveConfigOption.BACKUP_DIRECTORY); - helper.addOption(ObserveConfigOption.TMP_DIRECTORY); - helper.addOption(ObserveConfigOption.VALIDATION_REPORT_DIRECTORY); - helper.addOption(ObserveConfigOption.RESOURCES_DIRECTORY, ObserveUICallback.application); + helper.addOption(ObserveSwingApplicationConfigOption.CONFIG_FILE); + helper.addOption(ObserveSwingApplicationConfigOption.DATA_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.DB_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.BACKUP_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.TMP_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.VALIDATION_REPORT_DIRECTORY); + helper.addOption(ObserveSwingApplicationConfigOption.RESOURCES_DIRECTORY, ObserveUICallback.application); } @@ -224,10 +222,10 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.h2"), n("observe.config.category.h2.description")); - helper.addOption(ObserveConfigOption.H2_LOGIN); - helper.addOption(ObserveConfigOption.H2_PASSWORD); - helper.addOption(ObserveConfigOption.H2_CAN_MIGRATE); - helper.addOption(ObserveConfigOption.H2_SERVER_PORT); + helper.addOption(ObserveSwingApplicationConfigOption.H2_LOGIN); + helper.addOption(ObserveSwingApplicationConfigOption.H2_PASSWORD); + helper.addOption(ObserveSwingApplicationConfigOption.H2_CAN_MIGRATE); + helper.addOption(ObserveSwingApplicationConfigOption.H2_SERVER_PORT); } @@ -236,12 +234,12 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.obstuna"), n("observe.config.category.obstuna.description")); - helper.addOption(ObserveConfigOption.OBSTUNA_URL); - helper.addOption(ObserveConfigOption.OBSTUNA_LOGIN); - helper.addOption(ObserveConfigOption.OBSTUNA_USE_SSL_CERT); -// helper.addOption(ObserveConfigOption.OBSTUNA_SSL_CERTIFICAT_FILE); + helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_URL); + helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_LOGIN); + helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_USE_SSL_CERT); +// helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_SSL_CERTIFICAT_FILE); - helper.addOption(ObserveConfigOption.OBSTUNA_CAN_MIGRATE, ObserveUICallback.db); + helper.addOption(ObserveSwingApplicationConfigOption.OBSTUNA_CAN_MIGRATE, ObserveUICallback.db); } @@ -251,12 +249,12 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.changeStorage"), n("observe.config.category.changeStorage.description")); - helper.addOption(ObserveConfigOption.DEFAULT_DB_MODE); - helper.addOption(ObserveConfigOption.DEFAULT_CREATION_MODE); - helper.addOption(ObserveConfigOption.STORE_REMOTE_STORAGE); - helper.addOption(ObserveConfigOption.SHOW_MIGRATION_PROGRESSION); - helper.addOption(ObserveConfigOption.SHOW_MIGRATION_SQL); - helper.addOption(ObserveConfigOption.SHOW_SQL, ObserveUICallback.application); + helper.addOption(ObserveSwingApplicationConfigOption.DEFAULT_DB_MODE); + helper.addOption(ObserveSwingApplicationConfigOption.DEFAULT_CREATION_MODE); + helper.addOption(ObserveSwingApplicationConfigOption.STORE_REMOTE_STORAGE); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_PROGRESSION); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_MIGRATION_SQL); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_SQL, ObserveUICallback.application); } @@ -265,8 +263,8 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.gps"), n("observe.config.category.gps.description")); - helper.addOption(ObserveConfigOption.DEFAULT_GPS_MAX_DELAY); - helper.addOption(ObserveConfigOption.DEFAULT_GPS_MAX_SPEED); + helper.addOption(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_DELAY); + helper.addOption(ObserveSwingApplicationConfigOption.DEFAULT_GPS_MAX_SPEED); } @@ -275,8 +273,8 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.synchro"), n("observe.config.category.synchro.description")); - helper.addOption(ObserveConfigOption.CHANGE_SYNCHRO_SRC); - helper.addOption(ObserveConfigOption.H2_CAN_MIGRATE); + helper.addOption(ObserveSwingApplicationConfigOption.CHANGE_SYNCHRO_SRC); + helper.addOption(ObserveSwingApplicationConfigOption.H2_CAN_MIGRATE); } @@ -287,14 +285,14 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.observation.description"), ObserveUICallback.ui.name()); - helper.addOption(ObserveConfigOption.DETAILLED_ACTIVITIES_OBSERVATION); - helper.addOption(ObserveConfigOption.NON_TARGET_OBSERVATION); - helper.addOption(ObserveConfigOption.BAIT_OBSERVATION); - helper.addOption(ObserveConfigOption.MAMMALS_OBSERVATION); - helper.addOption(ObserveConfigOption.SAMPLES_OBSERVATION); - helper.addOption(ObserveConfigOption.OBJECTS_OBSERVATION); - helper.addOption(ObserveConfigOption.BIRDS_OBSERVATION); - helper.addOption(ObserveConfigOption.TARGET_DISCARDS_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.DETAILLED_ACTIVITIES_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.NON_TARGET_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.BAIT_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.MAMMALS_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.SAMPLES_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.OBJECTS_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.BIRDS_OBSERVATION); + helper.addOption(ObserveSwingApplicationConfigOption.TARGET_DISCARDS_OBSERVATION); } @@ -305,11 +303,11 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.speciesList.seine.description"), ObserveUICallback.ui.name()); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_TARGET_CATCH_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_TARGET_CATCH_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_SCHOOL_ESTIMATE_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_SCHOOL_ESTIMATE_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_NON_TARGET_CATCH_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_SEINE_OBJECT_OBSERVED_SPECIES_ID); } @@ -321,8 +319,8 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.speciesList.longline.description"), ObserveUICallback.ui.name()); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_LONGLINE_CATCH_ID); - helper.addSpeciesListOption(ObserveConfigOption.SPECIES_LIST_LONGLINE_ENCOUNTER_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_CATCH_ID); + helper.addSpeciesListOption(ObserveSwingApplicationConfigOption.SPECIES_LIST_LONGLINE_ENCOUNTER_ID); } @@ -333,11 +331,11 @@ public class ShowConfigAction extends AbstractAction { n("observe.config.category.map.description"), ObserveUICallback.ui.name()); - helper.addOption(ObserveConfigOption.MAP_BACKGROUND_COLOR); - for (ObserveConfigOption layerOption : ObserveConfigOption.MAP_LAYERS) { + helper.addOption(ObserveSwingApplicationConfigOption.MAP_BACKGROUND_COLOR); + for (ObserveSwingApplicationConfigOption layerOption : ObserveSwingApplicationConfigOption.MAP_LAYERS) { helper.addOption(layerOption); } - helper.addOption(ObserveConfigOption.MAP_STYLE_FILE); + helper.addOption(ObserveSwingApplicationConfigOption.MAP_STYLE_FILE); } @@ -346,13 +344,13 @@ public class ShowConfigAction extends AbstractAction { helper.addCategory(n("observe.config.category.other"), n("observe.config.category.other.description")); - helper.addOption(ObserveConfigOption.SHOW_NUMBER_EDITOR_BUTTON); - helper.addOption(ObserveConfigOption.AUTO_POPUP_NUMBER_EDITOR); - helper.addOption(ObserveConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER); - helper.addOption(ObserveConfigOption.LOAD_LOCAL_STORAGE, ObserveUICallback.application); -// helper.addOption(ObserveConfigOption.FULL_SCREEN, ObserveUICallback.ui); - helper.addOption(ObserveConfigOption.LOCALE, ObserveUICallback.ui); - helper.addOption(ObserveConfigOption.DB_LOCALE, ObserveUICallback.ui); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_NUMBER_EDITOR_BUTTON); + helper.addOption(ObserveSwingApplicationConfigOption.AUTO_POPUP_NUMBER_EDITOR); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER); + helper.addOption(ObserveSwingApplicationConfigOption.LOAD_LOCAL_STORAGE, ObserveUICallback.application); +// helper.addOption(ObserveSwingApplicationConfigOption.FULL_SCREEN, ObserveUICallback.ui); + helper.addOption(ObserveSwingApplicationConfigOption.LOCALE, ObserveUICallback.ui); + helper.addOption(ObserveSwingApplicationConfigOption.DB_LOCALE, ObserveUICallback.ui); } @@ -366,7 +364,7 @@ public class ShowConfigAction extends AbstractAction { SpeciesListsTableCellRenderer renderer; - protected ObserveConfigUIBuilder(ObserveConfig config, + protected ObserveConfigUIBuilder(ObserveSwingApplicationConfig config, SpeciesListTableCellEditor speciesListTableCellEditor, SpeciesListsTableCellRenderer speciesListsTableCellRenderer) { super(config); @@ -380,7 +378,7 @@ public class ShowConfigAction extends AbstractAction { // add the option super.addOption(option); - String beanProperty = ((ObserveConfigOption) option).getPropertyKey(); + String beanProperty = ((ObserveSwingApplicationConfigOption) option).getPropertyKey(); if (StringUtils.isNotEmpty(beanProperty)) { setOptionPropertyName(beanProperty); @@ -390,7 +388,7 @@ public class ShowConfigAction extends AbstractAction { } - public ConfigUIModelBuilder addOption(ObserveConfigOption option, ObserveUICallback callBack) { + public ConfigUIModelBuilder addOption(ObserveSwingApplicationConfigOption option, ObserveUICallback callBack) { addOption(option); setOptionCallBack(callBack.name()); @@ -411,7 +409,7 @@ public class ShowConfigAction extends AbstractAction { } - protected ConfigUIModelBuilder addSpeciesListOption(ObserveConfigOption option) { + protected ConfigUIModelBuilder addSpeciesListOption(ObserveSwingApplicationConfigOption option) { addOption(option) .setOptionPropertyName(option.getPropertyKey()) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java index ff0c395..346fd9e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import jaxx.runtime.SwingUtil; import fr.ird.observe.ui.*; import javax.swing.AbstractAction; @@ -57,7 +57,7 @@ public class ShowStorageInfoAction extends AbstractAction { String text; if (ui.getConfig().isMainStorageOpened()) { - text = ObserveContext.get().getDataSource().toString(); + text = ObserveSwingApplicationContext.get().getDataSource().toString(); } else { text = t("observe.message.db.none.loaded"); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/StartServerModeAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/StartServerModeAction.java index 45d2fa2..2d36f0a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/StartServerModeAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/StartServerModeAction.java @@ -22,19 +22,16 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import java.io.File; -import java.sql.SQLException; import static org.nuiton.i18n.I18n.t; @@ -74,7 +71,7 @@ public class StartServerModeAction extends AbstractAction { if (log.isInfoEnabled()) { log.info("Will start server mode..."); } - ObserveConfig config = ui.getConfig(); + ObserveSwingApplicationConfig config = ui.getConfig(); File dbDirectory = new File(config.getLocalDBDirectory(), "obstuna"); String h2Login = config.getH2Login(); String h2Password = new String(config.getH2Password()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseAndCreateUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseAndCreateUIAction.java index 250ed34..0a9f397 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseAndCreateUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseAndCreateUIAction.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.actions.shared; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.ui.ObserveMainUI; @@ -103,7 +103,7 @@ public class CloseAndCreateUIAction extends AbstractUIAction { // recuperation de l'écran associé ActivitySeineUI selectedUI = (ActivitySeineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // fermeture de l'activity et création d'une nouvelle selectedUI.closeAndCreateData(); @@ -139,7 +139,7 @@ public class CloseAndCreateUIAction extends AbstractUIAction { // recuperation de l'écran associé ActivityLonglineUI selectedUI = (ActivityLonglineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // fermeture de l'activity et création d'une nouvelle selectedUI.closeAndCreateData(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseOpenUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseOpenUIAction.java index d9941cb..5855416 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseOpenUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/CloseOpenUIAction.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.actions.shared; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.ui.ObserveMainUI; @@ -108,7 +108,7 @@ public class CloseOpenUIAction extends AbstractUIAction { // recuperation de l'écran associé ActivitySeineUI selectedUI = (ActivitySeineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // fermeture de l'activity selectedUI.closeData(); @@ -150,7 +150,7 @@ public class CloseOpenUIAction extends AbstractUIAction { // recuperation de l'écran associé ActivityLonglineUI selectedUI = (ActivityLonglineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // fermeture de l'activity selectedUI.closeData(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/ReOpenUIAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/ReOpenUIAction.java index c457766..00ca65b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/ReOpenUIAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/shared/ReOpenUIAction.java @@ -21,8 +21,7 @@ */ package fr.ird.observe.ui.actions.shared; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.services.dto.AbstractObserveDto; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.content.ContentUI; @@ -94,7 +93,7 @@ public class ReOpenUIAction extends AbstractUIAction { treeHelper.selectNode(node); openUI = (ContentOpenableUI<?>) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); } else { throw new IllegalStateException("The action " + ACTION_NAME + " can not be executed from ui " + ui); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java index f1bf638..395f0bf 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminStep.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.config.ConfigUI; import fr.ird.observe.ui.admin.config.SelectDataUI; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx index 5170c4a..1f9553d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx @@ -28,7 +28,7 @@ implements='jaxx.runtime.swing.wizard.WizardStepUI<AdminStep, AdminUIModel>, java.beans.PropertyChangeListener'> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.UIHelper fr.ird.observe.ui.admin.* fr.ird.observe.ui.storage.StorageUIModel @@ -52,8 +52,8 @@ <StorageUIModel id='centralSourceModel' initializer='getModel().getCentralSourceModel()'/> - <ObserveConfig id='observeConfig' - initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='observeConfig' + initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <AdminTabUIHandler id='handler' initializer='null'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java index 68274f1..7530e39 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.ui.admin; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.BinderService; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveContext; @@ -39,6 +40,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JTree; +import javax.swing.tree.TreeModel; import java.io.PrintWriter; import java.io.StringWriter; import java.util.concurrent.Callable; @@ -141,7 +143,7 @@ public class AdminTabUIHandler implements SendMessageAble { public final DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } @@ -156,14 +158,14 @@ public class AdminTabUIHandler implements SendMessageAble { public final BinderService getBinderService() { if (binderService == null) { - binderService = ObserveContext.get().getBinderService(); + binderService = ObserveSwingApplicationContext.get().getBinderService(); } return binderService; } public final GPSService getGpsService() { if (gpsService == null) { - gpsService = ObserveContext.get().getGPSService(); + gpsService = ObserveSwingApplicationContext.get().getGPSService(); } return gpsService; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java index d8dd3d9..cc33110 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.ui.ObserveMainUI; @@ -136,7 +136,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad protected Component getParent(AdminUI ui) { - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); ImageIcon icon = (ImageIcon) ui.getClientProperty("icon"); if (mainUI == null) { // pas de fenetre detectee @@ -178,7 +178,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad protected void start(final AdminUI ui) { super.start(ui); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); String title = (String) ui.getClientProperty("title"); @@ -245,7 +245,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad if (log.isInfoEnabled()) { log.info("After dispose."); } - ObserveContext.get().releaseLock(); + ObserveSwingApplicationContext.get().releaseLock(); return; } @@ -277,7 +277,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad // (PGDataSourceConfig) sourceConfig); // on attache la source a l'ui - ObserveContext.get().prepareMainStorage(source); + ObserveSwingApplicationContext.get().prepareMainStorage(source); source.doOpen(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index 467e13c..cfa086b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -21,14 +21,14 @@ */ package fr.ird.observe.ui.admin; -import fr.ird.observe.ObserveConfig; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.business.db.constants.DbMode; import fr.ird.observe.business.report.model.Report; import fr.ird.observe.business.validation.ValidationModelMode; import fr.ird.observe.business.validation.ValidatorsMap; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.ui.admin.export.ExportModel; import fr.ird.observe.ui.admin.gps.ImportGPSModel; @@ -48,7 +48,6 @@ import org.nuiton.validator.NuitonValidatorScope; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; @@ -104,7 +103,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // protected DataService dataService; /** configuration de l'application */ - protected ObserveConfig config; + protected ObserveSwingApplicationConfig config; /** selection des donnees a valider */ //FIXME @@ -425,7 +424,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // return dataService; // } - public ObserveConfig getConfig() { + public ObserveSwingApplicationConfig getConfig() { return config; } @@ -496,7 +495,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { storageHandler = ui.getContextValue(StorageUIHandler.class); //FIXME // dataService = ui.getContextValue(DataService.class); - config = ui.getContextValue(ObserveConfig.class); + config = ui.getContextValue(ObserveSwingApplicationConfig.class); // demarrage du modèle : on fixe ici une fois pour toute les liste // des onglets visibles @@ -631,6 +630,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { centralSourceModel.setCanCreateLocalService(false); centralSourceModel.setCanUseLocalService(false); centralSourceModel.setCanUseRemoteService(true); + centralSourceModel.setCanUseServerService(true); centralSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { @@ -716,6 +716,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { localSourceModel.setCanCreateLocalService(modes.contains(DbMode.CREATE_LOCAL)); localSourceModel.setCanUseLocalService(modes.contains(DbMode.USE_LOCAL)); localSourceModel.setCanUseRemoteService(modes.contains(DbMode.USE_REMOTE)); + localSourceModel.setCanUseServerService(modes.contains(DbMode.USE_SERVER)); if (previousSource == null) { @@ -1320,17 +1321,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { protected DataSource createService(StorageUIModel model) { - try { - DataSource service = storageHandler.newServiceFromModel( - model, - false, - n("observe.storage.label.local"), - n("observe.storage.label.remote") - ); - return service; - } catch (IOException e) { - throw new IllegalStateException("Could not create service for " + model, e); - } + // FIXME +// ObserveDataSourceConfiguration service = storageHandler.newDataSourceConfigurationFromModel( +// model, +// n("observe.storage.label.local") +// ); +// return service; + return null; } protected void doOpenSource(DataSource source) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/config/ConfigUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/config/ConfigUIHandler.java index 6151069..5a00e47 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/config/ConfigUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/config/ConfigUIHandler.java @@ -21,8 +21,6 @@ */ package fr.ird.observe.ui.admin.config; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.constants.DbMode; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java index 65b0701..e53268f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/GPSActivityTableModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.gps; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.gps.GPSPoint; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import org.nuiton.decorator.Decorator; @@ -74,7 +74,7 @@ public class GPSActivityTableModel extends AbstractTableModel { public GPSActivityTableModel() { selected = new HashSet<Integer>(); - decorator = ObserveContext.get().getDecorator(ActivitySeineDto.class, + decorator = ObserveSwingApplicationContext.get().getDecorator(ActivitySeineDto.class, "gps-activity"); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx index bf0179c..f33cc10 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSConfigUI.jaxx @@ -26,7 +26,7 @@ <Table id="importGPSConfig"> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.admin.AdminUIModel jaxx.runtime.swing.editor.NumberEditor @@ -43,8 +43,8 @@ <ImportGPSModel id='gpsModel' initializer='model.getImportGPSModel()'/> - <ObserveConfig id='config' - initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='config' + initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <script><![CDATA[ public void destroy() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java index 2829739..2ddca0a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/ObsoleteEntityListCellRenderer.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.admin.synchronize; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.business.DecoratorService; import fr.ird.observe.services.dto.AbstractObserveDto; import org.nuiton.decorator.Decorator; @@ -41,7 +41,7 @@ public class ObsoleteEntityListCellRenderer extends DefaultListCellRenderer { public DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateConfigUI.jaxx index f7e4b0f..b71b533 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateConfigUI.jaxx @@ -26,7 +26,7 @@ <JPanel id="validateConfig"> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.admin.AdminUIModel fr.ird.observe.business.validation.ValidationModelMode @@ -46,8 +46,8 @@ <ValidateModel id='validateModel' initializer='model.getValidateModel()'/> - <ObserveConfig id='config' - initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='config' + initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <ButtonGroup id='validateContentModel' onStateChanged='validateModel.setModelMode((ValidationModelMode) validateContentModel.getSelectedValue())'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateEntityListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateEntityListCellRenderer.java index a62861f..b3c29f0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateEntityListCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateEntityListCellRenderer.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.validate; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -81,7 +81,7 @@ public class ValidateEntityListCellRenderer extends DefaultListCellRenderer impl public DecoratorService getService() { if (service == null) { - service = ObserveContext.get().getDecoratorService(); + service = ObserveSwingApplicationContext.get().getDecoratorService(); } return service; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateModel.java index 9ba477c..bbef147 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.validate; -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.validation.ValidationModelMode; import fr.ird.observe.business.validation.ValidationService; import fr.ird.observe.business.validation.ValidatorsMap; @@ -97,10 +97,10 @@ public class ValidateModel extends AdminActionModel { /** * @return le lastName par defaut du fichier de sauvegarde de la base locale * (expression calculée à partir de la date courante et du pattern - * {@link ObserveConfig#REPORT_PATTERN}). + * {@link ObserveSwingApplicationConfig#REPORT_PATTERN}). */ public String getDefaultReportFilename() { - return String.format(ObserveConfig.REPORT_PATTERN, new Date()); + return String.format(ObserveSwingApplicationConfig.REPORT_PATTERN, new Date()); } public String getContextName() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java index 327e740..790e715 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.admin.validate; import com.google.common.base.Charsets; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.business.validation.ValidationMessageDetector; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx index 45d4fbd..952d7ed 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx @@ -36,8 +36,8 @@ <import> fr.ird.observe.business.db.DataContext fr.ird.observe.business.db.DataSource - fr.ird.observe.ObserveConfig - fr.ird.observe.ObserveContext + fr.ird.observe.configuration.ObserveSwingApplicationConfig + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.ui.actions.shared.GoUpUIAction fr.ird.observe.ui.actions.shared.GoDownUIAction fr.ird.observe.ui.tree.ObserveTreeHelper @@ -54,8 +54,8 @@ javax.swing.UIManager </import> - <ObserveConfig id='config' - initializer='getContextValue(ObserveConfig.class)'/> + <ObserveSwingApplicationConfig id='config' + initializer='getContextValue(ObserveSwingApplicationConfig.class)'/> <SwingValidatorMessageTableModel id='errorTableModel' initializer='getContextValue(SwingValidatorMessageTableModel.class)'/> @@ -65,7 +65,7 @@ <!--initializer='getContextValue(DataService.class)'/>--> <DataSource id='dataSource' - initializer='ObserveContext.get().getDataSource()'/> + initializer='ObserveSwingApplicationContext.get().getDataSource()'/> <DataContext id='dataContext' javaBean='getContextValue(DataContext.class)'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java index a6bb8ba..425d75a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java @@ -21,13 +21,13 @@ */ package fr.ird.observe.ui.content; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.BinderService; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; @@ -69,13 +69,24 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public abstract class ContentUIHandler<E extends IdDto> { +public abstract class ContentUIHandler<E extends AbstractObserveDto> { /** Logger */ static private final Log log = LogFactory.getLog(ContentUIHandler.class); protected final String prefix; + //FIXME +// private final TopiaExecutor<E> loadExecutor; +// +// private final TopiaExecutor2<? extends TopiaEntity, E> preCreateExecutor; +// +// private final TopiaExecutor2<? extends TopiaEntity, E> createExecutor; +// +// private final TopiaExecutor2<? extends TopiaEntity, E> updateExecutor; +// +// private final TopiaExecutor2<? extends TopiaEntity, E> deleteExecutor; + private final DataContextType parentType; private final DataContextType type; @@ -93,11 +104,46 @@ public abstract class ContentUIHandler<E extends IdDto> { if (log.isDebugEnabled()) { log.debug("New handler [" + this + "] for ui " + prefix); } - + //FIXME +// loadExecutor = new TopiaExecutor<E>() { +// @Override +// public void execute(TopiaContext tx, E bean) throws TopiaException { +// onLoad(tx, bean); +// } +// }; + //FIXME +// preCreateExecutor = new TopiaExecutor2<TopiaEntity, E>() { +// @Override +// public E execute(TopiaContext tx, TopiaEntity parentBean, E bean) throws TopiaException { +// return onPreCreate(tx, parentBean, bean); +// } +// }; + //FIXME +// createExecutor = new TopiaExecutor2<TopiaEntity, E>() { +// @Override +// public E execute(TopiaContext tx, TopiaEntity parentBean, E bean) throws TopiaException { +// return onCreate(tx, parentBean, bean); +// } +// }; + //FIXME +// updateExecutor = new TopiaExecutor2<TopiaEntity, E>() { +// @Override +// public E execute(TopiaContext tx, TopiaEntity parentBean, E bean) throws TopiaException { +// return onUpdate(tx, parentBean, bean); +// } +// }; + //FIXME +// deleteExecutor = new TopiaExecutor2<TopiaEntity, E>() { +// @Override +// public E execute(TopiaContext tx, TopiaEntity parentBean, E beanToDelete) throws TopiaException { +// onDelete(tx, parentBean, beanToDelete); +// return null; +// } +// }; errorIcon = UIManager.getIcon("action.error"); } - public static <E extends IdDto> ContentUIHandler<E> newHandler(ObserveContentUI<E> ui) { + public static <E extends AbstractObserveDto> ContentUIHandler<E> newHandler(ObserveContentUI<E> ui) { String uiName = ui.getClass().getName(); String modelName = uiName + "Handler"; @@ -113,6 +159,10 @@ public abstract class ContentUIHandler<E extends IdDto> { } } + //FIXME +// protected static void attachTopiaContext(DataSource service, TopiaEntityAbstract entity) { +// DBHelper.attachTopiaContext(service.getRootCtxt(), entity); +// } public static ObserveTreeHelper getTreeHelper(JAXXContext context) { return context.getContextValue(ObserveTreeHelper.class); @@ -292,12 +342,12 @@ public abstract class ContentUIHandler<E extends IdDto> { } public DecoratorService getDecoratorService() { - DecoratorService result = ObserveContext.get().getDecoratorService(); + DecoratorService result = ObserveSwingApplicationContext.get().getDecoratorService(); return result; } public BinderService getBinderService() { - return ObserveContext.get().getBinderService(); + return ObserveSwingApplicationContext.get().getBinderService(); } protected DataSource getDataSource() { @@ -307,7 +357,7 @@ public abstract class ContentUIHandler<E extends IdDto> { public void initUI() throws Exception { ContentUIInitializer<E, ObserveContentUI<E>> uiInitializer = new ContentUIInitializer<E, ObserveContentUI<E>>(ui); - uiInitializer.initUI(); + uiInitializer.initUI(getDataSource()); } @@ -319,7 +369,8 @@ public abstract class ContentUIHandler<E extends IdDto> { //FIXME chemit 20100913 : il vaudrait le faire uniquement lors de l'édition // chaque arrive sur un ecran invalide le cache de validation - ObserveServiceHelper.getValidationContext().cleanCache(); + //FIXME +// ObserveServiceHelper.getValidationContext().cleanCache(); if (log.isDebugEnabled()) { log.debug("ui " + ui.getClass()); @@ -346,6 +397,18 @@ public abstract class ContentUIHandler<E extends IdDto> { return icon; } +//FIXME +// protected void onLoad(TopiaContext tx, E bean) throws TopiaException { +// +// // par defaut on charge l'objet de la base dans le bean d'édition +// getLoadBinder().load(bean, getBean(), true); +// } + + //FIXME +// protected E onPreCreate(TopiaContext tx, Object parentBean, E bean) throws TopiaException { +// return bean; +// } + public void startEditUI(String... binding) { E editBean = getBean(); @@ -368,7 +431,8 @@ public abstract class ContentUIHandler<E extends IdDto> { } public void stopEditUI() { - ObserveServiceHelper.getValidationContext().cleanCache(); +//FIXME +// ObserveServiceHelper.getValidationContext().cleanCache(); ContentUIModel<E> model = getModel(); @@ -628,6 +692,31 @@ public abstract class ContentUIHandler<E extends IdDto> { // return getModel().getLoadBinder(); // } + //FIXME +// protected final TopiaExecutor<E> getLoadExecutor() { +// return loadExecutor; +// } + + //FIXME +// protected final TopiaExecutor2<? extends TopiaEntity, E> getPreCreateExecutor() { +// return preCreateExecutor; +// } +// + //FIXME +// protected final TopiaExecutor2<? extends TopiaEntity, E> getCreateExecutor() { +// return createExecutor; +// } +// + //FIXME +// protected final TopiaExecutor2<? extends TopiaEntity, E> getUpdateExecutor() { +// return updateExecutor; +// } +// + //FIXME +// protected final TopiaExecutor2<? extends TopiaEntity, E> getDeleteExecutor() { +// return deleteExecutor; +// } + protected final ContentMode computeContentMode() { ContentMode mode; @@ -661,7 +750,7 @@ public abstract class ContentUIHandler<E extends IdDto> { updateToolbarActions(); - ActionMap actionMap = ObserveContext.get().getActionMap(); + ActionMap actionMap = ObserveSwingApplicationContext.get().getActionMap(); for (String name : ui.get$objectMap().keySet()) { Object o = ui.getObjectById(name); @@ -783,26 +872,4 @@ public abstract class ContentUIHandler<E extends IdDto> { // } // // } - - //FIXME - protected ReferentialService getReferentialService() { -// ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); -// return context.newService(ReferentialService.class); - return null; - } - - protected abstract FormDto<E> loadToEdit(String id); - - protected void loadBean(String id) { - FormDto<E> formDto = loadToEdit(id); - getModel().setFormDto(formDto); - loadBean(formDto.getForm()); - } - - protected void loadBean(E bean) { - IdDtos.copyIdDto(bean, getBean()); - } - - protected abstract FormDto<E> loadToReadDto(String id); - } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java index 8aa0914..6516573 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIInitializer.java @@ -23,9 +23,11 @@ package fr.ird.observe.ui.content; */ import com.google.common.base.Predicate; -import com.google.common.collect.Collections2; import com.google.common.collect.Lists; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.validation.ObserveValidator; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; @@ -98,7 +100,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 3.7 */ -public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E>> { +public class ContentUIInitializer<E extends AbstractObserveDto, UI extends ObserveContentUI<E>> { public static final String OBSERVE_ACTION = "observeAction"; @@ -117,6 +119,12 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E this.ui = ui; } + //FIXME +// protected static void attachTopiaContext(DataSource service, +// TopiaEntityAbstract entity) { +// DBHelper.attachTopiaContext(service.getRootCtxt(), entity); +// } + public static TableCellEditor newFloatColumnEditor(JTable table) { NumberCellEditor<Float> editor = JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); @@ -186,13 +194,15 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E log.debug("ui " + getClass()); } - ActionMap actionMap = ObserveContext.get().getActionMap(); + ActionMap actionMap = ObserveSwingApplicationContext.get().getActionMap(); // initialisation des éditeurs + init(dataSource); + Set<String> doNotBlockComponentIds = new HashSet<String>(); - DecoratorService decoratorService = ObserveContext.get().getDecoratorService(); + DecoratorService decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); for (String name : ui.get$objectMap().keySet()) { Object o = ui.getObjectById(name); @@ -201,6 +211,11 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E continue; } + if (o instanceof AbstractObserveDto) { + init(dataSource, (AbstractObserveDto) o); + continue; + } + if (o instanceof JComponent) { init((JComponent) o, doNotBlockComponentIds); @@ -370,12 +385,12 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E Object init = jlist.getClientProperty("addDecorator"); if (init != null) { - Class<IdDto> klass = (Class<IdDto>) init; + Class<AbstractObserveDto> klass = (Class<AbstractObserveDto>) init; if (log.isDebugEnabled()) { log.debug("addDecorator to list " + jlist.getName()); } - Decorator<IdDto> decorator = ObserveContext.get().getDecorator(klass); + Decorator<AbstractObserveDto> decorator = decoratorService.getDecoratorByType(klass); jlist.putClientProperty("decorator", decorator); } @@ -590,40 +605,44 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * Remplit le modèle d'une liste graphique avec la liste des entités d'un * type donné sur un service de persistance donné. * + * @param storageService le service de persistance à utiliser pour + * récupérer les entités + * @param entityClass le type de l'entité * @param list le component graphique à initialiser + * @throws DataSourceException si un problème lors de la récupération + * des entités * @since 1.5 */ - protected <E extends IdDto> void prepareEntityList(FilterableDoubleList<ReferenceDto> list) { + protected <E extends AbstractObserveDto> void prepareEntityList(DataSource storageService, + Class<E> entityClass, + FilterableDoubleList<E> list) throws DataSourceException { - ObserveContext tx = ObserveContext.get(); + ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); - Class<E> dtoClass = (Class<E>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_ENTITY_CLASS); // init list - Decorator<ReferenceDto> decorator = tx.getDecorator(ReferenceDto.class, dtoClass.getName()); + Decorator<E> decorator = tx.getDecorator(entityClass); if (log.isDebugEnabled()) { log.debug("Will use decorator " + decorator); } list.putClientProperty("decorator", decorator); - List<ReferenceDto> data = null; - - if (ReferentialDto.class.isAssignableFrom(dtoClass)) { + List<E> data = null; - Predicate<ReferenceDto> predicate = (Predicate<ReferenceDto>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); + if (ReferentialDto.class.isAssignableFrom(entityClass)) { - ReferenceSetDto<E> referenceSetDto = getFormDto().getReferenceSetDto(dtoClass); - data = new ArrayList<>(Collections2.filter(referenceSetDto.getReference(), predicate)); -// data = tx.getDataService().getList(storageService, realEntityClass, predicate); + Predicate<E> predicate = (Predicate<E>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); + //FIXME +// data = tx.getDataService().getList(storageService, entityClass, predicate); } else { - data = new ArrayList<>(); + data = new ArrayList<E>(); } // sort data from first decorator context - DecoratorUtil.sort((JXPathDecorator<ReferenceDto>) decorator, data, 0); + DecoratorUtil.sort((JXPathDecorator<E>) decorator, data, 0); // set datas to list and init renderer - list.init((JXPathDecorator<ReferenceDto>) decorator, data, Collections.<ReferenceDto>emptyList()); + list.init((JXPathDecorator<E>) decorator, data, Collections.<E>emptyList()); // get the renderer initialized ListCellRenderer renderer = list.getSelectedList().getCellRenderer(); @@ -634,10 +653,10 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E list.putClientProperty("data", data); - //FIXME // listen on cache modification -// EntityDoubleListPropertyChangeListener<E> listener = -// new EntityDoubleListPropertyChangeListener<E>(entityClass, list); + EntityDoubleListPropertyChangeListener<E> listener = + new EntityDoubleListPropertyChangeListener<E>(entityClass, list); + //FIXME // DataService service = ObserveContext.get().getDataService(); // service.addReferentielPropertyChangeListener(entityClass, listener); } @@ -646,40 +665,44 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * Remplit le modèle d'une liste graphique avec la liste des entités d'un * type donné sur un service de persistance donné. * + * @param storageService le service de persistance à utiliser pour + * récupérer les entités + * @param entityClass le type de l'entité * @param list le component graphique à initialiser + * @throws DataSourceException si un problème lors de la récupération + * des entités * @since 1.5 */ - protected <E extends IdDto> void prepareEntityList(Class<E> dtoClass, - BeanListHeader<ReferenceDto> list) { + protected <E extends AbstractObserveDto> void prepareEntityList(DataSource storageService, + Class<E> entityClass, + BeanListHeader<E> list) throws DataSourceException { - ObserveContext tx = ObserveContext.get(); + ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); // init list - Decorator<ReferenceDto> decorator = tx.getDecorator(ReferenceDto.class, dtoClass.getName()); + Decorator<E> decorator = tx.getDecorator(entityClass); if (log.isDebugEnabled()) { log.debug("Will use decorator " + decorator); } list.putClientProperty("decorator", decorator); + List<E> data = null; - List<ReferenceDto> data; + if (ReferentialDto.class.isAssignableFrom(entityClass)) { - if (ReferentialDto.class.isAssignableFrom(dtoClass)) { - - Predicate<ReferenceDto> predicate = (Predicate<ReferenceDto>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); - - ReferenceSetDto<E> referenceSetDto = getFormDto().getReferenceSetDto(dtoClass); - data = new ArrayList<>(Collections2.filter(referenceSetDto.getReference(), predicate)); + Predicate<E> predicate = (Predicate<E>) list.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); + //FIXME +// data = tx.getDataService().getList(storageService, entityClass, predicate); } else { - data = new ArrayList<>(); + data = new ArrayList<E>(); } // sort data from first decorator context - DecoratorUtil.sort((JXPathDecorator<ReferenceDto>) decorator, data, 0); + DecoratorUtil.sort((JXPathDecorator<E>) decorator, data, 0); // set datas to list and init renderer - list.init((JXPathDecorator<ReferenceDto>) decorator, data); + list.init((JXPathDecorator<E>) decorator, data); // get the renderer initialized ListCellRenderer renderer = list.getList().getCellRenderer(); @@ -689,10 +712,10 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E list.putClientProperty("data", data); - //FIXME // listen on cache modification -// EntityListPropertyChangeListener<E> listener = -// new EntityListPropertyChangeListener<E>(dtoClass, list); + EntityListPropertyChangeListener<E> listener = + new EntityListPropertyChangeListener<E>(entityClass, list); + //FIXME // DataService service = ObserveContext.get().getDataService(); // service.addReferentielPropertyChangeListener(entityClass, listener); } @@ -702,52 +725,63 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * pour un service de persistance donné. * * @param <E> le type de l'entité + * @param storageService le service de persistance à utiliser pour récupérer + * les entités + * @param entityClass le type de l'entité * @param comboBox le component graphique à initialiser + * @throws DataSourceException si un pb pendant la récupération des + * entités */ - protected <E extends IdDto> void prepareBeanComboBox(BeanComboBox<ReferenceDto> comboBox) { + protected <E extends AbstractObserveDto> void prepareBeanComboBox( + DataSource storageService, + Class<E> entityClass, + BeanComboBox<E> comboBox) throws DataSourceException { - ObserveContext context = ObserveContext.get(); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); // init combobox - Class<E> dtoClass = (Class<E>) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_ENTITY_CLASS); - Decorator<ReferenceDto> decorator = context.getDecorator(ReferenceDto.class, dtoClass.getName()); + Decorator<E> decorator = context.getDecorator(entityClass); + + //FIXME +// DataService service = context.getDataService(); Boolean noLoad = (Boolean) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_NO_LOAD); - List<ReferenceDto> data = null; + List<E> data = null; if (noLoad != null && noLoad) { if (log.isInfoEnabled()) { - log.info("Skip loading of entity list [" + dtoClass.getName() + "] (listNoLoad property found)"); + log.info("Skip loading of entity list [" + entityClass.getName() + "] (listNoLoad property found)"); } data = Collections.emptyList(); - } else { // get complete data list from service - Predicate<ReferenceDto> predicate = (Predicate<ReferenceDto>) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); - - ReferenceSetDto<E> referenceSetDto = getFormDto().getReferenceSetDto(dtoClass); - data = new ArrayList<>(Collections2.filter(referenceSetDto.getReference(), predicate)); + Predicate<E> predicate = (Predicate<E>) comboBox.getClientProperty(ObserveContentUI.CLIENT_PROPERTY_LIST_PREDICATE); + //FIXME +// data = service.getList(storageService, entityClass, predicate); } - boolean referentialEntity = ReferentialDto.class.isAssignableFrom(dtoClass); - if (referentialEntity) { + boolean referenceEntity = ReferentialDto.class.isAssignableFrom(entityClass); + + if (referenceEntity) { //TC-20100208 : on ne veut pas voir les elements du referentiel non actif - ReferentialDtos.filterReferentialListByStatus((List) data); + //FIXME +// ReferentialDtos.filterReferentielListByStatus((List) data); } + if (log.isInfoEnabled()) { - log.info("entity list [" + dtoClass.getName() + "] : " + data.size()); + log.info("entity list [" + entityClass.getName() + "] : " + data.size()); } // add data list to combo box - comboBox.init((JXPathDecorator<ReferenceDto>) decorator, data); + comboBox.init((JXPathDecorator<E>) decorator, data); final ListCellRenderer renderer = comboBox.getCombobox().getRenderer(); @@ -774,24 +808,24 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E }; comboBox.getCombobox().setRenderer(toolTipRenderer); if (log.isDebugEnabled()) { - log.debug("combo list [" + dtoClass.getName() + "] : " + + log.debug("combo list [" + entityClass.getName() + "] : " + comboBox.getData().size()); } - if (referentialEntity) { - //FIXME + if (referenceEntity) { // listen on cache modification -// BeanComboBoxPropertyChangeListener listener = -// new BeanComboBoxPropertyChangeListener(realEntityClass, comboBox) { -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// if (log.isDebugEnabled()) { -// log.debug("entity list [" + evt.getPropertyName() + "]"); -// } -// super.propertyChange(evt); -// } -// }; + BeanComboBoxPropertyChangeListener listener = + new BeanComboBoxPropertyChangeListener(entityClass, comboBox) { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (log.isDebugEnabled()) { + log.debug("entity list [" + evt.getPropertyName() + "]"); + } + super.propertyChange(evt); + } + }; + //FIXME // service.addReferentielPropertyChangeListener(entityClass, listener); } @@ -805,7 +839,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * @param <E> le type des entités */ protected static class EntityListPropertyChangeListener - <E extends IdDto> implements PropertyChangeListener { + <E extends AbstractObserveDto> implements PropertyChangeListener { /** le type des entités */ private Class<E> entityClass; @@ -853,7 +887,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ObserveContentUI<E * @param <E> le type des entités */ protected static class EntityDoubleListPropertyChangeListener - <E extends IdDto> implements PropertyChangeListener { + <E extends AbstractObserveDto> implements PropertyChangeListener { /** le type des entités */ private Class<E> entityClass; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx index 115c5f0..14a70be 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx @@ -24,7 +24,7 @@ contentTitle='{n("observe.longlineDetailComposition.title")}'> <import> - fr.ird.observe.ObserveContext + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.services.dto.longline.SetLonglineDto fr.ird.observe.ui.actions.shared.ResetEditUIAction fr.ird.observe.ui.actions.shared.SaveEditUIAction @@ -174,7 +174,7 @@ <Table fill="both" constraints='BorderLayout.NORTH'> <row> <cell weightx="1" fill="both" weighty="1"> - <BranchlineUI id="branchlineDetailUI" constructorParams="ObserveContext.get().getObserveMainUI()"/> + <BranchlineUI id="branchlineDetailUI" constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </cell> </row> </Table> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java index f4818b0..2074eb1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionUIHandler.java @@ -22,12 +22,12 @@ package fr.ird.observe.ui.content.impl.longline; * #L% */ -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.entities.longline.SectionTemplate; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; @@ -53,8 +53,10 @@ import javax.swing.event.TableModelListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n.t; @@ -310,7 +312,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong this.branchlineDecorator = getDecoratorService().getDecoratorByType(BranchlineDto.class); LonglineDetailCompositionUIInitializer uiInitializer = new LonglineDetailCompositionUIInitializer(getUi()); - uiInitializer.initUI(); + uiInitializer.initUI(getDataSource()); LonglineDetailCompositionUI ui1 = getUi(); @@ -474,16 +476,6 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } - @Override - protected FormDto<SetLonglineDto> loadToEdit(String id) { - return null; - } - - @Override - protected FormDto<SetLonglineDto> loadToReadDto(String id) { - return null; - } - //FIXME // @Override // protected boolean doSave(SetLonglineDto bean, @@ -792,7 +784,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.sections.delete.message"), @@ -842,7 +834,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong // log.info("Delete: " + data); // } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.sectionTemplate.delete.message"), @@ -884,7 +876,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong // // boolean accept = UIHelper.confirmForEntityDelete(ui, Section.class, selectedSection); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.setBusy(false); //FIXME @@ -972,7 +964,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } boolean accept = UIHelper.confirmForEntityDelete(ui, BasketDto.class, selectedBasket); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.setBusy(false); if (!accept) { @@ -1080,7 +1072,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } boolean accept = UIHelper.confirmForEntityDelete(ui, BranchlineDto.class, selectedBranchline); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.setBusy(false); if (!accept) { return; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx index 6c7f492..eb9c810 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx @@ -24,8 +24,7 @@ contentTitle='{n("observe.longlineGlobalComposition.title")}'> <import> - fr.ird.observe.ObserveContext - fr.ird.observe.services.dto.ReferenceDto + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.services.dto.CommentableDto fr.ird.observe.services.dto.longline.SetLonglineDto fr.ird.observe.services.dto.referential.longline.MitigationTypeDto @@ -78,7 +77,7 @@ <tab id='floatlinesCompositionTab'> <JPanel id="floatlinesCompositionPanel" layout='{new BorderLayout()}'> <FloatlinesCompositionUI id="floatlinesCompositionUI" - constructorParams="ObserveContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </JPanel> </tab> @@ -86,7 +85,7 @@ <tab id='branchlinesCompositionTab'> <JPanel id="branchlinesCompositionPanel" layout='{new BorderLayout()}'> <BranchlinesCompositionUI id="branchlinesCompositionUI" - constructorParams="ObserveContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </JPanel> </tab> @@ -94,7 +93,7 @@ <tab id='hooksCompositionTab'> <JPanel id="hooksCompositionPanel" layout='{new BorderLayout()}'> <HooksCompositionUI id="hooksCompositionUI" - constructorParams="ObserveContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </JPanel> </tab> @@ -102,7 +101,7 @@ <tab id='baitsCompositionTab'> <JPanel id="baitsCompositionPanel" layout='{new BorderLayout()}'> <BaitsCompositionUI id="baitsCompositionUI" - constructorParams="ObserveContext.get().getObserveMainUI()"/> + constructorParams="ObserveSwingApplicationContext.get().getObserveMainUI()"/> </JPanel> </tab> @@ -113,8 +112,7 @@ <Table fill='both' constraints='BorderLayout.NORTH'> <row> <cell weighty="1" weightx="1"> - <FilterableDoubleList id='mitigationType' - genericType='ReferenceDto<MitigationTypeDto>' _entityClass="MitigationTypeDto.class"/> + <FilterableDoubleList id='mitigationType' genericType='MitigationTypeDto'/> </cell> </row> </Table> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java index fb08b00..c50b765 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/longline/TripLonglineUIHandler.java @@ -22,11 +22,10 @@ package fr.ird.observe.ui.content.open.impl.longline; * #L% */ -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.longline.ActivityLonglineDtos; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; @@ -97,7 +96,7 @@ public class TripLonglineUIHandler extends ContentOpenableUIHandler<TripLongline TripLonglineUI ui = getUi(); TripMapUI tripMap = ui.getTripMap(); - ObserveConfig config = ui.getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = ui.getContextValue(ObserveSwingApplicationConfig.class); tripMap.getHandler().setConfig(config); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java index d121325..a5145d4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java @@ -21,11 +21,8 @@ */ package fr.ird.observe.ui.content.open.impl.seine; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.ObserveTechnicalException; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; @@ -36,14 +33,11 @@ import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.open.ContentOpenableUIHandler; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; -import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.util.DateUtil; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.JOptionPane; -import java.util.Date; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -461,7 +455,7 @@ public class RouteUIHandler extends ContentOpenableUIHandler<RouteDto> { // on recupère l'écran d'édition ActivitySeineUI selectedUI = (ActivitySeineUI) - ObserveContext.get().getSelectedContentUI(); + ObserveSwingApplicationContext.get().getSelectedContentUI(); // on recupère l'activity de fin de veille VesselActivitySeineDto vesselActivitySeine = null; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java index 7c964ae..9b4e2d7 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/TripSeineUIHandler.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.content.open.impl.seine; -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.constants.DataContextType; @@ -96,7 +96,7 @@ public class TripSeineUIHandler extends ContentOpenableUIHandler<TripSeineDto> { TripSeineUI ui = getUi(); TripMapUI tripMap = ui.getTripMap(); - ObserveConfig config = ui.getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = ui.getContextValue(ObserveSwingApplicationConfig.class); tripMap.getHandler().setConfig(config); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java index ddfd2b5..ec56dec 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java @@ -21,23 +21,21 @@ */ package fr.ird.observe.ui.content.ref; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.validation.ValidationContext; -import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.referential.I18nReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.VesselSizeCategoryDto; -import fr.ird.observe.services.service.ReferentialService; -import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; +import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.usage.UsagesUI; import fr.ird.observe.ui.util.SpringUtilities; import jaxx.runtime.JAXXContext; @@ -50,12 +48,14 @@ import org.nuiton.decorator.Decorator; import javax.swing.*; import javax.swing.border.TitledBorder; +import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import java.awt.*; import java.beans.Introspector; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; @@ -103,7 +103,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content E entity, Map<Class<? extends IdDto>, List<? extends IdDto>> usages) { - DecoratorService service = ObserveContext.get().getDecoratorService(); + DecoratorService service = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<?> decorator = service.getDecoratorByType(entity.getClass()); String type = DecoratorService.getEntityLabel(entity.getClass()); type = t(type); @@ -131,7 +131,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content E entity, Map<Class<? extends IdDto>, List<? extends IdDto>> usages) { - DecoratorService service = ObserveContext.get().getDecoratorService(); + DecoratorService service = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<?> decorator = service.getDecoratorByType(entity.getClass()); String type = DecoratorService.getEntityLabel(entity.getClass()); type = t(type); @@ -174,10 +174,6 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content //FIXME // getLoadBinder().load(selectedBean, getBean(), true); - loadBean(selectedBean); - - //TODO update data cache - } @Override @@ -326,7 +322,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content // } // return; // } - DecoratorService dService = ObserveContext.get().getDecoratorService(); + DecoratorService dService = ObserveSwingApplicationContext.get().getDecoratorService(); Decorator<?> decorator = dService.getDecoratorByType(bean.getClass()); String type = DecoratorService.getEntityLabel(bean.getClass()); type = t(type); @@ -392,7 +388,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content public void initUI() throws Exception { ReferentialContentUIInitializer<E, ContentReferenceUI<E>> uiInitializer = new ReferentialContentUIInitializer<E, ContentReferenceUI<E>>(getUi()); - uiInitializer.initUI(); + uiInitializer.initUI(getDataSource()); ContentReferenceUI<E> ui = getUi(); @@ -532,8 +528,8 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content @Override protected void prepareValidationContext() { super.prepareValidationContext(); - BeanListHeader<ReferenceDto> jList = getUi().getListHeader(); - List<ReferenceDto> data = jList.getData(); + BeanListHeader<E> jList = getUi().getListHeader(); + List<E> data = jList.getData(); ValidationContext validationContext = ObserveServiceHelper.get().getValidationContext(); if (log.isDebugEnabled()) { @@ -560,7 +556,6 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content //FIXME // getLoadBinder().load(null, getBean(), true); - loadBean((E) null); // on demarre l'edition ui.startEdit(null); @@ -577,7 +572,6 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content //FIXME // getLoadBinder().load(model.getSelectedBean(), getBean(), true); - loadBean(model.getSelectedBean()); getUi().startEdit(null); } @@ -620,7 +614,6 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content // repush selected bean to bean //FIXME // getLoadBinder().load(model.getSelectedBean(), getBean(), true); - loadBean(model.getSelectedBean()); } } @@ -858,18 +851,4 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content ContentReferenceUI.DETAIL_VIEW : ContentReferenceUI.LIST_VIEW; } - - @Override - protected FormDto<E> loadToEdit(String id) { - ReferentialService referentialService = getReferentialService(); - FormDto<E> formDto = referentialService.loadToEdit(getBeanType(), id); - return formDto; - } - - @Override - protected FormDto<E> loadToReadDto(String id) { - ReferentialService referentialService = getReferentialService(); - FormDto<E> formDto = referentialService.loadToRead(getBeanType(), id); - return formDto; - } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java index e56f645..74624ed 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ReferentialContentUIInitializer.java @@ -22,10 +22,27 @@ package fr.ird.observe.ui.content.ref; * #L% */ +import com.google.common.base.Predicate; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ObserveContext; +import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.services.dto.AbstractObserveDto; +import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.ui.content.ContentUIInitializer; +import fr.ird.observe.ui.content.ObserveContentUI; +import jaxx.runtime.swing.editor.bean.BeanListHeader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; +import org.nuiton.decorator.DecoratorUtil; +import org.nuiton.decorator.JXPathDecorator; + +import javax.swing.JList; +import javax.swing.ListCellRenderer; +import java.util.ArrayList; +import java.util.List; /** * Created on 11/28/14. diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java index 9a9f5d9..6fa1640 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/UniqueKeyTableModel.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.content.ref; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.business.DecoratorService; +import fr.ird.observe.ObserveSwingApplicationContext; import javax.swing.table.AbstractTableModel; import java.util.List; @@ -53,7 +53,7 @@ public class UniqueKeyTableModel extends AbstractTableModel { public DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java index d0e2558..e40cd5f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/ContentTableUIHandler.java @@ -341,7 +341,7 @@ public abstract class ContentTableUIHandler<E extends IdDto, D extends IdDto> ex } finally { // always reset busy model to false - ObserveContext.get().getObserveMainUI().setBusy(false); + ObserveSwingApplicationContext.get().getObserveMainUI().setBusy(false); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java index f37f815..f70b61e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/CatchLonglineUIHandler.java @@ -23,8 +23,8 @@ package fr.ird.observe.ui.content.table.impl.longline; */ import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.longline.BasketDto; @@ -40,9 +40,11 @@ import fr.ird.observe.services.dto.referential.longline.HealthnessDto; import fr.ird.observe.services.dto.referential.longline.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; +import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; @@ -59,6 +61,8 @@ import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -380,7 +384,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, SizeMeasureTypeDto.class)); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - Decorator<SizeMeasureTypeDto> decorator = ObserveContext.get().getDecorator(SizeMeasureTypeDto.class); + Decorator<SizeMeasureTypeDto> decorator = ObserveSwingApplicationContext.get().getDecorator(SizeMeasureTypeDto.class); //FIXME // List<SizeMeasureTypeDto> list; @@ -411,7 +415,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto UIHelper.setTableColumnRenderer(table, 0, UIHelper.newDecorateTableCellRenderer(renderer, WeightMeasureTypeDto.class)); UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - Decorator<WeightMeasureTypeDto> decorator = ObserveContext.get().getDecorator(WeightMeasureTypeDto.class); + Decorator<WeightMeasureTypeDto> decorator = ObserveSwingApplicationContext.get().getDecorator(WeightMeasureTypeDto.class); //FIXME // List<WeightMeasureType> list; @@ -439,16 +443,17 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineDto }); } - @Override - protected String getEditBeanIdToLoad() { - return getDataContext().getSelectedSetId(); - } + //FIXME +// @Override +// protected String getEditBeanIdToLoad(DataContext dataContext, DataService dataService, DataSource dataSource) { +// return dataContext.getSelectedSetId(); +// } @Override public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); { String speciesListId = config.getSpeciesListLonglineCatchId(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java index 34b6aea..87a2f16 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/EncounterUIHandler.java @@ -22,9 +22,7 @@ package fr.ird.observe.ui.content.table.impl.longline; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.EncounterDto; @@ -99,7 +97,7 @@ public class EncounterUIHandler extends ContentTableUIHandler<ActivityLonglineDt public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); String speciesListId = config.getSpeciesListLonglineEncounterId(); prepareSpeciesList(speciesListId, getUi().getSpecies() , n("observe.error.speciesList.longline.encounter.notFound")); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java index 35868c8..6195071 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/GearUseFeaturesLonglineUIHandler.java @@ -22,11 +22,8 @@ package fr.ird.observe.ui.content.table.impl.longline; * #L% */ -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.ObserveTechnicalException; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.longline.GearUseFeaturesLonglineDto; import fr.ird.observe.services.dto.longline.GearUseFeaturesMeasurementLonglineDto; @@ -36,7 +33,6 @@ import fr.ird.observe.services.dto.referential.GearDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; -import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import fr.ird.observe.ui.content.table.impl.seine.GearUseFeatureMeasurementCellEditor; import fr.ird.observe.ui.content.table.impl.seine.GearUseFeatureMeasurementCellRenderer; @@ -64,8 +60,6 @@ import java.awt.Insets; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -246,7 +240,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip table.getTableHeader().setReorderingAllowed(false); - Decorator<GearCaracteristicDto> decorator = ObserveContext.get().getDecorator(GearCaracteristicDto.class); + Decorator<GearCaracteristicDto> decorator = ObserveSwingApplicationContext.get().getDecorator(GearCaracteristicDto.class); //FIXME // List<GearCaracteristic> list; @@ -372,7 +366,7 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.measurement.delete.message"), diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java index 964247b..00813aa 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/SensorUsedUIHandler.java @@ -25,11 +25,8 @@ package fr.ird.observe.ui.content.table.impl.longline; import com.google.common.base.Predicate; import com.google.common.io.FileWriteMode; import com.google.common.io.Files; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.ObserveTechnicalException; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SensorUsedDto; @@ -144,7 +141,7 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLonglineD getTableEditBean().setData(serialBlob); getTableEditBean().setDataFilename(file.getName()); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.getStatus().setStatus(t("observe.sensorUsed.message.data.imported", file)); } catch (IOException e) { @@ -222,7 +219,7 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLonglineD IOUtils.copy(binaryStream, outputstream); outputstream.close(); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.getStatus().setStatus(t("observe.sensorUsed.message.data.exported", file)); } catch (IOException e) { throw new ObserveTechnicalException("Could not save binary data to " + file, e); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java index a4e436b..2a2bc0f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/longline/TdrUIHandler.java @@ -25,22 +25,17 @@ package fr.ird.observe.ui.content.table.impl.longline; import com.google.common.base.Predicate; import com.google.common.io.FileWriteMode; import com.google.common.io.Files; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.ObserveTechnicalException; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.longline.SetLonglineDto; import fr.ird.observe.services.dto.longline.TdrDto; import fr.ird.observe.services.dto.referential.longline.SensorBrandDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; -import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; -import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.HidorButton; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; @@ -68,7 +63,6 @@ import java.io.OutputStream; import java.sql.SQLException; import java.util.Date; import java.util.HashSet; -import java.util.List; import java.util.Set; import static org.nuiton.i18n.I18n.n; @@ -207,7 +201,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineDto, TdrDto> public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); String speciesListId = config.getSpeciesListLonglineCatchId(); prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.longline.catch.notFound")); @@ -328,7 +322,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineDto, TdrDto> getTableEditBean().setData(serialBlob); getTableEditBean().setDataFilename(file.getName()); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.getStatus().setStatus(t("observe.tdr.message.data.imported", file)); } catch (IOException e) { @@ -406,7 +400,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineDto, TdrDto> IOUtils.copy(binaryStream, outputstream); outputstream.close(); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); mainUI.getStatus().setStatus(t("observe.sensorUsed.message.data.exported", file)); } catch (IOException e) { throw new ObserveTechnicalException("Could not save binary data to " + file, e); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java index 0d12d07..cf26366 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java @@ -22,11 +22,8 @@ package fr.ird.observe.ui.content.table.impl.seine; * #L% */ -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.ObserveTechnicalException; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.referential.GearCaracteristicDto; import fr.ird.observe.services.dto.referential.GearDto; @@ -36,7 +33,6 @@ import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; -import fr.ird.observe.ui.content.ContentUIInitializer; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import fr.ird.observe.ui.util.table.AutotSelectRowAndShowPopupActionSupport; import fr.ird.observe.ui.util.table.EditableTableModelSupport; @@ -62,8 +58,6 @@ import java.awt.Insets; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -244,7 +238,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei table.getTableHeader().setReorderingAllowed(false); - Decorator<GearCaracteristicDto> decorator = ObserveContext.get().getDecorator(GearCaracteristicDto.class); + Decorator<GearCaracteristicDto> decorator = ObserveSwingApplicationContext.get().getDecorator(GearCaracteristicDto.class); //FIXME // List<GearCaracteristicDto> list; @@ -370,7 +364,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei log.info("Delete: " + data); } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); int response = UIHelper.askUser(mainUI, t("observe.title.delete"), t("observe.measurement.delete.message"), diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java index 2e06003..65bd7ef 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java @@ -62,8 +62,8 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, UIHelper.newListContextEntryDef("NonTargetCatchUI-all-taille-to-delete"); /** - * Ecoute les modifications de la propriété {@link NonTargetCatch#getTotalCount()}, - * et repasser alors le flag {@link NonTargetCatch#getTotalCountComputedSource()} à + * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getTotalCount()}, + * et repasser alors le flag {@link NonTargetCatchDto#getTotalCountComputedSource()} à * {@code null}. * * @since 3.0 @@ -77,8 +77,8 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, }; /** - * Ecoute les modifications de la propriété {@link NonTargetCatch#getCatchWeight()}, - * et repasser alors le flag {@link NonTargetCatch#getCatchWeightComputedSource()} à + * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getCatchWeight()}, + * et repasser alors le flag {@link NonTargetCatchDto#getCatchWeightComputedSource()} à * {@code null}. * * @since 3.0 @@ -92,8 +92,8 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, }; /** - * Ecoute les modifications de la propriété {@link NonTargetCatch#getMeanWeight()}, - * et repasser alors le flag {@link NonTargetCatch#getMeanWeightComputedSource()} à + * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getMeanWeight()}, + * et repasser alors le flag {@link NonTargetCatchDto#getMeanWeightComputedSource()} à * {@code null}. * * @since 3.0 @@ -107,8 +107,8 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, }; /** - * Ecoute les modifications de la propriété {@link NonTargetCatch#getMeanLength()}, - * et repasser alors le flag {@link NonTargetCatch#getMeanLengthComputedSource()} à + * Ecoute les modifications de la propriété {@link NonTargetCatchDto#getMeanLength()}, + * et repasser alors le flag {@link NonTargetCatchDto#getMeanLengthComputedSource()} à * {@code null}. * * @since 3.0 @@ -214,7 +214,7 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, // Ocean ocean = dataService.getTripOcean( // dataSource, dataContext.getSelectedTripId()); // -// ObserveConfig config = getUi().getContextValue(ObserveConfig.class); +// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); // String speciesListId = config.getSpeciesListSeineNonTargetCatchId(); // // // get all species diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java index 85e2fb6..4c4e31c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.content.table.impl.seine; -import fr.ird.observe.ObserveConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.referential.SpeciesDto; @@ -93,9 +93,9 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); String speciesListId = config.getSpeciesListSeineObjectObservedSpeciesId(); - prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.seine.objectObservedSpecies.notFound")); + prepareSpeciesList(speciesListId, getUi().getSpecies(),n("observe.error.speciesList.seine.objectObservedSpecies.notFound")); super.initUI(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java index d6780b2..61f21d8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectSchoolEstimateUIHandler.java @@ -21,9 +21,7 @@ */ package fr.ird.observe.ui.content.table.impl.seine; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; @@ -90,7 +88,7 @@ public class ObjectSchoolEstimateUIHandler extends ContentTableUIHandler<Floatin public void initUI() throws Exception { // add a listPredicate to get only species from the correct configured speciesList - ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); String speciesListId = config.getSpeciesListSeineObjectSchoolEstimateId(); prepareSpeciesList(speciesListId, getUi().getSpecies(), n("observe.error.speciesList.seine.objectSchoolEstimate.notFound")); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java index 2252416..98b159b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/SchoolEstimateUIHandler.java @@ -21,17 +21,11 @@ */ package fr.ird.observe.ui.content.table.impl.seine; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.db.constants.DataContextType; -import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.seine.SchoolEstimateDto; import fr.ird.observe.services.dto.seine.SetSeineDto; import fr.ird.observe.ui.UIHelper; -import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ContentTableUIHandler; import jaxx.runtime.context.JAXXContextEntryDef; @@ -41,8 +35,6 @@ import org.apache.commons.logging.LogFactory; import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -86,7 +78,7 @@ public class SchoolEstimateUIHandler extends ContentTableUIHandler<SetSeineDto, // dataSource, dataContext.getSelectedTripId()); // // // get all species from the configured speciesList -// ObserveConfig config = getUi().getContextValue(ObserveConfig.class); +// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); // String speciesListId = config.getSpeciesListSeineSchoolEstimateId(); // // List<Species> allSpecies = diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java index d167f4c..60001fd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetCatchUIHandler.java @@ -148,7 +148,7 @@ public class TargetCatchUIHandler extends ContentTableUIHandler<SetSeineDto, Tar // weightCategoryTopiaExecutor)); // // // Keep only weight categories for the species -// ObserveConfig config = getUi().getContextValue(ObserveConfig.class); +// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); // String speciesListId = config.getSpeciesListSeineTargetCatchId(); // // java.util.Set<String> speciesIds = loadSpeciesList(speciesListId, n("observe.error.speciesList.seine.targetCatch.notFound")); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java index 0c288a3..e34db35 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetDiscardCatchUIHandler.java @@ -206,7 +206,7 @@ public class TargetDiscardCatchUIHandler extends ContentTableUIHandler<SetSeineD // ); // // // filtre sur la liste d'espèce configuree -// ObserveConfig config = getUi().getContextValue(ObserveConfig.class); +// ObserveSwingApplicationConfig config = getUi().getContextValue(ObserveSwingApplicationConfig.class); // String speciesListId = config.getSpeciesListSeineTargetCatchId(); // java.util.Set<String> speciesIds = loadSpeciesList(speciesListId, n("observe.error.speciesList.seine.targetCatch.notFound")); // diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/RemoteUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/RemoteUILauncher.java index c6dc554..a3aedde 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/RemoteUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/RemoteUILauncher.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.storage; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.business.util.SecurityModel; import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.ErrorDialogUI; @@ -62,6 +62,7 @@ public abstract class RemoteUILauncher extends StorageUILauncher { model.setCanCreateLocalService(false); model.setCanUseLocalService(false); model.setCanUseRemoteService(true); + model.setCanUseServerService(true); model.setDbMode(DbMode.USE_REMOTE); model.setAdminAction(action); // model.setPgInstall(new PGInstall() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java index 5950b3f..88987e4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.ui.storage; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.db.constantes.DbMode; import jaxx.runtime.JAXXContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -110,7 +110,7 @@ public class StorageBackupUILauncher extends StorageUILauncher { } protected DataSource getStorage() { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); return source; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index f6b049f..beb5204 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -22,17 +22,24 @@ package fr.ird.observe.ui.storage; import com.google.common.base.Preconditions; -import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveActionExecutor; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveRunner; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; import fr.ird.observe.business.util.SecurityModel; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.ConnexionStatus; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.service.DataSourceDumpProducerService; +import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.tabs.RolesTableModel; @@ -42,6 +49,7 @@ import jaxx.runtime.JAXXContext; import jaxx.runtime.context.DefaultApplicationContext.AutoLoad; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.wizard.WizardUILancher; +import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; @@ -52,10 +60,12 @@ import java.awt.Window; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.Set; +import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -74,45 +84,26 @@ public class StorageUIHandler { private static final Log log = LogFactory.getLog(StorageUIHandler.class); /** - * Service de replication. - * <p/> - * Note: le service est sans état et donc peut rester en état du handler. - */ - //FIXME -// protected ReplicationService replicationService = -// ObserveServiceHelper.newReplicationService(); - - /** * Prépare une service de persistance à partir d'un modèle. * <p/> * Le service ne sera pas ouvert. * * @param model le modèle de la source de données - * @param isMain pour savoir si cela sera le service persistant - * principal * @param localLabel le label de la source si local - * @param remoteLabel le label de la source si distant * @return le service de persistance initialisé mais non ouvert. - * @throws IOException si une erreur pendant la configuration du service */ - public DataSource newServiceFromModel(StorageUIModel model, - boolean isMain, - String localLabel, - String remoteLabel) - throws IOException { + public ObserveDataSourceConfiguration newDataSourceConfigurationFromModel( + StorageUIModel model, + String localLabel) { - DataSource mainStorage = null; + ObserveDataSourceConfiguration mainConfiguration = null; - //FIXME -// switch (model.getDbMode()) { -// case CREATE_LOCAL: -// case USE_LOCAL: -// H2DataSourceConfig h2Config = model.toH2StorageConfig(localLabel); -// if (model.getDbMode() == DbMode.USE_LOCAL) { -// h2Config.setCreationMode(null); -// } -// H2DataSource h2Service = -// DataSourceFactory.newService(h2Config); + switch (model.getDbMode()) { + case CREATE_LOCAL: + case USE_LOCAL: + mainConfiguration = model.toH2StorageConfig(localLabel); + + // FIXME // h2Service.addDataSourceListener( // new DataSourceListenerAdapter() { // @@ -130,25 +121,17 @@ public class StorageUIHandler { // s.getConfig().setCreationMode(null); // } // }); -// -// mainStorage = h2Service; -// -// break; -// case USE_REMOTE: -// -// PGDataSourceConfig pgConfig = -// model.toPostgresStorageConfig(remoteLabel); -// PGDataSource pgservice = -// DataSourceFactory.newService(pgConfig); -// mainStorage = pgservice; -// break; -// } -// - if (isMain) { - // preparation du storage principal - ObserveContext.get().prepareMainStorage(mainStorage); + + break; + case USE_REMOTE: + mainConfiguration = model.toPGStorageConfig(localLabel); + break; + case USE_SERVER: + mainConfiguration = model.toRestStorageConfig(localLabel); + break; } - return mainStorage; + + return mainConfiguration; } public void initUI(final StorageUI ui) { @@ -218,10 +201,10 @@ public class StorageUIHandler { ui.CONFIRM.init(); // recuperation de la source de données en cours d'utilisation - DataSource source = ui.getContextValue(DataSource.class); + ObserveDataSourceConfiguration dataSourceConfiguration = ui.getContextValue(ObserveDataSourceConfiguration.class); // chargement du modèle - model.init(ui, source); + model.init(ui, dataSourceConfiguration); } public void start(StorageUI ui) { @@ -250,7 +233,7 @@ public class StorageUIHandler { if (StorageStep.CONFIG == newStep) { // on redemande un test de connexion a chaque fois - model.setConnexionStatus(null); + model.setConnexionStatus(ConnexionStatus.UNTESTED); } @@ -270,9 +253,8 @@ public class StorageUIHandler { if (StorageStep.SELECT_DATA == newStep && mustRecompute) { - if (ObstunaAdminAction.CREATE == ui.getModel().getAdminAction() ) { - //FIXME -// && model.getSelectDataModel() == null) { + if (ObstunaAdminAction.CREATE == ui.getModel().getAdminAction() + && model.getSelectDataModel().isEmpty()) { // récupération des données possibles à importer initSelectData(ui); @@ -317,7 +299,7 @@ public class StorageUIHandler { } }; } - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); if (mainUI == null) { if (log.isWarnEnabled()) { log.warn("Launch standalone apply action " + action); @@ -335,7 +317,7 @@ public class StorageUIHandler { Runnable action = WizardUILancher.CANCEL_DEF.getContextValue(ui); - ObserveMainUI mainUI = ObserveContext.get().getObserveMainUI(); + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); if (mainUI == null) { if (log.isWarnEnabled()) { log.warn("Launch standalone cancel action " + action); @@ -357,209 +339,204 @@ public class StorageUIHandler { * @param model le model++ du storage a creer ou utiliser */ public void doChangeStorage(JAXXContext context, StorageUIModel model) { + ObserveSwingApplicationContext observeContext = ObserveSwingApplicationContext.get(); - //FIXME -// ObserveConfig config = context.getContextValue(ObserveConfig.class); -// // faut-il detruire la base locale ? -// boolean destroyLocalBase = -// config.isLocalStorageExist() && -// model.getDbMode() == DbMode.CREATE_LOCAL; -// -// if (log.isDebugEnabled()) { -// log.debug(">>> should destroy local db ? " + destroyLocalBase); -// } -// -// DataSource mainStorage = ObserveContext.get().getDataSource(); -// -// H2DataSource localStorage = null; -// if (mainStorage instanceof H2DataSource) { -// localStorage = (H2DataSource) mainStorage; -// } -// H2DataSourceConfig localConfig; -// -// boolean localDbIsSane = true; -// if (destroyLocalBase || model.isDoBackup()) { -// if (localStorage == null) { -// try { -// localConfig = config.toH2StorageConfig( -// n("observe.storage.label.local")); -// -// // la base ne doit pas etre mise a jour dans ce cas -// localConfig.setCanMigrate(false); -// -// // on charge un storage sur la base locale -// localStorage = DataSourceFactory.newService( -// localConfig); -// localStorage.doOpen(); -// } catch (Exception e) { -// // on a pas reussi à ouvrir la base locale -// // cela ne doit pas empécher de continuer -// // il faut juste supprimer physiquement le repertoire -// // de la base -// Exception e2 = new Exception(t("observe.error.storage.could.not.load.local.db", e.getMessage()), e); -// ErrorDialogUI.showError(e2); -// if (log.isErrorEnabled()) { -// log.error(e2.getMessage(), e2); -// } -// -// // on conserve l'état -// localDbIsSane = false; -// -// // pour la suite on fait comme si il n'y a pas de local storage -// localStorage = null; -// } -// } -// } -// -// if (model.isDoBackup()) { -// if (!localDbIsSane) { -// -// // la base locale n'est pas saine, on doit arrêter l'objectOperation -// // de changement de base sous peine de perdre la base. -// Exception e = new Exception(t("observe.error.storage.could.not.backup.unsane.local.db")); -// ErrorDialogUI.showError(e); -// return; -// } -// // effectue la backup de la base locale existante -// File f = model.getBackupFile(); -// if (log.isDebugEnabled()) { -// log.debug(">>> do backup with " + localStorage + " in " + f); -// } -// try { -// backupLocalDatabase(localStorage, f); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// return; -// } -// } -// -// if (destroyLocalBase) { -// if (log.isDebugEnabled()) { -// log.debug(">>> destroy local db " + localStorage); -// } -// if (!localDbIsSane) { -// // la base locale n'est pas saine, on va supprimer directement -// // le dossier de la base -// File localDBDirectory = config.getLocalDBDirectory(); -// if (log.isInfoEnabled()) { -// log.info(">>> destroy local db directory " + localDBDirectory); -// } -// try { -// FileUtils.deleteDirectory(localDBDirectory); -// } catch (IOException e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// } -// } else { -// try { -// localStorage.doClose(true); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// return; -// } -// } -// } -// -// // suppression du storage precedent -// if (mainStorage != null && mainStorage.isOpen()) { -// try { -// if (log.isDebugEnabled()) { -// log.debug(">>> close main storage " + mainStorage); -// } -// // on doit fermer le storage en cours d'utilisation -// mainStorage.doClose(false); -// -// } catch (DataSourceException ex) { -// ErrorDialogUI.showError(ex); -// } -// } -// -// // suppression du storage local -// if (localStorage != null && localStorage.isOpen()) { -// // ce cas peut arriver lorsque l'on fait juste une backup -// // sans vouloir supprimer la base locale -// try { -// if (log.isDebugEnabled()) { -// log.debug(">>> close local storage " + localStorage); -// } -// // on doit fermer le storage local ouvert -// localStorage.doClose(false); -// -// } catch (DataSourceException ex) { -// ErrorDialogUI.showError(ex); -// } -// } -// -// localStorage = null; -// -// if (log.isDebugEnabled()) { -// log.debug("Will create new storage..."); -// } -// -// // preparation du nouveau storage -// -// try { -// -// mainStorage = newServiceFromModel( -// model, -// true, -// "observe.storage.label.local", -// "observe.storage.label.remote" -// ); -// -// // ouverture du nouveau storage -// mainStorage.doOpen(); -// -// if (log.isInfoEnabled()) { -// log.info(">>> main storage opened " + mainStorage.getLabel()); -// } -// -// if (model.isStoreRemoteConfig()) { -// storeRemoteConfig(context, model); -// } -// if (model.getDbMode() == DbMode.CREATE_LOCAL && -// model.getCreationMode() == -// CreationMode.IMPORT_REMOTE_STORAGE) { -// // si on a creer la base locale a partir d'un import d'une base -// // distante, on sauvegarde la base locale comme dump initial -// // il s'agit d'un dump du référentiel -// File f = config.getInitialDbDump(); -// if (f.exists()) { -// // on supprime le dump sql de la base embarquée -// if (!f.delete()) { -// throw new IllegalStateException("could not delete " + -// f); -// } -// } -// if (log.isInfoEnabled()) { -// log.info(">>> create initial dump with " + localStorage + -// " in " + f); -// } -// try { -// backupLocalDatabase(mainStorage, f); -// config.setInitialDumpExist(true); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// } -// } -// } catch (Exception ex) { -// ErrorDialogUI.showError(ex); -// if (log.isErrorEnabled()) { -// log.error(ex.getMessage(), ex); -// } -// throw new RuntimeException(ex); -// } + ObserveSwingApplicationConfig config = observeContext.getConfig(); + + // faut-il detruire la base locale ? + boolean destroyLocalBase = + config.isLocalStorageExist() && + model.getDbMode() == DbMode.CREATE_LOCAL; + + if (log.isDebugEnabled()) { + log.debug(">>> should destroy local db ? " + destroyLocalBase); + } + + ObserveDataSourceConfiguration sourceConfiguration = observeContext.getObserveDataSourceConfiguration(); + ObserveDataSourceConnection localConnection = observeContext.getObserveDataSourceConnection(); + + ObserveDataSourceConfigurationTopiaH2 localConfiguration = null; + + if (sourceConfiguration instanceof ObserveDataSourceConfigurationTopiaH2) { + localConfiguration = (ObserveDataSourceConfigurationTopiaH2) sourceConfiguration; + } + + DataSourceService localDataSourceService = null; + + + boolean localDbIsSane = true; + if (destroyLocalBase || model.isDoBackup()) { + if (localConfiguration == null) { + try { + localConfiguration = config.getDataSourceConfigurationH2(n("observe.storage.label.local")); + + // la base ne doit pas etre mise a jour dans ce cas + localConfiguration.setCanMigrate(false); + + // on charge un storage sur la base locale + localDataSourceService = observeContext.newService(localConfiguration, DataSourceService.class); + localConnection = localDataSourceService.open(localConfiguration); + } catch (Exception e) { + // on a pas reussi à ouvrir la base locale + // cela ne doit pas empécher de continuer + // il faut juste supprimer physiquement le repertoire + // de la base + Exception e2 = new Exception(t("observe.error.storage.could.not.load.local.db", e.getMessage()), e); + ErrorDialogUI.showError(e2); + if (log.isErrorEnabled()) { + log.error(e2.getMessage(), e2); + } + + // on conserve l'état + localDbIsSane = false; + + // pour la suite on fait comme si il n'y a pas de local storage + localDataSourceService = null; + } + } + } + + if (model.isDoBackup()) { + if (!localDbIsSane) { + + // la base locale n'est pas saine, on doit arrêter l'objectOperation + // de changement de base sous peine de perdre la base. + Exception e = new Exception(t("observe.error.storage.could.not.backup.unsane.local.db")); + ErrorDialogUI.showError(e); + return; + } + // effectue la backup de la base locale existante + File f = model.getBackupFile(); + if (log.isDebugEnabled()) { + log.debug(">>> do backup with " + localConfiguration + " in " + f); + } + try { + DataSourceDumpProducerService dumpProducerService = observeContext.newService(localConfiguration, localConnection, DataSourceDumpProducerService.class); + backupLocalDatabase(dumpProducerService, f); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e.getMessage(), e); + } + return; + } + } + + if (destroyLocalBase) { + if (log.isDebugEnabled()) { + log.debug(">>> destroy local db " + localConfiguration); + } + if (!localDbIsSane) { + // la base locale n'est pas saine, on va supprimer directement + // le dossier de la base + File localDBDirectory = config.getLocalDBDirectory(); + if (log.isInfoEnabled()) { + log.info(">>> destroy local db directory " + localDBDirectory); + } + try { + FileUtils.deleteDirectory(localDBDirectory); + } catch (IOException e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e.getMessage(), e); + } + } + } else { + try { + localDataSourceService.destroy(); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e.getMessage(), e); + } + return; + } + } + } + + // suppression du storage precedent + if (sourceConfiguration != null) { + if (log.isDebugEnabled()) { + log.debug(">>> close main storage " + sourceConfiguration); + } + // on doit fermer le storage en cours d'utilisation + DataSourceService dataSourceService = observeContext.newService(DataSourceService.class); + dataSourceService.close(); + } + + // suppression du storage local + if (localConfiguration != null && localConfiguration != sourceConfiguration) { + // ce cas peut arriver lorsque l'on fait juste une backup + // sans vouloir supprimer la base locale + if (log.isDebugEnabled()) { + log.debug(">>> close local storage " + localConfiguration); + } + // on doit fermer le storage local ouvert + localDataSourceService.close(); + } + + localConfiguration = null; + + if (log.isDebugEnabled()) { + log.debug("Will create new storage..."); + } + + // preparation du nouveau storage + + try { + + sourceConfiguration = newDataSourceConfigurationFromModel(model, t("observe.storage.label.local")); + + // ouverture du nouveau storage + DataSourceService dataSourceService = observeContext.newService(sourceConfiguration, DataSourceService.class); + ObserveDataSourceConnection sourceConnection = dataSourceService.open(sourceConfiguration); + + observeContext.setObserveDataSourceConfiguration(sourceConfiguration); + observeContext.setObserveDataSourceConnection(sourceConnection); + + if (log.isInfoEnabled()) { + log.info(">>> main storage opened " + sourceConfiguration.getLabel()); + } + + if (model.isStoreRemoteConfig()) { + storeRemoteConfig(context, model); + } + if (model.getDbMode() == DbMode.CREATE_LOCAL && + model.getCreationMode() == + CreationMode.IMPORT_REMOTE_STORAGE) { + // si on a creer la base locale a partir d'un import d'une base + // distante, on sauvegarde la base locale comme dump initial + // il s'agit d'un dump du référentiel + File f = config.getInitialDbDump(); + if (f.exists()) { + // on supprime le dump sql de la base embarquée + if (!f.delete()) { + throw new IllegalStateException("could not delete " + + f); + } + } + if (log.isInfoEnabled()) { + log.info(">>> create initial dump with " + localConfiguration + + " in " + f); + } + try { + DataSourceDumpProducerService dumpProducerService = observeContext.newService(DataSourceDumpProducerService.class); + backupLocalDatabase(dumpProducerService, f); + config.setInitialDumpExist(true); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e.getMessage(), e); + } + } + } + } catch (Exception ex) { + ErrorDialogUI.showError(ex); + if (log.isErrorEnabled()) { + log.error(ex.getMessage(), ex); + } + throw new RuntimeException(ex); + } } /** @@ -570,31 +547,29 @@ public class StorageUIHandler { * @param model le model de la source de données */ public void storeRemoteConfig(JAXXContext context, StorageUIModel model) { - ObserveConfig config = context.getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = context.getContextValue(ObserveSwingApplicationConfig.class); // on sauvegarde dans le parametrage dans la configuration de // l'application - //FIXME -// PGDataSourceConfig remoteConfig = model.toPostgresStorageConfig(""); -// config.fromStorageConfig(remoteConfig); + ObserveDataSourceConfigurationTopiaPG configurationTopiaPG = model.toPGStorageConfig(""); + config.fromStorageConfig(configurationTopiaPG); } /** * @return le lastName par defaut du fichier de sauvegarde de la base locale * (expression calculée à partir de la date courante et du pattern - * {@link ObserveConfig#BACKUP_DB_PATTERN}). + * {@link ObserveSwingApplicationConfig#BACKUP_DB_PATTERN}). */ public String getDefaultBackupFilename() { - return String.format(ObserveConfig.BACKUP_DB_PATTERN, new Date()); + return String.format(ObserveSwingApplicationConfig.BACKUP_DB_PATTERN, new Date()); } /** * Effectue une sauvegarde de la base locale vers le fichier choisi. - * - * @param service le service locale qui encapsule la base locale + * @param dumpProducerService le service de dump * @param dst le fichier de sauvegarde */ - public void backupLocalDatabase(DataSource service, File dst) { + public void backupLocalDatabase(DataSourceDumpProducerService dumpProducerService, File dst) { if (dst == null) { throw new IllegalArgumentException( "file where to backup can not be null"); @@ -602,51 +577,18 @@ public class StorageUIHandler { if (log.isDebugEnabled()) { log.debug(dst); } - //FIXME -// if (service instanceof H2DataSource) { -// // le service offre le service -// try { -// service.storeDB(dst); -// } catch (DataSourceException ex) { -// ErrorDialogUI.showError(ex); -// } -// } else { -// // on doit dumper la base distante dans une base h2 et en faire -// // la sauvegarde -// ObserveConfig config = ObserveContext.get().getConfig(); -// -// DataSource tempStorage = null; -// try { -// tempStorage = ObserveServiceHelper.newEmptyTempStorage( -// config, -// t("observe.storage.label.backup"), -// "tmpBackup_" + dst.getName() -// ); -// -// tempStorage.doOpen(); -// replicationService.replicateReferentiel(service, tempStorage); -// replicationService.replicateAllData(service, tempStorage); -// -// tempStorage.storeDB(dst); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e); -// } -// } finally { -// if (tempStorage != null) { -// try { -// tempStorage.doClose(true); -// } catch (DataSourceException e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e); -// } -// } -// } -// } -// } + byte[] dataDump = dumpProducerService.getAllDataDump(); + + try (FileOutputStream outputStream = new FileOutputStream(dst)) { + + outputStream.write(dataDump); + } catch (Exception e) { + ErrorDialogUI.showError(e); + if (log.isErrorEnabled()) { + log.error(e); + } + } } /** @@ -669,7 +611,8 @@ public class StorageUIHandler { if (log.isInfoEnabled()) { log.info("will export all datas."); } - backupLocalDatabase(service, dst); + // FIXME + //backupLocalDatabase(service, dst); return; } if (dst == null) { @@ -685,7 +628,7 @@ public class StorageUIHandler { // on doit dumper la base distante dans une base h2 et en faire // la sauvegarde - ObserveConfig config = ObserveContext.get().getConfig(); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); String[] mareeIds = new String[marees.size()]; @@ -782,7 +725,7 @@ public class StorageUIHandler { protected DecoratorService getDecoratorService() { DecoratorService decoratorService = - ObserveContext.get().getDecoratorService(); + ObserveSwingApplicationContext.get().getDecoratorService(); return decoratorService; } @@ -1134,7 +1077,7 @@ public class StorageUIHandler { addTag("h3", sb, t("observe.storage.report.action.migrate") + " :"); addOpenTag("ul", sb); if (model.isCanMigrate()) { - Version version = model.getDbVersion(); + Version version = model.getModleVersion(); addTag("li", sb, t("observe.storage.report.can.migrate", version)); if (model.isShowMigrationProgression()) { addTag("li", sb, t("observe.storage.showMigrationProgression")); @@ -1214,7 +1157,7 @@ public class StorageUIHandler { dataSource.doOpen(); Version importServiceDbVersion = dataSource.getDbVersion(); - Version currentDbVersion = model.getDbVersion(); + Version currentDbVersion = model.getModleVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUILauncher.java index b8dd96f..1095c7f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUILauncher.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.ui.storage; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.UIHelper; import jaxx.runtime.JAXXContext; @@ -152,36 +152,22 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod model.setExcludeSteps( Arrays.asList(StorageStep.SELECT_DATA, - StorageStep.BACKUP, - StorageStep.CONFIG_REFERENTIEL, - StorageStep.CONFIG_DATA, - StorageStep.ROLES) + StorageStep.BACKUP, + StorageStep.CONFIG_REFERENTIEL, + StorageStep.CONFIG_DATA, + StorageStep.ROLES) ); - model.setCanCreateLocalService(false); - model.setCanUseLocalService(false); - model.setCanUseRemoteService(false); - - switch (mode) { - - case USE_LOCAL: - model.setCanUseLocalService(true); - break; - - case CREATE_LOCAL: - model.setCanCreateLocalService(true); - break; - - case USE_REMOTE: - model.setCanUseRemoteService(true); - break; - } + model.setCanCreateLocalService(DbMode.CREATE_LOCAL.equals(mode)); + model.setCanUseLocalService(DbMode.USE_LOCAL.equals(mode)); + model.setCanUseRemoteService(DbMode.USE_REMOTE.equals(mode)); + model.setCanUseServerService(DbMode.USE_SERVER.equals(mode)); model.updateUniverse(); model.setDbMode(mode); } else { - ObserveConfig config = - rootContext.getContextValue(ObserveConfig.class); + ObserveSwingApplicationConfig config = + rootContext.getContextValue(ObserveSwingApplicationConfig.class); Boolean localOpened = config.getMainStorageOpenedLocal(); if (model.isLocalStorageExist() && localOpened != null && localOpened) { if (log.isDebugEnabled()) { @@ -191,6 +177,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod } model.setCanCreateLocalService(true); model.setCanUseRemoteService(true); + model.setCanUseServerService(true); } model.updateUniverse(); } @@ -223,7 +210,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod final StorageUIModel model) { if (mainUI == null) { - mainUI = ObserveContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); } addStorageUIHandler(context); StorageUILauncher launcher = new StorageUILauncher( @@ -239,6 +226,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod model.setCanCreateLocalService(false); model.setCanUseLocalService(false); model.setCanUseRemoteService(true); + model.setCanUseServerService(true); model.setExcludeSteps(Arrays.asList( StorageStep.CHOOSE_DB_MODE, @@ -299,7 +287,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod final StorageUIModel model) { if (mainUI == null) { - mainUI = ObserveContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); } addStorageUIHandler(context); @@ -342,6 +330,10 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod nbModes++; mode = DbMode.USE_REMOTE; } + if (model.isCanUseServerService()) { + nbModes++; + mode = DbMode.USE_SERVER; + } if (nbModes == 1) { @@ -392,7 +384,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod final StorageUIModel model) { if (mainUI == null) { - mainUI = ObserveContext.get().getObserveMainUI(); + mainUI = ObserveSwingApplicationContext.get().getObserveMainUI(); } addStorageUIHandler(context); StorageUILauncher launcher = new StorageUILauncher( diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index bcfc154..dfbdd55 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -21,15 +21,27 @@ */ package fr.ird.observe.ui.storage; -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import com.google.common.collect.Sets; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; -import fr.ird.observe.business.db.constants.ConnexionStatus; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; import fr.ird.observe.business.util.SecurityModel; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.ConnexionStatus; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.service.DataSourceService; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import jaxx.runtime.JAXXContext; import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.wizard.WizardModel; @@ -79,6 +91,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { public static final String REMOTE_URL_ROPERTY_NAME = "remoteUrl"; + public static final String SERVER_DATABASE_PROPERTY_NAME = "serverDatabase"; + public static final String REMOTE_LOGIN_ROPERTY_NAME = "remoteLogin"; public static final String REMOTE_PASSWORD_PROPERTY_NAME = "remotePassword"; @@ -101,6 +115,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { private static final String CAN_USE_REMOTE_SERVICE_PROPERTY_NAME = "canUseRemoteService"; + private static final String CAN_USE_SERVER_SERVICE_PROPERTY_NAME = "canUseServerService"; + public static final String REFERENTIEL_IMPORT_MODE_PROPERTY_NAME = "referentielImportMode"; public static final String DATA_IMPORT_MODE_PROPERTY_NAME = "dataImportMode"; @@ -136,7 +152,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { protected boolean storeRemoteConfig; /** le storage precedemment utilise */ - protected DataSource previousService; + protected ObserveDataSourceConfiguration previousDataSourceConfiguration; + + protected ConnexionStatus connexionStatus; + protected String connexionStatusError; /** un drapeau pour definir si on peut utiliser la base locale */ protected boolean canUseLocalService = true; @@ -147,23 +166,39 @@ public class StorageUIModel extends WizardModel<StorageStep> { /** un drapeau pour savoir si on a le droit d'utiliser une connexion distante */ protected boolean canUseRemoteService = true; + /** un drapeau pour savoir si on a le droit d'utiliser un serveur distant */ + protected boolean canUseServerService = true; + /** le modèle de sélection de données (utilisé pour les exports) */ - //FIXME -// protected DataSelectionModel selectDataModel; + protected Set<ReferenceDto> selectDataModel; /** le modèle de sécurité (utilisé pour la mise à jour sécurité sur base distante) */ protected SecurityModel securityModel; /** la configuration d'une base locale */ - //FIXME -// protected H2DataSourceConfig h2Config; + protected ObserveDataSourceConfigurationTopiaH2 h2Config; /** la configuration d'une base distante */ - //FIXME -// protected PGDataSourceConfig pgConfig; + protected ObserveDataSourceConfigurationTopiaPG pgConfig; + + /** la configuration d'un serveur web */ + protected ObserveDataSourceConfigurationRest restConfig; + + /** Les information de connextion a la base**/ + protected ObserveDataSourceConnection connection; + + /** le fichier d'import des donné */ + protected File dumpFile; + + + /** le mode de creation d'une base */ + protected CreationMode creationMode; + + /** la configuration pour impoter les données */ + protected ObserveDataSourceConfiguration importDataConfig; /** la configuration de l'application */ - protected ObserveConfig config; + protected ObserveSwingApplicationConfig config; /** l'action d'administration de base obstuna */ protected ObstunaAdminAction adminAction; @@ -188,22 +223,47 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ protected CreationMode dataImportMode; - /** l'installateur de base obstuna */ - //FIXME -// protected PGInstall pgInstall; - public StorageUIModel() { super(StorageStep.class, - StorageStep.CHOOSE_DB_MODE, - StorageStep.BACKUP, - StorageStep.CONFIRM + StorageStep.CHOOSE_DB_MODE, + StorageStep.BACKUP, + StorageStep.CONFIRM ); - -//FIXME -// pgConfig = new PGDataSourceConfig(I18n.n("observe.storage.label.remote")); -// h2Config = new H2DataSourceConfig(I18n.n("observe.storage.label.local")); -// h2Config.setImportConfig(pgConfig); + selectDataModel = Sets.newHashSet(); securityModel = new SecurityModel(); + + connexionStatus = ConnexionStatus.UNTESTED; + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + + h2Config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( + n("observe.storage.label.remote"), + null, + ObserveSwingApplicationConfig.DB_NAME, + "", + EMPTY_PASSWORD, + false, + false + ); + + pgConfig = configurationMainFactory.createObserveDataSourceConfigurationTopiaPG( + n("observe.storage.label.local"), + "", + "", + EMPTY_PASSWORD, + false, + false, + false + ); + + restConfig = configurationMainFactory.createObserveDataSourceConfigurationRest( + n("observe.storage.label.rest"), + null, + "", + EMPTY_PASSWORD, + null + ); } /** @@ -213,9 +273,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { * @param context le context applicatif * @param source le service existant */ - public void init(JAXXContext context, DataSource source) { + public void init(JAXXContext context, ObserveDataSourceConfiguration source) { - config = context.getContextValue(ObserveConfig.class); + config = context.getContextValue(ObserveSwingApplicationConfig.class); JAXXContextEntryDef<StorageUIModel> entryDef = WizardUILancher.newModelEntry(StorageUIModel.class); @@ -237,10 +297,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { StorageUIHandler storageUIHandler = context.getContextValue(StorageUIHandler.class); - //FIXME -// DataSelectionModel dataModel = -// context.getContextValue(DataSelectionModel.class); - // ajout paramétrage depuis la configuration boolean isLocalStorageExist = config.isLocalStorageExist(); @@ -256,6 +312,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("can use local storage ? " + isCanUseLocalService()); log.debug("can create local storage ? " + isCanCreateLocalService()); log.debug("can use remote storage ? " + isCanUseRemoteService()); + log.debug("can use server storage ? " + isCanUseServerService()); log.debug("previous service ? " + source); } @@ -266,7 +323,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { setShowMigrationProgression(config.isShowMigrationProgression()); setShowMigrationSql(config.isShowMigrationSql()); setDoBackup(false); - setPreviousService(source); + setPreviousDataSourceConfiguration(source); if (log.isDebugEnabled()) { log.debug("canMigrate ? " + isCanMigrate()); @@ -274,6 +331,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { CreationMode mode = config.getDefaultCreationMode(); + // on initialise les configuration avec les valeurs par defaul + h2Config = config.getDataSourceConfigurationH2(n("observe.storage.label.remote")); + pgConfig = config.getDataSourceConfigurationPG(n("observe.storage.label.local")); + restConfig = config.getDataSourceConfigurationRest(n("observe.storage.label.rest")); + if (source != null) { // on initialise le modèle à partir d'un service existant @@ -282,40 +344,29 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("from a previous service " + source); } - // on sélectionne ce service - DataSourceConfig previousConfig = source.getConfig(); + if (source instanceof ObserveDataSourceConfigurationTopiaH2) { - //FIXME -// if (previousConfig instanceof H2DataSourceConfig) { -// -// // on copie la configuration distante de la configuration -// fromStorageConfig(config.toPostgresStorageConfig(pgConfig.getLabel())); -// -// // on est actuellement connecte sur une base locale -// fromStorageConfig((H2DataSourceConfig) previousConfig); -// -// } else { -// -// // on copie la configuration locale de la configuration -// fromStorageConfig( -// config.toH2StorageConfig(pgConfig.getLabel())); -// -// if (!isLocalStorageExist) { -// // aucune base locale, on positionne le mode de création -// // de base locale par défaut. -// -// setCreationMode(mode); -// } -// -// // on est sur une base distante -// //FIXME -// fromStorageConfig((PGDataSourceConfig) previousConfig); -// } + // on est actuellement connecte sur une base locale + fromStorageConfig((ObserveDataSourceConfigurationTopiaH2) source); + + } else if (source instanceof ObserveDataSourceConfigurationTopiaPG){ + + if (!isLocalStorageExist) { + // aucune base locale, on positionne le mode de création + // de base locale par défaut. + + setCreationMode(mode); + } + + // on est sur une base distante + fromStorageConfig((ObserveDataSourceConfigurationTopiaPG) source); + + } else if (source instanceof ObserveDataSourceConfigurationRest){ + + // on est sur une base distante + fromStorageConfig((ObserveDataSourceConfigurationRest) source); + } - //FIXME -// if (dataModel != null) { -// setSelectDataModel(dataModel); -// } return; } @@ -323,14 +374,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("no service found, using default configuration"); } - // aucun service de persistance ouvert, - // on utilise la configuration par defaut - // ce cas ne devrait arriver uniquement tant qu'aucune - // base locale est crée -//FIXME -// fromStorageConfig(config.toH2StorageConfig(pgConfig.getLabel())); - -// fromStorageConfig(config.toPostgresStorageConfig(pgConfig.getLabel())); DbMode newDbMode = config.getDefaultDbMode(); if (getAdminAction() != null) { @@ -343,6 +386,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { mode = CreationMode.IMPORT_EXTERNAL_DUMP; } else if (isCanUseRemoteService()) { mode = CreationMode.IMPORT_REMOTE_STORAGE; + } else if (isCanUseServerService()) { + mode = CreationMode.IMPORT_SERVER_STORAGE; } } if (log.isDebugEnabled()) { @@ -369,7 +414,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { "previousConfig parameter can not be null in method initFromPreviousConfig"); } - config = context.getContextValue(ObserveConfig.class); + config = context.getContextValue(ObserveSwingApplicationConfig.class); StorageUIHandler storageUIHandler = context.getContextValue(StorageUIHandler.class); @@ -384,6 +429,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("can use local storage ? " + isCanUseLocalService()); log.debug("can create local storage ? " + isCanCreateLocalService()); log.debug("can use remote storage ? " + isCanUseRemoteService()); + log.debug("can use server storage ? " + isCanUseServerService()); log.debug("previous service ? " + previousConfig); } @@ -399,31 +445,27 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("canMigrate ? " + isCanMigrate()); } - // on initialise le modèle à partir de la configuration existante -//FIXME -// if (previousConfig instanceof H2DataSourceConfig) { -// -// // on copie la configuration distante de la configuration -// fromStorageConfig(config.toPostgresStorageConfig(pgConfig.getLabel())); -// -// // on est actuellement connecte sur une base locale -// fromStorageConfig((H2DataSourceConfig) previousConfig); -// -// } else { -// -// // on copie la configuration locale de la configuration -// fromStorageConfig( -// config.toH2StorageConfig(pgConfig.getLabel())); -// -// if (!isLocalStorageExist) { -// -// // aucune base locale, on ne peut pas utiliser la base locale -// setCanUseLocalService(false); -// } -// -// // on est sur une base distante -// fromStorageConfig((PGDataSourceConfig) previousConfig); -// } + if (previousConfig instanceof ObserveDataSourceConfigurationTopiaH2) { + + // on est actuellement connecte sur une base locale + fromStorageConfig((ObserveDataSourceConfigurationTopiaH2) previousConfig); + + } else if (previousConfig instanceof ObserveDataSourceConfigurationTopiaPG){ + + if (!isLocalStorageExist) { + + // aucune base locale, on ne peut pas utiliser la base locale + setCanUseLocalService(false); + } + + // on est sur une base distante + fromStorageConfig((ObserveDataSourceConfigurationTopiaPG) previousConfig); + + } else if (previousConfig instanceof ObserveDataSourceConfigurationRest){ + + // on est sur une base distante + fromStorageConfig((ObserveDataSourceConfigurationRest) previousConfig); + } } /** @@ -432,9 +474,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ public void initFromModel() { - JAXXContext context = ObserveContext.get(); + JAXXContext context = ObserveSwingApplicationContext.get(); - config = context.getContextValue(ObserveConfig.class); + config = context.getContextValue(ObserveSwingApplicationConfig.class); // ajout paramétrage depuis la configuration @@ -451,6 +493,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { log.debug("can use local storage ? " + isCanUseLocalService()); log.debug("can create local storage ? " + isCanCreateLocalService()); log.debug("can use remote storage ? " + isCanUseRemoteService()); + log.debug("can use server storage ? " + isCanUseServerService()); } setStoreRemoteConfig(config.isStoreRemoteStorage()); @@ -458,7 +501,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { setShowMigrationProgression(config.isShowMigrationProgression()); setShowMigrationSql(config.isShowMigrationSql()); setDoBackup(false); - setPreviousService(null); + setPreviousDataSourceConfiguration(null); if (log.isDebugEnabled()) { log.debug("canMigrate ? " + isCanMigrate()); @@ -474,10 +517,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { // on utilise la configuration par defaut // ce cas ne devrait arriver uniquement tant qu'aucune // base locale est crée -//FIXME -// fromStorageConfig(config.toH2StorageConfig(pgConfig.getLabel())); -// -// fromStorageConfig(config.toPostgresStorageConfig(pgConfig.getLabel())); + h2Config = config.getDataSourceConfigurationH2(n("observe.storage.label.remote")); + pgConfig = config.getDataSourceConfigurationPG(n("observe.storage.label.local")); + restConfig = config.getDataSourceConfigurationRest(n("observe.storage.label.rest")); + DbMode newDbMode = config.getDefaultDbMode(); if (getAdminAction() != null) { @@ -490,6 +533,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { mode = CreationMode.IMPORT_EXTERNAL_DUMP; } else if (isCanUseRemoteService()) { mode = CreationMode.IMPORT_REMOTE_STORAGE; + } else if (isCanUseServerService()) { + mode = CreationMode.IMPORT_SERVER_STORAGE; } } if (log.isDebugEnabled()) { @@ -512,6 +557,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { centralSourceModel.setCanCreateLocalService(false); centralSourceModel.setCanUseLocalService(false); centralSourceModel.setCanUseRemoteService(true); + centralSourceModel.setCanUseServerService(true); centralSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { @@ -548,6 +594,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { dataSourceModel.setCanCreateLocalService(false); dataSourceModel.setCanUseLocalService(false); dataSourceModel.setCanUseRemoteService(true); + dataSourceModel.setCanUseServerService(true); dataSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { @@ -594,16 +641,15 @@ public class StorageUIModel extends WizardModel<StorageStep> { start(); firePropertyChange(DB_MODE_PROPERTY_NAME, getDbMode()); firePropertyChange(CREATION_MODE_PROPERTY_NAME, getCreationMode()); - //FIXME -// firePropertyChange(DUMP_FILE_PROPERTY_NAME, h2Config.getDbDump()); + firePropertyChange(DUMP_FILE_PROPERTY_NAME, getDumpFile()); firePropertyChange(BACKUP_FILE_PROPERTY_NAME, getBackupFile()); firePropertyChange(DO_BACKUP_PROPERTY_NAME, isDoBackup()); firePropertyChange(CAN_USE_LOCALE_SERVICE_PROPERTY_NAME, isCanUseLocalService()); firePropertyChange(CAN_CREATE_LOCALE_SERVICE_PROPERTY_NAME, isCanCreateLocalService()); firePropertyChange(CAN_USE_REMOTE_SERVICE_PROPERTY_NAME, isCanUseRemoteService()); - //FIXME -// firePropertyChange(CONNEXION_STATUS_PROPERTY_NAME, pgConfig.getConnexionStatus()); - firePropertyChange(PREVIOUS_SERVICE_PROPERTY_NAME, getPreviousService()); + firePropertyChange(CAN_USE_SERVER_SERVICE_PROPERTY_NAME, isCanUseServerService()); + firePropertyChange(CONNEXION_STATUS_PROPERTY_NAME, getConnexionStatus()); + firePropertyChange(PREVIOUS_SERVICE_PROPERTY_NAME, getPreviousDataSourceConfiguration()); firePropertyChange(LOCAL_STORAGE_EXIST_PROPERTY_NAME, isLocalStorageExist()); firePropertyChange(STORE_REMOTE_CONFIG_PROPERTY_NAME, isStoreRemoteConfig()); firePropertyChange(REMOTE_URL_ROPERTY_NAME, getRemoteUrl()); @@ -627,6 +673,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { return canUseRemoteService; } + public boolean isCanUseServerService() { + return canUseServerService; + } + public SecurityModel getSecurityModel() { return securityModel; } @@ -634,10 +684,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { public ObstunaAdminAction getAdminAction() { return adminAction; } -//FIXME -// public PGInstall getPgInstall() { -// return pgInstall; -// } + + public Set<ReferenceDto> getSelectDataModel() { + return selectDataModel; + } public CreationMode getReferentielImportMode() { return referentielImportMode; @@ -665,9 +715,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { String params; txt = n("observe.storage.label.import.referentiel"); if (getDbMode() == DbMode.CREATE_LOCAL) { - //FIXME -// params = getH2Config().getDataDirectory().getAbsolutePath(); - params= null; + params = getH2Config().getDirectory().getAbsolutePath(); } else { params = getRemoteUrl(); } @@ -697,9 +745,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { String params; txt = n("observe.storage.label.import.data"); if (getDbMode() == DbMode.CREATE_LOCAL) { - //FIXME -// params = getH2Config().getDataDirectory().getAbsolutePath(); - params = null; + params = getH2Config().getDirectory().getAbsolutePath(); } else { params = getRemoteUrl(); } @@ -740,8 +786,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { // when doing an admin mode we do not choose db mode, we always work on remote universe.add(StorageStep.CHOOSE_DB_MODE); } -//FIXME -// h2Config.setImportConfig(null); boolean canBackup = localStorageExist; switch (dbMode) { @@ -755,20 +799,25 @@ public class StorageUIModel extends WizardModel<StorageStep> { break; //case IMPORT_LOCAL_STORAGE: case IMPORT_REMOTE_STORAGE: - //FIXME -// h2Config.setImportConfig(pgConfig); + importDataConfig = pgConfig; + universe.add(StorageStep.CONFIG); + case IMPORT_SERVER_STORAGE: + importDataConfig = restConfig; universe.add(StorageStep.CONFIG); } } break; + case USE_LOCAL: + // pas de backup si on veut utiliser la base locale + canBackup = false; + break; case USE_REMOTE: canBackup = false; universe.add(StorageStep.CONFIG); break; - case USE_LOCAL: - - // pas de backup si on veut utiliser la base locale + case USE_SERVER: canBackup = false; + universe.add(StorageStep.CONFIG); break; } if (canBackup) { @@ -819,18 +868,18 @@ public class StorageUIModel extends WizardModel<StorageStep> { validate = false; } else if (!isCanCreateLocalService() && dbMode.equals(DbMode.CREATE_LOCAL)) { validate = false; + } else if (!isCanUseServerService() && dbMode.equals(DbMode.USE_SERVER)) { + validate = false; } } if (validate && isLocal()) { if (dbMode == DbMode.CREATE_LOCAL) { - //FIXME -// validate = h2Config.getCreationMode() != null; + validate = getCreationMode() != null; } } break; case CONFIG: if (dbMode == DbMode.USE_REMOTE) { - //FIXME // validate = pgConfig.isValid(); //FIXME Il faut savoir si l'utilisateur est le //FIXME propriétaire de la base @@ -995,40 +1044,44 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public boolean isLocal() { - return dbMode != null && dbMode != DbMode.USE_REMOTE; + return dbMode != null && (dbMode == DbMode.CREATE_LOCAL || dbMode == DbMode.USE_LOCAL); } public boolean isRemote() { return dbMode != null && dbMode == DbMode.USE_REMOTE; } + public boolean isServer() { + return dbMode != null && dbMode == DbMode.USE_SERVER; + } + public boolean isCanMigrate() { boolean result = false; if (dbMode != null) { switch (dbMode) { case USE_LOCAL: case CREATE_LOCAL: - //FIXME -// result = h2Config.isCanMigrate(); + result = h2Config.isCanMigrate(); break; case USE_REMOTE: - //FIXME -// result = pgConfig.isCanMigrate(); + result = pgConfig.isCanMigrate(); + break; + case USE_SERVER: + result = false; + break; } } return result; } public String getLabel() { - //FIXME -// String txt; -// if (dbMode == DbMode.CREATE_LOCAL) { -// txt = h2Config.getLabel(); -// } else { -// txt = pgConfig.getLabel(); -// } -// return txt; - return null; + String txt; + if (dbMode == DbMode.CREATE_LOCAL) { + txt = h2Config.getLabel(); + } else { + txt = pgConfig.getLabel(); + } + return txt; } public boolean isLocalStorageExist() { @@ -1047,19 +1100,19 @@ public class StorageUIModel extends WizardModel<StorageStep> { return doBackup; } - public Version getDbVersion() { - return config == null ? Version.VZERO : config.getDbVersion(); + public Version getModleVersion() { + return config == null ? Version.VZERO : config.getModelVersion(); } public DbMode getDbMode() { return dbMode; } - public DataSource getPreviousService() { - return previousService; + public ObserveDataSourceConfiguration getPreviousDataSourceConfiguration() { + return previousDataSourceConfiguration; } - public ObserveConfig getConfig() { + public ObserveSwingApplicationConfig getConfig() { return config; } @@ -1130,8 +1183,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (oldValue != dataImportMode) { // reset selected data to import - //FIXME -// setSelectDataModel(null); + selectDataModel.clear(); updateUniverse(); } @@ -1147,19 +1199,17 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public void setShowMigrationSql(boolean showMigrationSql) { - //FIXME -// boolean oldValue = pgConfig.isShowMigrationSql(); -// pgConfig.setShowMigrationSql(showMigrationSql); -// h2Config.setShowMigrationSql(showMigrationSql); -// firePropertyChange(SHOW_MIGRATION_SQL_PROPERTY_NAME, oldValue, showMigrationSql); + boolean oldValue = pgConfig.isShowMigrationSql(); + pgConfig.setShowMigrationSql(showMigrationSql); + h2Config.setShowMigrationSql(showMigrationSql); + firePropertyChange(SHOW_MIGRATION_SQL_PROPERTY_NAME, oldValue, showMigrationSql); } public void setShowMigrationProgression(boolean showMigrationProgression) { - //FIXME -// boolean oldValue = pgConfig.isShowMigrationProgression(); -// pgConfig.setShowMigrationProgression(showMigrationProgression); -// h2Config.setShowMigrationProgression(showMigrationProgression); -// firePropertyChange(SHOW_MIGRATION_PROGRESSION_PROPERTY_NAME, oldValue, showMigrationProgression); + boolean oldValue = pgConfig.isShowMigrationProgression(); + pgConfig.setShowMigrationProgression(showMigrationProgression); + h2Config.setShowMigrationProgression(showMigrationProgression); + firePropertyChange(SHOW_MIGRATION_PROGRESSION_PROPERTY_NAME, oldValue, showMigrationProgression); } // ---------------------------------------------------------- @@ -1167,48 +1217,16 @@ public class StorageUIModel extends WizardModel<StorageStep> { // ---------------------------------------------------------- public CreationMode getCreationMode() { - CreationMode result = null; - if (dbMode != null) { - switch (dbMode) { - case USE_LOCAL: - case CREATE_LOCAL: - //FIXME -// result = h2Config.getCreationMode(); - break; - case USE_REMOTE: - //FIXME -// result = pgConfig.getCreationMode(); - } - } - return result; + return creationMode; } public File getDumpFile() { - //FIXME -// URL dbDump = h2Config.getDbDump(); -// if (dbDump == null) { -// return new File(""); -// } -// // on remplace les %20 par des speciess car dans l'uri les caracteres -// // sont encodes -// File file = new File(dbDump.getFile().replaceAll("%20", " ")); -// file = new File(file.getAbsolutePath()); -// return file; - return null; + return dumpFile; } public void setCreationMode(CreationMode creationMode) { CreationMode oldValue = getCreationMode(); - if (dbMode != null) { - switch (dbMode) { - case CREATE_LOCAL: - - // seul cas ou on peut propager le mode de creation - //FIXME -// h2Config.setCreationMode(creationMode); - break; - } - } + this.creationMode = creationMode; firePropertyChange(CREATION_MODE_PROPERTY_NAME, oldValue, creationMode); if (oldValue != creationMode) { updateUniverse(); @@ -1226,32 +1244,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public void setDumpFile(File dumpFile) { - try { - File oldValue = getDumpFile(); - URL url = null; - if (dumpFile != null) { - url = dumpFile.toURI().toURL(); - if (log.isDebugEnabled()) { - log.debug("dumpFile : " + dumpFile + " (exist ? : " + - dumpFile.exists() + ')'); - log.debug("dumpFile url : " + url); - } - String filePath = url.getFile().replaceAll("%20", " "); - if (log.isDebugEnabled()) { - log.debug("dumpFile file from url : " + filePath + - " (exist ? : " + new File(filePath).exists() + ')'); - } - } - //FIXME -// h2Config.setDbDump(dumpFile == null ? null : url); - firePropertyChange(DUMP_FILE_PROPERTY_NAME, oldValue, dumpFile); - validate(); - } catch (MalformedURLException ex) { - // shoudl never happens - if (log.isWarnEnabled()) { - log.warn(ex); - } - } + File oldValue = this.dumpFile; + this.dumpFile = dumpFile; + firePropertyChange(DUMP_FILE_PROPERTY_NAME, oldValue, dumpFile); + validate(); } // ---------------------------------------------------------- @@ -1259,60 +1255,88 @@ public class StorageUIModel extends WizardModel<StorageStep> { // ---------------------------------------------------------- public String getRemoteLogin() { - //FIXME -// return pgConfig.getLogin(); - return null; + String login = ""; + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + login = pgConfig.getUsername(); + break; + case USE_SERVER: + login = restConfig.getLogin(); + break; + } + } + return login; } public char[] getRemotePassword() { - //FIXME -// return pgConfig.getPassword(); - return null; + char[] password = EMPTY_PASSWORD; + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + password = pgConfig.getPassword(); + break; + case USE_SERVER: + password = restConfig.getPassword(); + break; + } + } + return password; } public String getRemoteUrl() { - //FIXME -// return pgConfig.getUrl(); - return null; + String url = ""; + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + url = pgConfig.getJdbcUrl(); + break; + case USE_SERVER: + url = restConfig.getServerUrl().toString(); + break; + } + } + return url; } public boolean isUseSsl() { - //FIXME -// return pgConfig.isUseSsl(); - return false; + return pgConfig.isUseSsl(); + } + + public String getServerDatabase() { + return restConfig.getOptionalDatabaseName().orNull(); } public ConnexionStatus getConnexionStatus() { - //FIXME -// return pgConfig.getConnexionStatus(); - return null; + return connexionStatus; } - public void setPreviousService(DataSource previousService) { - this.previousService = previousService; + public void setPreviousDataSourceConfiguration(ObserveDataSourceConfiguration previousDataSourceConfiguration) { + this.previousDataSourceConfiguration = previousDataSourceConfiguration; } - //FIXME -// public H2DataSourceConfig getH2Config() { -// return h2Config; -// } -// - //FIXME -// public PGDataSourceConfig getPgConfig() { -// return pgConfig; -// } + public ObserveDataSourceConfigurationTopiaH2 getH2Config() { + return h2Config; + } + + public ObserveDataSourceConfigurationTopiaPG getPgConfig() { + return pgConfig; + } + + public ObserveDataSourceConfigurationRest getRestConfig() { + return restConfig; + } public void setRemoteLogin(String remoteLogin) { String oldValue = getRemoteLogin(); - //FIXME -// pgConfig.setLogin(remoteLogin); + + pgConfig.setUsername(remoteLogin); firePgConfigChanged(REMOTE_LOGIN_ROPERTY_NAME, oldValue, remoteLogin); } public void setRemotePassword(char[] remotePassword) { char[] oldValue = getRemotePassword(); - //FIXME -// pgConfig.setPassword(remotePassword); + pgConfig.setPassword(remotePassword); firePgConfigChanged(REMOTE_PASSWORD_PROPERTY_NAME, oldValue, remotePassword); } @@ -1326,7 +1350,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void setCanCreateLocalService(boolean canCreateLocalService) { this.canCreateLocalService = canCreateLocalService; firePgConfigChanged(CAN_CREATE_LOCALE_SERVICE_PROPERTY_NAME, null, - canCreateLocalService); + canCreateLocalService); } public void setCanUseRemoteService(boolean canUseRemoteService) { @@ -1334,58 +1358,85 @@ public class StorageUIModel extends WizardModel<StorageStep> { firePropertyChange(CAN_USE_REMOTE_SERVICE_PROPERTY_NAME, null, canUseRemoteService); } + public void setCanUseServerService(boolean canUseServerService) { + this.canUseServerService = canUseServerService; + firePropertyChange(CAN_USE_SERVER_SERVICE_PROPERTY_NAME, null, canUseServerService); + } + public void setRemoteUrl(String remoteUrl) { String oldValue = getRemoteUrl(); - //FIXME -// pgConfig.setUrl(remoteUrl); + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + pgConfig.setJdbcUrl(remoteUrl); + break; + case USE_SERVER: + URL url = null; + try { + url = new URL(remoteUrl); + } catch (MalformedURLException e) { + } + restConfig.setServerUrl(url); + break; + } + } firePgConfigChanged(REMOTE_URL_ROPERTY_NAME, oldValue, remoteUrl); } public void setUseSsl(boolean useSsl) { - //FIXME -// boolean oldValue = pgConfig.isUseSsl(); -// pgConfig.setUseSsl(useSsl); -// firePgConfigChanged(USE_SSL_PROPERTY_NAME, oldValue, useSsl); + boolean oldValue = pgConfig.isUseSsl(); + pgConfig.setUseSsl(useSsl); + firePgConfigChanged(USE_SSL_PROPERTY_NAME, oldValue, useSsl); + } + + public void setServerDatabase(String database) { + String oldValue = getServerDatabase(); + restConfig.setOptionalDatabaseName(database); + firePgConfigChanged(SERVER_DATABASE_PROPERTY_NAME, oldValue, database); } // ---------------------------------------------------------- // -- StorageConfigSupport implementation methods // ---------------------------------------------------------- - //FIXME -// public void fromStorageConfig(H2DataSourceConfig config) { -// setDbMode(config.isStorageExists() ? DbMode.USE_LOCAL : DbMode.CREATE_LOCAL); -// config.copyTo(h2Config); -// } -// - //FIXME -// public void fromStorageConfig(PGDataSourceConfig config) { -// setDbMode(DbMode.USE_REMOTE); -// config.copyTo(pgConfig); -// } + public void fromStorageConfig(ObserveDataSourceConfigurationTopiaH2 sourceConfig) { -// public H2DataSourceConfig toH2StorageConfig(String label) { -// -// H2DataSourceConfig result = h2Config.clone(); -// result.setShortLabel(label); -// + setDbMode(sourceConfig.getDatabaseFile().exists() ? DbMode.USE_LOCAL : DbMode.CREATE_LOCAL); + h2Config = sourceConfig; + } + + public void fromStorageConfig(ObserveDataSourceConfigurationTopiaPG sourceConfig) { + setDbMode(DbMode.USE_REMOTE); + pgConfig = sourceConfig; + } + + public void fromStorageConfig(ObserveDataSourceConfigurationRest sourceConfig) { + setDbMode(DbMode.USE_SERVER); + restConfig = sourceConfig; + } + + public DataSourceCreateConfigurationDto getCreationConfigurationDto() { + + DataSourceCreateConfigurationDto createConfigurationDto = null; + // FIXME // if (getDbMode() == DbMode.CREATE_LOCAL) { -// -// CreationMode m = result.getCreationMode(); -// -// switch (m) { +// switch (getCreationMode()) { // case EMPTY: // case IMPORT_EXTERNAL_DUMP: // // rien a faire // break; // case IMPORT_INTERNAL_DUMP: +// +// createConfigurationDto = new DataSourceCreateConfigurationDto(); +// +// // try { // result.setDbDump( // config.getInitialDbDump().toURI().toURL()); // } catch (MalformedURLException ex) { // throw new IllegalArgumentException( // "can not build url for initialDbDump for " + -// "reason " + ex.getMessage(), ex); +// "reason " + ex.getMessage(), ex); // } // break; // case IMPORT_LOCAL_STORAGE: @@ -1397,31 +1448,57 @@ public class StorageUIModel extends WizardModel<StorageStep> { // n("observe.storage.label.import.remote")); // break; // } -// } -// return result; -// } // - //FIXME -// public PGDataSourceConfig toPostgresStorageConfig(String label) { -// if (log.isDebugEnabled()) { -// log.debug("before clone pg : policy = " + pgConfig.getPolicy()); -// } -// PGDataSourceConfig result = pgConfig.clone(); -// if (log.isDebugEnabled()) { -// log.debug("after clone pg : policy = " + result.getPolicy()); +// // } -// result.setShortLabel(label); -// return result; -// } + return createConfigurationDto; + } -// public DataSelectionModel getSelectDataModel() { -// return selectDataModel; -// } + public ObserveDataSourceConfigurationTopiaH2 toH2StorageConfig(String label) { - // FIXME -// public void setSelectDataModel(DataSelectionModel selectDataModel) { -// this.selectDataModel = selectDataModel; -// } + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationFactory = context.getObserveDataSourceConfigurationMainFactory(); + ObserveDataSourceConfigurationTopiaH2 result = configurationFactory.createObserveDataSourceConfigurationTopiaH2( + label, + h2Config.getDirectory(), + h2Config.getDbName(), + h2Config.getUsername(), + h2Config.getPassword(), + h2Config.isShowMigrationProgression(), + h2Config.isShowMigrationSql() + ); + return result; + } + + public ObserveDataSourceConfigurationTopiaPG toPGStorageConfig(String label) { + + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationFactory = context.getObserveDataSourceConfigurationMainFactory(); + ObserveDataSourceConfigurationTopiaPG result = configurationFactory.createObserveDataSourceConfigurationTopiaPG( + label, + pgConfig.getJdbcUrl(), + pgConfig.getUsername(), + pgConfig.getPassword(), + pgConfig.isUseSsl(), + pgConfig.isShowMigrationProgression(), + pgConfig.isShowMigrationSql() + ); + return result; + } + + public ObserveDataSourceConfigurationRest toRestStorageConfig(String label) { + + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + ObserveDataSourceConfigurationMainFactory configurationFactory = context.getObserveDataSourceConfigurationMainFactory(); + ObserveDataSourceConfigurationRest result = configurationFactory.createObserveDataSourceConfigurationRest( + label, + restConfig.getServerUrl(), + restConfig.getLabel(), + restConfig.getPassword(), + restConfig.getOptionalDatabaseName().orNull() + ); + return result; + } protected void copyTo(StorageUIModel dst) { dst.setLocalStorageExist(isLocalStorageExist()); @@ -1429,11 +1506,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { dst.setBackupFile(getBackupFile()); dst.setDoBackup(isDoBackup()); dst.setStoreRemoteConfig(isStoreRemoteConfig()); - //FIXME -// dst.setPreviousService(getPreviousService()); + dst.setPreviousDataSourceConfiguration(getPreviousDataSourceConfiguration()); dst.setCanCreateLocalService(isCanCreateLocalService()); dst.setCanUseLocalService(isCanUseLocalService()); dst.setCanUseRemoteService(isCanUseRemoteService()); + dst.setCanUseServerService(isCanUseServerService()); //FIXME // pgConfig.copyTo(dst.pgConfig); //FIXME @@ -1449,12 +1526,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void firePgConfigChanged(String propertyName, Object oldValue, Object newValue) { - if (!CONNEXION_STATUS_PROPERTY_NAME.equals(propertyName)) { - firePropertyChange(propertyName, oldValue, newValue); - } - // always invalidate test when modification, so notify listeners -// firePropertyChange(CONNEXION_STATUS_PROPERTY_NAME, -// pgConfig.getConnexionStatus()); + firePropertyChange(propertyName, oldValue, newValue); validate(); } @@ -1465,34 +1537,55 @@ public class StorageUIModel extends WizardModel<StorageStep> { * {@code false} sinon. */ public boolean testRemote() { - //FIXME tchemit 2010-08-18 : should do this in a thread to be able to stop test if too long - //FIXME -// boolean result = getPgConfig().canConnect(); -// if (log.isDebugEnabled()) { -// log.debug("result : " + result); -// } -// firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, null, pgConfig.getConnexionStatus()); -// -// if (result && !getPgConfig().isCanMigrate()) { -// -// // must check version (can't migrate remote db) -// result = getPgConfig().checkVersion(getDbVersion()); -// -// if (!result) { -// -// // can't use this remote db -// pgConfig.setConnexionStatus(ConnexionStatus.FAILED); -// -// firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, null, pgConfig.getConnexionStatus()); -// } -// } -// return result; - return false; + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + DataSourceService dataSourceService = applicationContext.newService(pgConfig, DataSourceService.class); + + boolean result = false; + connexionStatusError = ""; + + try { + dataSourceService.checkCanConnect(pgConfig); + + ObserveDataSourceConnection dataSourceConnection = dataSourceService.open(pgConfig); + + if (dataSourceConnection.getVersion().equals(getModleVersion())) { + + setConnexionStatus(ConnexionStatus.SUCCESS); + + result = true; + + } else { + + connexionStatusError = t("observe.storage.error.dbVersionMismatch", dataSourceConnection.getVersion(), getModleVersion()); + + setConnexionStatus(ConnexionStatus.FAILED); + + } + + } catch (DatabaseNotFoundException e) { + + connexionStatusError = e.getMessage(); + + setConnexionStatus(ConnexionStatus.FAILED); + + } catch (DatabaseConnexionNotAuthorizedException e) { + + connexionStatusError = e.getMessage(); + + setConnexionStatus(ConnexionStatus.FAILED); + } + + return result; + } + + public String getConnexionStatusError() { + return connexionStatusError; } public boolean isPgConfigVersionMatch() { //FIXME -// return getDbVersion().equals(pgConfig.getVersion()); +// return getModleVersion().equals(pgConfig.getVersion()); return false; } @@ -1520,15 +1613,15 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public void setConnexionStatus(ConnexionStatus connexionStatus) { - //FIXME -// pgConfig.setConnexionStatus(connexionStatus); - firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, null, connexionStatus); + ConnexionStatus oldValue = this.connexionStatus; + this.connexionStatus = connexionStatus; + firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, oldValue, connexionStatus); } public void checkImportDbVersion(DataSource importDatasource) throws DataSourceException { Version importServiceDbVersion = importDatasource.getDbVersion(); - Version currentDbVersion = getDbVersion(); + Version currentDbVersion = getModleVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.css index bade66a..2d4ff4d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.css @@ -53,6 +53,13 @@ selected:{model.getDbMode() == DbMode.USE_REMOTE}; } +#useServerMode { + value:{DbMode.USE_SERVER}; + text:{DbMode.USE_SERVER.getLabel()}; + enabled:{model.isCanUseServerService()}; + selected:{model.getDbMode() == DbMode.USE_SERVER}; +} + #dbModeContent { layout:{new GridLayout(0,1)}; border:{new TitledBorder(t("observe.storage.step.dbMode.detail"))}; @@ -103,6 +110,12 @@ selected:{model.getCreationMode() == CreationMode.IMPORT_REMOTE_STORAGE}; } +#importServerStorageMode { + value:{CreationMode.IMPORT_SERVER_STORAGE}; + text:{CreationMode.IMPORT_SERVER_STORAGE.getLabel()}; + selected:{model.getCreationMode() == CreationMode.IMPORT_SERVER_STORAGE}; +} + #migrationContent { layout:{new GridLayout(0,1)}; border:{new TitledBorder(t("observe.storage.report.action.migrate"))}; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.jaxx index 9dbfa89..7b93e02 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ChooseDbModeUI.jaxx @@ -26,19 +26,19 @@ <StorageTabUI> <import> - fr.ird.observe.ObserveConfig + fr.ird.observe.configuration.ObserveSwingApplicationConfig fr.ird.observe.ui.UIHelper fr.ird.observe.ui.storage.StorageStep - fr.ird.observe.business.db.constants.DbMode - fr.ird.observe.business.db.constants.CreationMode + fr.ird.observe.db.constantes.DbMode + fr.ird.observe.db.constantes.CreationMode </import> <StorageStep id='step' initializer='StorageStep.CHOOSE_DB_MODE'/> <fr.ird.observe.ui.storage.StorageUIModel id='model'/> - <ObserveConfig id='config' - initializer="getContextValue(ObserveConfig.class)"/> + <ObserveSwingApplicationConfig id='config' + initializer="getContextValue(ObserveSwingApplicationConfig.class)"/> <ButtonGroup id='dbMode' onStateChanged='getModel().setDbMode((DbMode) dbMode.getSelectedValue())'/> @@ -57,7 +57,7 @@ public void init() { protected String updateMigrationPolicy(boolean canMigrate) { if (canMigrate) { - return t("observe.storage.report.can.migrate", config.getDbVersion()); + return t("observe.storage.report.can.migrate", config.getModelVersion()); } else { return t("observe.storage.report.can.not.migrate"); } @@ -75,6 +75,7 @@ protected String updateCreationModeContent(DbMode mode) { <JPanel id='dbModeContent' constraints='BorderLayout.NORTH'> <JRadioButton id="useLocalMode" styleClass='dbMode'/> <JRadioButton id="useRemoteMode" styleClass='dbMode'/> + <JRadioButton id="useServerMode" styleClass='dbMode'/> <JRadioButton id="createLocalMode" styleClass='dbMode'/> </JPanel> @@ -85,6 +86,7 @@ protected String updateCreationModeContent(DbMode mode) { <JRadioButton id="importExternalDumpMode" styleClass='creationMode'/> <JRadioButton id="importLocalStorageMode" styleClass='creationMode'/> <JRadioButton id="importRemoteStorageMode" styleClass='creationMode'/> + <JRadioButton id="importServerStorageMode" styleClass='creationMode'/> </JPanel> <JLabel id='noCreateMode' constraints='"noCreateMode"'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigDataUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigDataUI.jaxx index 80748d1..a84758a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigDataUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigDataUI.jaxx @@ -26,7 +26,7 @@ <StorageTabUI> <import> - fr.ird.observe.business.db.constants.CreationMode + fr.ird.observe.db.constantes.CreationMode fr.ird.observe.ui.storage.StorageStep javax.swing.Icon diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigReferentielUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigReferentielUI.jaxx index 0d95cb0..fa263fe 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigReferentielUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigReferentielUI.jaxx @@ -26,7 +26,7 @@ <StorageTabUI> <import> - fr.ird.observe.business.db.constants.CreationMode + fr.ird.observe.db.constantes.CreationMode fr.ird.observe.ui.storage.StorageStep javax.swing.Icon diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css index 5ff68f6..aee7ca0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css @@ -52,6 +52,14 @@ layout:{new GridLayout()}; } +#USE_SERVER { + _description:{n("observe.storage.useServerStorage.description")}; +} + +#USE_SERVER_content { + layout:{new GridLayout()}; +} + #remoteConfig { layout:{new BorderLayout()}; } @@ -68,6 +76,15 @@ text:{model.getRemotePassword()==null ? "" : new String(model.getRemotePassword())}; } +#serverDataBaseLabel { + visible: {DbMode.USE_SERVER.equals(model.getDbMode())}; +} + +#serverDataBase { + visible: {DbMode.USE_SERVER.equals(model.getDbMode())}; + text:{model.getServerDatabase()}; +} + #remoteUseSsl { text:"observe.storage.remote.useSll"; selected:{model.isUseSsl()}; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx index db7d07e..57d82df 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx @@ -28,7 +28,8 @@ <import> fr.ird.observe.ui.storage.StorageStep - fr.ird.observe.business.db.constants.ConnexionStatus + fr.ird.observe.db.constantes.ConnexionStatus + fr.ird.observe.db.constantes.DbMode; java.awt.Color java.awt.Dimension @@ -133,6 +134,22 @@ public void init() { </row> </Table> + <!-- configurer connexion au server base distante --> + <Table id='USE_SERVER' + constraints='"USE_SERVER"' fill='both'> + <row> + <cell> + <JLabel text='observe.storage.useServerStorage.config'/> + </cell> + </row> + <row> + <cell weighty='1' weightx='1'> + <JPanel id='USE_SERVERE_content' + minimumSize='{new Dimension(20,300)}'/> + </cell> + </row> + </Table> + <JPanel constraints='"$$hideme$$"' visible='false'> <JPanel id='remoteConfig'> <Table constraints='BorderLayout.CENTER' @@ -165,6 +182,16 @@ public void init() { </cell> </row> <row> + <cell anchor='west'> + <JLabel id="serverDataBaseLabel" + text='observe.storage.server.dataBase'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="serverDataBase" + onKeyReleased='getModel().setServerDatabase(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + <row> <cell columns='2'> <JCheckBox id="remoteUseSsl" onActionPerformed='getModel().setUseSsl(((JCheckBox)event.getSource()).isSelected())'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java index fbe5620..51f0182 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java @@ -21,13 +21,11 @@ */ package fr.ird.observe.ui.storage.tabs; -import com.google.common.base.Preconditions; -import fr.ird.observe.ObserveConfig; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.constants.ConnexionStatus; -import fr.ird.observe.business.db.constants.CreationMode; -import fr.ird.observe.business.db.constants.DbMode; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.constantes.ConnexionStatus; +import fr.ird.observe.db.constantes.CreationMode; +import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.StorageStep; import fr.ird.observe.ui.storage.StorageUIHandler; @@ -343,25 +341,10 @@ public class StorageTabUIHandler { text = t(text); break; case SUCCESS: - //FIXME -// text = t(text, ui.model.getPgConfig().toString()); + text = t(text, ui.model.getPgConfig().toString()); break; case FAILED: - - //FIXME -// if (ui.model.getPgConfig().getConnexionError() != null) { -// // real connexion error -// text = t(text, ui.model.getPgConfig().getConnexionError().getMessage()); -// } else { -// -// // remote version mismatch -// Preconditions.checkState(!ui.model.isPgConfigVersionMatch()); -// -// String error = t("observe.storage.error.dbVersionMismatch", ui.model.getPgConfig().getVersion(), ui.model.getDbVersion()); -// -// text = t(text, error); -// } - + text = t(text, ui.model.getConnexionStatusError()); break; } return text; @@ -435,7 +418,7 @@ public class StorageTabUIHandler { protected String updateInternalDumpModeLabel(ChooseDbModeUI ui, boolean dumpExist) { - File f = ui.getContextValue(ObserveConfig.class).getInitialDbDump(); + File f = ui.getContextValue(ObserveSwingApplicationConfig.class).getInitialDbDump(); String text; if (f.exists()) { text = t("observe.storage.internalDump.last.modified", new Date(f.lastModified())); @@ -447,7 +430,7 @@ public class StorageTabUIHandler { protected String updateCanMigrateLabel(ChooseDbModeUI ui, boolean canMigrate) { - String text = t("observe.storage.action.canMigrate", ui.getModel().getDbVersion()); + String text = t("observe.storage.action.canMigrate", ui.getModel().getModleVersion()); return text; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java index 415961b..f7bbabb 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.tree; import com.google.common.base.Preconditions; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.business.db.DataSource; @@ -99,7 +99,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel if (decoratorService == null) { // on récupère le service commun - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } @@ -109,7 +109,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (source != null) { provider = new ObserveDataProvider(source); setDataProvider(provider); @@ -324,7 +324,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel log.trace("[" + node + "] Content class to use : " + contentClass); log.trace("[" + node + "] Parent Content class to use : " + parentContentClass); } - DataContext dataContext = ObserveContext.get().getDataContext(); + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); String nodeId = node.getId(); if (ProgramDto.class.equals(contentClass)) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/NavigationTreeSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/NavigationTreeSelectionModel.java index d0e5b46..8adcd91 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/NavigationTreeSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/NavigationTreeSelectionModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -105,7 +105,7 @@ public class NavigationTreeSelectionModel extends DefaultTreeSelectionModel { } if (canChange && !isSelectionEmpty()) { - canChange = ObserveContext.get().closeSelectedContentUI(); + canChange = ObserveSwingApplicationContext.get().closeSelectedContentUI(); } return canChange; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index 59931f9..9f60ebe 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.tree; import com.google.common.base.Preconditions; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; import fr.ird.observe.ObserveContext; import fr.ird.observe.business.db.DataContext; @@ -121,7 +122,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { protected ObserveDataProvider getDataProvider() { ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - DataSource source = ObserveContext.get().getDataSource(); + DataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (source != null) { provider = new ObserveDataProvider(source); setDataProvider(provider); @@ -320,7 +321,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { JTree tree = getUI(); - List<String> selectedIds = ObserveContext.get().getNodesToReselect(); + List<String> selectedIds = ObserveSwingApplicationContext.get().getNodesToReselect(); if (CollectionUtils.isNotEmpty(selectedIds)) { if (log.isDebugEnabled()) { log.debug("will select previous ids " + selectedIds); @@ -364,7 +365,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { } finally { // nettoyage du context - ObserveContext.get().setNodesToReselect(null); + ObserveSwingApplicationContext.get().setNodesToReselect(null); } // navigation tree should acquire focus diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx index b64d064..a2e144b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUI.jaxx @@ -26,7 +26,7 @@ Interface graphique pour afficher la liste des usages d'une entitee donnee. <JPanel id='usagePanel' layout='{new BorderLayout()}'> <import> - fr.ird.observe.ObserveContext + fr.ird.observe.ObserveSwingApplicationContext fr.ird.observe.ui.UIHelper fr.ird.observe.services.dto.AbstractObserveDto @@ -55,10 +55,6 @@ protected UsagesUIHandler getHandler() { return handler; } -protected ObserveContext getObserveContext() { - return ObserveContext.get(); -} - void $afterCompleteSetup() { } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java index 9c32ee3..a890a8d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/usage/UsagesUIHandler.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.usage; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import org.apache.commons.logging.Log; @@ -122,7 +122,7 @@ public class UsagesUIHandler { typetitle = t(typetitle, typeTitle, size); pane.setColumnHeaderView(new JLabel(typetitle)); List<String> data = new ArrayList<String>(size); - Decorator<?> decorator = ObserveContext.get().getDecorator(type); + Decorator<?> decorator = ObserveSwingApplicationContext.get().getDecorator(type); if (decorator == null) { throw new NullPointerException( "could not find decorator for type " + type); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveSimpleValidatorMessageTableRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveSimpleValidatorMessageTableRenderer.java index fa09fb0..21e81ed 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveSimpleValidatorMessageTableRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveSimpleValidatorMessageTableRenderer.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.util; */ import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import jaxx.runtime.validator.swing.SimpleBeanValidatorMessageTableModel; import jaxx.runtime.validator.swing.SimpleBeanValidatorMessageTableRenderer; import org.nuiton.validator.NuitonValidatorScope; @@ -48,7 +48,7 @@ public class ObserveSimpleValidatorMessageTableRenderer extends SimpleBeanValida public DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveValidatorMessageTableRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveValidatorMessageTableRenderer.java index 48b449f..b6d8d27 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveValidatorMessageTableRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/ObserveValidatorMessageTableRenderer.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.util; */ import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; import jaxx.runtime.validator.swing.SwingValidatorMessage; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; @@ -51,7 +51,7 @@ public class ObserveValidatorMessageTableRenderer extends SwingValidatorMessageT public DecoratorService getDecoratorService() { if (decoratorService == null) { - decoratorService = ObserveContext.get().getDecoratorService(); + decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } return decoratorService; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java index c899950..fa442ba 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapUIHandler.java @@ -22,8 +22,8 @@ package fr.ird.observe.ui.util.tripMap; * #L% */ -import fr.ird.observe.ObserveConfig; -import fr.ird.observe.ObserveContext; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.ObserveTechnicalException; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.entities.tripMap.TripMapPoint; @@ -69,7 +69,7 @@ public class TripMapUIHandler { protected TripMapUI view; - private ObserveConfig config; + private ObserveSwingApplicationConfig config; protected ReferencedEnvelope tripArea; protected boolean rendererRunning; @@ -94,7 +94,7 @@ public class TripMapUIHandler { } - public void setConfig(ObserveConfig config) { + public void setConfig(ObserveSwingApplicationConfig config) { this.config = config; JMapPane mapPane = getObserveMapPane(); @@ -111,7 +111,7 @@ public class TripMapUIHandler { try { ((CardLayout) view.getLayout()).first(view); - ObserveContext.get().getObserveMainUI().setBusy(true); + ObserveSwingApplicationContext.get().getObserveMainUI().setBusy(true); ObserveMapPane mapPane = getObserveMapPane(); @@ -158,7 +158,7 @@ public class TripMapUIHandler { } catch (Exception e) { throw new ObserveTechnicalException("Unable to load trip map activity points", e); } finally { - ObserveContext.get().getObserveMainUI().setBusy(false); + ObserveSwingApplicationContext.get().getObserveMainUI().setBusy(false); } } diff --git a/observe-application-swing/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider b/observe-application-swing/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider index 4fe9aed..9b7d106 100644 --- a/observe-application-swing/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider +++ b/observe-application-swing/src/main/resources/META-INF/services/org.nuiton.config.ApplicationConfigProvider @@ -1 +1 @@ -fr.ird.observe.ObserveApplicationConfigProvider \ No newline at end of file +fr.ird.observe.configuration.ObserveApplicationConfigProvider \ No newline at end of file diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties index eeccb53..0c79ab5 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties @@ -1,9 +1,9 @@ nuitonutil.error.convertor.noValue= nuitonutil.error.float.convertor= nuitonutil.error.no.convertor= -observe.about.message= -observe.about.translate.content= -observe.about.translate.title= +observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Application de saisie des données observateurs et de consultation de telles données depuis une base <i>Obstuna</i>.</p> <p>Ce projet a été initiée en 2008 par l'unité US 007-OSIRIS de <a href\="http\://www.ird.fr">l'IRD</a> dans le cadre d'un <a href\="http\://www.ird.fr/infor [...] +observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliore [...] +observe.about.translate.title=translate ObServe observe.action.HookSize.create.tip= observe.action.HookSize.delete.tip= observe.action.HookSize.detail.tip= @@ -14,21 +14,21 @@ observe.action.HookType.delete.tip= observe.action.HookType.detail.tip= observe.action.HookType.modify.tip= observe.action.HookType.save.tip= -observe.action.about= -observe.action.about.tip= -observe.action.add.floatingObject= -observe.action.add.floatingObject.tip= -observe.action.add.set= -observe.action.add.set.tip= -observe.action.add.setLongline= -observe.action.add.setLongline.tip= -observe.action.admin.cancel= -observe.action.admin.close= -observe.action.apply= -observe.action.auto.copy.to.clipboard= -observe.action.auto.copy.to.clipboard.tip= -observe.action.back.to.list= -observe.action.back.to.list.tip= +observe.action.about=About +observe.action.about.tip=About ObServe... +observe.action.add.floatingObject=Add FAD +observe.action.add.floatingObject.tip=Add a FAD to the activity +observe.action.add.set=Add a Set +observe.action.add.set.tip=Add the set to the activity +observe.action.add.setLongline=Add the fishing operation +observe.action.add.setLongline.tip=Add the fishing operation associated with this activity +observe.action.admin.cancel=Cancel wizard +observe.action.admin.close=Close wizard +observe.action.apply=Apply +observe.action.auto.copy.to.clipboard=Automatic copy in clipboard +observe.action.auto.copy.to.clipboard.tip=Copy automaticly in clipboard with report result +observe.action.back.to.list=Back to list +observe.action.back.to.list.tip=Go back to the list observe.action.baitHaulingStatus.create.tip= observe.action.baitHaulingStatus.delete.tip= observe.action.baitHaulingStatus.detail.tip= @@ -44,36 +44,36 @@ observe.action.baitType.delete.tip= observe.action.baitType.detail.tip= observe.action.baitType.modify.tip= observe.action.baitType.save.tip= -observe.action.cancel= -observe.action.cancel.create.tip= +observe.action.cancel=Cancel +observe.action.cancel.create.tip=Cancel object creation observe.action.catchFateLongline.create.tip= observe.action.catchFateLongline.delete.tip= observe.action.catchFateLongline.detail.tip= observe.action.catchFateLongline.modify.tip= observe.action.catchFateLongline.save.tip= -observe.action.change.storage= -observe.action.change.storage.tip= -observe.action.choose.db.dump= -observe.action.choose.db.dump.description= -observe.action.choose.db.dump.directory= -observe.action.choose.importGPS= -observe.action.choose.importGPS.description= -observe.action.choose.report.directory= -observe.action.choose.reportFile= -observe.action.choose.reportFile.description= +observe.action.change.storage=Change storage +observe.action.change.storage.tip=To change current storage +observe.action.choose.db.dump=Choose the backup +observe.action.choose.db.dump.description=Database backup (*.sql.gz) +observe.action.choose.db.dump.directory=Choose the backup directory +observe.action.choose.importGPS=Use this file +observe.action.choose.importGPS.description=GPS File (*.gpx) +observe.action.choose.report.directory=Choose reports directory +observe.action.choose.reportFile=Choose the reports directory +observe.action.choose.reportFile.description=Report's file (*.properties) observe.action.choose.sensorUsed.exportData= observe.action.choose.sensorUsed.importData= observe.action.choose.tdr.exportData= observe.action.choose.tdr.importData= -observe.action.close= -observe.action.close.activity.tip= -observe.action.close.maree.tip= -observe.action.close.open= +observe.action.close=Close +observe.action.close.activity.tip=Close the opened activity +observe.action.close.maree.tip=Clse the opened maree +observe.action.close.open=Close observe.action.close.open.tip= -observe.action.close.route.tip= -observe.action.close.storage= -observe.action.close.storage.tip= -observe.action.close.synchro.tip= +observe.action.close.route.tip=Close road +observe.action.close.storage=Close storage +observe.action.close.storage.tip=Close current storage +observe.action.close.synchro.tip=close window observe.action.closeAndCreate= observe.action.closeAndCreate.activity= observe.action.closeAndCreate.activity.tip= @@ -82,20 +82,20 @@ observe.action.closeAndCreate.maree.tip= observe.action.closeAndCreate.route= observe.action.closeAndCreate.route.tip= observe.action.closeAndCreate.tip= -observe.action.commandline.configure.ui= -observe.action.commandline.create.id= -observe.action.commandline.disable.main.ui= -observe.action.commandline.help= -observe.action.commandline.help.ui= -observe.action.commandline.launch.admin.ui= +observe.action.commandline.configure.ui=Configure application +observe.action.commandline.create.id=Générer des topiaIds.\nDeux paramètres sont nécessaires \: le FQN de la classe et le nombre d'id à générer. +observe.action.commandline.disable.main.ui=Do NOT launch main gui +observe.action.commandline.help=Show help +observe.action.commandline.help.ui=Show gui help +observe.action.commandline.launch.admin.ui=Launch a administration task observe.action.commandline.launch.h2.server.mode= observe.action.commandline.launch.obstuna.admin.ui= -observe.action.commandline.use.jmx= -observe.action.configuration= -observe.action.configuration.tip= -observe.action.configure= -observe.action.continue= -observe.action.copy= +observe.action.commandline.use.jmx=Add JMX support +observe.action.configuration=Preferences +observe.action.configuration.tip=Change preferences +observe.action.configure=Configure +observe.action.continue=Continue +observe.action.copy=Copy observe.action.copy.column.headers= observe.action.copy.column.headers.tip= observe.action.copy.row.headers= @@ -105,23 +105,23 @@ observe.action.country.delete.tip= observe.action.country.detail.tip= observe.action.country.modify.tip= observe.action.country.save.tip= -observe.action.create= -observe.action.create.activity= -observe.action.create.activity.tip= +observe.action.create=Create +observe.action.create.activity=Create a new activity +observe.action.create.activity.tip=Create a new activity observe.action.create.entry.tip= -observe.action.create.gearUseFeaturesLongline= -observe.action.create.gearUseFeaturesLongline.tip= -observe.action.create.gearUseFeaturesSeine= -observe.action.create.gearUseFeaturesSeine.tip= -observe.action.create.maree= -observe.action.create.maree.tip= +observe.action.create.gearUseFeaturesLongline=Create a new gear use feature +observe.action.create.gearUseFeaturesLongline.tip=Create a new gear use feature +observe.action.create.gearUseFeaturesSeine=Create a new gear use feature +observe.action.create.gearUseFeaturesSeine.tip=Create a new gear use feature +observe.action.create.maree=Create a new maree +observe.action.create.maree.tip=Create a new maree observe.action.create.nonTargetCatch= observe.action.create.nonTargetCatch.tip= observe.action.create.nonTargetSample= observe.action.create.nonTargetSample.tip= observe.action.create.objectObservedSpecies= observe.action.create.objectObservedSpecies.tip= -observe.action.create.route= +observe.action.create.route=Create a new road observe.action.create.route.tip= observe.action.create.schoolEstimate= observe.action.create.schoolEstimate.tip= @@ -133,81 +133,81 @@ observe.action.create.targetSample= observe.action.create.targetSample.tip= observe.action.create.targetSampleCapture= observe.action.create.targetSampleCapture.tip= -observe.action.db.locale.es.tip= -observe.action.db.locale.fr.tip= -observe.action.db.locale.uk.tip= -observe.action.delete= +observe.action.db.locale.es.tip=Change database language in spanish +observe.action.db.locale.fr.tip=Change database language in french +observe.action.db.locale.uk.tip=Change database language in english +observe.action.delete=Delete observe.action.delete.activity.tip= observe.action.delete.entry.tip= observe.action.delete.floatingObject.tip= observe.action.delete.maree.tip= observe.action.delete.route.tip= observe.action.delete.set.tip= -observe.action.delete.tip= -observe.action.detail= +observe.action.delete.tip=Delete +observe.action.detail=Details observe.action.detectionMode.create.tip= observe.action.detectionMode.delete.tip= observe.action.detectionMode.detail.tip= observe.action.detectionMode.modify.tip= observe.action.detectionMode.save.tip= -observe.action.do.backup= -observe.action.do.backup.tip= +observe.action.do.backup=Backup local database +observe.action.do.backup.tip=Make a backup of local database before applying modifications. observe.action.encounterType.create.tip= observe.action.encounterType.delete.tip= observe.action.encounterType.detail.tip= observe.action.encounterType.modify.tip= observe.action.encounterType.save.tip= -observe.action.exit= -observe.action.exit.tip= -observe.action.fpaZone.create.tip= -observe.action.fpaZone.delete.tip= -observe.action.fpaZone.detail.tip= -observe.action.fpaZone.modify.tip= -observe.action.fpaZone.save.tip= -observe.action.gear.create.tip= -observe.action.gear.delete.tip= -observe.action.gear.detail.tip= -observe.action.gear.modify.tip= -observe.action.gear.save.tip= -observe.action.gearCaracteristic.create.tip= -observe.action.gearCaracteristic.delete.tip= -observe.action.gearCaracteristic.detail.tip= -observe.action.gearCaracteristic.modify.tip= -observe.action.gearCaracteristic.save.tip= -observe.action.gearCaracteristicType.create.tip= -observe.action.gearCaracteristicType.delete.tip= -observe.action.gearCaracteristicType.detail.tip= -observe.action.gearCaracteristicType.modify.tip= -observe.action.gearCaracteristicType.save.tip= -observe.action.goDown= -observe.action.goDown.tip= -observe.action.goUp= -observe.action.goUp.tip= -observe.action.goto.next.stage= -observe.action.goto.next.stage.tip= -observe.action.goto.open.activity= -observe.action.goto.open.activity.short= -observe.action.goto.open.activity.tip= -observe.action.goto.open.maree= -observe.action.goto.open.other.activity= -observe.action.goto.open.other.activity.tip= -observe.action.goto.open.other.maree= -observe.action.goto.open.other.maree.tip= -observe.action.goto.open.other.route= -observe.action.goto.open.other.route.tip= -observe.action.goto.open.program.short= -observe.action.goto.open.program.tip= -observe.action.goto.open.route= -observe.action.goto.open.route.short= -observe.action.goto.open.route.tip= -observe.action.goto.open.set.short= +observe.action.exit=Quit +observe.action.exit.tip=quit Observe +observe.action.fpaZone.create.tip=Create an FPA zone +observe.action.fpaZone.delete.tip=Delete the selected FPA zone +observe.action.fpaZone.detail.tip=View details about the selected FPA zone +observe.action.fpaZone.modify.tip=Edit the selected FPA zone +observe.action.fpaZone.save.tip=Save modifications +observe.action.gear.create.tip=Create an gear +observe.action.gear.delete.tip=Delete the selected gear +observe.action.gear.detail.tip=View details about the selected gear +observe.action.gear.modify.tip=Edit the selected gear +observe.action.gear.save.tip=Save modifications +observe.action.gearCaracteristic.create.tip=Create an gear caracteristic +observe.action.gearCaracteristic.delete.tip=Delete the selected gear caracteristic +observe.action.gearCaracteristic.detail.tip=View details about the selected gear caracteristic +observe.action.gearCaracteristic.modify.tip=Edit the selected gear caracteristic +observe.action.gearCaracteristic.save.tip=Save modifications +observe.action.gearCaracteristicType.create.tip=Create an gear caracteristic type +observe.action.gearCaracteristicType.delete.tip=Delete the selected gear caracteristic type +observe.action.gearCaracteristicType.detail.tip=View details about the selected gear caracteristic type +observe.action.gearCaracteristicType.modify.tip=Edit the selected gear caracteristic type +observe.action.gearCaracteristicType.save.tip=Save modifications +observe.action.goDown=Down... +observe.action.goDown.tip=Go down in navigation tree +observe.action.goUp=Up... +observe.action.goUp.tip=Go up in navigation tree +observe.action.goto.next.stage=Next step +observe.action.goto.next.stage.tip=Go to next step +observe.action.goto.open.activity=Go to opened activity +observe.action.goto.open.activity.short=Open activity +observe.action.goto.open.activity.tip=Go to opened activity +observe.action.goto.open.maree=Got to opened trip +observe.action.goto.open.other.activity=Go to opened activity in other road +observe.action.goto.open.other.activity.tip=Got to opened activity in other road +observe.action.goto.open.other.maree=Go to opened trip in other program +observe.action.goto.open.other.maree.tip=Got to opened trip in other program +observe.action.goto.open.other.route=Go to opened road in other trip +observe.action.goto.open.other.route.tip=Go to opened road in other trip +observe.action.goto.open.program.short=Open program +observe.action.goto.open.program.tip=Go to opened program +observe.action.goto.open.route=Go to opened route +observe.action.goto.open.route.short=Open route +observe.action.goto.open.route.tip=Go to opened route +observe.action.goto.open.set.short=Open set observe.action.goto.open.set.tip= -observe.action.goto.open.trip.short= -observe.action.goto.open.trip.tip= -observe.action.goto.previous.stage= -observe.action.goto.previous.stage.tip= -observe.action.goto.referentiel.short= -observe.action.goto.referentiel.tip= +observe.action.goto.open.trip.short=Open trip +observe.action.goto.open.trip.tip=go to opened trip +observe.action.goto.previous.stage=Previous step +observe.action.goto.previous.stage.tip=go to previous step +observe.action.goto.referentiel.short=Referentiel +observe.action.goto.referentiel.tip=Go to referentiel observe.action.goto.selected.activity= observe.action.goto.selected.activity.tip= observe.action.goto.selected.maree= @@ -239,8 +239,8 @@ observe.action.hookType.delete.tip= observe.action.hookType.detail.tip= observe.action.hookType.modify.tip= observe.action.hookType.save.tip= -observe.action.info.storage= -observe.action.info.storage.tip= +observe.action.info.storage=Storage details +observe.action.info.storage.tip=Show storage informations observe.action.itemHorizontalPosition.create.tip= observe.action.itemHorizontalPosition.delete.tip= observe.action.itemHorizontalPosition.detail.tip= @@ -271,14 +271,14 @@ observe.action.lineType.delete.tip= observe.action.lineType.detail.tip= observe.action.lineType.modify.tip= observe.action.lineType.save.tip= -observe.action.load.from.file= -observe.action.load.from.file.tip= -observe.action.locale.es= -observe.action.locale.es.tip= -observe.action.locale.fr= -observe.action.locale.fr.tip= -observe.action.locale.uk= -observe.action.locale.uk.tip= +observe.action.load.from.file=Import backup +observe.action.load.from.file.tip=Load a storage from a database backup +observe.action.locale.es=Spain +observe.action.locale.es.tip=Change application's language in spanish +observe.action.locale.fr=French +observe.action.locale.fr.tip=Change application's language in french +observe.action.locale.uk=English +observe.action.locale.uk.tip=Change application's language in english observe.action.maturityStatus.create.tip= observe.action.maturityStatus.delete.tip= observe.action.maturityStatus.detail.tip= @@ -289,8 +289,8 @@ observe.action.mitigationType.delete.tip= observe.action.mitigationType.detail.tip= observe.action.mitigationType.modify.tip= observe.action.mitigationType.save.tip= -observe.action.modify= -observe.action.new.entry= +observe.action.modify=Modify +observe.action.new.entry=Add observe.action.new.entry.tip= observe.action.objectFate.create.tip= observe.action.objectFate.delete.tip= @@ -351,15 +351,15 @@ observe.action.reasonForNullSet.delete.tip= observe.action.reasonForNullSet.detail.tip= observe.action.reasonForNullSet.modify.tip= observe.action.reasonForNullSet.save.tip= -observe.action.reload.application= -observe.action.reload.storage= -observe.action.reload.storage.tip= -observe.action.reload.ui= -observe.action.reloadDefaultConfiguration= -observe.action.reloadDefaultConfiguration.tip= -observe.action.reloadResources= -observe.action.reloadResources.tip= -observe.action.reopen= +observe.action.reload.application=reload application +observe.action.reload.storage=Reload storage +observe.action.reload.storage.tip=Reload current storage +observe.action.reload.ui=Reload GUI +observe.action.reloadDefaultConfiguration=Reload default resources +observe.action.reloadDefaultConfiguration.tip=Reload default resources +observe.action.reloadResources=Reload i18n +observe.action.reloadResources.tip=Reload i18n translations +observe.action.reopen=Re-open observe.action.reopen.activity.tip= observe.action.reopen.maree.tip= observe.action.reopen.route.tip= @@ -370,7 +370,7 @@ observe.action.reopen.selected.maree.tip= observe.action.reopen.selected.route= observe.action.reopen.selected.route.tip= observe.action.reopen.tip= -observe.action.reset= +observe.action.reset=Reset observe.action.reset.entry.tip= observe.action.reset.ersId.tip= observe.action.reset.formsUrl.tip= @@ -379,18 +379,18 @@ observe.action.reset.new.entry.tip= observe.action.reset.picturesReferences.tip= observe.action.reset.reportsUrl.tip= observe.action.reset.supportVesselName.tip= -observe.action.reset.tip= +observe.action.reset.tip=Cancel modifications observe.action.reset.well.tip= -observe.action.restart.application= -observe.action.restart.application.tip= -observe.action.save= -observe.action.save.all.tip= -observe.action.save.entry.tip= -observe.action.save.tip= -observe.action.save.to.file= -observe.action.save.to.file.tip= -observe.action.selectNode= -observe.action.selectNode.tip= +observe.action.restart.application=Restart +observe.action.restart.application.tip=Restart application +observe.action.save=Save +observe.action.save.all.tip=Save all modifications +observe.action.save.entry.tip=Save modifications +observe.action.save.tip=Save modifications +observe.action.save.to.file=Backup storage +observe.action.save.to.file.tip=Make a backup of opened storage +observe.action.selectNode=Select a node +observe.action.selectNode.tip=Select a node observe.action.sensorBrand.create.tip= observe.action.sensorBrand.delete.tip= observe.action.sensorBrand.detail.tip= @@ -416,12 +416,12 @@ observe.action.sex.delete.tip= observe.action.sex.detail.tip= observe.action.sex.modify.tip= observe.action.sex.save.tip= -observe.action.show.technical.informations.tip= -observe.action.show.unique.keys.tip= -observe.action.show.usages.tip= +observe.action.show.technical.informations.tip=Show technical informations +observe.action.show.unique.keys.tip=Show all natural ids for this type of object +observe.action.show.usages.tip=Show all usages of this object observe.action.showConfig.title= -observe.action.site= -observe.action.site.tip= +observe.action.site=Site +observe.action.site.tip=Go to ObServe's website observe.action.sizeMeasureType.create.tip= observe.action.sizeMeasureType.delete.tip= observe.action.sizeMeasureType.detail.tip= @@ -464,24 +464,24 @@ observe.action.stop.h2.web.server= observe.action.stop.h2.web.server.tip= observe.action.stop.server.mode= observe.action.stop.server.mode.tip= -observe.action.storage.apply= -observe.action.storage.apply.tip= -observe.action.storage.applyAction= -observe.action.storage.cancel= -observe.action.storage.cancel.tip= +observe.action.storage.apply=Apply +observe.action.storage.apply.tip=Apply configured storage +observe.action.storage.applyAction=Change storage +observe.action.storage.cancel=Cancel change storage +observe.action.storage.cancel.tip=Cancel change of storage observe.action.surroundingActivity.create.tip= observe.action.surroundingActivity.delete.tip= observe.action.surroundingActivity.detail.tip= observe.action.surroundingActivity.modify.tip= observe.action.surroundingActivity.save.tip= -observe.action.synchro.apply.modifications= -observe.action.synchro.cancel.tip= -observe.action.synchro.copy.tip= -observe.action.synchro.launch.operation= -observe.action.synchro.prepare.operation= -observe.action.synchro.report.reset.tip= -observe.action.test.remote= -observe.action.test.remote.tip= +observe.action.synchro.apply.modifications=Apply modifications +observe.action.synchro.cancel.tip=Cancel +observe.action.synchro.copy.tip=Copy result of report in clipboard +observe.action.synchro.launch.operation=Launch operation < %1$S > +observe.action.synchro.prepare.operation=Prepare operation < %1$s > +observe.action.synchro.report.reset.tip=Reset selected report. +observe.action.test.remote=Test connexion +observe.action.test.remote.tip=Click here to validate remote connexion observe.action.transmittingBuoyOperation.create.tip= observe.action.transmittingBuoyOperation.delete.tip= observe.action.transmittingBuoyOperation.detail.tip= @@ -507,9 +507,9 @@ observe.action.vesselActivityLongline.delete.tip= observe.action.vesselActivityLongline.detail.tip= observe.action.vesselActivityLongline.modify.tip= observe.action.vesselActivityLongline.save.tip= -observe.action.vesselActivitySeine.create.tip= -observe.action.vesselActivitySeine.delete.tip= -observe.action.vesselActivitySeine.detail.tip= +observe.action.vesselActivitySeine.create.tip=Create a new boat activity +observe.action.vesselActivitySeine.delete.tip=Delete selected boat activity +observe.action.vesselActivitySeine.detail.tip=Show detail of selected boat activity observe.action.vesselActivitySeine.modify.tip= observe.action.vesselActivitySeine.save.tip= observe.action.vesselSizeCategory.create.tip= @@ -537,34 +537,34 @@ observe.action.wind.delete.tip= observe.action.wind.detail.tip= observe.action.wind.modify.tip= observe.action.wind.save.tip= -observe.activityLongline.coordinate= -observe.activityLongline.fpaZone= -observe.activityLongline.message.active.found= -observe.activityLongline.message.active.found.for.other.trip= -observe.activityLongline.message.creating= -observe.activityLongline.message.no.active.found= -observe.activityLongline.message.no.active.found.for.other.trip= -observe.activityLongline.message.not.open= -observe.activityLongline.message.updating= -observe.activityLongline.seaSurfaceTemperature= -observe.activityLongline.timeStamp= -observe.activityLongline.title= -observe.activityLongline.vesselActivityLongline= -observe.activityLonglines.title= -observe.activityObservedSystem.availableObservedSystem= -observe.activityObservedSystem.selectedObservedSystem= -observe.activitySeine.message.active.found= -observe.activitySeine.message.active.found.for.other.route= -observe.activitySeine.message.creating= -observe.activitySeine.message.no.active.found= -observe.activitySeine.message.no.active.found.for.other.route= -observe.activitySeine.message.not.open= -observe.activitySeine.message.updating= -observe.activitySeine.tab.general= -observe.activitySeine.tab.measurements= -observe.activitySeine.title= +observe.activityLongline.coordinate=Coordinates +observe.activityLongline.fpaZone=FPA Zone +observe.activityLongline.message.active.found=An activity is opened. +observe.activityLongline.message.active.found.for.other.trip=An activity is opened in another trip. +observe.activityLongline.message.creating=Creating an activity +observe.activityLongline.message.no.active.found=No opened activity found, you can create a new one, or open an existing one. +observe.activityLongline.message.no.active.found.for.other.trip=No opened activity found on current trip. +observe.activityLongline.message.not.open=Activity is not opened, no edit possible. +observe.activityLongline.message.updating=Updating an activity +observe.activityLongline.seaSurfaceTemperature=SST (°c) +observe.activityLongline.timeStamp=timestamp +observe.activityLongline.title=Activity +observe.activityLongline.vesselActivityLongline=Vessel activity +observe.activityLonglines.title=Activities +observe.activityObservedSystem.availableObservedSystem=Available observed systems +observe.activityObservedSystem.selectedObservedSystem=Selected observed systems +observe.activitySeine.message.active.found=An activity is opened. +observe.activitySeine.message.active.found.for.other.route=An activity is opened in another route. +observe.activitySeine.message.creating=Creating an activity +observe.activitySeine.message.no.active.found=No opened activity found, you can create a new one, or open an existing one. +observe.activitySeine.message.no.active.found.for.other.route=No opened activity found on current route. +observe.activitySeine.message.not.open=Activity is not opened, no edit possible. +observe.activitySeine.message.updating=Updating an activity +observe.activitySeine.tab.general=General caracteristics +observe.activitySeine.tab.measurements=Measurements +observe.activitySeine.title=Activity observe.activitySeineObservedSystem.title= -observe.activitySeines.title= +observe.activitySeines.title=Activities observe.admin.resume.no.operation.done= observe.admin.resume.operation.canceled= observe.admin.resume.operation.done= @@ -572,162 +572,162 @@ observe.admin.resume.operation.failed= observe.admin.resume.operation.need.fix= observe.admin.resume.operation.not.started= observe.admin.resume.operation.running= -observe.application.config= -observe.baitsComposition.action.create= -observe.baitsComposition.action.create.tip= -observe.baitsComposition.baitSettingStatus= -observe.baitsComposition.baitType= -observe.baitsComposition.individualSize= -observe.baitsComposition.individualWeight= -observe.baitsComposition.proportion= -observe.baitsComposition.proportionSum= -observe.baitsComposition.table.baitSettingStatus= -observe.baitsComposition.table.baitSettingStatus.tip= -observe.baitsComposition.table.baitType= -observe.baitsComposition.table.baitType.tip= -observe.baitsComposition.table.individualSize= -observe.baitsComposition.table.individualSize.tip= -observe.baitsComposition.table.individualWeight= -observe.baitsComposition.table.individualWeight.tip= -observe.baitsComposition.table.proportion= -observe.baitsComposition.table.proportion.tip= -observe.baitsComposition.title= -observe.basket.cant.delete.message= -observe.basket.cant.delete.title= +observe.application.config=ObServe Configuration +observe.baitsComposition.action.create=Insert this bait +observe.baitsComposition.action.create.tip=Insert this bait +observe.baitsComposition.baitSettingStatus=Bait setting status +observe.baitsComposition.baitType=Bait type +observe.baitsComposition.individualSize=Size +observe.baitsComposition.individualWeight=Weight +observe.baitsComposition.proportion=Proportion +observe.baitsComposition.proportionSum=Proportion sum +observe.baitsComposition.table.baitSettingStatus=Status +observe.baitsComposition.table.baitSettingStatus.tip=Bait setting status +observe.baitsComposition.table.baitType=Type +observe.baitsComposition.table.baitType.tip=Bait type +observe.baitsComposition.table.individualSize=Size +observe.baitsComposition.table.individualSize.tip=Individual size +observe.baitsComposition.table.individualWeight=Weight +observe.baitsComposition.table.individualWeight.tip=Individual weight +observe.baitsComposition.table.proportion=Proportion +observe.baitsComposition.table.proportion.tip=Proportion +observe.baitsComposition.title=Baits +observe.basket.cant.delete.message=The current basket can not be deleted since it used by other data. +observe.basket.cant.delete.title=Can't delete basket observe.basket.invalid.nextFloatline1Length= -observe.branchLine.cant.delete.message= -observe.branchLine.cant.delete.title= -observe.branchline.baitHaulingStatus= -observe.branchline.baitSettingStatus= -observe.branchline.baitType= -observe.branchline.comment= -observe.branchline.depthRecorder= -observe.branchline.hookLost= -observe.branchline.hookOffset= -observe.branchline.hookSize= -observe.branchline.hookType= +observe.branchLine.cant.delete.message=The current branchline can not be deleted since it used by other data. +observe.branchLine.cant.delete.title=Can't delete branchline +observe.branchline.baitHaulingStatus=Bait hauling status +observe.branchline.baitSettingStatus=Bait setting status +observe.branchline.baitType=Bait type +observe.branchline.comment=Comment +observe.branchline.depthRecorder=Depth recorder +observe.branchline.hookLost=Hook lost +observe.branchline.hookOffset=Hook offset +observe.branchline.hookSize=Hook size +observe.branchline.hookType=Hook type observe.branchline.message.modified= observe.branchline.message.modified.but.invalid= -observe.branchline.snapWeight= -observe.branchline.swivelWeight= +observe.branchline.snapWeight=Snap weight (kg) +observe.branchline.swivelWeight=Swivel weight (kg) observe.branchline.tab.general= observe.branchline.tab.hookAndBait= -observe.branchline.timeSinceContact= -observe.branchline.timer= -observe.branchline.timerTimeOnBoard= -observe.branchline.title= -observe.branchline.topType= -observe.branchline.traceCutOff= -observe.branchline.tracelineType= -observe.branchline.weightedSnap= -observe.branchline.weightedSwivel= -observe.branchlinesComposition.action.create= -observe.branchlinesComposition.action.create.tip= -observe.branchlinesComposition.length= -observe.branchlinesComposition.proportion= -observe.branchlinesComposition.proportionSum= -observe.branchlinesComposition.table.length= -observe.branchlinesComposition.table.length.tip= -observe.branchlinesComposition.table.proportion= -observe.branchlinesComposition.table.proportion.tip= -observe.branchlinesComposition.table.topType= -observe.branchlinesComposition.table.topType.tip= -observe.branchlinesComposition.table.tracelineType= -observe.branchlinesComposition.table.tracelineType.tip= -observe.branchlinesComposition.title= -observe.branchlinesComposition.topType= -observe.branchlinesComposition.tracelineType= -observe.broughtOnDeck.comment= -observe.catchLongline.acquisitionMode= -observe.catchLongline.acquisitionMode.grouped= -observe.catchLongline.acquisitionMode.individual= -observe.catchLongline.action.create= -observe.catchLongline.action.create.tip= +observe.branchline.timeSinceContact=Time since contact +observe.branchline.timer=Timer +observe.branchline.timerTimeOnBoard=Time on board +observe.branchline.title=Branchline detail +observe.branchline.topType=Top part type +observe.branchline.traceCutOff=Trace cut off +observe.branchline.tracelineType=Traceline type +observe.branchline.weightedSnap=Weighted snap +observe.branchline.weightedSwivel=Weighted swivel +observe.branchlinesComposition.action.create=Insert this branchline +observe.branchlinesComposition.action.create.tip=Insert this branchline +observe.branchlinesComposition.length=Length +observe.branchlinesComposition.proportion=Proportion +observe.branchlinesComposition.proportionSum=Proportion sum +observe.branchlinesComposition.table.length=Length +observe.branchlinesComposition.table.length.tip=Length +observe.branchlinesComposition.table.proportion=Proportion +observe.branchlinesComposition.table.proportion.tip=Proportion +observe.branchlinesComposition.table.topType=Top part type +observe.branchlinesComposition.table.topType.tip=Top part type +observe.branchlinesComposition.table.tracelineType=Traceline type +observe.branchlinesComposition.table.tracelineType.tip=Traceline type +observe.branchlinesComposition.title=Branchlines +observe.branchlinesComposition.topType=Top part type +observe.branchlinesComposition.tracelineType=Traceline type +observe.broughtOnDeck.comment=Only species brought on deck can be sampled +observe.catchLongline.acquisitionMode=Acquisition mode +observe.catchLongline.acquisitionMode.grouped=Batch +observe.catchLongline.acquisitionMode.individual=Individual +observe.catchLongline.action.create=Insert this catch +observe.catchLongline.action.create.tip=Insert this catch observe.catchLongline.action.new= observe.catchLongline.action.new.tip= -observe.catchLongline.action.reset.photoReferences.tip= -observe.catchLongline.availablePredator= -observe.catchLongline.basket= -observe.catchLongline.beatDiameter= -observe.catchLongline.branchline= -observe.catchLongline.catchFateLongline= -observe.catchLongline.catchHealthness= -observe.catchLongline.comment= -observe.catchLongline.count= -observe.catchLongline.depredated= -observe.catchLongline.discardHealthness= -observe.catchLongline.gonadeWeight= -observe.catchLongline.hookPosition= -observe.catchLongline.hookWhenDiscarded= -observe.catchLongline.locationOnLongline= -observe.catchLongline.maturityStatus= -observe.catchLongline.photoReferences= -observe.catchLongline.predator= +observe.catchLongline.action.reset.photoReferences.tip=Reset photo references +observe.catchLongline.availablePredator=Avaiable predators +observe.catchLongline.basket=Bakset +observe.catchLongline.beatDiameter=Beat diameter +observe.catchLongline.branchline=Branchline +observe.catchLongline.catchFateLongline=Fate +observe.catchLongline.catchHealthness=Catch healthness +observe.catchLongline.comment=Comment +observe.catchLongline.count=Count +observe.catchLongline.depredated=Depredated +observe.catchLongline.discardHealthness=Discard healthness +observe.catchLongline.gonadeWeight=Gonade weigth (g) +observe.catchLongline.hookPosition=Hook position +observe.catchLongline.hookWhenDiscarded=Discarded with hook +observe.catchLongline.locationOnLongline=Location on longline +observe.catchLongline.maturityStatus=Sexual maturity +observe.catchLongline.photoReferences=Photo references +observe.catchLongline.predator=Predators observe.catchLongline.resetBranchline= observe.catchLongline.resetBranchline.tip= observe.catchLongline.saveBranchline= observe.catchLongline.saveBranchline.tip= -observe.catchLongline.section= -observe.catchLongline.selectedPredator= -observe.catchLongline.sex= -observe.catchLongline.speciesCatch= -observe.catchLongline.stomacFullness= +observe.catchLongline.section=Section +observe.catchLongline.selectedPredator=Selected predators +observe.catchLongline.sex=Sex +observe.catchLongline.speciesCatch=Species +observe.catchLongline.stomacFullness=Stomac fullness observe.catchLongline.tab.branchline= -observe.catchLongline.tab.caracteristics= -observe.catchLongline.tab.depredated= -observe.catchLongline.tab.foodAndSexual= -observe.catchLongline.tab.sizeMeasures= -observe.catchLongline.tab.weightMeasures= -observe.catchLongline.title= -observe.catchLongline.totalWeight= -observe.catchlongline.table.acquisitionMode= -observe.catchlongline.table.acquisitionMode.tip= +observe.catchLongline.tab.caracteristics=Caracteristics +observe.catchLongline.tab.depredated=Depredation +observe.catchLongline.tab.foodAndSexual=Food and sexual maturity +observe.catchLongline.tab.sizeMeasures=Sizes +observe.catchLongline.tab.weightMeasures=Weights +observe.catchLongline.title=Catches +observe.catchLongline.totalWeight=Total weight (kg) +observe.catchlongline.table.acquisitionMode=Acquisition mode +observe.catchlongline.table.acquisitionMode.tip=Acquisition mode observe.catchlongline.table.basketHaulingId= observe.catchlongline.table.basketHaulingId.tip= observe.catchlongline.table.branchlineHaulingId= observe.catchlongline.table.branchlineHaulingId.tip= -observe.catchlongline.table.catchFateLongline= -observe.catchlongline.table.catchFateLongline.tip= -observe.catchlongline.table.catchHealthness= -observe.catchlongline.table.catchHealthness.tip= -observe.catchlongline.table.comment= -observe.catchlongline.table.comment.tip= -observe.catchlongline.table.count= -observe.catchlongline.table.count.tip= -observe.catchlongline.table.depredated= -observe.catchlongline.table.depredated.tip= -observe.catchlongline.table.discardHealthness= -observe.catchlongline.table.discardHealthness.tip= +observe.catchlongline.table.catchFateLongline=Fate +observe.catchlongline.table.catchFateLongline.tip=Fate +observe.catchlongline.table.catchHealthness=Catch healthness +observe.catchlongline.table.catchHealthness.tip=Catch healthness +observe.catchlongline.table.comment=Comment +observe.catchlongline.table.comment.tip=Comment +observe.catchlongline.table.count=Count +observe.catchlongline.table.count.tip=Count +observe.catchlongline.table.depredated=Depredated +observe.catchlongline.table.depredated.tip=Depredated +observe.catchlongline.table.discardHealthness=Discard healthness +observe.catchlongline.table.discardHealthness.tip=Discard healthness observe.catchlongline.table.sectionHaulingId= observe.catchlongline.table.sectionHaulingId.tip= -observe.catchlongline.table.size= -observe.catchlongline.table.size.tip= -observe.catchlongline.table.sizeMeasureType= -observe.catchlongline.table.sizeMeasureType.tip= -observe.catchlongline.table.speciesCatch= -observe.catchlongline.table.speciesCatch.tip= -observe.catchlongline.table.weight= -observe.catchlongline.table.weight.tip= -observe.catchlongline.table.weightMeasureType= -observe.catchlongline.table.weightMeasureType.tip= -observe.choice.cancel= -observe.choice.confirm.delete= -observe.choice.continue= -observe.choice.create.fin.veille.activity= +observe.catchlongline.table.size=Size (cm) +observe.catchlongline.table.size.tip=Size (cm) +observe.catchlongline.table.sizeMeasureType=Measure type +observe.catchlongline.table.sizeMeasureType.tip=Measure type +observe.catchlongline.table.speciesCatch=Species +observe.catchlongline.table.speciesCatch.tip=Species +observe.catchlongline.table.weight=Measure (kg) +observe.catchlongline.table.weight.tip=Measure (kg) +observe.catchlongline.table.weightMeasureType=Measure type +observe.catchlongline.table.weightMeasureType.tip=Measure type +observe.choice.cancel=Cancel +observe.choice.confirm.delete=Confirm delete +observe.choice.continue=Continue +observe.choice.create.fin.veille.activity=Create end activity observe.choice.create.fin.veille.activity.and.continue= -observe.choice.createLocalStorage= -observe.choice.doNotSave= -observe.choice.doNothing= +observe.choice.createLocalStorage=Create local storage +observe.choice.doNotSave=Do not save +observe.choice.doNothing=Do nothing observe.choice.not.create.fin.veille.activity.and.continue= -observe.choice.quit= -observe.choice.save= -observe.choice.useRemoteStorage= +observe.choice.quit=Quit +observe.choice.save=Save +observe.choice.useRemoteStorage=Use a remote storage observe.common.acquisitionMode= observe.common.acquisitionMode.count= observe.common.acquisitionMode.individu= -observe.common.activities= -observe.common.activities.list= -observe.common.activity= +observe.common.activities=Activities +observe.common.activities.list=List of activities +observe.common.activity=Activity observe.common.activityLongline= observe.common.activitySeine= observe.common.baitHaulingStatus= @@ -736,7 +736,7 @@ observe.common.baitSettingStatus= observe.common.baitType= observe.common.baitsComposition= observe.common.basket= -observe.common.birdsObservation= +observe.common.birdsObservation=Birds observe.common.boolean.false= observe.common.boolean.null= observe.common.boolean.true= @@ -756,8 +756,8 @@ observe.common.catchWeight= observe.common.catchWeightComputed.computed.tip= observe.common.catchWeightComputed.observed.tip= observe.common.changeDate= -observe.common.code= -observe.common.codeAndStatus= +observe.common.code=Code +observe.common.codeAndStatus=Code / Status observe.common.coefficients= observe.common.comment= observe.common.comment.activity= @@ -774,7 +774,7 @@ observe.common.currentFpaZone= observe.common.dataEntryOperator= observe.common.date= observe.common.daysAtSeaCount= -observe.common.departureHarbour= +observe.common.departureHarbour=Departure harbour observe.common.description= observe.common.detailledActivitiesObservation= observe.common.detectionMode= @@ -800,7 +800,7 @@ observe.common.gaugeLabel= observe.common.gear= observe.common.gearCaracteristic= observe.common.gearCaracteristicType= -observe.common.gearType= +observe.common.gearType=Gear caracteristic type observe.common.gearUseFeaturesLongline= observe.common.gearUseFeaturesSeine= observe.common.gender= @@ -835,9 +835,9 @@ observe.common.label5= observe.common.label6= observe.common.label7= observe.common.label8= -observe.common.landingHarbour= +observe.common.landingHarbour=Landing harbour observe.common.lastName= -observe.common.latitude= +observe.common.latitude=Latitude observe.common.length= observe.common.length.computed.tip= observe.common.length.inf= @@ -850,7 +850,7 @@ observe.common.lightsticksColor= observe.common.lightsticksType= observe.common.lineType= observe.common.locode= -observe.common.longitude= +observe.common.longitude=Longitude observe.common.lowerValueUpperValue= observe.common.mammalsObservation= observe.common.maturityStatus= @@ -885,12 +885,12 @@ observe.common.objectOperation= observe.common.objectSchoolEstimate= observe.common.objectType= observe.common.objectsObservation= -observe.common.observedSystem= +observe.common.observedSystem=Observed system observe.common.observedSystemDistance= observe.common.observer= observe.common.observerLabel= observe.common.obsolete.entity= -observe.common.ocean= +observe.common.ocean=Ocean observe.common.ocean/label1= observe.common.ocean/label2= observe.common.ocean/label3= @@ -925,7 +925,7 @@ observe.common.reasonForNullSet= observe.common.reportsUrl= observe.common.resume= observe.common.route= -observe.common.routes.list= +observe.common.routes.list=List of routes observe.common.samplesObservation= observe.common.schoolEstimate= observe.common.schoolType= @@ -960,7 +960,7 @@ observe.common.settingShape= observe.common.sex= observe.common.sizeMeasure= observe.common.sizeMeasureType= -observe.common.species= +observe.common.species=Species observe.common.species/scientificLabel= observe.common.speciesFate= observe.common.speciesFaune= @@ -973,7 +973,7 @@ observe.common.startDate= observe.common.startDateFinProgram= observe.common.startDateFinValidite= observe.common.startLogValue= -observe.common.status= +observe.common.status=Status observe.common.step.description= observe.common.stomacFullness= observe.common.storage.not.valid= @@ -1004,12 +1004,12 @@ observe.common.transmittingBuoyType= observe.common.tripLongline= observe.common.tripSeine= observe.common.tripType= -observe.common.trips.list= +observe.common.trips.list=List of trips observe.common.typeTransmittingBuoyOperation= observe.common.undefined= observe.common.undefined.tip= observe.common.uri= -observe.common.vessel= +observe.common.vessel=Boat observe.common.vessel/label1= observe.common.vessel/label2= observe.common.vessel/label3= @@ -1019,7 +1019,7 @@ observe.common.vessel/label6= observe.common.vessel/label7= observe.common.vessel/label8= observe.common.vesselActivityLongline= -observe.common.vesselActivitySeine= +observe.common.vesselActivitySeine=Boat Activity observe.common.vesselActivitySeine.comment= observe.common.vesselActivitySeine/label1= observe.common.vesselActivitySeine/label2= @@ -1045,48 +1045,48 @@ observe.common.well= observe.common.wind= observe.common.yearService= observe.comon.exist.on.remote= -observe.config.category.changeStorage= -observe.config.category.changeStorage.description= -observe.config.category.directories= -observe.config.category.directories.description= -observe.config.category.gps= -observe.config.category.gps.description= -observe.config.category.h2= -observe.config.category.h2.description= +observe.config.category.changeStorage=Data sources +observe.config.category.changeStorage.description=To change Data sources +observe.config.category.directories=Directories +observe.config.category.directories.description=Directories used by application +observe.config.category.gps=GPS +observe.config.category.gps.description=GPS Configuration +observe.config.category.h2=Local data source +observe.config.category.h2.description=Configuration of local data source observe.config.category.map= observe.config.category.map.description= observe.config.category.observation= observe.config.category.observation.description= -observe.config.category.obstuna= -observe.config.category.obstuna.description= -observe.config.category.other= -observe.config.category.other.description= +observe.config.category.obstuna=Remote data source +observe.config.category.obstuna.description=Configuration of remote data source +observe.config.category.other=Other... +observe.config.category.other.description=Other properties observe.config.category.speciesList.longline= observe.config.category.speciesList.longline.description= observe.config.category.speciesList.seine= observe.config.category.speciesList.seine.description= -observe.config.category.synchro= -observe.config.category.synchro.description= -observe.config.configFileName.description= -observe.config.db.locale= -observe.config.defaultBackupDirectory.description= -observe.config.defaultCreationMode= -observe.config.defaultDataDirectory.description= -observe.config.defaultDbMode= +observe.config.category.synchro=Admin Tasks +observe.config.category.synchro.description=Administrations tasks to perform on data sources +observe.config.configFileName.description=Configuration filename +observe.config.db.locale=Language of data source +observe.config.defaultBackupDirectory.description=Default directory where are stored backup of data sources +observe.config.defaultCreationMode=Default creation mode of new local data source +observe.config.defaultDataDirectory.description=Default user directory +observe.config.defaultDbMode=Err \:509 observe.config.defaultGpsMaxDelay= -observe.config.defaultGpsMaxSpeed= -observe.config.defaultI18nDirectory.description= -observe.config.defaultInitialDbDump.description= -observe.config.defaultLocalDbDirectory.description= +observe.config.defaultGpsMaxSpeed=Maximum speed +observe.config.defaultI18nDirectory.description=Default i18n directory where to store i18n resources +observe.config.defaultInitialDbDump.description=Default location of initial database +observe.config.defaultLocalDbDirectory.description=Default directory where to store local data source observe.config.defaultMapDirectory.description= -observe.config.defaultReportDirectory.description= -observe.config.defaultResourcesDirectory.description= -observe.config.defaultTmpDirectory.description= -observe.config.defaultValidationReportDirectory.description= -observe.config.devMode= -observe.config.h2.can.migrate.description= -observe.config.h2.login.description= -observe.config.h2.password.description= +observe.config.defaultReportDirectory.description=Default directory where to store report definition files +observe.config.defaultResourcesDirectory.description=Default user resources directory +observe.config.defaultTmpDirectory.description=Default temporary directory used by application and clean at each launch. +observe.config.defaultValidationReportDirectory.description=Default validation report directory +observe.config.devMode=Dev mode +observe.config.h2.can.migrate.description=Flag to know if you can migrate h2 data sources +observe.config.h2.login.description=H2 Login +observe.config.h2.password.description=H2 Password observe.config.h2.serverPort.description= observe.config.logConfigurationFile.description= observe.config.map.background.description= @@ -1109,14 +1109,18 @@ observe.config.observation.mammiferes= observe.config.observation.mensurations= observe.config.observation.oiseaux= observe.config.observation.rejetsThons= -observe.config.obstuna.login.description= -observe.config.obstuna.password.description= -observe.config.obstuna.url.description= -observe.config.obstuna.useSsl.description= -observe.config.pg.can.migrate.description= -observe.config.showMigrationProgression= -observe.config.showMigrationSql= -observe.config.showSql= +observe.config.obstuna.login.description=Remote login +observe.config.obstuna.password.description=Remote password +observe.config.obstuna.url.description=URL of remote data source +observe.config.obstuna.useSsl.description=Flag sets to true when your are using remote with ssl +observe.config.pg.can.migrate.description=Flat sets to true when you can migrate remote data sources +observe.config.server.dataBaseName.description= +observe.config.server.login.description= +observe.config.server.password.description= +observe.config.server.url.description= +observe.config.showMigrationProgression=Show migration progression +observe.config.showMigrationSql=Show migration sql queries +observe.config.showSql=Show sql observe.config.speciesList.longline.catch= observe.config.speciesList.longline.encounter= observe.config.speciesList.seine.nonTargetCatch= @@ -1124,32 +1128,32 @@ observe.config.speciesList.seine.objectObservedSpecies= observe.config.speciesList.seine.objectSchoolEstimate= observe.config.speciesList.seine.schoolEstimate= observe.config.speciesList.seine.targetCatch= -observe.config.ui.autoPopupNumberEditor= -observe.config.ui.changeSynchroSrc= -observe.config.ui.fullscreen= -observe.config.ui.loadLocalStorage= -observe.config.ui.locale= -observe.config.ui.showNumberEditorButton= -observe.config.ui.showTimeEditorSlider= -observe.config.ui.storeRemoteStorage= +observe.config.ui.autoPopupNumberEditor=Flag sets to true when number editor show automaticly popup +observe.config.ui.changeSynchroSrc=Flag sets to true if you can change local source in admin tasks +observe.config.ui.fullscreen=Flag sets to true to lauch application in full screen mode +observe.config.ui.loadLocalStorage=Flag sets to true to load local data source when application starts +observe.config.ui.locale=Application's language +observe.config.ui.showNumberEditorButton=Flag sets to true to show button to invoke popup on number's editors +observe.config.ui.showTimeEditorSlider=Show timer slider +observe.config.ui.storeRemoteStorage=Flag sets to true to store in config a remote connexion (except passwords) observe.content.mode.create.tip= observe.content.mode.read.tip= observe.content.mode.update.tip= -observe.encounter.action.create= -observe.encounter.action.create.tip= -observe.encounter.count= -observe.encounter.distance= -observe.encounter.encounterType= -observe.encounter.species= -observe.encounter.table.count= -observe.encounter.table.count.tip= -observe.encounter.table.distance= -observe.encounter.table.distance.tip= -observe.encounter.table.encouterType= -observe.encounter.table.encouterType.tip= -observe.encounter.table.species= -observe.encounter.table.species.tip= -observe.encounter.title= +observe.encounter.action.create=Insert this encounter +observe.encounter.action.create.tip=Insert this encounter +observe.encounter.count=Count +observe.encounter.distance=Distance (m) +observe.encounter.encounterType=Type +observe.encounter.species=species +observe.encounter.table.count=Count +observe.encounter.table.count.tip=Count +observe.encounter.table.distance=Distance (m) +observe.encounter.table.distance.tip=Distance (m) +observe.encounter.table.encouterType=Type +observe.encounter.table.encouterType.tip=Type +observe.encounter.table.species=Species +observe.encounter.table.species.tip=Species +observe.encounter.title=Encounters observe.entity.message.updating= observe.error.can.not.create.directory= observe.error.no.activity.6= @@ -1162,104 +1166,104 @@ observe.error.speciesList.seine.objectSchoolEstimate.notFound= observe.error.speciesList.seine.targetCatch.notFound= observe.error.storage.could.not.backup.unsane.local.db= observe.error.storage.could.not.load.local.db= -observe.floatingObject.message.creating= -observe.floatingObject.message.updating= -observe.floatingObject.title= +observe.floatingObject.message.creating=Creating a floating object +observe.floatingObject.message.updating=updating a floating object +observe.floatingObject.title=DCP observe.floatingObjectTransmittingBuoyOperation.title= -observe.floatlinesComposition.action.create= -observe.floatlinesComposition.action.create.tip= -observe.floatlinesComposition.length= -observe.floatlinesComposition.lineType= -observe.floatlinesComposition.proportion= -observe.floatlinesComposition.proportionSum= -observe.floatlinesComposition.table.length= -observe.floatlinesComposition.table.length.tip= -observe.floatlinesComposition.table.lineType= -observe.floatlinesComposition.table.lineType.tip= -observe.floatlinesComposition.table.proportion= -observe.floatlinesComposition.table.proportion.tip= -observe.floatlinesComposition.title= -observe.gear.availableGearCaracteristic= -observe.gear.gearCaracteristic= -observe.gear.gearCaracteristicType= -observe.gear.selectedGearCaracteristic= -observe.gear.tab.gearCaracteristic= -observe.gear.tab.general= -observe.gear.unit= -observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement= -observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip= -observe.gearUseFeaturesLongline.comment= -observe.gearUseFeaturesLongline.gear= -observe.gearUseFeaturesLongline.number= -observe.gearUseFeaturesLongline.tab.general= -observe.gearUseFeaturesLongline.tab.measurements= -observe.gearUseFeaturesLongline.table.comment= -observe.gearUseFeaturesLongline.table.comment.tip= -observe.gearUseFeaturesLongline.table.gear= -observe.gearUseFeaturesLongline.table.gear.tip= -observe.gearUseFeaturesLongline.table.gearCaracteristic= -observe.gearUseFeaturesLongline.table.gearCaracteristic.tip= -observe.gearUseFeaturesLongline.table.number= -observe.gearUseFeaturesLongline.table.number.tip= -observe.gearUseFeaturesLongline.table.usedInTrip= -observe.gearUseFeaturesLongline.table.usedInTrip.tip= -observe.gearUseFeaturesLongline.table.value= -observe.gearUseFeaturesLongline.table.value.tip= -observe.gearUseFeaturesLongline.title= -observe.gearUseFeaturesLongline.usedInTrip= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip= -observe.gearUseFeaturesSeine.comment= -observe.gearUseFeaturesSeine.gear= -observe.gearUseFeaturesSeine.number= -observe.gearUseFeaturesSeine.tab.general= -observe.gearUseFeaturesSeine.tab.measurements= -observe.gearUseFeaturesSeine.table.comment= -observe.gearUseFeaturesSeine.table.comment.tip= -observe.gearUseFeaturesSeine.table.gear= -observe.gearUseFeaturesSeine.table.gear.tip= -observe.gearUseFeaturesSeine.table.gearCaracteristic= -observe.gearUseFeaturesSeine.table.gearCaracteristic.tip= -observe.gearUseFeaturesSeine.table.number= -observe.gearUseFeaturesSeine.table.number.tip= -observe.gearUseFeaturesSeine.table.usedInTrip= -observe.gearUseFeaturesSeine.table.usedInTrip.tip= -observe.gearUseFeaturesSeine.table.value= -observe.gearUseFeaturesSeine.table.value.tip= -observe.gearUseFeaturesSeine.title= -observe.gearUseFeaturesSeine.usedInTrip= +observe.floatlinesComposition.action.create=Insert this floatline +observe.floatlinesComposition.action.create.tip=Insert this floatline +observe.floatlinesComposition.length=Length +observe.floatlinesComposition.lineType=Line type +observe.floatlinesComposition.proportion=Proportion +observe.floatlinesComposition.proportionSum=Proportion sum +observe.floatlinesComposition.table.length=Length +observe.floatlinesComposition.table.length.tip=Length +observe.floatlinesComposition.table.lineType=Type +observe.floatlinesComposition.table.lineType.tip=Line type +observe.floatlinesComposition.table.proportion=Proportion +observe.floatlinesComposition.table.proportion.tip=Proportion +observe.floatlinesComposition.title=Floatines +observe.gear.availableGearCaracteristic=Available caracteristics +observe.gear.gearCaracteristic=Gear caracteristic +observe.gear.gearCaracteristicType=Gear caracteristic type +observe.gear.selectedGearCaracteristic=Selected caracteristics +observe.gear.tab.gearCaracteristic=Caracteristics of the gear +observe.gear.tab.general=General caracteristics +observe.gear.unit=Unit +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement=Delete selected measurement +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip=Delete selected measurement +observe.gearUseFeaturesLongline.comment=Comment +observe.gearUseFeaturesLongline.gear=Gear +observe.gearUseFeaturesLongline.number=Number +observe.gearUseFeaturesLongline.tab.general=General +observe.gearUseFeaturesLongline.tab.measurements=Measurements +observe.gearUseFeaturesLongline.table.comment=Comment +observe.gearUseFeaturesLongline.table.comment.tip=Comment +observe.gearUseFeaturesLongline.table.gear=Gear +observe.gearUseFeaturesLongline.table.gear.tip=Gear +observe.gearUseFeaturesLongline.table.gearCaracteristic=Caracteristic +observe.gearUseFeaturesLongline.table.gearCaracteristic.tip=Gear caracteristic +observe.gearUseFeaturesLongline.table.number=Number +observe.gearUseFeaturesLongline.table.number.tip=Number +observe.gearUseFeaturesLongline.table.usedInTrip=Used +observe.gearUseFeaturesLongline.table.usedInTrip.tip=Used in trip +observe.gearUseFeaturesLongline.table.value=Value +observe.gearUseFeaturesLongline.table.value.tip=Caracteristic value +observe.gearUseFeaturesLongline.title=Gears +observe.gearUseFeaturesLongline.usedInTrip=Used in trip +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement=Delete selected measurement +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip=Delete selected measurement +observe.gearUseFeaturesSeine.comment=Comment +observe.gearUseFeaturesSeine.gear=Gear +observe.gearUseFeaturesSeine.number=Number +observe.gearUseFeaturesSeine.tab.general=General +observe.gearUseFeaturesSeine.tab.measurements=Measurements +observe.gearUseFeaturesSeine.table.comment=Comment +observe.gearUseFeaturesSeine.table.comment.tip=Comment +observe.gearUseFeaturesSeine.table.gear=Gear +observe.gearUseFeaturesSeine.table.gear.tip=Gear +observe.gearUseFeaturesSeine.table.gearCaracteristic=Caracteristic +observe.gearUseFeaturesSeine.table.gearCaracteristic.tip=Gear caracteristic +observe.gearUseFeaturesSeine.table.number=Number +observe.gearUseFeaturesSeine.table.number.tip=Number +observe.gearUseFeaturesSeine.table.usedInTrip=Used +observe.gearUseFeaturesSeine.table.usedInTrip.tip=Used in trip +observe.gearUseFeaturesSeine.table.value=Value +observe.gearUseFeaturesSeine.table.value.tip=Caracteristic value +observe.gearUseFeaturesSeine.title=Gears +observe.gearUseFeaturesSeine.usedInTrip=Used in trip observe.harbour.coordinates= observe.harbour.locode= observe.harbour.name= -observe.hooksComposition.action.create= -observe.hooksComposition.action.create.tip= -observe.hooksComposition.hookOffset= -observe.hooksComposition.hookSize= -observe.hooksComposition.hookType= -observe.hooksComposition.proportion= -observe.hooksComposition.proportionSum= -observe.hooksComposition.table.hookOffset= -observe.hooksComposition.table.hookOffset.tip= -observe.hooksComposition.table.hookSize= -observe.hooksComposition.table.hookSize.tip= -observe.hooksComposition.table.hookType= -observe.hooksComposition.table.hookType.tip= -observe.hooksComposition.table.proportion= -observe.hooksComposition.table.proportion.tip= -observe.hooksComposition.title= -observe.info.selected.validators= -observe.info.validation.credentials= -observe.init.local.db.detected= -observe.init.no.initial.dump.detected= -observe.init.no.local.db.detected= -observe.init.storage.done= -observe.label.coefficients.info= +observe.hooksComposition.action.create=Insert this hook +observe.hooksComposition.action.create.tip=Insert this hook +observe.hooksComposition.hookOffset=Offset +observe.hooksComposition.hookSize=Size +observe.hooksComposition.hookType=Type +observe.hooksComposition.proportion=Proportion +observe.hooksComposition.proportionSum=Proportion sum +observe.hooksComposition.table.hookOffset=Offset +observe.hooksComposition.table.hookOffset.tip=Offset +observe.hooksComposition.table.hookSize=Size +observe.hooksComposition.table.hookSize.tip=Size +observe.hooksComposition.table.hookType=Type +observe.hooksComposition.table.hookType.tip=Type +observe.hooksComposition.table.proportion=Proportion +observe.hooksComposition.table.proportion.tip=Proportion +observe.hooksComposition.title=Hooks +observe.info.selected.validators=You must select at least one validator to continue. +observe.info.validation.credentials=To validate referentiel (resp. data), You must have rw credentials. +observe.init.local.db.detected=%1$s detected. +observe.init.no.initial.dump.detected=Internal data source %1$s not detected. +observe.init.no.local.db.detected=Local data source %1$s not detected. +observe.init.storage.done=Init of Persistent Service done. +observe.label.coefficients.info=TODO Expliquer la syntaxe des coefficients observe.label.lengthWeightFormula.info= -observe.label.usage.data.title= -observe.label.usage.referentiel.title= +observe.label.usage.data.title=Data '%1$s' (%2$d occurrences) +observe.label.usage.referentiel.title=Referentiel '%1$s' (%2$d occurrences) observe.label.weightLengthFormula.info= -observe.lengthWeightParameter.tab.general= -observe.lengthWeightParameter.tab.other= +observe.lengthWeightParameter.tab.general=General caracteristics +observe.lengthWeightParameter.tab.other=Other caracteristics observe.list.HookSize= observe.list.HookType= observe.list.baitHaulingStatus= @@ -1321,83 +1325,88 @@ observe.list.vesselType= observe.list.weightCategory= observe.list.weightMeasureType= observe.list.wind= -observe.longlineDetailComposition.action.deleteAllSections= -observe.longlineDetailComposition.action.deleteAllSections.tip= -observe.longlineDetailComposition.action.deleteSelectedBasket= -observe.longlineDetailComposition.action.deleteSelectedBasket.tip= -observe.longlineDetailComposition.action.deleteSelectedBranchline= -observe.longlineDetailComposition.action.deleteSelectedBranchline.tip= -observe.longlineDetailComposition.action.deleteSelectedSection= -observe.longlineDetailComposition.action.deleteSelectedSection.tip= -observe.longlineDetailComposition.action.deleteSelectedSectionTemplate= -observe.longlineDetailComposition.action.deleteSelectedSectionTemplate.tip= -observe.longlineDetailComposition.action.generateAllSections= -observe.longlineDetailComposition.action.generateAllSections.tip= -observe.longlineDetailComposition.action.insertAfterSelectedBasket= -observe.longlineDetailComposition.action.insertAfterSelectedBasket.tip= -observe.longlineDetailComposition.action.insertAfterSelectedBranchline= -observe.longlineDetailComposition.action.insertAfterSelectedBranchline.tip= -observe.longlineDetailComposition.action.insertAfterSelectedSection= -observe.longlineDetailComposition.action.insertAfterSelectedSection.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedBasket= -observe.longlineDetailComposition.action.insertBeforeSelectedBasket.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedBranchline= -observe.longlineDetailComposition.action.insertBeforeSelectedBranchline.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedSection= -observe.longlineDetailComposition.action.insertBeforeSelectedSection.tip= -observe.longlineDetailComposition.baskets= -observe.longlineDetailComposition.basketsTable.floatline1Length= -observe.longlineDetailComposition.basketsTable.floatline1Length.tip= -observe.longlineDetailComposition.basketsTable.floatline2Length= -observe.longlineDetailComposition.basketsTable.floatline2Length.tip= -observe.longlineDetailComposition.basketsTable.haulingIdentifier= -observe.longlineDetailComposition.basketsTable.haulingIdentifier.tip= -observe.longlineDetailComposition.basketsTable.settingIdentifier= -observe.longlineDetailComposition.basketsTable.settingIdentifier.tip= -observe.longlineDetailComposition.branchlines= -observe.longlineDetailComposition.branchlinesTable.branchlineLength= -observe.longlineDetailComposition.branchlinesTable.branchlineLength.tip= -observe.longlineDetailComposition.branchlinesTable.haulingIdentifier= -observe.longlineDetailComposition.branchlinesTable.haulingIdentifier.tip= -observe.longlineDetailComposition.branchlinesTable.settingIdentifier= -observe.longlineDetailComposition.branchlinesTable.settingIdentifier.tip= -observe.longlineDetailComposition.branchlinesTable.tracelineLength= -observe.longlineDetailComposition.branchlinesTable.tracelineLength.tip= -observe.longlineDetailComposition.canGenerate= +observe.longlineDetailComposition.action.deleteAllSections=Remove all +observe.longlineDetailComposition.action.deleteAllSections.tip=Remove all sections - baskets - branchlines +observe.longlineDetailComposition.action.deleteSelectedBasket=Delete basket +observe.longlineDetailComposition.action.deleteSelectedBasket.tip=Delete selected basket +observe.longlineDetailComposition.action.deleteSelectedBranchline=Delete branchline +observe.longlineDetailComposition.action.deleteSelectedBranchline.tip=Delete selected branchline +observe.longlineDetailComposition.action.deleteSelectedSection=Delete section +observe.longlineDetailComposition.action.deleteSelectedSection.tip=Delete selected section +observe.longlineDetailComposition.action.deleteSelectedSectionTemplate=Delete section template +observe.longlineDetailComposition.action.deleteSelectedSectionTemplate.tip=Delete selected section template +observe.longlineDetailComposition.action.generateAllSections=Generate all +observe.longlineDetailComposition.action.generateAllSections.tip=Generate all sections - baskets and branchlines +observe.longlineDetailComposition.action.insertAfterSelectedBasket=Insert after +observe.longlineDetailComposition.action.insertAfterSelectedBasket.tip=Insert after selected basket +observe.longlineDetailComposition.action.insertAfterSelectedBranchline=Insert after +observe.longlineDetailComposition.action.insertAfterSelectedBranchline.tip=Insert after selected branchline +observe.longlineDetailComposition.action.insertAfterSelectedSection=Insert after +observe.longlineDetailComposition.action.insertAfterSelectedSection.tip=Insert after selected section +observe.longlineDetailComposition.action.insertBeforeSelectedBasket=Insert before +observe.longlineDetailComposition.action.insertBeforeSelectedBasket.tip=Insert before selected basket +observe.longlineDetailComposition.action.insertBeforeSelectedBranchline=Insert before +observe.longlineDetailComposition.action.insertBeforeSelectedBranchline.tip=Insert before selected branchline +observe.longlineDetailComposition.action.insertBeforeSelectedSection=Insert before +observe.longlineDetailComposition.action.insertBeforeSelectedSection.tip=Insert before selected section +observe.longlineDetailComposition.baskets=Baskets +observe.longlineDetailComposition.basketsTable.floatline1Length=Floatline 1 length (m) +observe.longlineDetailComposition.basketsTable.floatline1Length.tip=Floatline 1 length (m) +observe.longlineDetailComposition.basketsTable.floatline2Length=Floatline 2 length (m) +observe.longlineDetailComposition.basketsTable.floatline2Length.tip=Floatline 2 length (m) +observe.longlineDetailComposition.basketsTable.haulingIdentifier=Hauling Id +observe.longlineDetailComposition.basketsTable.haulingIdentifier.tip=Hauling Identifier +observe.longlineDetailComposition.basketsTable.settingIdentifier=Setting Identifier +observe.longlineDetailComposition.basketsTable.settingIdentifier.tip=Setting Id +observe.longlineDetailComposition.branchlines=Branchlines +observe.longlineDetailComposition.branchlinesTable.branchlineLength=Branchline length (m) +observe.longlineDetailComposition.branchlinesTable.branchlineLength.tip=Branchline length (m) +observe.longlineDetailComposition.branchlinesTable.haulingIdentifier=Hauling Id +observe.longlineDetailComposition.branchlinesTable.haulingIdentifier.tip=Hauling Identifier +observe.longlineDetailComposition.branchlinesTable.settingIdentifier=Setting Identifier +observe.longlineDetailComposition.branchlinesTable.settingIdentifier.tip=Setting Id +observe.longlineDetailComposition.branchlinesTable.tracelineLength=Traceline length (m) +observe.longlineDetailComposition.branchlinesTable.tracelineLength.tip=Traceline length (m) +observe.longlineDetailComposition.canGenerate=Can generate observe.longlineDetailComposition.firstTemplate.template.notCompilant.basketCount= -observe.longlineDetailComposition.message.updating= -observe.longlineDetailComposition.sectionTemplatesTable.identifier= -observe.longlineDetailComposition.sectionTemplatesTable.identifier.tip= -observe.longlineDetailComposition.sectionTemplatesTable.value= -observe.longlineDetailComposition.sectionTemplatesTable.value.tip= -observe.longlineDetailComposition.sections= -observe.longlineDetailComposition.sectionsTable.haulingIdentifier= -observe.longlineDetailComposition.sectionsTable.haulingIdentifier.tip= -observe.longlineDetailComposition.sectionsTable.settingIdentifier= -observe.longlineDetailComposition.sectionsTable.settingIdentifier.tip= -observe.longlineDetailComposition.sectionsTable.template= -observe.longlineDetailComposition.sectionsTable.template.tip= -observe.longlineDetailComposition.tab.branchlineDetail= -observe.longlineDetailComposition.tab.composition= -observe.longlineDetailComposition.tab.generate= -observe.longlineDetailComposition.title= +observe.longlineDetailComposition.message.updating=Updating composition details +observe.longlineDetailComposition.sectionTemplatesTable.identifier=Identifier +observe.longlineDetailComposition.sectionTemplatesTable.identifier.tip=Unique section template identifier +observe.longlineDetailComposition.sectionTemplatesTable.value=Value +observe.longlineDetailComposition.sectionTemplatesTable.value.tip=Template value +observe.longlineDetailComposition.sections=Sections +observe.longlineDetailComposition.sectionsTable.haulingIdentifier=Hauling Id +observe.longlineDetailComposition.sectionsTable.haulingIdentifier.tip=Hauling Identifier +observe.longlineDetailComposition.sectionsTable.settingIdentifier=Setting Id +observe.longlineDetailComposition.sectionsTable.settingIdentifier.tip=Setting Identifier +observe.longlineDetailComposition.sectionsTable.template=Template +observe.longlineDetailComposition.sectionsTable.template.tip=Template used to generate baskets floatline lengths +observe.longlineDetailComposition.tab.branchlineDetail=Branchline detail +observe.longlineDetailComposition.tab.composition=Composition +observe.longlineDetailComposition.tab.generate=generation +observe.longlineDetailComposition.title=Detailed composition observe.longlineDetailComposition.title.section.cant.use.firstTemplate= -observe.longlineGlobalComposition.availableMitigationType= -observe.longlineGlobalComposition.message.updating= -observe.longlineGlobalComposition.mitigationType= -observe.longlineGlobalComposition.selectedMitigationType= -observe.longlineGlobalComposition.tab.baitsComposition= -observe.longlineGlobalComposition.tab.branchlinesComposition= -observe.longlineGlobalComposition.tab.floatlinesComposition= -observe.longlineGlobalComposition.tab.hooksComposition= -observe.longlineGlobalComposition.tab.mitigationType= -observe.longlineGlobalComposition.title= +observe.longlineGlobalComposition.availableMitigationType=Available mitigations +observe.longlineGlobalComposition.message.updating=Updating global composition +observe.longlineGlobalComposition.mitigationType=Mitigation +observe.longlineGlobalComposition.selectedMitigationType=Selected mitigations +observe.longlineGlobalComposition.tab.baitsComposition=Baits +observe.longlineGlobalComposition.tab.branchlinesComposition=Branchlines +observe.longlineGlobalComposition.tab.floatlinesComposition=Floatines +observe.longlineGlobalComposition.tab.hooksComposition=Hooks +observe.longlineGlobalComposition.tab.mitigationType=Mitigation +observe.longlineGlobalComposition.title=Global composition observe.map.action.exportPng= observe.map.action.exportPng.tip= observe.map.action.zoomIt= observe.map.action.zoomIt.tip= observe.map.east= +observe.map.export.chooseFile.image= observe.map.export.chooseFile.ok= +observe.map.export.chooseFile.overwrite= +observe.map.export.chooseFile.overwrite.cancel= +observe.map.export.chooseFile.overwrite.ok= +observe.map.export.chooseFile.overwrite.title= observe.map.export.chooseFile.png= observe.map.export.chooseFile.title= observe.map.export.overwrite= @@ -1426,19 +1435,19 @@ observe.map.seine.activity.schollType.object= observe.map.seine.harbour.departure= observe.map.seine.harbour.landing= observe.map.south= -observe.map.waitLoading= +observe.map.waitLoading=< Please wait while loading the map > observe.map.west= observe.measurement.delete.message= -observe.menu.actions= -observe.menu.application.locale= -observe.menu.configuration= -observe.menu.configuration.tip= -observe.menu.db.locale= -observe.menu.file= -observe.menu.help= -observe.menu.locale= -observe.menu.navigation= -observe.menu.storage= +observe.menu.actions=Actions +observe.menu.application.locale=Application +observe.menu.configuration=Configuration +observe.menu.configuration.tip=To configure application +observe.menu.db.locale=Storage +observe.menu.file=File +observe.menu.help=Help +observe.menu.locale=Languages +observe.menu.navigation=Navigation +observe.menu.storage=Storage observe.message.can.not.write.data= observe.message.cant.add.echantillonRejetThon= observe.message.cant.add.echantillonTargetCatch= @@ -1446,14 +1455,14 @@ observe.message.cant.add.nonTargetSample= observe.message.consolidate.operation.done= observe.message.consolidate.save.changes= observe.message.creating.referentiel= -observe.message.db.closed= -observe.message.db.loaded= -observe.message.db.loading= -observe.message.db.none.loaded= -observe.message.db.none.loaded.tip= -observe.message.delete= -observe.message.delete.directory= -observe.message.delete.new= +observe.message.db.closed=%1$s was closed +observe.message.db.loaded=%1$s was loaded +observe.message.db.loading=%1$s loading... +observe.message.db.none.loaded=< No data source loaded > +observe.message.db.none.loaded.tip=No data source loaded... +observe.message.delete=Confirm to delete object\:\n\n '%1$s' - '%2$s'\n +observe.message.delete.directory=Delete directory %1$s +observe.message.delete.new=Confirm to delete object\:\n\n '%1$s'\n observe.message.detected.accepted.interval= observe.message.detected.rejected.interval= observe.message.exportData.delete.remote.maree= @@ -1484,7 +1493,7 @@ observe.message.no.accepted.intervalle.detected= observe.message.no.activity.detected= observe.message.no.activity.for.route= observe.message.no.activity.for.trip= -observe.message.no.local.db.found= +observe.message.no.local.db.found=Local data source does not exist (location %1$s).\n\nYou can create it or connect to a remote data source. observe.message.no.open.maree.detected= observe.message.no.report.selected= observe.message.no.route.detected= @@ -1498,7 +1507,7 @@ observe.message.quit.valid.edit= observe.message.referentiel.editable= observe.message.referentiel.home= observe.message.referentiel.no.editable= -observe.message.save.configuration= +observe.message.save.configuration=Save configuration in file %1$s observe.message.select.report= observe.message.server.info= observe.message.show.usage.for.delete= @@ -1536,8 +1545,9 @@ observe.message.validation.start.maree= observe.message.validation.start.referentiel= observe.message.validation.use.storage= observe.message.warning.will.be.delete= -observe.navigationMenu.moveTrip= -observe.navigationMenu.noAction= +observe.model.version= +observe.navigationMenu.moveTrip=Change program +observe.navigationMenu.noAction=< No action > observe.nonTargetCatch.message.table.will.delete.nonTargetSample= observe.nonTargetCatch.table.catchWeight= observe.nonTargetCatch.table.catchWeight.tip= @@ -1582,9 +1592,9 @@ observe.obstuna.action.security= observe.obstuna.action.security.description= observe.obstuna.action.update= observe.obstuna.action.update.description= -observe.person.country= -observe.program.tab.general= -observe.program.tab.observations= +observe.person.country=Nationality +observe.program.tab.general=General caracteristics +observe.program.tab.observations=Observations observe.route.message.active.found= observe.route.message.active.found.for.other.trip= observe.route.message.creating= @@ -1592,8 +1602,8 @@ observe.route.message.no.active.found= observe.route.message.no.active.found.for.other.trip= observe.route.message.not.open= observe.route.message.updating= -observe.route.title= -observe.routes.title= +observe.route.title=Route +observe.routes.title=Routes observe.runner.config.loaded= observe.runner.config.migrate.file= observe.runner.context.loaded= @@ -1618,10 +1628,10 @@ observe.schoolEstimate.table.speciesThon= observe.schoolEstimate.table.speciesThon.tip= observe.schoolEstimate.table.weight= observe.schoolEstimate.table.weight.tip= -observe.section.cant.delete.message= -observe.section.cant.delete.title= -observe.sectionTemplate.delete.message= -observe.sections.delete.message= +observe.section.cant.delete.message=The current section can not be deleted since it used by other data. +observe.section.cant.delete.title=Can't delete section +observe.sectionTemplate.delete.message=Confirm to delete current template. +observe.sections.delete.message=Confirm to delete all sections. observe.security.referentiel= observe.security.referentiel.tip= observe.security.role= @@ -1632,78 +1642,78 @@ observe.security.unused= observe.security.unused.tip= observe.security.utilisateur= observe.security.utilisateur.tip= -observe.sensorUsed.action.create= -observe.sensorUsed.action.create.tip= -observe.sensorUsed.action.reset.dataLocation.tip= -observe.sensorUsed.action.reset.sensorSerialNo.tip= -observe.sensorUsed.data= -observe.sensorUsed.dataLocation= -observe.sensorUsed.dataLocation.tip= -observe.sensorUsed.delete.data.message= -observe.sensorUsed.deleteData= -observe.sensorUsed.deleteData.tip= -observe.sensorUsed.exportData= -observe.sensorUsed.exportData.tip= -observe.sensorUsed.importData= -observe.sensorUsed.importData.tip= -observe.sensorUsed.message.data.exported= -observe.sensorUsed.message.data.imported= -observe.sensorUsed.sensorBrand= -observe.sensorUsed.sensorDataFormat= -observe.sensorUsed.sensorSerialNo= -observe.sensorUsed.sensorType= -observe.sensorUsed.table.data= -observe.sensorUsed.table.data.tip= -observe.sensorUsed.table.dataLocation= -observe.sensorUsed.table.dataLocation.tip= -observe.sensorUsed.table.sensorBrand= -observe.sensorUsed.table.sensorBrand.tip= -observe.sensorUsed.table.sensorDataFormat= -observe.sensorUsed.table.sensorDataFormat.tip= -observe.sensorUsed.table.sensorSerialNo= -observe.sensorUsed.table.sensorSerialNo.tip= -observe.sensorUsed.table.sensorType= -observe.sensorUsed.table.sensorType.tip= -observe.sensorUsed.title= -observe.setLongline.action.reset.homeId.tip= -observe.setLongline.basketsPerSectionCount= -observe.setLongline.branchlinesPerBasketCount= -observe.setLongline.haulingBreaks= -observe.setLongline.haulingDirectionSameAsSetting= -observe.setLongline.haulingEndCoordinates= -observe.setLongline.haulingEndTimeStamp= -observe.setLongline.haulingStartCoordinates= -observe.setLongline.haulingStartTimeStamp= -observe.setLongline.homeId= -observe.setLongline.lightsticksColor= -observe.setLongline.lightsticksPerBasketCount= -observe.setLongline.lightsticksType= -observe.setLongline.lineType= -observe.setLongline.maxDepthTargeted= -observe.setLongline.message.creating= -observe.setLongline.message.updating= -observe.setLongline.monitored= -observe.setLongline.number= -observe.setLongline.settingEndCoordinates= -observe.setLongline.settingEndTimeStamp= -observe.setLongline.settingShape= -observe.setLongline.settingStartCoordinates= -observe.setLongline.settingStartTimeStamp= -observe.setLongline.settingVesselSpeed= -observe.setLongline.shooterSpeed= -observe.setLongline.shooterUsed= -observe.setLongline.snapWeight= -observe.setLongline.swivelWeight= -observe.setLongline.tab.hauling= -observe.setLongline.tab.setting= -observe.setLongline.tab.settingCaracteristics= -observe.setLongline.timeBetweenHooks= -observe.setLongline.title= -observe.setLongline.totalBasketsCount= -observe.setLongline.totalHooksCount= -observe.setLongline.totalSectionsCount= -observe.setLongline.weightedSnap= -observe.setLongline.weightedSwivel= +observe.sensorUsed.action.create=Insert the sensor +observe.sensorUsed.action.create.tip=Insert this new sensor used +observe.sensorUsed.action.reset.dataLocation.tip=Reset data location +observe.sensorUsed.action.reset.sensorSerialNo.tip=Reset serial no +observe.sensorUsed.data=Data +observe.sensorUsed.dataLocation=Data location +observe.sensorUsed.dataLocation.tip=Data file location +observe.sensorUsed.delete.data.message=Confirm to delete the data file +observe.sensorUsed.deleteData=Delete +observe.sensorUsed.deleteData.tip=Delete the data file +observe.sensorUsed.exportData=Export +observe.sensorUsed.exportData.tip=Export data file +observe.sensorUsed.importData=Import +observe.sensorUsed.importData.tip=Import the data file +observe.sensorUsed.message.data.exported=the data file was exported at %s. +observe.sensorUsed.message.data.imported=the data file %s was imported +observe.sensorUsed.sensorBrand=Brand +observe.sensorUsed.sensorDataFormat=Data format +observe.sensorUsed.sensorSerialNo=Serial no +observe.sensorUsed.sensorType=Type +observe.sensorUsed.table.data=Data +observe.sensorUsed.table.data.tip=Data +observe.sensorUsed.table.dataLocation=Data location +observe.sensorUsed.table.dataLocation.tip=Data location +observe.sensorUsed.table.sensorBrand=Brand +observe.sensorUsed.table.sensorBrand.tip=Sensor brand +observe.sensorUsed.table.sensorDataFormat=Data format +observe.sensorUsed.table.sensorDataFormat.tip=Data format +observe.sensorUsed.table.sensorSerialNo=Serial no +observe.sensorUsed.table.sensorSerialNo.tip=Sensor serial no +observe.sensorUsed.table.sensorType=Type +observe.sensorUsed.table.sensorType.tip=Sensor type +observe.sensorUsed.title=Sensors ursed +observe.setLongline.action.reset.homeId.tip=Reset home id +observe.setLongline.basketsPerSectionCount=Baskets per section count +observe.setLongline.branchlinesPerBasketCount=Hooks per basket count +observe.setLongline.haulingBreaks=Number of cuts +observe.setLongline.haulingDirectionSameAsSetting=Direction same as setting +observe.setLongline.haulingEndCoordinates=Hauling end coordinates +observe.setLongline.haulingEndTimeStamp=End timestamp +observe.setLongline.haulingStartCoordinates=Hauling start coordinates +observe.setLongline.haulingStartTimeStamp=Start timestamp +observe.setLongline.homeId=Home id +observe.setLongline.lightsticksColor=Lightsticks color +observe.setLongline.lightsticksPerBasketCount=lightsticks per basket count +observe.setLongline.lightsticksType=Lightsticks type +observe.setLongline.lineType=Line type +observe.setLongline.maxDepthTargeted=Max depth targeted (m) +observe.setLongline.message.creating=Creating fishing operation +observe.setLongline.message.updating=Updating fishing operation +observe.setLongline.monitored=Monitored +observe.setLongline.number=Number +observe.setLongline.settingEndCoordinates=Setting end coordinates +observe.setLongline.settingEndTimeStamp=End timestamp +observe.setLongline.settingShape=Setting shape +observe.setLongline.settingStartCoordinates=Setting start coordinates +observe.setLongline.settingStartTimeStamp=Start timestamp +observe.setLongline.settingVesselSpeed=Vessel spped (kts) +observe.setLongline.shooterSpeed=Shooter speed (kts) +observe.setLongline.shooterUsed=Shooter used +observe.setLongline.snapWeight=Snap weight (kg) +observe.setLongline.swivelWeight=swivel weight (kg) +observe.setLongline.tab.hauling=Hauling +observe.setLongline.tab.setting=Setting +observe.setLongline.tab.settingCaracteristics=Caracteristics +observe.setLongline.timeBetweenHooks=time between hooks +observe.setLongline.title=Fishing operation +observe.setLongline.totalBasketsCount=Total baskets count +observe.setLongline.totalHooksCount=Total hooks count +observe.setLongline.totalSectionsCount=Total sections count +observe.setLongline.weightedSnap=Weighted snap +observe.setLongline.weightedSwivel=Weighted swvel observe.setSeine.currentDirection= observe.setSeine.currentMeasureDepth= observe.setSeine.currentSpeed= @@ -1727,18 +1737,18 @@ observe.setSeine.sonarUsed= observe.setSeine.sonarUsedAvantSet= observe.setSeine.startTime= observe.setSeine.supportVesselName= -observe.setSeine.tab.general= -observe.setSeine.tab.measurements= +observe.setSeine.tab.general=General caracteristics +observe.setSeine.tab.measurements=Measurements observe.setSeine.targetDiscarded= -observe.setSeine.title= -observe.species.availableOcean= -observe.species.selectedOcean= -observe.species.tab.general= -observe.species.tab.other= -observe.speciesList.availableSpecies= -observe.speciesList.selectedSpecies= -observe.speciesList.tab.general= -observe.speciesList.tab.species= +observe.setSeine.title=Set +observe.species.availableOcean=Available oceans +observe.species.selectedOcean=Selected oceans +observe.species.tab.general=General caracteristics +observe.species.tab.other=Other caracteristics +observe.speciesList.availableSpecies=Available species +observe.speciesList.selectedSpecies=Selected species +observe.speciesList.tab.general=General caracteristics +observe.speciesList.tab.species=Species observe.storage.action.canMigrate= observe.storage.connexionStatut.failed= observe.storage.connexionStatut.failed.description= @@ -1754,6 +1764,8 @@ observe.storage.creationMode.importLocalStorage= observe.storage.creationMode.importLocalStorage.description= observe.storage.creationMode.importRemoteStorage= observe.storage.creationMode.importRemoteStorage.description= +observe.storage.creationMode.importServerStorage= +observe.storage.creationMode.importServerStorage.description= observe.storage.creationMode.internalDump= observe.storage.creationMode.internalDump.description= observe.storage.dataPolicy.readData= @@ -1770,6 +1782,8 @@ observe.storage.dbMode.useLocal= observe.storage.dbMode.useLocal.description= observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= +observe.storage.dbMode.useServer= +observe.storage.dbMode.useServer.description= observe.storage.error.dbVersionMismatch= observe.storage.importExternalDump.config= observe.storage.importExternalDump.description= @@ -1791,9 +1805,10 @@ observe.storage.label.import.data= observe.storage.label.import.local= observe.storage.label.import.referentiel= observe.storage.label.import.remote= -observe.storage.label.local= +observe.storage.label.local=Local database observe.storage.label.reference.import.db= observe.storage.label.remote= +observe.storage.label.rest= observe.storage.label.synchro= observe.storage.label.synchro.incoming= observe.storage.label.synchro.referentiel= @@ -1847,6 +1862,7 @@ observe.storage.required.rw.on.data= observe.storage.security.administrateur= observe.storage.selected.dbMode= observe.storage.selectedCreationMode= +observe.storage.server.dataBase= observe.storage.showMigrationProgression= observe.storage.showMigrationSql= observe.storage.step.backup= @@ -1872,13 +1888,19 @@ observe.storage.store.remote.config= observe.storage.store.remote.config.tip= observe.storage.useRemoteStorage.config= observe.storage.useRemoteStorage.description= +observe.storage.useServerStorage.config= +observe.storage.useServerStorage.description= observe.synchro.add.object= observe.synchro.common.activity= +observe.synchro.common.exist= observe.synchro.common.latitude= observe.synchro.common.longitude= +observe.synchro.common.maree= +observe.synchro.common.program= observe.synchro.common.quadrant= observe.synchro.common.reference= observe.synchro.common.select= +observe.synchro.common.selected= observe.synchro.common.vitesse= observe.synchro.config.data.mode= observe.synchro.config.data.storage= @@ -2030,67 +2052,67 @@ observe.targetSample.table.speciesThon= observe.targetSample.table.speciesThon.tip= observe.targetSample.table.totalWeight= observe.targetSample.table.totalWeight.tip= -observe.tdr.action.create= -observe.tdr.action.create.tip= -observe.tdr.action.reset.dataLocation.tip= -observe.tdr.action.reset.homeId.tip= -observe.tdr.action.reset.serialNo.tip= -observe.tdr.availableSpecies= -observe.tdr.basket= -observe.tdr.branchline= -observe.tdr.data= -observe.tdr.dataLocation= -observe.tdr.dataLocation.tip= -observe.tdr.delete.data.message= -observe.tdr.deleteData= -observe.tdr.deleteData.tip= -observe.tdr.deployementEnd= -observe.tdr.deployementStart= +observe.tdr.action.create=Insert this recorder +observe.tdr.action.create.tip=Insert this recorder +observe.tdr.action.reset.dataLocation.tip=Reset data location +observe.tdr.action.reset.homeId.tip=Reset homeId +observe.tdr.action.reset.serialNo.tip=Reset serail no +observe.tdr.availableSpecies=Available species +observe.tdr.basket=Basket +observe.tdr.branchline=Branchline +observe.tdr.data=Data +observe.tdr.dataLocation=Data location +observe.tdr.dataLocation.tip=Data location +observe.tdr.delete.data.message=Confirm to delete saved data +observe.tdr.deleteData=Delete +observe.tdr.deleteData.tip=Delete data +observe.tdr.deployementEnd=Deployement end +observe.tdr.deployementStart=Deployement start observe.tdr.enableTimestamp= observe.tdr.enableTimestamp.tip= -observe.tdr.exportData= -observe.tdr.exportData.tip= -observe.tdr.fishingEnd= -observe.tdr.fishingEndDepth= -observe.tdr.fishingStart= -observe.tdr.fishingStartDepth= -observe.tdr.floatline1Length= -observe.tdr.floatline2Length= -observe.tdr.homeId= -observe.tdr.importData= -observe.tdr.importData.tip= -observe.tdr.itemHorizontalPosition= -observe.tdr.itemVerticalPosition= -observe.tdr.locationOnLongline= -observe.tdr.maxFishingDepth= -observe.tdr.meanDeployementDepth= -observe.tdr.meanFishingDepth= -observe.tdr.medianDeployementDepth= -observe.tdr.medianFishingDepth= -observe.tdr.message.data.imported= -observe.tdr.minFishingDepth= -observe.tdr.section= -observe.tdr.selectedSpecies= -observe.tdr.sensorBrand= -observe.tdr.serialNo= -observe.tdr.species= -observe.tdr.tab.caracteristics= -observe.tdr.tab.keyData= +observe.tdr.exportData=Export +observe.tdr.exportData.tip=Export data +observe.tdr.fishingEnd=Fishing End +observe.tdr.fishingEndDepth=Depth at fishing end (m) +observe.tdr.fishingStart=Fishing start +observe.tdr.fishingStartDepth=Depth at fishing start (m) +observe.tdr.floatline1Length=Floatline 1 length (m) +observe.tdr.floatline2Length=Floatline 2 ength (m) +observe.tdr.homeId=Home id +observe.tdr.importData=Import +observe.tdr.importData.tip=Import data +observe.tdr.itemHorizontalPosition=Element position on main line +observe.tdr.itemVerticalPosition=Element position on branchline +observe.tdr.locationOnLongline=Location on longline +observe.tdr.maxFishingDepth=Maximum fishing depth (m) +observe.tdr.meanDeployementDepth=Mean deployement depth (m) +observe.tdr.meanFishingDepth=Maximum fishing depth (m) +observe.tdr.medianDeployementDepth=Median deployement depth (m) +observe.tdr.medianFishingDepth=Median fishing depth (m) +observe.tdr.message.data.imported=Data file (%s) was imported. +observe.tdr.minFishingDepth=Minimum fishing depth (m) +observe.tdr.section=Section +observe.tdr.selectedSpecies=Selected species +observe.tdr.sensorBrand=Brand +observe.tdr.serialNo=Serial No +observe.tdr.species=Species +observe.tdr.tab.caracteristics=Caracteristics +observe.tdr.tab.keyData=Data keys observe.tdr.tab.localisation= -observe.tdr.tab.species= -observe.tdr.tab.timestamp= -observe.tdr.table.data= -observe.tdr.table.homeId= -observe.tdr.table.homeId.tip= -observe.tdr.table.sensorBrand= -observe.tdr.table.sensorBrand.tip= -observe.tdr.table.serialNo= -observe.tdr.table.serialNo.tip= -observe.tdr.title= -observe.title.about= -observe.title.can.not.delete.referentiel= +observe.tdr.tab.species=Associated species +observe.tdr.tab.timestamp=Timestamps +observe.tdr.table.data=Data +observe.tdr.table.homeId=Home id +observe.tdr.table.homeId.tip=Home id +observe.tdr.table.sensorBrand=Brand +observe.tdr.table.sensorBrand.tip=Brand +observe.tdr.table.serialNo=Serial no +observe.tdr.table.serialNo.tip=Serial no +observe.tdr.title=Depth recorders +observe.title.about=About +observe.title.can.not.delete.referentiel=Impossible to delete a referentiel data... observe.title.can.not.export.obstuna= -observe.title.change.storage= +observe.title.change.storage=Change storage observe.title.choose.db.dump= observe.title.choose.db.dump.directory= observe.title.choose.importGPS= @@ -2167,153 +2189,153 @@ observe.title.content.vesselx= observe.title.content.weightCategory= observe.title.content.weightMeasureTypes= observe.title.content.windSpeeds= -observe.title.create.local.db= -observe.title.delete= -observe.title.error.dialog= -observe.title.exportData= -observe.title.exportData.tip= +observe.title.create.local.db=Loading local database +observe.title.delete=Confirm a delete +observe.title.error.dialog=An error occurs\! +observe.title.exportData=Export datas +observe.title.exportData.tip=Export datas to Obstuna observe.title.h2.server.parameters= -observe.title.import.localDB= -observe.title.importGPS= -observe.title.importGPS.tip= -observe.title.load.remote.db= -observe.title.need.confirm= -observe.title.need.confirm.to.desactivate.referentiel= -observe.title.no.local.db.found= -observe.title.report= -observe.title.report.tip= -observe.title.save.localDB= -observe.title.save.remoteDB= -observe.title.show.usage= +observe.title.import.localDB=Import a local database from a backup +observe.title.importGPS=GPS Import +observe.title.importGPS.tip=Import a GPS file +observe.title.load.remote.db=Load remote database +observe.title.need.confirm=Need a confirmation... +observe.title.need.confirm.to.desactivate.referentiel=Need a confirmation to disable a referentiel data... +observe.title.no.local.db.found=No local database found. +observe.title.report=Help to generat reports +observe.title.report.tip=Help to generate reports +observe.title.save.localDB=Save local storage to a file +observe.title.save.remoteDB=Save remote database to a file +observe.title.show.usage=Show usages observe.title.speciesList.not.found= -observe.title.storage.info= -observe.title.synchronize= -observe.title.synchronize.tip= -observe.title.technical.informations= -observe.title.unique.key= -observe.title.validate= -observe.title.validate.tip= -observe.title.welcome.admin= -observe.tree.activityLongline= -observe.tree.activityLongline.unsaved= -observe.tree.activitySeine= -observe.tree.activitySeine.unsaved= -observe.tree.baitHaulingStatus= -observe.tree.baitSettingStatus= -observe.tree.baitType= -observe.tree.catchFateLongline= -observe.tree.catchLongline= -observe.tree.country= -observe.tree.detectionMode= -observe.tree.encounter= +observe.title.storage.info=Storage details +observe.title.synchronize=Synchronize +observe.title.synchronize.tip=Synchronize objectOperation on local database +observe.title.technical.informations=Technical information of %1$s +observe.title.unique.key=Unique keys used in a referentiel +observe.title.validate=Validate datas +observe.title.validate.tip=Validate datas of a storage +observe.title.welcome.admin=Observe Admin +observe.tree.activityLongline=Activity +observe.tree.activityLongline.unsaved=New activity +observe.tree.activitySeine=Activity +observe.tree.activitySeine.unsaved=New activity +observe.tree.baitHaulingStatus=Bait hauling status +observe.tree.baitSettingStatus=Bait setting status +observe.tree.baitType=Bait type +observe.tree.catchFateLongline=Catch fate +observe.tree.catchLongline=Catches +observe.tree.country=Country +observe.tree.detectionMode=Detection mode +observe.tree.encounter=Encounter observe.tree.encounterType= -observe.tree.floatingObject.unsaved= -observe.tree.fpaZone= -observe.tree.gear= -observe.tree.gearCaracteristic= -observe.tree.gearCaracteristicType= +observe.tree.floatingObject.unsaved=New DCP +observe.tree.fpaZone=Fpa zone +observe.tree.gear=Gear +observe.tree.gearCaracteristic=Gear caracteristic +observe.tree.gearCaracteristicType=Gear caracteristic type observe.tree.gearUseFeaturesLongline= -observe.tree.gearUseFeaturesSeine= -observe.tree.harbour= -observe.tree.healthness= -observe.tree.hookPosition= -observe.tree.hookSize= -observe.tree.hookType= -observe.tree.itemHorizontalPosition= -observe.tree.itemVerticalPosition= -observe.tree.lengthWeightParameter= -observe.tree.lightsticksColor= -observe.tree.lightsticksType= -observe.tree.lineType= -observe.tree.longlineDetailComposition= -observe.tree.longlineGlobalComposition= -observe.tree.maturityStatus= -observe.tree.mitigationType= -observe.tree.nonTargetCatch= -observe.tree.nonTargetSample= -observe.tree.objectFate= -observe.tree.objectObservedSpecies= -observe.tree.objectOperation= -observe.tree.objectSchoolEstimate= -observe.tree.objectType= -observe.tree.observedSystem= -observe.tree.ocean= -observe.tree.organism= -observe.tree.person= -observe.tree.program= -observe.tree.reasonForDiscard= -observe.tree.reasonForNoFishing= -observe.tree.reasonForNullSet= -observe.tree.reference.common= -observe.tree.reference.longline= -observe.tree.reference.seine= -observe.tree.route= -observe.tree.route.unsaved= -observe.tree.schoolEstimate= -observe.tree.sensorBrand= -observe.tree.sensorDataFormat= -observe.tree.sensorType= -observe.tree.sensorUsed= +observe.tree.gearUseFeaturesSeine=GearUseFeaturesSeine +observe.tree.harbour=Harbour +observe.tree.healthness=Healthness +observe.tree.hookPosition=Hook position +observe.tree.hookSize=Hook size +observe.tree.hookType=Hook type +observe.tree.itemHorizontalPosition=Item horizontal position +observe.tree.itemVerticalPosition=Item vertical position +observe.tree.lengthWeightParameter=Length-weight relationship +observe.tree.lightsticksColor=Lightsticks color +observe.tree.lightsticksType=Lightsticks type +observe.tree.lineType=Line type +observe.tree.longlineDetailComposition=Detailed composition +observe.tree.longlineGlobalComposition=Global composition +observe.tree.maturityStatus=Maturity status +observe.tree.mitigationType=Mitigation type +observe.tree.nonTargetCatch=Non target catch +observe.tree.nonTargetSample=Non target sample +observe.tree.objectFate=ObjectFate +observe.tree.objectObservedSpecies=Object observed species +observe.tree.objectOperation=Object operation +observe.tree.objectSchoolEstimate=Object school estimate +observe.tree.objectType=Object type +observe.tree.observedSystem=Observed system +observe.tree.ocean=Ocean +observe.tree.organism=Organisme +observe.tree.person=Person +observe.tree.program=Program +observe.tree.reasonForDiscard=Reason for discard +observe.tree.reasonForNoFishing=Reason for no fishing +observe.tree.reasonForNullSet=Reason for null set +observe.tree.reference.common=Common Referential +observe.tree.reference.longline=Longline Referential +observe.tree.reference.seine=Seine Referential +observe.tree.route=Road +observe.tree.route.unsaved=New route +observe.tree.schoolEstimate=School estimate +observe.tree.sensorBrand=Sensor brand +observe.tree.sensorDataFormat=Sensor data format +observe.tree.sensorType=Sensor type +observe.tree.sensorUsed=Sensor used observe.tree.setLongline= -observe.tree.setLongline.unsaved= +observe.tree.setLongline.unsaved=New fishing operation observe.tree.setSeine= -observe.tree.setSeine.unsaved= -observe.tree.settingShape= -observe.tree.sex= -observe.tree.sizeMeasureType= -observe.tree.species= -observe.tree.speciesFate= -observe.tree.speciesGroup= -observe.tree.speciesList= -observe.tree.speciesStatus= -observe.tree.stomacFullness= -observe.tree.surroundingActivity= -observe.tree.targetCatch= -observe.tree.targetDiscarded= -observe.tree.targetSample= -observe.tree.targetSampleCapture= -observe.tree.tdr= -observe.tree.transmittingBuoyOperation= -observe.tree.transmittingBuoyType= -observe.tree.tripLongline.unsaved= -observe.tree.tripSeine.unsaved= -observe.tree.tripType= -observe.tree.vessel= -observe.tree.vesselActivityLongline= -observe.tree.vesselActivitySeine= -observe.tree.vesselSizeCategory= -observe.tree.vesselType= -observe.tree.weightCategory= -observe.tree.weightMeasureType= -observe.tree.wind= -observe.tripLongline.captain= -observe.tripLongline.dataEntryOperator= -observe.tripLongline.endDate= -observe.tripLongline.homeId= -observe.tripLongline.message.active.found= -observe.tripLongline.message.active.found.for.other.program= -observe.tripLongline.message.creating= -observe.tripLongline.message.no.active.found= -observe.tripLongline.message.not.open= -observe.tripLongline.message.updating= -observe.tripLongline.observer= -observe.tripLongline.ocean= -observe.tripLongline.startDate= +observe.tree.setSeine.unsaved=New set +observe.tree.settingShape=Setting shape +observe.tree.sex=Sex +observe.tree.sizeMeasureType=Size measure type +observe.tree.species=Species +observe.tree.speciesFate=Species fate +observe.tree.speciesGroup=Species group +observe.tree.speciesList=Species list +observe.tree.speciesStatus=Species status +observe.tree.stomacFullness=Stomac fullness +observe.tree.surroundingActivity=Surrounding activity +observe.tree.targetCatch=Target catch +observe.tree.targetDiscarded=Target discarded +observe.tree.targetSample=Target sample +observe.tree.targetSampleCapture=Target sample capture +observe.tree.tdr=TDR +observe.tree.transmittingBuoyOperation=Transmitting buoy operation +observe.tree.transmittingBuoyType=Transmitting buoy type +observe.tree.tripLongline.unsaved=New trip +observe.tree.tripSeine.unsaved=New trip +observe.tree.tripType=Trip type +observe.tree.vessel=Boat +observe.tree.vesselActivityLongline=Boat activity +observe.tree.vesselActivitySeine=Boat Activity +observe.tree.vesselSizeCategory=Boat size category +observe.tree.vesselType=Boat type +observe.tree.weightCategory=Weight category +observe.tree.weightMeasureType=Weight measure type +observe.tree.wind=Wind +observe.tripLongline.captain=Capitain +observe.tripLongline.dataEntryOperator=Data entry operator +observe.tripLongline.endDate=End date +observe.tripLongline.homeId=Home id +observe.tripLongline.message.active.found=A trip is opened. +observe.tripLongline.message.active.found.for.other.program=A trip is opened in another program. +observe.tripLongline.message.creating=Creating a trip +observe.tripLongline.message.no.active.found=No opened trip found, you can create a new one or open an existing one. +observe.tripLongline.message.not.open=Current trip is not opened, no edit possible. +observe.tripLongline.message.updating=Updating a trip +observe.tripLongline.observer=Observer +observe.tripLongline.ocean=Ocean +observe.tripLongline.startDate=Start date observe.tripLongline.tab.general= observe.tripLongline.tab.map= -observe.tripLongline.title= -observe.tripLongline.totalFishingOperationsNumber= -observe.tripLongline.tripType= -observe.tripLongline.vessel= -observe.tripSeine.message.active.found= -observe.tripSeine.message.active.found.for.other.program= -observe.tripSeine.message.creating= -observe.tripSeine.message.no.active.found= -observe.tripSeine.message.not.open= -observe.tripSeine.message.updating= -observe.tripSeine.tab.general= -observe.tripSeine.tab.map= -observe.tripSeine.title= +observe.tripLongline.title=Trip +observe.tripLongline.totalFishingOperationsNumber=Total fishing operation count +observe.tripLongline.tripType=Trip type +observe.tripLongline.vessel=Vessel +observe.tripSeine.message.active.found=A trip is opened. +observe.tripSeine.message.active.found.for.other.program=A trip is opened in another program. +observe.tripSeine.message.creating=Creating a trip +observe.tripSeine.message.no.active.found=No opened trip found, you can create a new one or open an existing one. +observe.tripSeine.message.not.open=Current trip is not opened, no edit possible. +observe.tripSeine.message.updating=Updating a trip +observe.tripSeine.tab.general=Caracteristics +observe.tripSeine.tab.map=Map +observe.tripSeine.title=Trip observe.validation.model.type.all= observe.validation.model.type.all.description= observe.validation.model.type.data= @@ -2325,11 +2347,12 @@ observe.validation.report.entities.with.messages= observe.validation.report.entity= observe.validation.report.scopes= observe.validation.report.title= -observe.vessel.tab.general= -observe.vessel.tab.other= -observe.view.message= -observe.view.navigation= +observe.vessel.tab.general=General caracteristics +observe.vessel.tab.other=Other caracteristics +observe.view.message=Messages +observe.view.navigation=Navigation observe.view.server= -observe.warning.nimbus.landf= -observe.warning.no.ui= +observe.warning.nimbus.landf=Could not use Look and Fell Nimbus, need at least version 1.6u10 of java. +observe.warning.no.ui=No gui environment found +observeweb.configuration.description= ui.main.body.synchro.action.copy.to.clipBoard= diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties index eeccb53..14f800b 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties @@ -1,9 +1,9 @@ nuitonutil.error.convertor.noValue= nuitonutil.error.float.convertor= nuitonutil.error.no.convertor= -observe.about.message= -observe.about.translate.content= -observe.about.translate.title= +observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Aplicación de adquisición Application de datos de observadores y de consulta de estos datos desde una base <i>Obstuna</i>.</p> <p>Este projecto se ha iniciado en 2009 por la unidad US 007-OSIRIS del <a href\="http\://www.ird.fr">IRD</a> dentro del marco de <a href\="http\://ww [...] +observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliore [...] +observe.about.translate.title=Traducir ObServe observe.action.HookSize.create.tip= observe.action.HookSize.delete.tip= observe.action.HookSize.detail.tip= @@ -14,21 +14,21 @@ observe.action.HookType.delete.tip= observe.action.HookType.detail.tip= observe.action.HookType.modify.tip= observe.action.HookType.save.tip= -observe.action.about= -observe.action.about.tip= -observe.action.add.floatingObject= -observe.action.add.floatingObject.tip= -observe.action.add.set= -observe.action.add.set.tip= -observe.action.add.setLongline= -observe.action.add.setLongline.tip= -observe.action.admin.cancel= -observe.action.admin.close= -observe.action.apply= -observe.action.auto.copy.to.clipboard= -observe.action.auto.copy.to.clipboard.tip= -observe.action.back.to.list= -observe.action.back.to.list.tip= +observe.action.about=A cerca de +observe.action.about.tip=A cerca de ObServe... +observe.action.add.floatingObject=Añadir un DCP +observe.action.add.floatingObject.tip=Añadir un objeto flotante a la actividad +observe.action.add.set=Añadir un lance +observe.action.add.set.tip=Añadir el lance de la actividad +observe.action.add.setLongline=Añadir la operación de pesca +observe.action.add.setLongline.tip=Añadir la operación de pesca asociada a esta actividad +observe.action.admin.cancel=Anular el asintente +observe.action.admin.close=Cerrar el asistente +observe.action.apply=Aplicar +observe.action.auto.copy.to.clipboard=Copia automatica al portapapeles +observe.action.auto.copy.to.clipboard.tip=Puesta a punto automáticamente el contenido del portapapeles con los resultados +observe.action.back.to.list=Volver a la lista +observe.action.back.to.list.tip=Volver a la lista de datos observe.action.baitHaulingStatus.create.tip= observe.action.baitHaulingStatus.delete.tip= observe.action.baitHaulingStatus.detail.tip= @@ -44,121 +44,121 @@ observe.action.baitType.delete.tip= observe.action.baitType.detail.tip= observe.action.baitType.modify.tip= observe.action.baitType.save.tip= -observe.action.cancel= -observe.action.cancel.create.tip= +observe.action.cancel=Cancelar +observe.action.cancel.create.tip=Cancelar la creación del objeto observe.action.catchFateLongline.create.tip= observe.action.catchFateLongline.delete.tip= observe.action.catchFateLongline.detail.tip= observe.action.catchFateLongline.modify.tip= observe.action.catchFateLongline.save.tip= -observe.action.change.storage= -observe.action.change.storage.tip= -observe.action.choose.db.dump= -observe.action.choose.db.dump.description= -observe.action.choose.db.dump.directory= -observe.action.choose.importGPS= -observe.action.choose.importGPS.description= -observe.action.choose.report.directory= -observe.action.choose.reportFile= -observe.action.choose.reportFile.description= +observe.action.change.storage=Cambiar el origen de datos +observe.action.change.storage.tip=Para cambiar el origen de datos de la aplicación +observe.action.choose.db.dump=Elegir la copia de seguridad +observe.action.choose.db.dump.description=Copia de seguridad de la base (*.sql.gz) +observe.action.choose.db.dump.directory=Elegir el directorio de la copia de seguridad +observe.action.choose.importGPS=Usar este archivo +observe.action.choose.importGPS.description=Archivo GPS (*.gpx) +observe.action.choose.report.directory=Elegir el directorio de los informes +observe.action.choose.reportFile=Elegir el archivo de definición de informe +observe.action.choose.reportFile.description=Archivo de definición (*.properties) observe.action.choose.sensorUsed.exportData= observe.action.choose.sensorUsed.importData= observe.action.choose.tdr.exportData= observe.action.choose.tdr.importData= -observe.action.close= -observe.action.close.activity.tip= -observe.action.close.maree.tip= -observe.action.close.open= -observe.action.close.open.tip= -observe.action.close.route.tip= -observe.action.close.storage= -observe.action.close.storage.tip= -observe.action.close.synchro.tip= -observe.action.closeAndCreate= -observe.action.closeAndCreate.activity= -observe.action.closeAndCreate.activity.tip= -observe.action.closeAndCreate.maree= -observe.action.closeAndCreate.maree.tip= -observe.action.closeAndCreate.route= -observe.action.closeAndCreate.route.tip= +observe.action.close=Cerrar +observe.action.close.activity.tip=Cierre de la actividad abierta +observe.action.close.maree.tip=Cierre de la marea abierta +observe.action.close.open=Cierre +observe.action.close.open.tip=Cierre de los datos abiertos +observe.action.close.route.tip=Cierre de la ruta abierta +observe.action.close.storage=Cerrar el origen de datos +observe.action.close.storage.tip=Cerrar el origen de datos usado actualmente +observe.action.close.synchro.tip=Cerrar la ventana +observe.action.closeAndCreate=Cerrar y crear +observe.action.closeAndCreate.activity=Actividad siguiente +observe.action.closeAndCreate.activity.tip=Cierre de la actividad actual y creación de una nueva +observe.action.closeAndCreate.maree=Marea siguiente +observe.action.closeAndCreate.maree.tip=Cierre de la marea actual y creación de una nueva +observe.action.closeAndCreate.route=Ruta siguiente +observe.action.closeAndCreate.route.tip=Cierre de la ruta actual y creación de una nueva observe.action.closeAndCreate.tip= -observe.action.commandline.configure.ui= +observe.action.commandline.configure.ui=Configurara la aplicación observe.action.commandline.create.id= -observe.action.commandline.disable.main.ui= -observe.action.commandline.help= -observe.action.commandline.help.ui= -observe.action.commandline.launch.admin.ui= -observe.action.commandline.launch.h2.server.mode= -observe.action.commandline.launch.obstuna.admin.ui= -observe.action.commandline.use.jmx= -observe.action.configuration= -observe.action.configuration.tip= -observe.action.configure= -observe.action.continue= -observe.action.copy= -observe.action.copy.column.headers= -observe.action.copy.column.headers.tip= -observe.action.copy.row.headers= -observe.action.copy.row.headers.tip= -observe.action.country.create.tip= -observe.action.country.delete.tip= -observe.action.country.detail.tip= -observe.action.country.modify.tip= -observe.action.country.save.tip= -observe.action.create= -observe.action.create.activity= -observe.action.create.activity.tip= -observe.action.create.entry.tip= +observe.action.commandline.disable.main.ui=No ejecutar la interfaz grafica +observe.action.commandline.help=Mostrar la ayuda +observe.action.commandline.help.ui=Mostrar el manual de usuario (modo grafico) +observe.action.commandline.launch.admin.ui=Ejecutar una operación de administración +observe.action.commandline.launch.h2.server.mode=Ejecutar ObServe en modo servidor +observe.action.commandline.launch.obstuna.admin.ui=Ejecutar una operación de administración sobre Obstuna +observe.action.commandline.use.jmx=Mostrar el soporte JMX +observe.action.configuration=Configuración +observe.action.configuration.tip=Modificar la configuración +observe.action.configure=Configurar +observe.action.continue=Continuar +observe.action.copy=Copiar en el portapeles +observe.action.copy.column.headers=Copiar los encabezados de columnas +observe.action.copy.column.headers.tip=Añadir al resultado las cabeceras de columna +observe.action.copy.row.headers=Copiar las cabeceras de linea +observe.action.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna) +observe.action.country.create.tip=Crear un nuevo país +observe.action.country.delete.tip=Eliminar el país seleccionado +observe.action.country.detail.tip=Ver los detalles del país seleccionado +observe.action.country.modify.tip=Modificar el país seleccionado +observe.action.country.save.tip=Guardar las modificaciones del país +observe.action.create=Crear +observe.action.create.activity=Crear una nueva actividad +observe.action.create.activity.tip=Crear una nueva actividad para la ruta actual +observe.action.create.entry.tip=Crear una nueva entrada observe.action.create.gearUseFeaturesLongline= observe.action.create.gearUseFeaturesLongline.tip= observe.action.create.gearUseFeaturesSeine= observe.action.create.gearUseFeaturesSeine.tip= -observe.action.create.maree= -observe.action.create.maree.tip= -observe.action.create.nonTargetCatch= -observe.action.create.nonTargetCatch.tip= -observe.action.create.nonTargetSample= -observe.action.create.nonTargetSample.tip= +observe.action.create.maree=Crear nueva marea +observe.action.create.maree.tip=Crear nueva marea para el programa actual +observe.action.create.nonTargetCatch=Insertar esta especie/peso/objectFate +observe.action.create.nonTargetCatch.tip=Insertar esta especie/peso/objectFate +observe.action.create.nonTargetSample=Insertar este muestreo +observe.action.create.nonTargetSample.tip=Insertar muestreo de fauna asociada observe.action.create.objectObservedSpecies= -observe.action.create.objectObservedSpecies.tip= -observe.action.create.route= -observe.action.create.route.tip= -observe.action.create.schoolEstimate= -observe.action.create.schoolEstimate.tip= -observe.action.create.targetCatch= -observe.action.create.targetCatch.tip= -observe.action.create.targetDiscarded= -observe.action.create.targetDiscarded.tip= -observe.action.create.targetSample= -observe.action.create.targetSample.tip= -observe.action.create.targetSampleCapture= -observe.action.create.targetSampleCapture.tip= -observe.action.db.locale.es.tip= -observe.action.db.locale.fr.tip= -observe.action.db.locale.uk.tip= -observe.action.delete= -observe.action.delete.activity.tip= -observe.action.delete.entry.tip= -observe.action.delete.floatingObject.tip= -observe.action.delete.maree.tip= -observe.action.delete.route.tip= -observe.action.delete.set.tip= -observe.action.delete.tip= -observe.action.detail= -observe.action.detectionMode.create.tip= -observe.action.detectionMode.delete.tip= -observe.action.detectionMode.detail.tip= -observe.action.detectionMode.modify.tip= -observe.action.detectionMode.save.tip= -observe.action.do.backup= -observe.action.do.backup.tip= +observe.action.create.objectObservedSpecies.tip=Insertar la especie de fauna observada +observe.action.create.route=Crear una nueva ruta +observe.action.create.route.tip=Crear nueva ruta para la marea actual +observe.action.create.schoolEstimate=Insertar estimación +observe.action.create.schoolEstimate.tip=Insertar la nueva estimación en la tabla +observe.action.create.targetCatch=Insertar esta captura/categoria +observe.action.create.targetCatch.tip=Insertar esta captura/categoria +observe.action.create.targetDiscarded=Insertar descarte/categoría/razón +observe.action.create.targetDiscarded.tip=Insertar descarte/categoría/razón +observe.action.create.targetSample=Insertar muestreo +observe.action.create.targetSample.tip=Insertar muestreo de atún descartado +observe.action.create.targetSampleCapture=Insertar muestreo +observe.action.create.targetSampleCapture.tip=Insertar muestreo de atún capturado +observe.action.db.locale.es.tip=Cambia el idioma del referencial al español +observe.action.db.locale.fr.tip=Cambiar el idioma del referencial al francés +observe.action.db.locale.uk.tip=Cambiar el idioma del referencial al inglés +observe.action.delete=Eliminar +observe.action.delete.activity.tip=Eliminar la actividad +observe.action.delete.entry.tip=Cancelar la edición de la entrada actual +observe.action.delete.floatingObject.tip=Eliminar el objeto flotante actual +observe.action.delete.maree.tip=Eliminar la marea +observe.action.delete.route.tip=Eliminar la ruta +observe.action.delete.set.tip=Eliminar el lance +observe.action.delete.tip=Eliminar +observe.action.detail=Ver detalles +observe.action.detectionMode.create.tip=Crear un nuevo modo de detección +observe.action.detectionMode.delete.tip=Eliminar el modo de detección seleccionado +observe.action.detectionMode.detail.tip=Ver los detalles del modo de detección seleccionado +observe.action.detectionMode.modify.tip=Modificar el modo de detección seleccionado +observe.action.detectionMode.save.tip=Guardar las modificaciones del modo de detección +observe.action.do.backup=Guardar la base local +observe.action.do.backup.tip=Hacer copia de seguridad de la base local antes de aplicar los cambios observe.action.encounterType.create.tip= observe.action.encounterType.delete.tip= observe.action.encounterType.detail.tip= observe.action.encounterType.modify.tip= observe.action.encounterType.save.tip= -observe.action.exit= -observe.action.exit.tip= +observe.action.exit=Salir +observe.action.exit.tip=Salir de ObServe observe.action.fpaZone.create.tip= observe.action.fpaZone.delete.tip= observe.action.fpaZone.detail.tip= @@ -179,41 +179,41 @@ observe.action.gearCaracteristicType.delete.tip= observe.action.gearCaracteristicType.detail.tip= observe.action.gearCaracteristicType.modify.tip= observe.action.gearCaracteristicType.save.tip= -observe.action.goDown= -observe.action.goDown.tip= -observe.action.goUp= -observe.action.goUp.tip= -observe.action.goto.next.stage= -observe.action.goto.next.stage.tip= -observe.action.goto.open.activity= -observe.action.goto.open.activity.short= -observe.action.goto.open.activity.tip= -observe.action.goto.open.maree= -observe.action.goto.open.other.activity= -observe.action.goto.open.other.activity.tip= -observe.action.goto.open.other.maree= -observe.action.goto.open.other.maree.tip= -observe.action.goto.open.other.route= -observe.action.goto.open.other.route.tip= -observe.action.goto.open.program.short= -observe.action.goto.open.program.tip= -observe.action.goto.open.route= -observe.action.goto.open.route.short= -observe.action.goto.open.route.tip= -observe.action.goto.open.set.short= -observe.action.goto.open.set.tip= -observe.action.goto.open.trip.short= -observe.action.goto.open.trip.tip= -observe.action.goto.previous.stage= -observe.action.goto.previous.stage.tip= -observe.action.goto.referentiel.short= -observe.action.goto.referentiel.tip= -observe.action.goto.selected.activity= -observe.action.goto.selected.activity.tip= -observe.action.goto.selected.maree= -observe.action.goto.selected.maree.tip= -observe.action.goto.selected.route= -observe.action.goto.selected.route.tip= +observe.action.goDown=Descender hacia ... +observe.action.goDown.tip=Descender hacia etapas porteriores +observe.action.goUp=Ascender hacia... +observe.action.goUp.tip=Ascender hacia etapas anteriores +observe.action.goto.next.stage=Siguiente +observe.action.goto.next.stage.tip=Etapa siguiente +observe.action.goto.open.activity=Acceder a la actividad abierta +observe.action.goto.open.activity.short=Actividad abierta +observe.action.goto.open.activity.tip=Acceder a la actividad abierta +observe.action.goto.open.maree=Acceder a la marea abierta +observe.action.goto.open.other.activity=Acceder a la actividad abierta en otra ruta +observe.action.goto.open.other.activity.tip=Accder a la actividad abierta (en otra ruta) +observe.action.goto.open.other.maree=Acceder a la marea abierta en otro programa +observe.action.goto.open.other.maree.tip=Acceder a la marea abierta (en otro programa) +observe.action.goto.open.other.route=Acceder a la ruta abierta en otra marea +observe.action.goto.open.other.route.tip=Acceder a la route abierta (en otre marea) +observe.action.goto.open.program.short=Programa abierto +observe.action.goto.open.program.tip=Acceder al programa abierto +observe.action.goto.open.route=Acceder a la route abierta +observe.action.goto.open.route.short=Ruta abierta +observe.action.goto.open.route.tip=Acceder a la ruta abierta +observe.action.goto.open.set.short=Lance abierto +observe.action.goto.open.set.tip=Acceder al lance abierto +observe.action.goto.open.trip.short=Marea abierta +observe.action.goto.open.trip.tip=Acceder a la marea abierta +observe.action.goto.previous.stage=Anterior +observe.action.goto.previous.stage.tip=Acceder a la etapa anterior +observe.action.goto.referentiel.short=Referencial +observe.action.goto.referentiel.tip=Acceder al referencial +observe.action.goto.selected.activity=Acceder a la actividad +observe.action.goto.selected.activity.tip=Acceder a la actividad seleccionada +observe.action.goto.selected.maree=Acceder a la marea +observe.action.goto.selected.maree.tip=Acceder a la marea seleccionada +observe.action.goto.selected.route=Acceder a la ruta +observe.action.goto.selected.route.tip=Acceder a la ruta seleccionada observe.action.harbour.create.tip= observe.action.harbour.delete.tip= observe.action.harbour.detail.tip= @@ -239,8 +239,8 @@ observe.action.hookType.delete.tip= observe.action.hookType.detail.tip= observe.action.hookType.modify.tip= observe.action.hookType.save.tip= -observe.action.info.storage= -observe.action.info.storage.tip= +observe.action.info.storage=Información del origen de datos +observe.action.info.storage.tip=Ver las informaciones del origen de datos actualmente usado observe.action.itemHorizontalPosition.create.tip= observe.action.itemHorizontalPosition.delete.tip= observe.action.itemHorizontalPosition.detail.tip= @@ -251,11 +251,11 @@ observe.action.itemVerticalPosition.delete.tip= observe.action.itemVerticalPosition.detail.tip= observe.action.itemVerticalPosition.modify.tip= observe.action.itemVerticalPosition.save.tip= -observe.action.lengthWeightParameter.create.tip= -observe.action.lengthWeightParameter.delete.tip= -observe.action.lengthWeightParameter.detail.tip= -observe.action.lengthWeightParameter.modify.tip= -observe.action.lengthWeightParameter.save.tip= +observe.action.lengthWeightParameter.create.tip=Crear un nuevo valor de talla-peso +observe.action.lengthWeightParameter.delete.tip=Eliminar el valor de talla-peso seleccionado +observe.action.lengthWeightParameter.detail.tip=Ver los detalles de los valores talla-peso +observe.action.lengthWeightParameter.modify.tip=Modificar los valores talla-peso +observe.action.lengthWeightParameter.save.tip=Guardar las modificaciones de los valores talla-peso observe.action.lightsticksColor.create.tip= observe.action.lightsticksColor.delete.tip= observe.action.lightsticksColor.detail.tip= @@ -271,14 +271,14 @@ observe.action.lineType.delete.tip= observe.action.lineType.detail.tip= observe.action.lineType.modify.tip= observe.action.lineType.save.tip= -observe.action.load.from.file= -observe.action.load.from.file.tip= -observe.action.locale.es= -observe.action.locale.es.tip= -observe.action.locale.fr= -observe.action.locale.fr.tip= -observe.action.locale.uk= -observe.action.locale.uk.tip= +observe.action.load.from.file=Importar una copia de seguridad +observe.action.load.from.file.tip=Cargar una base local desde una copia de seguridad +observe.action.locale.es=Español +observe.action.locale.es.tip=Cambiar el idioma de la applicación al español +observe.action.locale.fr=Francés +observe.action.locale.fr.tip=Cambiar el idioma de la applicación al francés +observe.action.locale.uk=Inglés +observe.action.locale.uk.tip=Cambiar el idioma de la applicación al inglés observe.action.maturityStatus.create.tip= observe.action.maturityStatus.delete.tip= observe.action.maturityStatus.detail.tip= @@ -289,108 +289,108 @@ observe.action.mitigationType.delete.tip= observe.action.mitigationType.detail.tip= observe.action.mitigationType.modify.tip= observe.action.mitigationType.save.tip= -observe.action.modify= -observe.action.new.entry= -observe.action.new.entry.tip= -observe.action.objectFate.create.tip= -observe.action.objectFate.delete.tip= -observe.action.objectFate.detail.tip= -observe.action.objectFate.modify.tip= -observe.action.objectFate.save.tip= -observe.action.objectOperation.create.tip= -observe.action.objectOperation.delete.tip= -observe.action.objectOperation.detail.tip= -observe.action.objectOperation.modify.tip= -observe.action.objectOperation.save.tip= -observe.action.objectType.create.tip= -observe.action.objectType.delete.tip= -observe.action.objectType.detail.tip= -observe.action.objectType.modify.tip= -observe.action.objectType.save.tip= -observe.action.observedSystem.create.tip= -observe.action.observedSystem.delete.tip= -observe.action.observedSystem.detail.tip= -observe.action.observedSystem.modify.tip= -observe.action.observedSystem.save.tip= -observe.action.ocean.create.tip= -observe.action.ocean.delete.tip= -observe.action.ocean.detail.tip= -observe.action.ocean.modify.tip= -observe.action.ocean.save.tip= -observe.action.open.screen= -observe.action.openLink.formsUrl.tip= -observe.action.openLink.reportsUrl.tip= -observe.action.organism.create.tip= -observe.action.organism.delete.tip= -observe.action.organism.detail.tip= -observe.action.organism.modify.tip= -observe.action.organism.save.tip= -observe.action.person.create.tip= -observe.action.person.delete.tip= -observe.action.person.detail.tip= -observe.action.person.modify.tip= -observe.action.person.save.tip= -observe.action.program.create.tip= -observe.action.program.delete.tip= -observe.action.program.detail.tip= -observe.action.program.modify.tip= -observe.action.program.save.tip= -observe.action.quitHelp.tip= -observe.action.reasonForDiscard.create.tip= -observe.action.reasonForDiscard.delete.tip= -observe.action.reasonForDiscard.detail.tip= -observe.action.reasonForDiscard.modify.tip= -observe.action.reasonForDiscard.save.tip= -observe.action.reasonForNoFishing.create.tip= -observe.action.reasonForNoFishing.delete.tip= -observe.action.reasonForNoFishing.detail.tip= -observe.action.reasonForNoFishing.modify.tip= -observe.action.reasonForNoFishing.save.tip= -observe.action.reasonForNullSet.create.tip= -observe.action.reasonForNullSet.delete.tip= -observe.action.reasonForNullSet.detail.tip= -observe.action.reasonForNullSet.modify.tip= -observe.action.reasonForNullSet.save.tip= -observe.action.reload.application= -observe.action.reload.storage= -observe.action.reload.storage.tip= -observe.action.reload.ui= -observe.action.reloadDefaultConfiguration= -observe.action.reloadDefaultConfiguration.tip= -observe.action.reloadResources= -observe.action.reloadResources.tip= -observe.action.reopen= -observe.action.reopen.activity.tip= -observe.action.reopen.maree.tip= -observe.action.reopen.route.tip= -observe.action.reopen.selected.activity= -observe.action.reopen.selected.activity.tip= -observe.action.reopen.selected.maree= -observe.action.reopen.selected.maree.tip= -observe.action.reopen.selected.route= -observe.action.reopen.selected.route.tip= -observe.action.reopen.tip= -observe.action.reset= -observe.action.reset.entry.tip= -observe.action.reset.ersId.tip= -observe.action.reset.formsUrl.tip= +observe.action.modify=Modificar +observe.action.new.entry=Nuevo +observe.action.new.entry.tip=Crear una nueva entrada +observe.action.objectFate.create.tip=Crear un nuevo devenir de objeto +observe.action.objectFate.delete.tip=Eliminar el devenir de objeto seleccionado +observe.action.objectFate.detail.tip=Ver detalles de devenir de objeto seleccionado +observe.action.objectFate.modify.tip=Modificar el devenir de objeto seleccionado +observe.action.objectFate.save.tip=Guardar modificaciones de devenir de objeto +observe.action.objectOperation.create.tip=Crear una nueva operación de objeto +observe.action.objectOperation.delete.tip=Eliminar la operación de objeto seleccionada +observe.action.objectOperation.detail.tip=Ver los detalles de la operación de objeto seleccionada +observe.action.objectOperation.modify.tip=Modificar la operación de objeto seleccionada +observe.action.objectOperation.save.tip=Guardar las modificaciones de la operación de objeto +observe.action.objectType.create.tip=Crera un nuevo tipo de objeto +observe.action.objectType.delete.tip=Eliminar el tipo de objeto seleccionado +observe.action.objectType.detail.tip=Ver los detalles del tipo de objeto seleccionado +observe.action.objectType.modify.tip=Modificar el tipo de objeto seleccionado +observe.action.objectType.save.tip=Guardar las modificaciones de tipo de objeto +observe.action.observedSystem.create.tip=Crear un nuevo sistema observado +observe.action.observedSystem.delete.tip=Eliminar el sistema observado seleccionado +observe.action.observedSystem.detail.tip=Ver los detalles del sistema observado seleccionado +observe.action.observedSystem.modify.tip=Modificar el sistema observado seleccionado +observe.action.observedSystem.save.tip=Guardar las modificaciones del sistema observado +observe.action.ocean.create.tip=Crear un nuevo océano +observe.action.ocean.delete.tip=Eliminar el océano seleccionado +observe.action.ocean.detail.tip=Ver los detalles del océano seleccionado +observe.action.ocean.modify.tip=Modificar el océano seleccionado +observe.action.ocean.save.tip=Guardar las modificaciones del océano +observe.action.open.screen=Abrir pantalla <%1$s> +observe.action.openLink.formsUrl.tip=Acceder a los formularios en un navegador web +observe.action.openLink.reportsUrl.tip=Acceder a los informes en un navegador web +observe.action.organism.create.tip=Crear un nuevo organismo +observe.action.organism.delete.tip=Eliminar el organismo seleccionado +observe.action.organism.detail.tip=Ver los detalles del organismo +observe.action.organism.modify.tip=Modificar el organismo seleccionado +observe.action.organism.save.tip=Guardar las modificaciones del organismo +observe.action.person.create.tip=Crear un nuevo observador +observe.action.person.delete.tip=Eliminar el observador seleccionado +observe.action.person.detail.tip=Ver los detalles del observador seleccionado +observe.action.person.modify.tip=Modificar el observador seleccionado +observe.action.person.save.tip=Guardar las modificaciones del observador +observe.action.program.create.tip=Crear un nuevo programa +observe.action.program.delete.tip=Eliminar el programa seleccionado +observe.action.program.detail.tip=Ver los detalles del programa seleccionado +observe.action.program.modify.tip=Modificar el programa seleccionado +observe.action.program.save.tip=Guardar las modificaciones del programa +observe.action.quitHelp.tip=Salir de la pantalla de ayuda +observe.action.reasonForDiscard.create.tip=Crear una nueva razón de descarte +observe.action.reasonForDiscard.delete.tip=Eliminar la razón de descarte seleccionada +observe.action.reasonForDiscard.detail.tip=Ver los detalles de la razón de descarte seleccionada +observe.action.reasonForDiscard.modify.tip=Modificar la razón de descarte seleccionada +observe.action.reasonForDiscard.save.tip=Guardar las modificaciones de la razón de descarte +observe.action.reasonForNoFishing.create.tip=Crear un nueva causa de non coup de senne +observe.action.reasonForNoFishing.delete.tip=Eliminar la causa del lance nulo seleccionado +observe.action.reasonForNoFishing.detail.tip=Ver los detalles de la cause del lance nulo seleccionado +observe.action.reasonForNoFishing.modify.tip=Modificar la cuasa del lance nulo seleccionado +observe.action.reasonForNoFishing.save.tip=Guardar las modificaciones +observe.action.reasonForNullSet.create.tip=Crear una nueva causa de lance nulo +observe.action.reasonForNullSet.delete.tip=Eliminar la causa de lance nulo seleccionada +observe.action.reasonForNullSet.detail.tip=Ver los detalles de la causa de lance nulo seleccionado +observe.action.reasonForNullSet.modify.tip=Modificar la causa de lance nulo seleccionado +observe.action.reasonForNullSet.save.tip=Guardar las modificaciones de la causa de lance nulo +observe.action.reload.application=Reinicializar la aplicación +observe.action.reload.storage=Recargar el origen de datos +observe.action.reload.storage.tip=Cerrar y reabrir el origen de datos +observe.action.reload.ui=Recargar la interfaz gráfica +observe.action.reloadDefaultConfiguration=Configuración por defecto +observe.action.reloadDefaultConfiguration.tip=Restablecer la configuración por defecto +observe.action.reloadResources=Recargar las traducciones +observe.action.reloadResources.tip=Recargar las traducciones i18n +observe.action.reopen=Reabrir +observe.action.reopen.activity.tip=Reabrir la actividad +observe.action.reopen.maree.tip=Reabrir la marea +observe.action.reopen.route.tip=Reabrir la ruta +observe.action.reopen.selected.activity=Reabrir la actividad +observe.action.reopen.selected.activity.tip=Reabrir la actividad seleccionada +observe.action.reopen.selected.maree=Reabrir la marea +observe.action.reopen.selected.maree.tip=Reabrir la marea seleccionada +observe.action.reopen.selected.route=Reabrir la ruta +observe.action.reopen.selected.route.tip=Reabrir la ruta seleccionada +observe.action.reopen.tip=Reabrir la base de datos +observe.action.reset=Cancelar +observe.action.reset.entry.tip=Cancelar la introducción de datos actual. +observe.action.reset.ersId.tip=Reiniciar Id ERS +observe.action.reset.formsUrl.tip=Reiniciar la URL de los formularios observe.action.reset.homeId.tip= -observe.action.reset.new.entry.tip= +observe.action.reset.new.entry.tip=Cancelar la creación de la entrada observe.action.reset.picturesReferences.tip= -observe.action.reset.reportsUrl.tip= +observe.action.reset.reportsUrl.tip=Reiniciar la URL de los informes observe.action.reset.supportVesselName.tip= -observe.action.reset.tip= +observe.action.reset.tip=Cancelar las modificaciones observe.action.reset.well.tip= -observe.action.restart.application= -observe.action.restart.application.tip= -observe.action.save= -observe.action.save.all.tip= -observe.action.save.entry.tip= -observe.action.save.tip= -observe.action.save.to.file= -observe.action.save.to.file.tip= -observe.action.selectNode= -observe.action.selectNode.tip= +observe.action.restart.application=Reiniciar +observe.action.restart.application.tip=Reiniciar la aplicación +observe.action.save=Grabar +observe.action.save.all.tip=Guardar todas las modificaciones +observe.action.save.entry.tip=Guardar la edición en curso - Sauver l'entrée en cours d'édition +observe.action.save.tip=Guardar las modificaciones +observe.action.save.to.file=Guardar la base de datos +observe.action.save.to.file.tip=Hacer una copia de seguridad de la base de datos abierta +observe.action.selectNode=Seleccionar el nodo +observe.action.selectNode.tip=Seleccionar el nodo observe.action.sensorBrand.create.tip= observe.action.sensorBrand.delete.tip= observe.action.sensorBrand.detail.tip= @@ -416,136 +416,136 @@ observe.action.sex.delete.tip= observe.action.sex.detail.tip= observe.action.sex.modify.tip= observe.action.sex.save.tip= -observe.action.show.technical.informations.tip= -observe.action.show.unique.keys.tip= -observe.action.show.usages.tip= -observe.action.showConfig.title= -observe.action.site= -observe.action.site.tip= +observe.action.show.technical.informations.tip=Ver la información técnica +observe.action.show.unique.keys.tip=Ver la tabla de todas las claves métier usadas por este refencial +observe.action.show.usages.tip=Ver todos los usos de este referencial +observe.action.showConfig.title=Configuración +observe.action.site=Sitio web +observe.action.site.tip=Acceder al sitio web de la apliación observe.action.sizeMeasureType.create.tip= observe.action.sizeMeasureType.delete.tip= observe.action.sizeMeasureType.detail.tip= observe.action.sizeMeasureType.modify.tip= observe.action.sizeMeasureType.save.tip= -observe.action.species.create.tip= -observe.action.species.delete.tip= -observe.action.species.detail.tip= -observe.action.species.modify.tip= -observe.action.species.save.tip= -observe.action.speciesFate.create.tip= -observe.action.speciesFate.delete.tip= -observe.action.speciesFate.detail.tip= -observe.action.speciesFate.modify.tip= -observe.action.speciesFate.save.tip= -observe.action.speciesGroupSpecies.create.tip= -observe.action.speciesGroupSpecies.delete.tip= -observe.action.speciesGroupSpecies.detail.tip= -observe.action.speciesGroupSpecies.modify.tip= -observe.action.speciesGroupSpecies.save.tip= +observe.action.species.create.tip=Crear una nueva especie de fauna +observe.action.species.delete.tip=Eliminar la especie de fauna seleccionada +observe.action.species.detail.tip=Ver detalles de la especie de fauna seleccionada +observe.action.species.modify.tip=Modificar la especie de fauna seleccionada +observe.action.species.save.tip=Guardar las modificaciones de especie de fauna +observe.action.speciesFate.create.tip=Crear un nuevo objectFate de fauna +observe.action.speciesFate.delete.tip=Eliminar el objectFate de fauna seleccionado +observe.action.speciesFate.detail.tip=Ver detalles de objectFate de fauna seleccionado +observe.action.speciesFate.modify.tip=Modificar el objectFate de fauna seleccionado +observe.action.speciesFate.save.tip=Guardar las modificaciones de objectFate de fauna +observe.action.speciesGroupSpecies.create.tip=Crear un nuevo grupo de especie de fauna +observe.action.speciesGroupSpecies.delete.tip=Eliminar un grupo de especie de fauna seleccionada +observe.action.speciesGroupSpecies.detail.tip=Ver los detalles del grupo de especie de faune seleccionada +observe.action.speciesGroupSpecies.modify.tip=Modificar el grupo de especie de fauna seleccionada +observe.action.speciesGroupSpecies.save.tip=Guardar las modificaciones del grupo de especie de fauna observe.action.speciesList.create.tip= observe.action.speciesList.delete.tip= observe.action.speciesList.detail.tip= observe.action.speciesList.modify.tip= -observe.action.speciesStatus.create.tip= -observe.action.speciesStatus.delete.tip= -observe.action.speciesStatus.detail.tip= -observe.action.speciesStatus.modify.tip= -observe.action.speciesStatus.save.tip= -observe.action.start.h2.web.server= -observe.action.start.h2.web.server.tip= -observe.action.start.server.mode= -observe.action.start.server.mode.tip= +observe.action.speciesStatus.create.tip=Crear un nuevo estado de especie +observe.action.speciesStatus.delete.tip=Eliminar el estado de especie seleccionado +observe.action.speciesStatus.detail.tip=Ver los detalles de estado de especie seleccionado +observe.action.speciesStatus.modify.tip=Modificar el estado de especie seleccionado +observe.action.speciesStatus.save.tip=Guardar las modificaciones de estado de especie +observe.action.start.h2.web.server=Iniciar modo servidor Web (H2) +observe.action.start.h2.web.server.tip=Puesta en marcha del servidor web H2 +observe.action.start.server.mode=Iniciar modo servidor +observe.action.start.server.mode.tip=Puesta en marcha de la base local en modo servidor observe.action.stomacFullness.create.tip= observe.action.stomacFullness.delete.tip= observe.action.stomacFullness.detail.tip= observe.action.stomacFullness.modify.tip= observe.action.stomacFullness.save.tip= -observe.action.stop.h2.web.server= -observe.action.stop.h2.web.server.tip= -observe.action.stop.server.mode= -observe.action.stop.server.mode.tip= -observe.action.storage.apply= -observe.action.storage.apply.tip= -observe.action.storage.applyAction= -observe.action.storage.cancel= -observe.action.storage.cancel.tip= -observe.action.surroundingActivity.create.tip= -observe.action.surroundingActivity.delete.tip= -observe.action.surroundingActivity.detail.tip= -observe.action.surroundingActivity.modify.tip= -observe.action.surroundingActivity.save.tip= -observe.action.synchro.apply.modifications= -observe.action.synchro.cancel.tip= -observe.action.synchro.copy.tip= -observe.action.synchro.launch.operation= -observe.action.synchro.prepare.operation= -observe.action.synchro.report.reset.tip= -observe.action.test.remote= -observe.action.test.remote.tip= -observe.action.transmittingBuoyOperation.create.tip= -observe.action.transmittingBuoyOperation.delete.tip= -observe.action.transmittingBuoyOperation.detail.tip= -observe.action.transmittingBuoyOperation.modify.tip= -observe.action.transmittingBuoyOperation.save.tip= -observe.action.transmittingBuoyType.create.tip= -observe.action.transmittingBuoyType.delete.tip= -observe.action.transmittingBuoyType.detail.tip= -observe.action.transmittingBuoyType.modify.tip= -observe.action.transmittingBuoyType.save.tip= +observe.action.stop.h2.web.server=Terminar modo servidor Web (H2) +observe.action.stop.h2.web.server.tip=Parar el servidor web H2 +observe.action.stop.server.mode=Terminar modo servidor +observe.action.stop.server.mode.tip=Parar el modo servidor de la base local +observe.action.storage.apply=Utilizar +observe.action.storage.apply.tip=Utilizar el origen de datos configuarado +observe.action.storage.applyAction=Cambiar el origen de datos +observe.action.storage.cancel=Cancelar el cambio del origen de datos +observe.action.storage.cancel.tip=Cancelar el cambio del origen de datos +observe.action.surroundingActivity.create.tip=Crear una nueva actividad circundante +observe.action.surroundingActivity.delete.tip=Eliminar la actividad circundante seleccionada +observe.action.surroundingActivity.detail.tip=Ver los detalles de la actividad circundante seleccionada +observe.action.surroundingActivity.modify.tip=Modificar la actividad circundante seleccionada +observe.action.surroundingActivity.save.tip=Guardar las modificaciones de la actividad circundante +observe.action.synchro.apply.modifications=Aplicar las modificaciones +observe.action.synchro.cancel.tip=Cancelar +observe.action.synchro.copy.tip=Copiar el informe en el portapapeles +observe.action.synchro.launch.operation=Comenzar la operación < %1$s > +observe.action.synchro.prepare.operation=Prepara la operación <%1$s> +observe.action.synchro.report.reset.tip=Deseleccionar el informe actual +observe.action.test.remote=Comprobar la conexión +observe.action.test.remote.tip=Pulsar para comprobar la conexión con el servidor remoto +observe.action.transmittingBuoyOperation.create.tip=Crear una nueva operación de baliza +observe.action.transmittingBuoyOperation.delete.tip=Eliminar la operación de baliza seleccionada +observe.action.transmittingBuoyOperation.detail.tip=Ver los detalles de la operación de baliza seleccionada +observe.action.transmittingBuoyOperation.modify.tip=Modificar la operación de baliza seleccionada +observe.action.transmittingBuoyOperation.save.tip=Guardar las modificaciones de operación de baliza +observe.action.transmittingBuoyType.create.tip=Crear un nuevo tipo de baliza +observe.action.transmittingBuoyType.delete.tip=Eliminar el tipo de baliza seleccionado +observe.action.transmittingBuoyType.detail.tip=Ver los detalles del tipo de baliza seleccionado +observe.action.transmittingBuoyType.modify.tip=Modificar el tipo de baliza seleccionado +observe.action.transmittingBuoyType.save.tip=Guardar las modificaciones del tipo de baliza observe.action.tripType.create.tip= observe.action.tripType.delete.tip= observe.action.tripType.detail.tip= observe.action.tripType.modify.tip= observe.action.tripType.save.tip= -observe.action.vessel.create.tip= -observe.action.vessel.delete.tip= -observe.action.vessel.detail.tip= -observe.action.vessel.modify.tip= -observe.action.vessel.save.tip= +observe.action.vessel.create.tip=Crear un nuevo barco +observe.action.vessel.delete.tip=Eliminar el barco seleccionado +observe.action.vessel.detail.tip=Ver los detalles del barco seleccionado +observe.action.vessel.modify.tip=Modificar el barco seleccionado +observe.action.vessel.save.tip=Guardar las modificaciones del barco observe.action.vesselActivityLongline.create.tip= observe.action.vesselActivityLongline.delete.tip= observe.action.vesselActivityLongline.detail.tip= observe.action.vesselActivityLongline.modify.tip= observe.action.vesselActivityLongline.save.tip= -observe.action.vesselActivitySeine.create.tip= -observe.action.vesselActivitySeine.delete.tip= -observe.action.vesselActivitySeine.detail.tip= -observe.action.vesselActivitySeine.modify.tip= -observe.action.vesselActivitySeine.save.tip= -observe.action.vesselSizeCategory.create.tip= -observe.action.vesselSizeCategory.delete.tip= -observe.action.vesselSizeCategory.detail.tip= -observe.action.vesselSizeCategory.modify.tip= -observe.action.vesselSizeCategory.save.tip= -observe.action.vesselType.create.tip= -observe.action.vesselType.delete.tip= -observe.action.vesselType.detail.tip= -observe.action.vesselType.modify.tip= -observe.action.vesselType.save.tip= -observe.action.weightCategory.create.tip= -observe.action.weightCategory.delete.tip= -observe.action.weightCategory.detail.tip= -observe.action.weightCategory.modify.tip= -observe.action.weightCategory.save.tip= +observe.action.vesselActivitySeine.create.tip=Crear una nueva actividad del barco +observe.action.vesselActivitySeine.delete.tip=Eliminar la actividad del barco seleccionada +observe.action.vesselActivitySeine.detail.tip=Ver los detalles de la actividad del barco seleccionada +observe.action.vesselActivitySeine.modify.tip=Modificar la actividad del barco seleccionada +observe.action.vesselActivitySeine.save.tip=Guardar las modificaciones de la actividad del barco +observe.action.vesselSizeCategory.create.tip=Crear una nueva categoria de barco +observe.action.vesselSizeCategory.delete.tip=Eliminar la categoria de barco seleccionada +observe.action.vesselSizeCategory.detail.tip=Ver los detalles de la categoria de barco seleccionada +observe.action.vesselSizeCategory.modify.tip=Modificar el barco seleccionado +observe.action.vesselSizeCategory.save.tip=Guardar las modificaciones de la categoria de barco +observe.action.vesselType.create.tip=Crear un nuevo tipo de barco +observe.action.vesselType.delete.tip=Eliminar el tipo de barco seleccioando +observe.action.vesselType.detail.tip=Ver los detalles del tipo de barco seleccionado +observe.action.vesselType.modify.tip=Modificar el tipo de barco seleccionado +observe.action.vesselType.save.tip=Guardar las modificaciones del tipo de barco +observe.action.weightCategory.create.tip=Crear una nueva categoria de peso +observe.action.weightCategory.delete.tip=Eliminar la categoriea de peso seleccionada +observe.action.weightCategory.detail.tip=Ver los detalles de la categoria de peso seleccionada +observe.action.weightCategory.modify.tip=Modificar la categoria de peso seleccionada +observe.action.weightCategory.save.tip=Guardar las modificaciones de la categoria de peso observe.action.weightMeasureType.create.tip= observe.action.weightMeasureType.delete.tip= observe.action.weightMeasureType.detail.tip= observe.action.weightMeasureType.modify.tip= observe.action.weightMeasureType.save.tip= -observe.action.wind.create.tip= -observe.action.wind.delete.tip= -observe.action.wind.detail.tip= -observe.action.wind.modify.tip= -observe.action.wind.save.tip= +observe.action.wind.create.tip=Crear una nueva velocidad de viento +observe.action.wind.delete.tip=Eliminar la velocidad de viento seleccionada +observe.action.wind.detail.tip=Ver los detalles de velocidad de viento seleccionados +observe.action.wind.modify.tip=Modificar la velocidad de viento seleccionada +observe.action.wind.save.tip=Guardar las modificaciones de velocidad de viento observe.activityLongline.coordinate= observe.activityLongline.fpaZone= -observe.activityLongline.message.active.found= -observe.activityLongline.message.active.found.for.other.trip= -observe.activityLongline.message.creating= -observe.activityLongline.message.no.active.found= -observe.activityLongline.message.no.active.found.for.other.trip= -observe.activityLongline.message.not.open= -observe.activityLongline.message.updating= +observe.activityLongline.message.active.found=Actividad abierta +observe.activityLongline.message.active.found.for.other.trip=Existe una actividad abierta en otra ruta. +observe.activityLongline.message.creating=Actividad en proceso de creación. +observe.activityLongline.message.no.active.found=Ninguna actividad abierta, puede crear una nueva o reabrir una. +observe.activityLongline.message.no.active.found.for.other.trip=Ninguna actividad abierta en esta ruta. +observe.activityLongline.message.not.open=La actividad no está abierta, imposible modificar. +observe.activityLongline.message.updating=Se está modificando la actividad actual. observe.activityLongline.seaSurfaceTemperature= observe.activityLongline.timeStamp= observe.activityLongline.title= @@ -553,26 +553,26 @@ observe.activityLongline.vesselActivityLongline= observe.activityLonglines.title= observe.activityObservedSystem.availableObservedSystem= observe.activityObservedSystem.selectedObservedSystem= -observe.activitySeine.message.active.found= -observe.activitySeine.message.active.found.for.other.route= -observe.activitySeine.message.creating= -observe.activitySeine.message.no.active.found= -observe.activitySeine.message.no.active.found.for.other.route= -observe.activitySeine.message.not.open= -observe.activitySeine.message.updating= +observe.activitySeine.message.active.found=Actividad abierta +observe.activitySeine.message.active.found.for.other.route=Existe una actividad abierta en otra ruta. +observe.activitySeine.message.creating=Actividad en proceso de creación. +observe.activitySeine.message.no.active.found=Ninguna actividad abierta, puede crear una nueva o reabrir una. +observe.activitySeine.message.no.active.found.for.other.route=Ninguna actividad abierta en esta ruta. +observe.activitySeine.message.not.open=La actividad no está abierta, imposible modificar. +observe.activitySeine.message.updating=Se está modificando la actividad actual. observe.activitySeine.tab.general= observe.activitySeine.tab.measurements= observe.activitySeine.title= observe.activitySeineObservedSystem.title= observe.activitySeines.title= -observe.admin.resume.no.operation.done= -observe.admin.resume.operation.canceled= -observe.admin.resume.operation.done= -observe.admin.resume.operation.failed= -observe.admin.resume.operation.need.fix= -observe.admin.resume.operation.not.started= -observe.admin.resume.operation.running= -observe.application.config= +observe.admin.resume.no.operation.done=Ninguna operación realizada +observe.admin.resume.operation.canceled=operación cancelada +observe.admin.resume.operation.done=operacion realizada +observe.admin.resume.operation.failed=la operación no realizada +observe.admin.resume.operation.need.fix=la operación nesista correcciones +observe.admin.resume.operation.not.started=operación no empezada +observe.admin.resume.operation.running=operación en curso... +observe.application.config=Configuración de ObServe observe.baitsComposition.action.create= observe.baitsComposition.action.create.tip= observe.baitsComposition.baitSettingStatus= @@ -637,7 +637,7 @@ observe.branchlinesComposition.table.tracelineType.tip= observe.branchlinesComposition.title= observe.branchlinesComposition.topType= observe.branchlinesComposition.tracelineType= -observe.broughtOnDeck.comment= +observe.broughtOnDeck.comment=Sólo las especies subidas a bordo se pueden muestrear. observe.catchLongline.acquisitionMode= observe.catchLongline.acquisitionMode.grouped= observe.catchLongline.acquisitionMode.individual= @@ -657,7 +657,7 @@ observe.catchLongline.count= observe.catchLongline.depredated= observe.catchLongline.discardHealthness= observe.catchLongline.gonadeWeight= -observe.catchLongline.hookPosition= +observe.catchLongline.hookPosition=Posición del gancho observe.catchLongline.hookWhenDiscarded= observe.catchLongline.locationOnLongline= observe.catchLongline.maturityStatus= @@ -710,93 +710,93 @@ observe.catchlongline.table.weight= observe.catchlongline.table.weight.tip= observe.catchlongline.table.weightMeasureType= observe.catchlongline.table.weightMeasureType.tip= -observe.choice.cancel= -observe.choice.confirm.delete= -observe.choice.continue= -observe.choice.create.fin.veille.activity= -observe.choice.create.fin.veille.activity.and.continue= -observe.choice.createLocalStorage= -observe.choice.doNotSave= -observe.choice.doNothing= -observe.choice.not.create.fin.veille.activity.and.continue= -observe.choice.quit= -observe.choice.save= -observe.choice.useRemoteStorage= -observe.common.acquisitionMode= -observe.common.acquisitionMode.count= -observe.common.acquisitionMode.individu= -observe.common.activities= +observe.choice.cancel=Cancelar +observe.choice.confirm.delete=Eliminar +observe.choice.continue=Continuar +observe.choice.create.fin.veille.activity=Crear la actividad de fin de guardia +observe.choice.create.fin.veille.activity.and.continue=Crear la actividad de fin de guardia y continuar +observe.choice.createLocalStorage=Crear la base local +observe.choice.doNotSave=No grabar +observe.choice.doNothing=No hacer nada +observe.choice.not.create.fin.veille.activity.and.continue=No crear la actividad de fin de guardia y continuar +observe.choice.quit=Cerrar +observe.choice.save=Grabar +observe.choice.useRemoteStorage=Usar la base de datos remota +observe.common.acquisitionMode=Modo de entrada de datos +observe.common.acquisitionMode.count=Entrada por grupo de tallas +observe.common.acquisitionMode.individu=Entrada por individuo +observe.common.activities=Actividades observe.common.activities.list= -observe.common.activity= +observe.common.activity=Actividad observe.common.activityLongline= observe.common.activitySeine= observe.common.baitHaulingStatus= -observe.common.baitObservation= +observe.common.baitObservation=Carnada observe.common.baitSettingStatus= observe.common.baitType= observe.common.baitsComposition= observe.common.basket= -observe.common.birdsObservation= -observe.common.boolean.false= -observe.common.boolean.null= -observe.common.boolean.true= +observe.common.birdsObservation=Pájaros +observe.common.boolean.false=No +observe.common.boolean.null=Indeterminado +observe.common.boolean.true=Si observe.common.branchline= observe.common.branchlineLength= observe.common.branchlinesComposition= -observe.common.brand= +observe.common.brand=Marca observe.common.brandName= -observe.common.broughtOnDeck= -observe.common.capacity= -observe.common.capacityLabel= +observe.common.broughtOnDeck=Izado a bordo +observe.common.capacity=Capacidad de transporte +observe.common.capacityLabel=Texto capacidad observe.common.captain= -observe.common.caracteristics= +observe.common.caracteristics=Características observe.common.catchFateLongline= observe.common.catchLongline= -observe.common.catchWeight= -observe.common.catchWeightComputed.computed.tip= -observe.common.catchWeightComputed.observed.tip= -observe.common.changeDate= -observe.common.code= -observe.common.codeAndStatus= -observe.common.coefficients= -observe.common.comment= -observe.common.comment.activity= -observe.common.comment.floatingObject= -observe.common.comment.nonTargetCatch= -observe.common.comment.nonTargetSample= -observe.common.comment.set= -observe.common.comment.targetCatch= -observe.common.comment.targetDiscarded= -observe.common.comment.targetSample= -observe.common.count= -observe.common.country= +observe.common.catchWeight=Peso estimado (en t) +observe.common.catchWeightComputed.computed.tip=Peso estimado calculado +observe.common.catchWeightComputed.observed.tip=Peso estimado observado +observe.common.changeDate=Fecha de carga +observe.common.code=Identificación +observe.common.codeAndStatus=Código +observe.common.coefficients=Coeficientes +observe.common.comment=Comentarios +observe.common.comment.activity=Comentario de la actividad +observe.common.comment.floatingObject=Comentarios de objeto +observe.common.comment.nonTargetCatch=Comentarios de otras especies +observe.common.comment.nonTargetSample=Comentarios de muestreo de otras especies +observe.common.comment.set=Comentarios del lance +observe.common.comment.targetCatch=Comentarios de captura +observe.common.comment.targetDiscarded=Comentarios de descarte +observe.common.comment.targetSample=Comentarios de muestreo de atún +observe.common.count=Número +observe.common.country=País observe.common.currentFpaZone= observe.common.dataEntryOperator= -observe.common.date= -observe.common.daysAtSeaCount= +observe.common.date=Día de observación +observe.common.daysAtSeaCount=Numero de días en el mar observe.common.departureHarbour= -observe.common.description= -observe.common.detailledActivitiesObservation= -observe.common.detectionMode= -observe.common.directory= +observe.common.description=Descripción +observe.common.detailledActivitiesObservation=Actividades detalladas +observe.common.detectionMode=Modo de detección +observe.common.directory=Carpeta observe.common.encounter= observe.common.encounterType= -observe.common.endDate= -observe.common.endLogValue= -observe.common.equation= -observe.common.ersId= +observe.common.endDate=Fecha de fin +observe.common.endLogValue=Corredera de tarde (millas) +observe.common.equation=Relación talla-peso +observe.common.ersId=Id ERS observe.common.faoCode= -observe.common.file= -observe.common.firstName= -observe.common.flagCountry= +observe.common.file=Archivo +observe.common.firstName=Número +observe.common.flagCountry=Badera observe.common.floatingObject= observe.common.floatline1Length= observe.common.floatline2Length= observe.common.floatlineLengths= observe.common.floatlinesComposition= -observe.common.formsUrl= +observe.common.formsUrl=URL de los formularios observe.common.fpaZone= -observe.common.gaugeLabel= +observe.common.gaugeLabel=Texto «Capacidad» observe.common.gear= observe.common.gearCaracteristic= observe.common.gearCaracteristicType= @@ -804,8 +804,8 @@ observe.common.gearType= observe.common.gearUseFeaturesLongline= observe.common.gearUseFeaturesSeine= observe.common.gender= -observe.common.generateReport= -observe.common.global.progression.description= +observe.common.generateReport=Generar un informe de validación +observe.common.global.progression.description=Progresión global observe.common.gps.activity= observe.common.gps.gpsPoint= observe.common.gps.gpsPointInterval= @@ -813,84 +813,84 @@ observe.common.gpsPointInterval= observe.common.harbour= observe.common.haulingIdentifier= observe.common.healthness= -observe.common.heureobservation= +observe.common.heureobservation=Hora de la observación observe.common.homeId= -observe.common.homeIdFAOWormsId= +observe.common.homeIdFAOWormsId=Código 3L / FAO / Worms observe.common.hookPosition= observe.common.hookSize= observe.common.hookType= observe.common.hooksComposition= observe.common.id= observe.common.inconnu= -observe.common.iso2Code= -observe.common.iso3Code= +observe.common.iso2Code=Código ISO-2 +observe.common.iso3Code=Código ISO-3 observe.common.itemHorizontalPosition= observe.common.itemVerticalPosition= -observe.common.keelCodeFlotte= -observe.common.label1= -observe.common.label2= -observe.common.label3= -observe.common.label4= -observe.common.label5= -observe.common.label6= -observe.common.label7= -observe.common.label8= +observe.common.keelCodeFlotte=Código de Quilla / Flota +observe.common.label1=Texto en inglés +observe.common.label2=Texto en francés +observe.common.label3=Nombre +observe.common.label4=Texto 4 +observe.common.label5=Texto 5 +observe.common.label6=Texto 6 +observe.common.label7=Texto 7 +observe.common.label8=Texto 8 observe.common.landingHarbour= -observe.common.lastName= -observe.common.latitude= -observe.common.length= -observe.common.length.computed.tip= -observe.common.length.inf= -observe.common.length.observed.tip= -observe.common.lengthMeasureType= -observe.common.lengthWeightFormula= +observe.common.lastName=Nombre +observe.common.latitude=Latitude +observe.common.length=Longitud eslora total +observe.common.length.computed.tip=Longitud calculada +observe.common.length.inf=Longitud (cm inf.) +observe.common.length.observed.tip=Longitud observada +observe.common.lengthMeasureType=Tipo de medida +observe.common.lengthWeightFormula=Relación de peso observe.common.lengthWeightParameter= -observe.common.libelles= +observe.common.libelles=Textos observe.common.lightsticksColor= observe.common.lightsticksType= observe.common.lineType= observe.common.locode= -observe.common.longitude= +observe.common.longitude=Longitude observe.common.lowerValueUpperValue= -observe.common.mammalsObservation= +observe.common.mammalsObservation=Mamiferos observe.common.maturityStatus= -observe.common.meanLength= -observe.common.meanLengthComputed.computed.tip= -observe.common.meanLengthComputed.observed.tip= -observe.common.meanValues= -observe.common.meanWeight= -observe.common.meanWeightComputed.computed.tip= -observe.common.meanWeightComputed.observed.tip= -observe.common.measureType= -observe.common.measureType.ld1= -observe.common.measureType.lf= -observe.common.measureType.unknown= -observe.common.minLengthMax= -observe.common.minWeightMax= +observe.common.meanLength=Talla media (en cm) +observe.common.meanLengthComputed.computed.tip=La talla media se ha calculado +observe.common.meanLengthComputed.observed.tip=La talla media se ha observado +observe.common.meanValues=Valores medios +observe.common.meanWeight=Peso medio (en Kg) +observe.common.meanWeightComputed.computed.tip=El peso medio se calculó +observe.common.meanWeightComputed.observed.tip=El peso medio se observó +observe.common.measureType=Tipo de medida +observe.common.measureType.ld1=LD1 +observe.common.measureType.lf=LF +observe.common.measureType.unknown=Desconocido +observe.common.minLengthMax=Talla min-max (en cm) +observe.common.minWeightMax=Peso min-max (en Kg) observe.common.mitigationType= observe.common.name= -observe.common.needComment= +observe.common.needComment=Se requiere un comentario observe.common.nextFpaZone= -observe.common.no.balise= +observe.common.no.balise=Ninguna baliza observe.common.nocode= -observe.common.nonCoupSenne= -observe.common.nonTargetCatch= +observe.common.nonCoupSenne=Razón de no lance +observe.common.nonTargetCatch=Fauna asociada conservada o descartada observe.common.nonTargetLength= -observe.common.nonTargetObservation= -observe.common.nonTargetSample= +observe.common.nonTargetObservation=Fauna asociada +observe.common.nonTargetSample=Muestreo fauna asociada observe.common.none= -observe.common.objectFate= +observe.common.objectFate=Devenir de objeto observe.common.objectObservedSpecies= -observe.common.objectOperation= +observe.common.objectOperation=Operación sobre la baliza observe.common.objectSchoolEstimate= -observe.common.objectType= -observe.common.objectsObservation= -observe.common.observedSystem= -observe.common.observedSystemDistance= +observe.common.objectType=Tipo de objeto +observe.common.objectsObservation=Objeto flotante +observe.common.observedSystem=Sistema observado +observe.common.observedSystemDistance=Distancia al sistema observado (millas con 1 decimal) observe.common.observer= observe.common.observerLabel= -observe.common.obsolete.entity= -observe.common.ocean= +observe.common.obsolete.entity=El referencial %1$s está desactivado. +observe.common.ocean=Océano observe.common.ocean/label1= observe.common.ocean/label2= observe.common.ocean/label3= @@ -901,53 +901,53 @@ observe.common.ocean/label7= observe.common.ocean/label8= observe.common.oceanForSpecies= observe.common.oldCode3L= -observe.common.operation.resume= -observe.common.organism= -observe.common.ownership= +observe.common.operation.resume=Resumen de operaciones +observe.common.organism=Organismo +observe.common.ownership=Pertenece a observe.common.person= -observe.common.picturesReferences= -observe.common.power= +observe.common.picturesReferences=Referencia de foto +observe.common.power=Potencia del motor principal observe.common.previousFpaZone= observe.common.program= -observe.common.program.observation.value.0= -observe.common.program.observation.value.1= -observe.common.program.observation.value.2= -observe.common.program.observation.value.3= -observe.common.program.observation.value.4= -observe.common.program.observation.value.5= -observe.common.program.observation.value.6= -observe.common.program.observation.value.7= -observe.common.program.observation.value.8= -observe.common.program.observation.value.9= -observe.common.reasonForDiscard= +observe.common.program.observation.value.0=no observado +observe.common.program.observation.value.1=observado +observe.common.program.observation.value.2=valor 2 no definido +observe.common.program.observation.value.3=valor 3 no definido +observe.common.program.observation.value.4=valor 4 no definido +observe.common.program.observation.value.5=valor 5 no definido +observe.common.program.observation.value.6=valor 6 no definido +observe.common.program.observation.value.7=valor 7 no definido +observe.common.program.observation.value.8=valor 8 no definido +observe.common.program.observation.value.9=valor 9 no definido +observe.common.reasonForDiscard=Razon de descarte observe.common.reasonForNoFishing= observe.common.reasonForNullSet= -observe.common.reportsUrl= -observe.common.resume= +observe.common.reportsUrl=URL del informe +observe.common.resume=Resumen de la configuración observe.common.route= -observe.common.routes.list= -observe.common.samplesObservation= -observe.common.schoolEstimate= -observe.common.schoolType= -observe.common.scientificLabel= -observe.common.seaSurfaceTemperature= -observe.common.searchMaximum= +observe.common.routes.list=Lista de rutas +observe.common.samplesObservation=Medidas +observe.common.schoolEstimate=Estimación del banco +observe.common.schoolType=Tipo de banco +observe.common.scientificLabel=Texto científico +observe.common.seaSurfaceTemperature=Temperatura en superficie (°) +observe.common.searchMaximum=Velocidad máxima de prospección observe.common.section= -observe.common.select.gps.import.file= -observe.common.select.gps.import.file.tip= -observe.common.select.gps.maxDelay= -observe.common.select.gps.maxDelay.tip= -observe.common.select.gps.maxSpeed= -observe.common.select.gps.maxSpeed.tip= -observe.common.select.report.file= -observe.common.select.report.file.tip= -observe.common.select.validate.context= -observe.common.select.validate.context.tip= -observe.common.select.validate.mode= -observe.common.select.validate.mode.tip= -observe.common.select.validate.scope= -observe.common.select.validate.scope.tip= -observe.common.selected.validators= +observe.common.select.gps.import.file=Importar archivo +observe.common.select.gps.import.file.tip=Elegir el archivo de trace GPS a importar +observe.common.select.gps.maxDelay=Tiempos máximos (mn) +observe.common.select.gps.maxDelay.tip=Demora máxima permitida entre 2 puntos gps (en minutos) +observe.common.select.gps.maxSpeed=Velocidad máxima (nd) +observe.common.select.gps.maxSpeed.tip=Velocidad maxima permitida entre 2 puntos (en nudos) +observe.common.select.report.file=Archivo de definición de informes +observe.common.select.report.file.tip=Elegir el archivo de definición de informes +observe.common.select.validate.context=Contexto de validación +observe.common.select.validate.context.tip=Elegir el contexto de validación +observe.common.select.validate.mode=Tipo de datos a validar +observe.common.select.validate.mode.tip=Elegir el tipo de datos a validar +observe.common.select.validate.scope=Nivel de validación +observe.common.select.validate.scope.tip=Elegir el o los niveles de validación +observe.common.selected.validators=Número de validadores detectados \: %1$s observe.common.sensorBrand= observe.common.sensorDataFormat= observe.common.sensorPosition= @@ -957,45 +957,45 @@ observe.common.setLongline= observe.common.setSeine= observe.common.settingIdentifier= observe.common.settingShape= -observe.common.sex= +observe.common.sex=Sexo observe.common.sizeMeasure= observe.common.sizeMeasureType= -observe.common.species= +observe.common.species=Especie observe.common.species/scientificLabel= -observe.common.speciesFate= -observe.common.speciesFaune= -observe.common.speciesGroup= +observe.common.speciesFate=Devenir de fauna +observe.common.speciesFaune=Especie de fauna +observe.common.speciesGroup=Grupo de especie de fauna observe.common.speciesList= -observe.common.speciesStatus= -observe.common.speciesThon= -observe.common.speedRange= -observe.common.startDate= -observe.common.startDateFinProgram= -observe.common.startDateFinValidite= -observe.common.startLogValue= -observe.common.status= -observe.common.step.description= +observe.common.speciesStatus=Estado de especie +observe.common.speciesThon=Especie +observe.common.speedRange=Texto velocidad del viento +observe.common.startDate=Fecha de comienzo +observe.common.startDateFinProgram=Comienzo - Fin de programa +observe.common.startDateFinValidite=Comienzo - Fin de validez +observe.common.startLogValue=Corredera de mañana (millas) +observe.common.status=Estado +observe.common.step.description=Descripción de la etapa observe.common.stomacFullness= -observe.common.storage.not.valid= -observe.common.supportVesselName= -observe.common.surroundingActivity= -observe.common.taille= -observe.common.taillePoids.caracteristics= -observe.common.targetCatch= -observe.common.targetDiscarded= -observe.common.targetDiscardsObservation= +observe.common.storage.not.valid=Origen de datos no configurada +observe.common.supportVesselName=Nombre del supply +observe.common.surroundingActivity=Actividad circundante +observe.common.taille=Talla (cm) +observe.common.taillePoids.caracteristics=Características Talla-Peso +observe.common.targetCatch=Captura de atún +observe.common.targetDiscarded=Descarte de atún +observe.common.targetDiscardsObservation=Descartes de atún observe.common.targetLength= -observe.common.targetSample= -observe.common.targetSampleCapture= +observe.common.targetSample=Muestreo atún descartado +observe.common.targetSampleCapture=Muestreo atún capturado observe.common.tdr= observe.common.tdrRecord= observe.common.time= -observe.common.topiaCreateDate= -observe.common.topiaId= -observe.common.topiaVersion= -observe.common.totalCount= -observe.common.totalCountComputed.computed.tip= -observe.common.totalCountComputed.observed.tip= +observe.common.topiaCreateDate=Fecha de creación +observe.common.topiaId=Técnicas de identificación +observe.common.topiaVersion=Versión +observe.common.totalCount=Número estimado +observe.common.totalCountComputed.computed.tip=El número estimado se calculo +observe.common.totalCountComputed.observed.tip=El número estimado se observo observe.common.totalWeight= observe.common.tracelineLength= observe.common.transmittingBuoy= @@ -1004,12 +1004,12 @@ observe.common.transmittingBuoyType= observe.common.tripLongline= observe.common.tripSeine= observe.common.tripType= -observe.common.trips.list= -observe.common.typeTransmittingBuoyOperation= -observe.common.undefined= -observe.common.undefined.tip= -observe.common.uri= -observe.common.vessel= +observe.common.trips.list=Lista de mareas +observe.common.typeTransmittingBuoyOperation=Tipo de operación sobre baliza +observe.common.undefined=- +observe.common.undefined.tip=< no definido > +observe.common.uri=URI +observe.common.vessel=Barco observe.common.vessel/label1= observe.common.vessel/label2= observe.common.vessel/label3= @@ -1019,8 +1019,8 @@ observe.common.vessel/label6= observe.common.vessel/label7= observe.common.vessel/label8= observe.common.vesselActivityLongline= -observe.common.vesselActivitySeine= -observe.common.vesselActivitySeine.comment= +observe.common.vesselActivitySeine=Actividad del barco +observe.common.vesselActivitySeine.comment=Solo la actividad %1$s permite introducir un lance observe.common.vesselActivitySeine/label1= observe.common.vesselActivitySeine/label2= observe.common.vesselActivitySeine/label3= @@ -1029,65 +1029,65 @@ observe.common.vesselActivitySeine/label5= observe.common.vesselActivitySeine/label6= observe.common.vesselActivitySeine/label7= observe.common.vesselActivitySeine/label8= -observe.common.vesselSizeCategory= -observe.common.vesselSpeed= -observe.common.vesselType= -observe.common.waveHeight= -observe.common.weight= -observe.common.weight.computed.tip= -observe.common.weight.ind= -observe.common.weight.observed.tip= -observe.common.weightCategory= -observe.common.weightLengthFormula= +observe.common.vesselSizeCategory=Capacidad +observe.common.vesselSpeed=Velocidad del barco (nd) +observe.common.vesselType=Pesquería +observe.common.waveHeight=Texto descriptivo de «altura media de la ola» +observe.common.weight=Peso (en t) +observe.common.weight.computed.tip=Peso calculado +observe.common.weight.ind=Peso del ejemplar (en Kg) +observe.common.weight.observed.tip=Peso observado +observe.common.weightCategory=Categoría de peso +observe.common.weightLengthFormula=Relación de tallas observe.common.weightMeasure= observe.common.weightMeasureType= -observe.common.well= -observe.common.wind= -observe.common.yearService= -observe.comon.exist.on.remote= -observe.config.category.changeStorage= -observe.config.category.changeStorage.description= -observe.config.category.directories= -observe.config.category.directories.description= -observe.config.category.gps= -observe.config.category.gps.description= -observe.config.category.h2= -observe.config.category.h2.description= +observe.common.well=Cuba +observe.common.wind=Fuerza del viento +observe.common.yearService=año de entrada en servicio +observe.comon.exist.on.remote=%1$s (ya existente) +observe.config.category.changeStorage=Origen de datos +observe.config.category.changeStorage.description=Opciones de cambio del origen de datos +observe.config.category.directories=Directorios +observe.config.category.directories.description=Directorios de la aplicación +observe.config.category.gps=GPS +observe.config.category.gps.description=Configuración GPS +observe.config.category.h2=Base local +observe.config.category.h2.description=Configuración de la base locale observe.config.category.map= observe.config.category.map.description= -observe.config.category.observation= -observe.config.category.observation.description= -observe.config.category.obstuna= -observe.config.category.obstuna.description= -observe.config.category.other= -observe.config.category.other.description= +observe.config.category.observation=Calificacion de las observaciones +observe.config.category.observation.description=Gestion de los indicadores de calificación de los programas +observe.config.category.obstuna=Base remota +observe.config.category.obstuna.description=Configuración de la base remota +observe.config.category.other=Otro +observe.config.category.other.description=Otras opciones observe.config.category.speciesList.longline= observe.config.category.speciesList.longline.description= observe.config.category.speciesList.seine= observe.config.category.speciesList.seine.description= -observe.config.category.synchro= -observe.config.category.synchro.description= -observe.config.configFileName.description= -observe.config.db.locale= -observe.config.defaultBackupDirectory.description= -observe.config.defaultCreationMode= -observe.config.defaultDataDirectory.description= -observe.config.defaultDbMode= -observe.config.defaultGpsMaxDelay= -observe.config.defaultGpsMaxSpeed= -observe.config.defaultI18nDirectory.description= -observe.config.defaultInitialDbDump.description= -observe.config.defaultLocalDbDirectory.description= +observe.config.category.synchro=Acciones sobre la base +observe.config.category.synchro.description=Configuración de acciones sobre la base +observe.config.configFileName.description=Nombre del archivo de configuración +observe.config.db.locale=Idioma del referencial +observe.config.defaultBackupDirectory.description=Carpeta por defecto para copia de seguridad de bases locales +observe.config.defaultCreationMode=Modo de creación de la base local por defecto +observe.config.defaultDataDirectory.description=Directorio por defecto de los recursos de usuario de la aplicación +observe.config.defaultDbMode=Modo de conexión creado por defecto +observe.config.defaultGpsMaxDelay=Número de minutos máximos por defectro entre 2 puntos gps +observe.config.defaultGpsMaxSpeed=Velocidad máxima por defecto entre 2 puntos pgs +observe.config.defaultI18nDirectory.description=Directorio por defecto de recursos de traducción de la aplicación +observe.config.defaultInitialDbDump.description=Base empotrada creada durante la primera importación de una base remota +observe.config.defaultLocalDbDirectory.description=Directorio de almacenamiento de la base local observe.config.defaultMapDirectory.description= -observe.config.defaultReportDirectory.description= -observe.config.defaultResourcesDirectory.description= -observe.config.defaultTmpDirectory.description= -observe.config.defaultValidationReportDirectory.description= +observe.config.defaultReportDirectory.description=Directorio por defecto de los informes de la aplicación +observe.config.defaultResourcesDirectory.description=Directorio de almacenamiento de los recursos de usuario como las traducciones o la consultas de informes +observe.config.defaultTmpDirectory.description=Directorio temporal por defecto +observe.config.defaultValidationReportDirectory.description=Directorio por defecto de almacenamiento de los informes de validación observe.config.devMode= -observe.config.h2.can.migrate.description= -observe.config.h2.login.description= -observe.config.h2.password.description= -observe.config.h2.serverPort.description= +observe.config.h2.can.migrate.description=Autorizar la actualización de las bases locales (h2) +observe.config.h2.login.description=Login h2 +observe.config.h2.password.description=Contraseña h2 +observe.config.h2.serverPort.description=Puerto del servidor h2 observe.config.logConfigurationFile.description= observe.config.map.background.description= observe.config.map.layer1.description= @@ -1101,22 +1101,26 @@ observe.config.map.layer7.description= observe.config.map.layer8.description= observe.config.map.layer9.description= observe.config.map.style.description= -observe.config.observation.activitysDetaillees= -observe.config.observation.fauneAssociee= -observe.config.observation.floatingObject= -observe.config.observation.gleure= -observe.config.observation.mammiferes= -observe.config.observation.mensurations= -observe.config.observation.oiseaux= -observe.config.observation.rejetsThons= -observe.config.obstuna.login.description= -observe.config.obstuna.password.description= -observe.config.obstuna.url.description= -observe.config.obstuna.useSsl.description= -observe.config.pg.can.migrate.description= -observe.config.showMigrationProgression= -observe.config.showMigrationSql= -observe.config.showSql= +observe.config.observation.activitysDetaillees=Observación de actividades detalladas +observe.config.observation.fauneAssociee=Observación de Fauna asociada +observe.config.observation.floatingObject=Observación de objetos flotantes +observe.config.observation.gleure=Observación de carnada +observe.config.observation.mammiferes=Observación de mamiferos +observe.config.observation.mensurations=Observación de mendiciones +observe.config.observation.oiseaux=Observaciones de pájaros +observe.config.observation.rejetsThons=Observación de descartes de atún +observe.config.obstuna.login.description=Nombre de usuario para conectarse a la base Obstuna +observe.config.obstuna.password.description=Contraseña para conectarse a la base Obstuna +observe.config.obstuna.url.description=Url de conexión a la base Obstuna +observe.config.obstuna.useSsl.description=Drapeau pour permettre l'utilisation du mode ssl pour la connexion à Obstuna +observe.config.pg.can.migrate.description=Autorizar la actualización de las bases remotas (debe ser el propietario de la base) +observe.config.server.dataBaseName.description= +observe.config.server.login.description= +observe.config.server.password.description= +observe.config.server.url.description= +observe.config.showMigrationProgression=Mostar los logs de actualización de una base de datos +observe.config.showMigrationSql=Mostrar en los logs las consultas realizadas durante la actualización de una base de datos +observe.config.showSql=Mostrar en los los todas las consultas sql ejecutadas observe.config.speciesList.longline.catch= observe.config.speciesList.longline.encounter= observe.config.speciesList.seine.nonTargetCatch= @@ -1124,17 +1128,17 @@ observe.config.speciesList.seine.objectObservedSpecies= observe.config.speciesList.seine.objectSchoolEstimate= observe.config.speciesList.seine.schoolEstimate= observe.config.speciesList.seine.targetCatch= -observe.config.ui.autoPopupNumberEditor= -observe.config.ui.changeSynchroSrc= -observe.config.ui.fullscreen= -observe.config.ui.loadLocalStorage= -observe.config.ui.locale= -observe.config.ui.showNumberEditorButton= +observe.config.ui.autoPopupNumberEditor=Para mostrar automáticamente el editor numérico durante la edición de un número +observe.config.ui.changeSynchroSrc=Pour autoriser la sélection de la base source dans les opérations sur base +observe.config.ui.fullscreen=Para mostrar en modo pantalla completa la aplicación +observe.config.ui.loadLocalStorage=Cambiar la base local al iniciar la aplicación +observe.config.ui.locale=Idioma de la aplicación (fr_FR, en_GB o es_ES) +observe.config.ui.showNumberEditorButton=Para mostrar el botón que permite usar el editor numérico a la izquierda de cada campo numérico observe.config.ui.showTimeEditorSlider= -observe.config.ui.storeRemoteStorage= -observe.content.mode.create.tip= -observe.content.mode.read.tip= -observe.content.mode.update.tip= +observe.config.ui.storeRemoteStorage=Para activar la copia de seguridad de la configuración del origen de datos remota +observe.content.mode.create.tip=Objeto en proceso de creación +observe.content.mode.read.tip=Objeto no se puede editar +observe.content.mode.update.tip=Objeto en proceso de edición observe.encounter.action.create= observe.encounter.action.create.tip= observe.encounter.count= @@ -1150,10 +1154,10 @@ observe.encounter.table.encouterType.tip= observe.encounter.table.species= observe.encounter.table.species.tip= observe.encounter.title= -observe.entity.message.updating= -observe.error.can.not.create.directory= -observe.error.no.activity.6= -observe.error.open.first.db= +observe.entity.message.updating=Se está modificando el objeto actual '%1$s'. +observe.error.can.not.create.directory=¡Imposible crear el directorio %1$s\! +observe.error.no.activity.6=La actividad con código 6 no se ha encontrado en la base de datos. +observe.error.open.first.db=La base está siendo utilizada por otra aplicación.\nPor favor, cierre la aplicación H2 y vuelva a intentarlo. observe.error.speciesList.longline.catch.notFound= observe.error.speciesList.longline.depredator.notFound= observe.error.speciesList.longline.encounter.notFound= @@ -1162,8 +1166,8 @@ observe.error.speciesList.seine.objectSchoolEstimate.notFound= observe.error.speciesList.seine.targetCatch.notFound= observe.error.storage.could.not.backup.unsane.local.db= observe.error.storage.could.not.load.local.db= -observe.floatingObject.message.creating= -observe.floatingObject.message.updating= +observe.floatingObject.message.creating=Objeto en proceso de creación. +observe.floatingObject.message.updating=Se está modificando el objeto flotante actual. observe.floatingObject.title= observe.floatingObjectTransmittingBuoyOperation.title= observe.floatlinesComposition.action.create= @@ -1222,6 +1226,8 @@ observe.gearUseFeaturesSeine.table.gearCaracteristic= observe.gearUseFeaturesSeine.table.gearCaracteristic.tip= observe.gearUseFeaturesSeine.table.number= observe.gearUseFeaturesSeine.table.number.tip= +observe.gearUseFeaturesSeine.table.size= +observe.gearUseFeaturesSeine.table.size.tip= observe.gearUseFeaturesSeine.table.usedInTrip= observe.gearUseFeaturesSeine.table.usedInTrip.tip= observe.gearUseFeaturesSeine.table.value= @@ -1247,17 +1253,17 @@ observe.hooksComposition.table.hookType.tip= observe.hooksComposition.table.proportion= observe.hooksComposition.table.proportion.tip= observe.hooksComposition.title= -observe.info.selected.validators= -observe.info.validation.credentials= -observe.init.local.db.detected= -observe.init.no.initial.dump.detected= -observe.init.no.local.db.detected= -observe.init.storage.done= -observe.label.coefficients.info= -observe.label.lengthWeightFormula.info= -observe.label.usage.data.title= -observe.label.usage.referentiel.title= -observe.label.weightLengthFormula.info= +observe.info.selected.validators=Es necesario seleccionar un validador para continuar. +observe.info.validation.credentials=Para validar el referencial (resp. los datos), debe tener los derechos de lectura y escritura correspondientes. +observe.init.local.db.detected=%1$s detectado. +observe.init.no.initial.dump.detected=Base empotrada %1$s no detectada. +observe.init.no.local.db.detected=Base local %1$s no detectada. +observe.init.storage.done=Inicialización del servicio de persistencia terminado. +observe.label.coefficients.info=Los coeficientes de relaciones son de la forma lastName\=valor y están separados por \: (ejemplo \: a\=1\:b\=2\:c\=3) +observe.label.lengthWeightFormula.info=La relación talla-peso permite calcular el peso a partir de la talla, debe contener la variable L +observe.label.usage.data.title=Datos '%1$s' (%2$d ocurrencias) +observe.label.usage.referentiel.title=Referencial '%1$s' (%2$d ocurrencias) +observe.label.weightLengthFormula.info=la relación talla-peso permite calcular la talla a partir del peso, debe contener la varible P observe.lengthWeightParameter.tab.general= observe.lengthWeightParameter.tab.other= observe.list.HookSize= @@ -1266,8 +1272,8 @@ observe.list.baitHaulingStatus= observe.list.baitSettingStatus= observe.list.baitType= observe.list.catchFateLongline= -observe.list.country= -observe.list.detectionMode= +observe.list.country=Paíises registrados +observe.list.detectionMode=Modos de detección registradas observe.list.encounterType= observe.list.fpaZone= observe.list.gear= @@ -1280,47 +1286,47 @@ observe.list.hookSize= observe.list.hookType= observe.list.itemHorizontalPosition= observe.list.itemVerticalPosition= -observe.list.lengthWeightParameter= +observe.list.lengthWeightParameter=Parámetros talla-peso de Fauna observe.list.lightsticksColor= observe.list.lightsticksType= observe.list.lineType= observe.list.maturityStatus= observe.list.mitigationType= -observe.list.objectFate= -observe.list.objectOperation= -observe.list.objectType= -observe.list.observedSystem= -observe.list.ocean= -observe.list.operation= -observe.list.organism= -observe.list.person= -observe.list.program= -observe.list.reasonForDiscard= -observe.list.reasonForNoFishing= -observe.list.reasonForNullSet= +observe.list.objectFate=Devenir de objetos registrados +observe.list.objectOperation=Operaciones con objeto registradas +observe.list.objectType=Tipos de objeto registrado +observe.list.observedSystem=Sistemas observados registrados +observe.list.ocean=Océanos registrados +observe.list.operation=Operaciones de baliza registradas +observe.list.organism=Organismos registrados +observe.list.person=Observadores registrados +observe.list.program=Programas registrados +observe.list.reasonForDiscard=Razones de descarte registradas +observe.list.reasonForNoFishing=Causas de no pesca registradas +observe.list.reasonForNullSet=Causas de lance nulo registradas observe.list.sensorBrand= observe.list.sensorDataFormat= observe.list.sensorType= observe.list.settingShape= -observe.list.sex= +observe.list.sex=Sexo registradas observe.list.sizeMeasureType= -observe.list.speciesFate= -observe.list.speciesFaune= -observe.list.speciesGroupSpecies= +observe.list.speciesFate=Devenir de fauna registrados +observe.list.speciesFaune=Especies de fauna registradas +observe.list.speciesGroupSpecies=Grupos de especies de fauna registradas observe.list.speciesList= -observe.list.speciesStatus= +observe.list.speciesStatus=Estado de especies registradas observe.list.stomacFullness= -observe.list.surroundingActivity= +observe.list.surroundingActivity=Lista de actividades circundantes observe.list.transmittingBuoyType= observe.list.tripType= -observe.list.vessel= +observe.list.vessel=Lista de barcos registrados observe.list.vesselActivityLongline= observe.list.vesselActivitySeine= -observe.list.vesselSizeCategory= -observe.list.vesselType= -observe.list.weightCategory= +observe.list.vesselSizeCategory=Lista de categorías de barcos registrados +observe.list.vesselType=Tipos de barco registrados +observe.list.weightCategory=Categorías de peso registradas observe.list.weightMeasureType= -observe.list.wind= +observe.list.wind=Fuerzas de viento registradas observe.longlineDetailComposition.action.deleteAllSections= observe.longlineDetailComposition.action.deleteAllSections.tip= observe.longlineDetailComposition.action.deleteSelectedBasket= @@ -1397,7 +1403,12 @@ observe.map.action.exportPng.tip= observe.map.action.zoomIt= observe.map.action.zoomIt.tip= observe.map.east= +observe.map.export.chooseFile.image= observe.map.export.chooseFile.ok= +observe.map.export.chooseFile.overwrite= +observe.map.export.chooseFile.overwrite.cancel= +observe.map.export.chooseFile.overwrite.ok= +observe.map.export.chooseFile.overwrite.title= observe.map.export.chooseFile.png= observe.map.export.chooseFile.title= observe.map.export.overwrite= @@ -1429,209 +1440,210 @@ observe.map.south= observe.map.waitLoading= observe.map.west= observe.measurement.delete.message= -observe.menu.actions= -observe.menu.application.locale= -observe.menu.configuration= -observe.menu.configuration.tip= -observe.menu.db.locale= -observe.menu.file= -observe.menu.help= -observe.menu.locale= -observe.menu.navigation= -observe.menu.storage= -observe.message.can.not.write.data= -observe.message.cant.add.echantillonRejetThon= -observe.message.cant.add.echantillonTargetCatch= -observe.message.cant.add.nonTargetSample= -observe.message.consolidate.operation.done= -observe.message.consolidate.save.changes= -observe.message.creating.referentiel= -observe.message.db.closed= -observe.message.db.loaded= -observe.message.db.loading= -observe.message.db.none.loaded= -observe.message.db.none.loaded.tip= -observe.message.delete= -observe.message.delete.directory= -observe.message.delete.new= -observe.message.detected.accepted.interval= -observe.message.detected.rejected.interval= -observe.message.exportData.delete.remote.maree= -observe.message.exportData.not.possible= -observe.message.exportData.operation.needFix= -observe.message.exportData.prepare.data= -observe.message.exportData.replicate.maree= -observe.message.goto.site= -observe.message.h2.server.login= -observe.message.h2.server.password= -observe.message.h2.server.url= -observe.message.help.usage= -observe.message.historical.data= -observe.message.importGPS.apply.point= -observe.message.importGPS.apply.points= -observe.message.importGPS.detect.point= -observe.message.importGPS.detect.points= -observe.message.importGPS.detected.point= -observe.message.importGPS.no.activity.selected= -observe.message.importGPS.no.detected.point= -observe.message.importGPS.no.invalid.interval= -observe.message.importGPS.nothing.to.do= -observe.message.importGPS.operation.needFix= -observe.message.importGPS.prepare.importFile= -observe.message.loaded.tip= -observe.message.need.fin.veille.activity= -observe.message.no.accepted.intervalle.detected= -observe.message.no.activity.detected= +observe.menu.actions=Acciones +observe.menu.application.locale=Aplicación +observe.menu.configuration=Configuración +observe.menu.configuration.tip=Menú de configuración +observe.menu.db.locale=Referencial +observe.menu.file=Archivo +observe.menu.help=Ayuda +observe.menu.locale=Idiomas +observe.menu.navigation=Navegación +observe.menu.storage=Origen de datos +observe.message.can.not.write.data=No tiene autorización para escribir los datos de observadores en este origen de datos. +observe.message.cant.add.echantillonRejetThon=Imposible añadir los muestreos de descartes de atunes (no hay descartes de atunes izados a bordo). +observe.message.cant.add.echantillonTargetCatch=Imposible añadir los muestreos de atunes (no hay captura de atunes) +observe.message.cant.add.nonTargetSample=Imposible añadir los muestreos (no hay descartes de fauna +observe.message.consolidate.operation.done=Operación de calculo de datos terminada en %1$s. +observe.message.consolidate.save.changes=Guardar las modificaciones de la(s) %1$s marea(s) modificada(s). +observe.message.creating.referentiel=Objeto en proceso de creación. +observe.message.db.closed=%1$s ha sido cerrado +observe.message.db.loaded=%1$s cargado +observe.message.db.loading=%1$s cargando +observe.message.db.none.loaded=No hay origen de datos cargado +observe.message.db.none.loaded.tip=No hay origen de datos cargado... +observe.message.delete=Confirmar la eliminación del objeto \:\n\n '%1$s' - '%2$s'\n +observe.message.delete.directory=Eliminación del directorio %1$s +observe.message.delete.new=Confirme la eliminación del objeto \:\n\n '%1$s'\n +observe.message.detected.accepted.interval=Intervalo de punto gps aceptado detectado \: %1$s +observe.message.detected.rejected.interval=Intervalo de punto gps rechazado detectado \: %1$s +observe.message.exportData.delete.remote.maree=Eliminación de la marea (%1$s) del programa (%2$s) de la base remota. +observe.message.exportData.not.possible=La exportación no es posible (vea el mensaje anterior). +observe.message.exportData.operation.needFix=Seleccione las mareas a exportar. +observe.message.exportData.prepare.data=Preparación de los datos a exportar... +observe.message.exportData.replicate.maree=Duplicación de la marea (%1$s) del programa (%2$s) hacia la base remota. +observe.message.goto.site=Acceder al sitio de d'Observe (%1$s) +observe.message.h2.server.login=Iniciar sesión +observe.message.h2.server.password=Contraseña +observe.message.h2.server.url=Url de acceso al servidor +observe.message.help.usage=Ayuda de Observe v %1$s +observe.message.historical.data=Datos históricos (puede cerrarse incluso sin validar) +observe.message.importGPS.apply.point=Integrar datos gps %1$s en %2$s +observe.message.importGPS.apply.points=Integar los datos gps en actividad seleccionada de la marea abierta +observe.message.importGPS.detect.point=Detección del punto gps de la actividad %1$s +observe.message.importGPS.detect.points=Detección de puntos gps para las actividades de la marea abierta +observe.message.importGPS.detected.point=Punto gps detectadao %1$s +observe.message.importGPS.no.activity.selected=Ninguna actividad seleccionada +observe.message.importGPS.no.detected.point=No detectado punto gps de la actividad. +observe.message.importGPS.no.invalid.interval=<No se utiliza ningún intervalo de puntos.> +observe.message.importGPS.nothing.to.do=Ningún dato a importar +observe.message.importGPS.operation.needFix=Se requieren correcciones para la importación GPS +observe.message.importGPS.prepare.importFile=Preparación de importación GPS \:\n - archivo a usar \: %1$s \n - tiempo máximo \: %2$s\n - velocidad máxima \: %3$s +observe.message.loaded.tip=La %1$s cargada,\n\nPuede cargar la base haciendo clic aquí. +observe.message.need.fin.veille.activity=Ninguna actividad de fin de guardia registrada en la ruta a cerrar.\n Puede \:\n\n\t- Cancelar el cierre y continuar con la ruta\n\t- Crear la actividad de fin de guardia e ir a ella.\n\t- Crear la actividad de fin de guardia y a continuación cerra la ruta\n\t- Continuar con el cierra de la ruta sin crear la actividad de fin de guardia. +observe.message.no.accepted.intervalle.detected=No se detecta ningún intervalo aceptable de punto gps +observe.message.no.activity.detected=No se encuentra actividad en la marea abierta. observe.message.no.activity.for.route= observe.message.no.activity.for.trip= -observe.message.no.local.db.found= -observe.message.no.open.maree.detected= -observe.message.no.report.selected= -observe.message.no.route.detected= -observe.message.no.route.for.maree= -observe.message.no.species.selected= -observe.message.no.trip.for.program= -observe.message.no.usage.for.entity= -observe.message.no.validation.detected= -observe.message.quit.invalid.edit= -observe.message.quit.valid.edit= -observe.message.referentiel.editable= -observe.message.referentiel.home= -observe.message.referentiel.no.editable= -observe.message.save.configuration= -observe.message.select.report= -observe.message.server.info= -observe.message.show.usage.for.delete= -observe.message.show.usage.for.delete2= -observe.message.show.usage.for.desactivated= -observe.message.show.usage.for.desactivated2= -observe.message.show.usage.for.desactivated3= -observe.message.show.usages= -observe.message.synchro.build.diff= -observe.message.synchro.create.temporary.db.to.resolve.obsoletes= -observe.message.synchro.local.modification= -observe.message.synchro.no.local.modification= -observe.message.synchro.no.referentiel.conflict= -observe.message.synchro.obsolete.data.to.duplicate= -observe.message.synchro.operation.canceled= -observe.message.synchro.operation.done= -observe.message.synchro.operation.failed= -observe.message.synchro.operation.needFix= -observe.message.synchro.ref.is.updtodate= -observe.message.synchro.referentiel.was.added= -observe.message.synchro.referentiel.was.modified= -observe.message.synchro.referentiel.was.removed= -observe.message.table.editBean.modified= -observe.message.table.editBean.modified.but.invalid= +observe.message.no.local.db.found=No existe la base local (ruta %1$s).\n\nPuede crear la base local o conectase a una base remota. +observe.message.no.open.maree.detected=No se encuentra ninguna marea abierta. +observe.message.no.report.selected=Ningún informe seleccionado +observe.message.no.route.detected=Ninguna ruta detectada en la marea abierta +observe.message.no.route.for.maree=Ninguna ruta en la marea actual +observe.message.no.species.selected=Ninguna especie seleccionada +observe.message.no.trip.for.program=Ninguna marea para el programa actual +observe.message.no.usage.for.entity=Ningún usuario encontrado. +observe.message.no.validation.detected=Ningún validador encontrado. +observe.message.quit.invalid.edit=¡Datos no validos, no se pueden guardar\!\n\nNota\: Si continúa se cancelarán todas las modificaciones. +observe.message.quit.valid.edit=¡Los datos han sido modificados y son válidos\! +observe.message.referentiel.editable=El referencial es editable. +observe.message.referentiel.home=< Referencial > +observe.message.referentiel.no.editable=No tiene permisos para editar el referencial. +observe.message.save.configuration=Guardar la configuración en el archivo %1$s +observe.message.select.report=Seleccione informe +observe.message.server.info=Inforamción modo servidor +observe.message.show.usage.for.delete=El referencial %1$s "%2$s" no se puede eliminar. +observe.message.show.usage.for.delete2=Los objetos están usando actualmente las referencias que se enumeran a continuación. +observe.message.show.usage.for.desactivated=El referencial %1$s "%2$s" se desactivará. +observe.message.show.usage.for.desactivated2=Los objetos están usando actualmente las referencias que se enumeran a continuación.. +observe.message.show.usage.for.desactivated3=Estos objetos deben usar otro referencial (no desactivado) para poder actualizarse. +observe.message.show.usages=Listas de usos de referenciales %1$s \: '%2$s' +observe.message.synchro.build.diff=Construcción del diferencial de referenciales desde\: %1$s +observe.message.synchro.create.temporary.db.to.resolve.obsoletes=Se han detectado elementos obsoletos, para resolverso se creará una base temporal +observe.message.synchro.local.modification=Los datos que han sido modificados en la base local deben ser guardados. +observe.message.synchro.no.local.modification=No se han modificado datos en la base local, no es necesario guardar. +observe.message.synchro.no.referentiel.conflict=El referencial de la base local no está actualizado (pero conflicto detectado). +observe.message.synchro.obsolete.data.to.duplicate=Elemento a recopiar en la base temporal +observe.message.synchro.operation.canceled=Operación cancelada +observe.message.synchro.operation.done=Operación terminada el %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$tS +observe.message.synchro.operation.failed=Error en la operación +observe.message.synchro.operation.needFix=La operación requiere corecciones. +observe.message.synchro.ref.is.updtodate=El referencial de la base local está actualizado, no se requieren correciones. +observe.message.synchro.referentiel.was.added=Se han añadido los datos al referencial remoto (%1$d objeto(s)) +observe.message.synchro.referentiel.was.modified=Se han modificado los datos en el referencial remoto (%1$d objeto(s)) +observe.message.synchro.referentiel.was.removed=Se han eliminado datos del referencial remoto (%1$d objeto(s)) +observe.message.table.editBean.modified=El registro actual se ha modificado y es válido. +observe.message.table.editBean.modified.but.invalid=El registro actual se ha modificado pero no es válido. observe.message.updating.floatingObject= -observe.message.updating.referentiel= -observe.message.validation.detected= -observe.message.validation.not.save.report= -observe.message.validation.nothing.to.do= -observe.message.validation.operation.done= -observe.message.validation.operation.needFix= -observe.message.validation.prepare.validators= -observe.message.validation.save.report= -observe.message.validation.start.maree= -observe.message.validation.start.referentiel= -observe.message.validation.use.storage= -observe.message.warning.will.be.delete= +observe.message.updating.referentiel=Se está actualizando el objeto. +observe.message.validation.detected=Se ha encontrado el validador para el tipo %1$s +observe.message.validation.not.save.report=No hay informe que guardar. +observe.message.validation.nothing.to.do=Los datos son válidos y no necesitan corrección. +observe.message.validation.operation.done=Ha terminado la operación de validación de %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$ts. +observe.message.validation.operation.needFix=Los datos no son válidos y necesitan ser corregidos. +observe.message.validation.prepare.validators=Detección de validadores +observe.message.validation.save.report=El informe de validación se ha guardado en el archivo %1$s +observe.message.validation.start.maree=Validación de la marea '%1$s' (%2$s) +observe.message.validation.start.referentiel=Validación del referencial de tipo '%1$s' (%2$s entidades) +observe.message.validation.use.storage=Se realizará la validación de %1$s +observe.message.warning.will.be.delete=%1$s\n\nAtención, la exportación reemplazará la marea existente. +observe.model.version= observe.navigationMenu.moveTrip= observe.navigationMenu.noAction= -observe.nonTargetCatch.message.table.will.delete.nonTargetSample= -observe.nonTargetCatch.table.catchWeight= -observe.nonTargetCatch.table.catchWeight.tip= -observe.nonTargetCatch.table.comment= -observe.nonTargetCatch.table.comment.tip= -observe.nonTargetCatch.table.deleteExtraMessage= -observe.nonTargetCatch.table.meanLength= -observe.nonTargetCatch.table.meanLength.tip= -observe.nonTargetCatch.table.meanWeight= -observe.nonTargetCatch.table.meanWeight.tip= -observe.nonTargetCatch.table.reasonForDiscard= -observe.nonTargetCatch.table.reasonForDiscard.tip= -observe.nonTargetCatch.table.speciesFate= -observe.nonTargetCatch.table.speciesFate.tip= -observe.nonTargetCatch.table.speciesFaune= -observe.nonTargetCatch.table.speciesFaune.tip= -observe.nonTargetCatch.table.totalCount= -observe.nonTargetCatch.table.totalCount.tip= -observe.nonTargetSample.table.count= -observe.nonTargetSample.table.count.tip= -observe.nonTargetSample.table.gender= -observe.nonTargetSample.table.gender.tip= -observe.nonTargetSample.table.length= -observe.nonTargetSample.table.length.tip= -observe.nonTargetSample.table.meanWeight= -observe.nonTargetSample.table.meanWeight.tip= -observe.nonTargetSample.table.picturesReferences= -observe.nonTargetSample.table.picturesReferences.tip= -observe.nonTargetSample.table.speciesFaune= -observe.nonTargetSample.table.speciesFaune.tip= -observe.objectObservedSpecies.table.count= -observe.objectObservedSpecies.table.count.tip= -observe.objectObservedSpecies.table.speciesFaune= -observe.objectObservedSpecies.table.speciesFaune.tip= -observe.objectObservedSpecies.table.speciesStatus= -observe.objectObservedSpecies.table.speciesStatus.tip= -observe.obstuna.action.create= -observe.obstuna.action.create.description= -observe.obstuna.action.drop= -observe.obstuna.action.drop.description= -observe.obstuna.action.security= -observe.obstuna.action.security.description= -observe.obstuna.action.update= -observe.obstuna.action.update.description= -observe.person.country= +observe.nonTargetCatch.message.table.will.delete.nonTargetSample=¡Confirmar la eliminación de los objetos de la copia de seguridad.\!\n\n Las especies siguientes no estarán disponibles en los muestreos\:\n%1$s\nComo consecuencia se suprimiràn los muestreos siguientes \:\n%2$s +observe.nonTargetCatch.table.catchWeight=Peso +observe.nonTargetCatch.table.catchWeight.tip=Peso estimados (en t) +observe.nonTargetCatch.table.comment=Comentario +observe.nonTargetCatch.table.comment.tip=Comentario +observe.nonTargetCatch.table.deleteExtraMessage=\nLa eliminación de una captura de fauna puede tener como consecuencia la eliminación de muestreo(s) de la especie. +observe.nonTargetCatch.table.meanLength=Talla +observe.nonTargetCatch.table.meanLength.tip=Talla media (en cm) +observe.nonTargetCatch.table.meanWeight=Peso medio +observe.nonTargetCatch.table.meanWeight.tip=Peso medio (en Kg) +observe.nonTargetCatch.table.reasonForDiscard=Razón del descarte +observe.nonTargetCatch.table.reasonForDiscard.tip=Razón del descarte +observe.nonTargetCatch.table.speciesFate=Devenir +observe.nonTargetCatch.table.speciesFate.tip=Devenir de fauna +observe.nonTargetCatch.table.speciesFaune=Especie +observe.nonTargetCatch.table.speciesFaune.tip=Especie +observe.nonTargetCatch.table.totalCount=Número +observe.nonTargetCatch.table.totalCount.tip=Número estimado +observe.nonTargetSample.table.count=Grupo de tallas +observe.nonTargetSample.table.count.tip=Grupo de tallas +observe.nonTargetSample.table.gender=Sexo +observe.nonTargetSample.table.gender.tip=Sexo +observe.nonTargetSample.table.length=Talla +observe.nonTargetSample.table.length.tip=Talla +observe.nonTargetSample.table.meanWeight=Peso +observe.nonTargetSample.table.meanWeight.tip=Peso del individuo +observe.nonTargetSample.table.picturesReferences=Ref. a foto +observe.nonTargetSample.table.picturesReferences.tip=Referencia a foto +observe.nonTargetSample.table.speciesFaune=Especie +observe.nonTargetSample.table.speciesFaune.tip=Especie +observe.objectObservedSpecies.table.count=Número +observe.objectObservedSpecies.table.count.tip=Número +observe.objectObservedSpecies.table.speciesFaune=Especie +observe.objectObservedSpecies.table.speciesFaune.tip=Especie +observe.objectObservedSpecies.table.speciesStatus=Estado +observe.objectObservedSpecies.table.speciesStatus.tip=Estado +observe.obstuna.action.create=Creación de Obstuna +observe.obstuna.action.create.description=Creación de una nueva base remota Obstuna +observe.obstuna.action.drop=Destrucción de Obstuna +observe.obstuna.action.drop.description=Destrucción de una base remota Obstuna +observe.obstuna.action.security=Actualización de seguridad de Obstuna +observe.obstuna.action.security.description=Actualización de securidad de una base remota Obstuna +observe.obstuna.action.update=Actualización de Obstuna +observe.obstuna.action.update.description=Actualización de una base remota Obstuna +observe.person.country=Nacionalidad observe.program.tab.general= observe.program.tab.observations= -observe.route.message.active.found= -observe.route.message.active.found.for.other.trip= -observe.route.message.creating= -observe.route.message.no.active.found= +observe.route.message.active.found=Ruta abierta. +observe.route.message.active.found.for.other.trip=Existe una ruta abierta en otra marea. +observe.route.message.creating=Ruta en proceso de creación. +observe.route.message.no.active.found=Ninguna ruta abierta, puede crear una nueva o reabrir una. observe.route.message.no.active.found.for.other.trip= -observe.route.message.not.open= -observe.route.message.updating= +observe.route.message.not.open=la ruta actual no está abierta, no se pueden hacer modificaciones. +observe.route.message.updating=Se está modificando la ruta actual. observe.route.title= observe.routes.title= -observe.runner.config.loaded= -observe.runner.config.migrate.file= -observe.runner.context.loaded= +observe.runner.config.loaded=Configuración de Observe v. %1$s cargada. +observe.runner.config.migrate.file=El fichero de configuración %1$s ha sido reemplazado por \n%2$s\nvers\n%3$s +observe.runner.context.loaded=Finlazada la inicialización del contexto en %1$s. observe.runner.copy.default.logConfigurationFile.file= observe.runner.copy.default.map.file= -observe.runner.copy.default.report.file= -observe.runner.copy.default.ui.file= -observe.runner.create.directory= -observe.runner.exists.directory= -observe.runner.i18n.loaded= -observe.runner.init= -observe.runner.load.database= -observe.runner.loaded= -observe.runner.loading.ui.configuration= -observe.runner.quit.withno.ui= -observe.runner.start= -observe.runner.ui.loaded= -observe.runner.user.directories.loaded= -observe.schoolEstimate.table.meanWeight= -observe.schoolEstimate.table.meanWeight.tip= -observe.schoolEstimate.table.speciesThon= -observe.schoolEstimate.table.speciesThon.tip= -observe.schoolEstimate.table.weight= -observe.schoolEstimate.table.weight.tip= +observe.runner.copy.default.report.file=Creación del archivo de informes %1$s. +observe.runner.copy.default.ui.file=Creación del archivo de - Création du fichier de cosmétique %1$s. +observe.runner.create.directory=Creación del directorio %1$s +observe.runner.exists.directory=El directorio %1$s existe. +observe.runner.i18n.loaded=Servicio de traducción cargado en el idioma %1$s. +observe.runner.init=Inicialización d'ObServe %1$s %2$s +observe.runner.load.database=Cargando el origen de datos +observe.runner.loaded=Se ha cargado ObServe v %1$s +observe.runner.loading.ui.configuration=Chargement du fichier de cosmétique %1$s +observe.runner.quit.withno.ui=Cierre de la aplicación sin abrir la interfaz gráfica +observe.runner.start=Inicio de ObServe %1$s %2$s +observe.runner.ui.loaded=Finalizada la inicialización de la interfaz gráfica +observe.runner.user.directories.loaded=Se ha inicializado el directorio del usuario (%1$s). +observe.schoolEstimate.table.meanWeight=Peso medio (en Kg) +observe.schoolEstimate.table.meanWeight.tip=Peso medio (en Kg) +observe.schoolEstimate.table.speciesThon=Especie +observe.schoolEstimate.table.speciesThon.tip=Especie de atún (no se puede modificar una vez se haya creado la estimación) +observe.schoolEstimate.table.weight=Peso (en t) +observe.schoolEstimate.table.weight.tip=Peso (en t) observe.section.cant.delete.message= observe.section.cant.delete.title= observe.sectionTemplate.delete.message= observe.sections.delete.message= -observe.security.referentiel= -observe.security.referentiel.tip= -observe.security.role= -observe.security.role.tip= -observe.security.technicien= -observe.security.technicien.tip= -observe.security.unused= -observe.security.unused.tip= -observe.security.utilisateur= -observe.security.utilisateur.tip= +observe.security.referentiel=Referencial +observe.security.referentiel.tip=Tiene permiso de solo lectura sobre el referencial (ningún permiso sobre los datos) +observe.security.role=Rol +observe.security.role.tip=Nombre del rol de la base +observe.security.technicien=Técnico +observe.security.technicien.tip=El rol tiene todos los permisos sobre el referencial y los datos +observe.security.unused=No utilizado +observe.security.unused.tip=No usar este rol +observe.security.utilisateur=Usuario +observe.security.utilisateur.tip=El rol tiene permisos de lectura sobre el referencial y los datos observe.sensorUsed.action.create= observe.sensorUsed.action.create.tip= observe.sensorUsed.action.reset.dataLocation.tip= @@ -1666,7 +1678,7 @@ observe.sensorUsed.table.sensorType= observe.sensorUsed.table.sensorType.tip= observe.sensorUsed.title= observe.setLongline.action.reset.homeId.tip= -observe.setLongline.basketsPerSectionCount= +observe.setLongline.basketsPerSectionCount=Número de cestas por sección observe.setLongline.branchlinesPerBasketCount= observe.setLongline.haulingBreaks= observe.setLongline.haulingDirectionSameAsSetting= @@ -1680,7 +1692,7 @@ observe.setLongline.lightsticksPerBasketCount= observe.setLongline.lightsticksType= observe.setLongline.lineType= observe.setLongline.maxDepthTargeted= -observe.setLongline.message.creating= +observe.setLongline.message.creating=Lance en proceso de creación. observe.setLongline.message.updating= observe.setLongline.monitored= observe.setLongline.number= @@ -1710,12 +1722,12 @@ observe.setSeine.currentSpeed= observe.setSeine.endPursingTimeStamp= observe.setSeine.endSetTimeStamp= observe.setSeine.maxGearDepth= -observe.setSeine.message.creating= -observe.setSeine.message.information.schoolType= -observe.setSeine.message.no.nonTargetDiscarded= -observe.setSeine.message.no.targetCatch= -observe.setSeine.message.no.targetDiscarded= -observe.setSeine.message.updating= +observe.setSeine.message.creating=Lance en proceso de creación. +observe.setSeine.message.information.schoolType=Tipo de banco calculado a partir de los sistemas observados de su actividad. +observe.setSeine.message.no.nonTargetDiscarded=El lance no tiene descartes de fauna. +observe.setSeine.message.no.targetCatch=Para los muestreos de atunes capturados, se necesita al menos una captura. +observe.setSeine.message.no.targetDiscarded=Para muestreos de atunes, se necesita al menos un descarte de atún izado a bordo. +observe.setSeine.message.updating=Se está modificando el lance actual. observe.setSeine.nonTargetDiscarded= observe.setSeine.reasonForNullSet= observe.setSeine.schoolMeanDepth= @@ -1724,7 +1736,7 @@ observe.setSeine.schoolTopDepth= observe.setSeine.schoolType= observe.setSeine.schoolType.not.fill= observe.setSeine.sonarUsed= -observe.setSeine.sonarUsedAvantSet= +observe.setSeine.sonarUsedAvantSet=Utilización del sonar antes del lance observe.setSeine.startTime= observe.setSeine.supportVesselName= observe.setSeine.tab.general= @@ -1739,7 +1751,7 @@ observe.speciesList.availableSpecies= observe.speciesList.selectedSpecies= observe.speciesList.tab.general= observe.speciesList.tab.species= -observe.storage.action.canMigrate= +observe.storage.action.canMigrate=Actualización de la base (versión actual %1$s) observe.storage.connexionStatut.failed= observe.storage.connexionStatut.failed.description= observe.storage.connexionStatut.success= @@ -1754,6 +1766,8 @@ observe.storage.creationMode.importLocalStorage= observe.storage.creationMode.importLocalStorage.description= observe.storage.creationMode.importRemoteStorage= observe.storage.creationMode.importRemoteStorage.description= +observe.storage.creationMode.importServerStorage= +observe.storage.creationMode.importServerStorage.description= observe.storage.creationMode.internalDump= observe.storage.creationMode.internalDump.description= observe.storage.dataPolicy.readData= @@ -1770,148 +1784,158 @@ observe.storage.dbMode.useLocal= observe.storage.dbMode.useLocal.description= observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= -observe.storage.error.dbVersionMismatch= -observe.storage.importExternalDump.config= -observe.storage.importExternalDump.description= +observe.storage.dbMode.useServer= +observe.storage.dbMode.useServer.description= +observe.storage.error.dbVersionMismatch=La versión de la base remota (%s)no es compatible con la versión del modelo (%s). +observe.storage.importExternalDump.config=Selección de la copia de seguridad a utilizar +observe.storage.importExternalDump.description=Seleccione el archivo de una copia de seguridad (*.sql.gz). observe.storage.importExternalDumpData.config= -observe.storage.importExternalDumpReferentiel.config= -observe.storage.importRemoteStorage.config= -observe.storage.importRemoteStorage.description= +observe.storage.importExternalDumpReferentiel.config=Seleccione la copia de seguridad que contiene el referencial a importar +observe.storage.importRemoteStorage.config=Seleccione la base remota a importar +observe.storage.importRemoteStorage.description=Configurar la conección hacia una base remota.\nAntes de continuar, debe validad la conexión. observe.storage.importRemoteStorageData.config= -observe.storage.importRemoteStorageReferentiel.config= -observe.storage.internalDump.last.modified= -observe.storage.internalDump.not.exist= -observe.storage.label.backup= +observe.storage.importRemoteStorageReferentiel.config=Escoja la base remota que contenga el referencial a importar +observe.storage.internalDump.last.modified=(última importación \: %1$td/%1$tm/%1$tY à %1$tH\:%1$tM) +observe.storage.internalDump.not.exist=No hay base de embarque. +observe.storage.label.backup=Base temporal para backup observe.storage.label.data.import.db= observe.storage.label.db.to.create= observe.storage.label.db.to.drop= observe.storage.label.db.to.update= observe.storage.label.db.to.update.security= observe.storage.label.import.data= -observe.storage.label.import.local= -observe.storage.label.import.referentiel= -observe.storage.label.import.remote= -observe.storage.label.local= +observe.storage.label.import.local=Base local de importación +observe.storage.label.import.referentiel=Base remota de importación +observe.storage.label.import.remote=Base remota de importación +observe.storage.label.local=Base local observe.storage.label.reference.import.db= -observe.storage.label.remote= -observe.storage.label.synchro= -observe.storage.label.synchro.incoming= -observe.storage.label.synchro.referentiel= -observe.storage.locale.db= +observe.storage.label.remote=Base remota +observe.storage.label.rest= +observe.storage.label.synchro=Base de sincronización +observe.storage.label.synchro.incoming=Base origen <%1$s> +observe.storage.label.synchro.referentiel=Base central <%1$s> +observe.storage.locale.db=(local) observe.storage.message.provider.detected= -observe.storage.no.creationMode= -observe.storage.no.creationMode.required= -observe.storage.no.dbMode= +observe.storage.no.creationMode=No se ha seleccionado ningún modo de creación +observe.storage.no.creationMode.required=No requerido. +observe.storage.no.dbMode=Ningún tipo de origen de datos seleccionado observe.storage.noImportData.config= -observe.storage.noImportReferentiel.config= -observe.storage.remote.db= -observe.storage.remote.login= -observe.storage.remote.password= -observe.storage.remote.url= -observe.storage.remote.useSll= -observe.storage.report.action.backup.local= -observe.storage.report.action.backup.remote= -observe.storage.report.action.connect.local= -observe.storage.report.action.connect.remote= -observe.storage.report.action.create.local= +observe.storage.noImportReferentiel.config=Sin configuración +observe.storage.remote.db=(remoto) +observe.storage.remote.login=Login +observe.storage.remote.password=Contraseña +observe.storage.remote.url=Url +observe.storage.remote.useSll=¿modo ssl? +observe.storage.report.action.backup.local=Copia de seguridad de la base local +observe.storage.report.action.backup.remote=Copia de seguridad de la base remota +observe.storage.report.action.connect.local=Conexión a una base local +observe.storage.report.action.connect.remote=Conexión a una base remota +observe.storage.report.action.create.local=Creación de la base local observe.storage.report.action.data.import.backup= -observe.storage.report.action.import.backup= -observe.storage.report.action.import.internal= +observe.storage.report.action.import.backup=Importar de una copia de seguridad \: +observe.storage.report.action.import.internal=Importar de el último referencial \: observe.storage.report.action.import.remote.data= -observe.storage.report.action.import.remote.referentiel= -observe.storage.report.action.migrate= +observe.storage.report.action.import.remote.referentiel=Imporatar el referencial de una base remota \: +observe.storage.report.action.migrate=Politica de actualización observe.storage.report.action.no.data.import= -observe.storage.report.action.no.referentiel.import= -observe.storage.report.action.referentiel.import.backup= -observe.storage.report.can.migrate= -observe.storage.report.can.not.migrate= -observe.storage.report.no.create.mode= -observe.storage.report.security.owner= -observe.storage.report.security.readers= -observe.storage.report.security.referentiels= -observe.storage.report.security.techniciens= -observe.storage.report.selected.all.data= +observe.storage.report.action.no.referentiel.import=No importar referencial +observe.storage.report.action.referentiel.import.backup=Importar referencial desde una copia de seguridad +observe.storage.report.can.migrate=Actualizar si es necesario (version actual \: %1$s) +observe.storage.report.can.not.migrate=No es posible actualizar +observe.storage.report.no.create.mode=No se requiere modo de creación de la base +observe.storage.report.security.owner=Propietario \: %1$s +observe.storage.report.security.readers=Lecturas \: %1$s +observe.storage.report.security.referentiels=Teferenciales \: %1$s +observe.storage.report.security.techniciens=Técnicos \: %1$s +observe.storage.report.selected.all.data=Se han exportado todos los datos del observador (%1$s marea(s)). observe.storage.report.selected.all.data.to.import= -observe.storage.report.selected.backup.file= -observe.storage.report.selected.data= +observe.storage.report.selected.backup.file=Ruta de la copia de seguridad \: +observe.storage.report.selected.data=%1$s marea(s) exportada observe.storage.report.selected.data.for.import= -observe.storage.report.selected.data.referentiel= -observe.storage.report.selected.data.to.export= +observe.storage.report.selected.data.referentiel=Se exportará el referencial +observe.storage.report.selected.data.to.export=Datos a exportar \: observe.storage.report.selected.data.to.import= -observe.storage.report.selected.localStorageFile= -observe.storage.report.selected.no.data= +observe.storage.report.selected.localStorageFile=Ruta de la base local \: +observe.storage.report.selected.no.data=No hay datos del observador par exportar observe.storage.report.selected.no.data.to.import= -observe.storage.report.selected.remoteStorage= -observe.storage.report.selected.security= -observe.storage.required.rw.on.data= -observe.storage.security.administrateur= -observe.storage.selected.dbMode= -observe.storage.selectedCreationMode= -observe.storage.showMigrationProgression= -observe.storage.showMigrationSql= -observe.storage.step.backup= -observe.storage.step.backup.description= -observe.storage.step.config= -observe.storage.step.config.description= +observe.storage.report.selected.remoteStorage=Información sobre la conexión remota a usar \: +observe.storage.report.selected.security=Seguridad +observe.storage.required.rw.on.data=No tiene los permisos necesarios para realizar esta operación.\n\nDebe tener permios de lectura y escritura de los datos del obaservador. +observe.storage.security.administrateur=Propietario de la base +observe.storage.selected.dbMode=Tipo de origen de datos seleccionado +observe.storage.selectedCreationMode=Modo de creación seleccionada +observe.storage.server.dataBase= +observe.storage.showMigrationProgression=Mostrar el progreso de las actualizaciones +observe.storage.showMigrationSql=Mostrar las consultas sql de las actualizaciones +observe.storage.step.backup=Copia de seguridad +observe.storage.step.backup.description=Guardadar la base local antes de cambiar el origen de datos +observe.storage.step.config=Configuracion +observe.storage.step.config.description=Configurar el origen de datos seleccionado observe.storage.step.configData= observe.storage.step.configData.description= -observe.storage.step.configReferentiel= -observe.storage.step.configReferentiel.description= -observe.storage.step.confirm= -observe.storage.step.confirm.description= -observe.storage.step.creationMode= -observe.storage.step.dbMode= -observe.storage.step.dbMode.description= -observe.storage.step.dbMode.detail= -observe.storage.step.label= -observe.storage.step.roles= -observe.storage.step.roles.description= -observe.storage.step.selectData= -observe.storage.step.selectData.description= -observe.storage.store.remote.config= -observe.storage.store.remote.config.tip= -observe.storage.useRemoteStorage.config= -observe.storage.useRemoteStorage.description= -observe.synchro.add.object= -observe.synchro.common.activity= -observe.synchro.common.latitude= -observe.synchro.common.longitude= -observe.synchro.common.quadrant= -observe.synchro.common.reference= -observe.synchro.common.select= -observe.synchro.common.vitesse= +observe.storage.step.configReferentiel=Referencial +observe.storage.step.configReferentiel.description=Configurar la importación del referencial +observe.storage.step.confirm=Resumén +observe.storage.step.confirm.description=Resumén de las operaciones a efectuar. +observe.storage.step.creationMode=Creación de la base local +observe.storage.step.dbMode=Modo +observe.storage.step.dbMode.description=Elegir el modo de conexión +observe.storage.step.dbMode.detail=Tipo de origen de datos +observe.storage.step.label=Etapa %1$d/%2$d \: %3$s +observe.storage.step.roles=Seguridad +observe.storage.step.roles.description=Configuración de la seguridad +observe.storage.step.selectData=Selección de datos +observe.storage.step.selectData.description=Seleccionar los datos a exportar en la copia de seguridad +observe.storage.store.remote.config=Mantener la configuración +observe.storage.store.remote.config.tip=Mantener los parámetros de configuración del origen de datos remota (excepto la contraseña por motivos de seguridad) +observe.storage.useRemoteStorage.config=Configurar la base remota a usar +observe.storage.useRemoteStorage.description=Configure la conexión a la base remota\nAntes de continuar, debe validar la conexión. +observe.storage.useServerStorage.config= +observe.storage.useServerStorage.description= +observe.synchro.add.object=Añadir el referencial %1$s +observe.synchro.common.activity=Actividad +observe.synchro.common.exist=Mareas en la base remota +observe.synchro.common.latitude=Latitud +observe.synchro.common.longitude=Longitud +observe.synchro.common.maree=Marea +observe.synchro.common.program=Programa +observe.synchro.common.quadrant=Cuadrante +observe.synchro.common.reference=Referencia +observe.synchro.common.select=... +observe.synchro.common.selected=Marea a exportar +observe.synchro.common.vitesse=Velocidad observe.synchro.config.data.mode= observe.synchro.config.data.storage= observe.synchro.config.export.required.read.data= observe.synchro.config.export.required.read.referentiel= -observe.synchro.config.export.required.write.data= -observe.synchro.config.importGPS= -observe.synchro.config.referentiel.mode= -observe.synchro.config.referentiel.storage= -observe.synchro.config.report= -observe.synchro.config.source.storage= -observe.synchro.config.validate= -observe.synchro.config.validation.report= -observe.synchro.configuration= -observe.synchro.continue.with.no.save.report= +observe.synchro.config.export.required.write.data=Debe tener derechos de escritura sobre los datos de la base remota +observe.synchro.config.importGPS=Configurar el archivo de importación GPS +observe.synchro.config.referentiel.mode=Modo de importación del referencial +observe.synchro.config.referentiel.storage=Configuración de la base de referencia +observe.synchro.config.report=Configuración de los imformes +observe.synchro.config.source.storage=Configuración de la base origen +observe.synchro.config.validate=Configuración de la validación +observe.synchro.config.validation.report=Informe de validación +observe.synchro.configuration=Configuración de las operaciones +observe.synchro.continue.with.no.save.report=Continuar sin guardar el informe observe.synchro.import.data.fromBackup= observe.synchro.import.data.fromRemoteStorage= -observe.synchro.importGPS.invalidIntervals.list= -observe.synchro.message.all.obsolete.entities.fixed= -observe.synchro.message.need.save.for.synchro.operation= -observe.synchro.message.need.save.for.validation.operation= -observe.synchro.message.obsolete.entities.fixed= -observe.synchro.message.obsolote.entity.ref.found= -observe.synchro.message.obsolote.entity.refs.found= -observe.synchro.message.saveLocal.skip= +observe.synchro.importGPS.invalidIntervals.list=Lista de los intervalos de puntos gps no usables +observe.synchro.message.all.obsolete.entities.fixed=No hay mas referencias a los objetos obsoletos. +observe.synchro.message.need.save.for.synchro.operation=La operación de sincronización de referenciales ha generado cambios +observe.synchro.message.need.save.for.validation.operation=la operación de validación de datos ha generado modificaciones. +observe.synchro.message.obsolete.entities.fixed=Los referenciales %1$s han sido eliminados +observe.synchro.message.obsolote.entity.ref.found=%1$s \: "%2$s" (1 referncia) +observe.synchro.message.obsolote.entity.refs.found=%1$s \: "%2$s" (%3$d referencias) +observe.synchro.message.saveLocal.skip=No es necesario realizar copia de seguidad de la base local observe.synchro.no.data.import= -observe.synchro.no.local.storage= -observe.synchro.no.referentiel.import= -observe.synchro.no.remote.storage= -observe.synchro.obsolete.entities.list= -observe.synchro.obsolete.entity.fix= -observe.synchro.obsolete.entity.label= -observe.synchro.obsolete.entity.to.change.label= +observe.synchro.no.local.storage=No hay base origen definida +observe.synchro.no.referentiel.import=No importar el referencial +observe.synchro.no.remote.storage=No hay base de referencia definida +observe.synchro.obsolete.entities.list=La lista de entidades de referenciales está obsoleta +observe.synchro.obsolete.entity.fix=Cambiar las referencias del objeto seleccionado +observe.synchro.obsolete.entity.label=%1$s \: "%2$s" +observe.synchro.obsolete.entity.to.change.label=Objeto obsoleto observe.synchro.operation.canceled= observe.synchro.operation.consolidate= observe.synchro.operation.consolidate.description= @@ -2194,27 +2218,27 @@ observe.title.unique.key= observe.title.validate= observe.title.validate.tip= observe.title.welcome.admin= -observe.tree.activityLongline= +observe.tree.activityLongline=Actividad observe.tree.activityLongline.unsaved= -observe.tree.activitySeine= +observe.tree.activitySeine=Actividad observe.tree.activitySeine.unsaved= observe.tree.baitHaulingStatus= observe.tree.baitSettingStatus= observe.tree.baitType= observe.tree.catchFateLongline= observe.tree.catchLongline= -observe.tree.country= -observe.tree.detectionMode= +observe.tree.country=País +observe.tree.detectionMode=Modo de detección observe.tree.encounter= observe.tree.encounterType= -observe.tree.floatingObject.unsaved= +observe.tree.floatingObject.unsaved=Nuevo DCP observe.tree.fpaZone= observe.tree.gear= observe.tree.gearCaracteristic= observe.tree.gearCaracteristicType= observe.tree.gearUseFeaturesLongline= observe.tree.gearUseFeaturesSeine= -observe.tree.harbour= +observe.tree.harbour=Puerto observe.tree.healthness= observe.tree.hookPosition= observe.tree.hookSize= @@ -2229,63 +2253,63 @@ observe.tree.longlineDetailComposition= observe.tree.longlineGlobalComposition= observe.tree.maturityStatus= observe.tree.mitigationType= -observe.tree.nonTargetCatch= -observe.tree.nonTargetSample= -observe.tree.objectFate= +observe.tree.nonTargetCatch=Fauna asociada conservada o descartada +observe.tree.nonTargetSample=Muestreo fauna asociada +observe.tree.objectFate=Devenir de objeto observe.tree.objectObservedSpecies= -observe.tree.objectOperation= +observe.tree.objectOperation=Operación sobre la baliza observe.tree.objectSchoolEstimate= -observe.tree.objectType= -observe.tree.observedSystem= -observe.tree.ocean= -observe.tree.organism= -observe.tree.person= -observe.tree.program= -observe.tree.reasonForDiscard= -observe.tree.reasonForNoFishing= -observe.tree.reasonForNullSet= +observe.tree.objectType=Tipo de objeto +observe.tree.observedSystem=Sistema observado +observe.tree.ocean=Océano +observe.tree.organism=Organismo +observe.tree.person=Observador +observe.tree.program=Programa +observe.tree.reasonForDiscard=Razon de descarte +observe.tree.reasonForNoFishing=Razón de no lance de Cerco +observe.tree.reasonForNullSet=Causa de lance nulo observe.tree.reference.common= observe.tree.reference.longline= observe.tree.reference.seine= -observe.tree.route= -observe.tree.route.unsaved= -observe.tree.schoolEstimate= +observe.tree.route=Ruta +observe.tree.route.unsaved=Nueva ruta +observe.tree.schoolEstimate=Estimación del banco observe.tree.sensorBrand= observe.tree.sensorDataFormat= observe.tree.sensorType= observe.tree.sensorUsed= observe.tree.setLongline= -observe.tree.setLongline.unsaved= +observe.tree.setLongline.unsaved=Nuevo Lance observe.tree.setSeine= -observe.tree.setSeine.unsaved= +observe.tree.setSeine.unsaved=Nuevo Lance observe.tree.settingShape= -observe.tree.sex= +observe.tree.sex=Sexo observe.tree.sizeMeasureType= -observe.tree.species= -observe.tree.speciesFate= -observe.tree.speciesGroup= +observe.tree.species=Especie +observe.tree.speciesFate=Devenir de fauna +observe.tree.speciesGroup=Grupo de especie de fauna observe.tree.speciesList= -observe.tree.speciesStatus= +observe.tree.speciesStatus=Estado de especie observe.tree.stomacFullness= -observe.tree.surroundingActivity= -observe.tree.targetCatch= -observe.tree.targetDiscarded= -observe.tree.targetSample= -observe.tree.targetSampleCapture= +observe.tree.surroundingActivity=Actividad circundante +observe.tree.targetCatch=Captura de atún +observe.tree.targetDiscarded=Descarte de atún +observe.tree.targetSample=Muestreo atún descartado +observe.tree.targetSampleCapture=Muestreo atún capturado observe.tree.tdr= observe.tree.transmittingBuoyOperation= observe.tree.transmittingBuoyType= -observe.tree.tripLongline.unsaved= -observe.tree.tripSeine.unsaved= +observe.tree.tripLongline.unsaved=Nueva marea +observe.tree.tripSeine.unsaved=Nueva marea observe.tree.tripType= -observe.tree.vessel= +observe.tree.vessel=Barco observe.tree.vesselActivityLongline= -observe.tree.vesselActivitySeine= -observe.tree.vesselSizeCategory= -observe.tree.vesselType= -observe.tree.weightCategory= +observe.tree.vesselActivitySeine=Actividad del barco +observe.tree.vesselSizeCategory=Capacidad +observe.tree.vesselType=Pesquería +observe.tree.weightCategory=Categoría de peso observe.tree.weightMeasureType= -observe.tree.wind= +observe.tree.wind=Fuerza del viento observe.tripLongline.captain= observe.tripLongline.dataEntryOperator= observe.tripLongline.endDate= @@ -2312,7 +2336,7 @@ observe.tripSeine.message.no.active.found= observe.tripSeine.message.not.open= observe.tripSeine.message.updating= observe.tripSeine.tab.general= -observe.tripSeine.tab.map= +observe.tripSeine.tab.map=Mapa observe.tripSeine.title= observe.validation.model.type.all= observe.validation.model.type.all.description= @@ -2332,4 +2356,5 @@ observe.view.navigation= observe.view.server= observe.warning.nimbus.landf= observe.warning.no.ui= +observeweb.configuration.description= ui.main.body.synchro.action.copy.to.clipBoard= diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index eeccb53..5e32df1 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -1,9 +1,9 @@ nuitonutil.error.convertor.noValue= nuitonutil.error.float.convertor= nuitonutil.error.no.convertor= -observe.about.message= -observe.about.translate.content= -observe.about.translate.title= +observe.about.message=<h3>ObServe</h3><a href\="http\://www.ird.fr/informatique-scientifique/projets/observe/">Système d'Information, d'Observation et de Suivi des pêches thonières tropicales de surface.</a><hr/><p>Application de saisie des données observateurs et de consultation de telles données depuis une base <i>Obstuna</i>.</p> <p>Ce projet a été initiée en 2008 par l'unité US 007-OSIRIS de <a href\="http\://www.ird.fr">l'IRD</a> dans le cadre d'un <a href\="http\://www.ird.fr/infor [...] +observe.about.translate.content=<h2>Comment traduire ObServe</h2>Vous pouvez nous aider à traduire l'application.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">observe-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur avec les options suivantes \: <ul><li>caractère séparateur \: <strong><i>|</i></strong></li><li>encoding <strong><i>UTF-8</i></strong></li><li>texte encapsulé par des <strong><i>"</i></strong></li></ul></li><li>Traduisez, Améliore [...] +observe.about.translate.title=Traduire ObServe observe.action.HookSize.create.tip= observe.action.HookSize.delete.tip= observe.action.HookSize.detail.tip= @@ -14,798 +14,798 @@ observe.action.HookType.delete.tip= observe.action.HookType.detail.tip= observe.action.HookType.modify.tip= observe.action.HookType.save.tip= -observe.action.about= -observe.action.about.tip= -observe.action.add.floatingObject= -observe.action.add.floatingObject.tip= -observe.action.add.set= -observe.action.add.set.tip= -observe.action.add.setLongline= -observe.action.add.setLongline.tip= -observe.action.admin.cancel= -observe.action.admin.close= -observe.action.apply= -observe.action.auto.copy.to.clipboard= -observe.action.auto.copy.to.clipboard.tip= -observe.action.back.to.list= -observe.action.back.to.list.tip= -observe.action.baitHaulingStatus.create.tip= -observe.action.baitHaulingStatus.delete.tip= -observe.action.baitHaulingStatus.detail.tip= -observe.action.baitHaulingStatus.modify.tip= -observe.action.baitHaulingStatus.save.tip= -observe.action.baitSettingStatus.create.tip= -observe.action.baitSettingStatus.delete.tip= -observe.action.baitSettingStatus.detail.tip= -observe.action.baitSettingStatus.modify.tip= -observe.action.baitSettingStatus.save.tip= -observe.action.baitType.create.tip= -observe.action.baitType.delete.tip= -observe.action.baitType.detail.tip= -observe.action.baitType.modify.tip= -observe.action.baitType.save.tip= -observe.action.cancel= -observe.action.cancel.create.tip= -observe.action.catchFateLongline.create.tip= -observe.action.catchFateLongline.delete.tip= -observe.action.catchFateLongline.detail.tip= -observe.action.catchFateLongline.modify.tip= -observe.action.catchFateLongline.save.tip= -observe.action.change.storage= -observe.action.change.storage.tip= -observe.action.choose.db.dump= -observe.action.choose.db.dump.description= -observe.action.choose.db.dump.directory= -observe.action.choose.importGPS= -observe.action.choose.importGPS.description= -observe.action.choose.report.directory= -observe.action.choose.reportFile= -observe.action.choose.reportFile.description= -observe.action.choose.sensorUsed.exportData= -observe.action.choose.sensorUsed.importData= -observe.action.choose.tdr.exportData= -observe.action.choose.tdr.importData= -observe.action.close= -observe.action.close.activity.tip= -observe.action.close.maree.tip= -observe.action.close.open= -observe.action.close.open.tip= -observe.action.close.route.tip= -observe.action.close.storage= -observe.action.close.storage.tip= -observe.action.close.synchro.tip= -observe.action.closeAndCreate= -observe.action.closeAndCreate.activity= -observe.action.closeAndCreate.activity.tip= -observe.action.closeAndCreate.maree= -observe.action.closeAndCreate.maree.tip= -observe.action.closeAndCreate.route= -observe.action.closeAndCreate.route.tip= -observe.action.closeAndCreate.tip= -observe.action.commandline.configure.ui= -observe.action.commandline.create.id= -observe.action.commandline.disable.main.ui= -observe.action.commandline.help= -observe.action.commandline.help.ui= -observe.action.commandline.launch.admin.ui= -observe.action.commandline.launch.h2.server.mode= -observe.action.commandline.launch.obstuna.admin.ui= -observe.action.commandline.use.jmx= -observe.action.configuration= -observe.action.configuration.tip= -observe.action.configure= -observe.action.continue= -observe.action.copy= -observe.action.copy.column.headers= -observe.action.copy.column.headers.tip= -observe.action.copy.row.headers= -observe.action.copy.row.headers.tip= -observe.action.country.create.tip= -observe.action.country.delete.tip= -observe.action.country.detail.tip= -observe.action.country.modify.tip= -observe.action.country.save.tip= -observe.action.create= -observe.action.create.activity= -observe.action.create.activity.tip= -observe.action.create.entry.tip= -observe.action.create.gearUseFeaturesLongline= -observe.action.create.gearUseFeaturesLongline.tip= -observe.action.create.gearUseFeaturesSeine= -observe.action.create.gearUseFeaturesSeine.tip= -observe.action.create.maree= -observe.action.create.maree.tip= -observe.action.create.nonTargetCatch= -observe.action.create.nonTargetCatch.tip= -observe.action.create.nonTargetSample= -observe.action.create.nonTargetSample.tip= -observe.action.create.objectObservedSpecies= -observe.action.create.objectObservedSpecies.tip= -observe.action.create.route= -observe.action.create.route.tip= -observe.action.create.schoolEstimate= -observe.action.create.schoolEstimate.tip= -observe.action.create.targetCatch= -observe.action.create.targetCatch.tip= -observe.action.create.targetDiscarded= -observe.action.create.targetDiscarded.tip= -observe.action.create.targetSample= -observe.action.create.targetSample.tip= -observe.action.create.targetSampleCapture= -observe.action.create.targetSampleCapture.tip= -observe.action.db.locale.es.tip= -observe.action.db.locale.fr.tip= -observe.action.db.locale.uk.tip= -observe.action.delete= -observe.action.delete.activity.tip= -observe.action.delete.entry.tip= -observe.action.delete.floatingObject.tip= -observe.action.delete.maree.tip= -observe.action.delete.route.tip= -observe.action.delete.set.tip= -observe.action.delete.tip= -observe.action.detail= -observe.action.detectionMode.create.tip= -observe.action.detectionMode.delete.tip= -observe.action.detectionMode.detail.tip= -observe.action.detectionMode.modify.tip= -observe.action.detectionMode.save.tip= -observe.action.do.backup= -observe.action.do.backup.tip= -observe.action.encounterType.create.tip= -observe.action.encounterType.delete.tip= -observe.action.encounterType.detail.tip= -observe.action.encounterType.modify.tip= -observe.action.encounterType.save.tip= -observe.action.exit= -observe.action.exit.tip= -observe.action.fpaZone.create.tip= -observe.action.fpaZone.delete.tip= -observe.action.fpaZone.detail.tip= -observe.action.fpaZone.modify.tip= -observe.action.fpaZone.save.tip= -observe.action.gear.create.tip= -observe.action.gear.delete.tip= -observe.action.gear.detail.tip= -observe.action.gear.modify.tip= -observe.action.gear.save.tip= -observe.action.gearCaracteristic.create.tip= -observe.action.gearCaracteristic.delete.tip= -observe.action.gearCaracteristic.detail.tip= -observe.action.gearCaracteristic.modify.tip= -observe.action.gearCaracteristic.save.tip= -observe.action.gearCaracteristicType.create.tip= -observe.action.gearCaracteristicType.delete.tip= -observe.action.gearCaracteristicType.detail.tip= -observe.action.gearCaracteristicType.modify.tip= -observe.action.gearCaracteristicType.save.tip= -observe.action.goDown= -observe.action.goDown.tip= -observe.action.goUp= -observe.action.goUp.tip= -observe.action.goto.next.stage= -observe.action.goto.next.stage.tip= -observe.action.goto.open.activity= -observe.action.goto.open.activity.short= -observe.action.goto.open.activity.tip= -observe.action.goto.open.maree= -observe.action.goto.open.other.activity= -observe.action.goto.open.other.activity.tip= -observe.action.goto.open.other.maree= -observe.action.goto.open.other.maree.tip= -observe.action.goto.open.other.route= -observe.action.goto.open.other.route.tip= -observe.action.goto.open.program.short= -observe.action.goto.open.program.tip= -observe.action.goto.open.route= -observe.action.goto.open.route.short= -observe.action.goto.open.route.tip= -observe.action.goto.open.set.short= -observe.action.goto.open.set.tip= -observe.action.goto.open.trip.short= -observe.action.goto.open.trip.tip= -observe.action.goto.previous.stage= -observe.action.goto.previous.stage.tip= -observe.action.goto.referentiel.short= -observe.action.goto.referentiel.tip= -observe.action.goto.selected.activity= -observe.action.goto.selected.activity.tip= -observe.action.goto.selected.maree= -observe.action.goto.selected.maree.tip= -observe.action.goto.selected.route= -observe.action.goto.selected.route.tip= -observe.action.harbour.create.tip= -observe.action.harbour.delete.tip= -observe.action.harbour.detail.tip= -observe.action.harbour.modify.tip= -observe.action.harbour.save.tip= -observe.action.healthness.create.tip= -observe.action.healthness.delete.tip= -observe.action.healthness.detail.tip= -observe.action.healthness.modify.tip= -observe.action.healthness.save.tip= -observe.action.hookPosition.create.tip= -observe.action.hookPosition.delete.tip= -observe.action.hookPosition.detail.tip= -observe.action.hookPosition.modify.tip= -observe.action.hookPosition.save.tip= -observe.action.hookSize.create.tip= -observe.action.hookSize.delete.tip= -observe.action.hookSize.detail.tip= -observe.action.hookSize.modify.tip= -observe.action.hookSize.save.tip= -observe.action.hookType.create.tip= -observe.action.hookType.delete.tip= -observe.action.hookType.detail.tip= -observe.action.hookType.modify.tip= -observe.action.hookType.save.tip= -observe.action.info.storage= -observe.action.info.storage.tip= -observe.action.itemHorizontalPosition.create.tip= -observe.action.itemHorizontalPosition.delete.tip= -observe.action.itemHorizontalPosition.detail.tip= -observe.action.itemHorizontalPosition.modify.tip= -observe.action.itemHorizontalPosition.save.tip= -observe.action.itemVerticalPosition.create.tip= -observe.action.itemVerticalPosition.delete.tip= -observe.action.itemVerticalPosition.detail.tip= -observe.action.itemVerticalPosition.modify.tip= -observe.action.itemVerticalPosition.save.tip= -observe.action.lengthWeightParameter.create.tip= -observe.action.lengthWeightParameter.delete.tip= -observe.action.lengthWeightParameter.detail.tip= -observe.action.lengthWeightParameter.modify.tip= -observe.action.lengthWeightParameter.save.tip= -observe.action.lightsticksColor.create.tip= -observe.action.lightsticksColor.delete.tip= -observe.action.lightsticksColor.detail.tip= -observe.action.lightsticksColor.modify.tip= -observe.action.lightsticksColor.save.tip= -observe.action.lightsticksType.create.tip= -observe.action.lightsticksType.delete.tip= -observe.action.lightsticksType.detail.tip= -observe.action.lightsticksType.modify.tip= -observe.action.lightsticksType.save.tip= -observe.action.lineType.create.tip= -observe.action.lineType.delete.tip= -observe.action.lineType.detail.tip= -observe.action.lineType.modify.tip= -observe.action.lineType.save.tip= -observe.action.load.from.file= -observe.action.load.from.file.tip= -observe.action.locale.es= -observe.action.locale.es.tip= -observe.action.locale.fr= -observe.action.locale.fr.tip= -observe.action.locale.uk= -observe.action.locale.uk.tip= -observe.action.maturityStatus.create.tip= -observe.action.maturityStatus.delete.tip= -observe.action.maturityStatus.detail.tip= -observe.action.maturityStatus.modify.tip= -observe.action.maturityStatus.save.tip= -observe.action.mitigationType.create.tip= -observe.action.mitigationType.delete.tip= -observe.action.mitigationType.detail.tip= -observe.action.mitigationType.modify.tip= -observe.action.mitigationType.save.tip= -observe.action.modify= -observe.action.new.entry= -observe.action.new.entry.tip= -observe.action.objectFate.create.tip= -observe.action.objectFate.delete.tip= -observe.action.objectFate.detail.tip= -observe.action.objectFate.modify.tip= -observe.action.objectFate.save.tip= -observe.action.objectOperation.create.tip= -observe.action.objectOperation.delete.tip= -observe.action.objectOperation.detail.tip= -observe.action.objectOperation.modify.tip= -observe.action.objectOperation.save.tip= -observe.action.objectType.create.tip= -observe.action.objectType.delete.tip= -observe.action.objectType.detail.tip= -observe.action.objectType.modify.tip= -observe.action.objectType.save.tip= -observe.action.observedSystem.create.tip= -observe.action.observedSystem.delete.tip= -observe.action.observedSystem.detail.tip= -observe.action.observedSystem.modify.tip= -observe.action.observedSystem.save.tip= -observe.action.ocean.create.tip= -observe.action.ocean.delete.tip= -observe.action.ocean.detail.tip= -observe.action.ocean.modify.tip= -observe.action.ocean.save.tip= -observe.action.open.screen= -observe.action.openLink.formsUrl.tip= -observe.action.openLink.reportsUrl.tip= -observe.action.organism.create.tip= -observe.action.organism.delete.tip= -observe.action.organism.detail.tip= -observe.action.organism.modify.tip= -observe.action.organism.save.tip= -observe.action.person.create.tip= -observe.action.person.delete.tip= -observe.action.person.detail.tip= -observe.action.person.modify.tip= -observe.action.person.save.tip= -observe.action.program.create.tip= -observe.action.program.delete.tip= -observe.action.program.detail.tip= -observe.action.program.modify.tip= -observe.action.program.save.tip= -observe.action.quitHelp.tip= -observe.action.reasonForDiscard.create.tip= -observe.action.reasonForDiscard.delete.tip= -observe.action.reasonForDiscard.detail.tip= -observe.action.reasonForDiscard.modify.tip= -observe.action.reasonForDiscard.save.tip= -observe.action.reasonForNoFishing.create.tip= -observe.action.reasonForNoFishing.delete.tip= -observe.action.reasonForNoFishing.detail.tip= -observe.action.reasonForNoFishing.modify.tip= -observe.action.reasonForNoFishing.save.tip= -observe.action.reasonForNullSet.create.tip= -observe.action.reasonForNullSet.delete.tip= -observe.action.reasonForNullSet.detail.tip= -observe.action.reasonForNullSet.modify.tip= -observe.action.reasonForNullSet.save.tip= -observe.action.reload.application= -observe.action.reload.storage= -observe.action.reload.storage.tip= -observe.action.reload.ui= -observe.action.reloadDefaultConfiguration= -observe.action.reloadDefaultConfiguration.tip= -observe.action.reloadResources= -observe.action.reloadResources.tip= -observe.action.reopen= -observe.action.reopen.activity.tip= -observe.action.reopen.maree.tip= -observe.action.reopen.route.tip= -observe.action.reopen.selected.activity= -observe.action.reopen.selected.activity.tip= -observe.action.reopen.selected.maree= -observe.action.reopen.selected.maree.tip= -observe.action.reopen.selected.route= -observe.action.reopen.selected.route.tip= -observe.action.reopen.tip= -observe.action.reset= -observe.action.reset.entry.tip= -observe.action.reset.ersId.tip= -observe.action.reset.formsUrl.tip= -observe.action.reset.homeId.tip= -observe.action.reset.new.entry.tip= -observe.action.reset.picturesReferences.tip= -observe.action.reset.reportsUrl.tip= -observe.action.reset.supportVesselName.tip= -observe.action.reset.tip= -observe.action.reset.well.tip= -observe.action.restart.application= -observe.action.restart.application.tip= -observe.action.save= -observe.action.save.all.tip= -observe.action.save.entry.tip= -observe.action.save.tip= -observe.action.save.to.file= -observe.action.save.to.file.tip= -observe.action.selectNode= -observe.action.selectNode.tip= -observe.action.sensorBrand.create.tip= -observe.action.sensorBrand.delete.tip= -observe.action.sensorBrand.detail.tip= -observe.action.sensorBrand.modify.tip= -observe.action.sensorBrand.save.tip= -observe.action.sensorDataFormat.create.tip= -observe.action.sensorDataFormat.delete.tip= -observe.action.sensorDataFormat.detail.tip= -observe.action.sensorDataFormat.modify.tip= -observe.action.sensorDataFormat.save.tip= -observe.action.sensorType.create.tip= -observe.action.sensorType.delete.tip= -observe.action.sensorType.detail.tip= -observe.action.sensorType.modify.tip= -observe.action.sensorType.save.tip= -observe.action.settingShape.create.tip= -observe.action.settingShape.delete.tip= -observe.action.settingShape.detail.tip= -observe.action.settingShape.modify.tip= -observe.action.settingShape.save.tip= -observe.action.sex.create.tip= -observe.action.sex.delete.tip= -observe.action.sex.detail.tip= -observe.action.sex.modify.tip= -observe.action.sex.save.tip= -observe.action.show.technical.informations.tip= -observe.action.show.unique.keys.tip= -observe.action.show.usages.tip= -observe.action.showConfig.title= -observe.action.site= -observe.action.site.tip= -observe.action.sizeMeasureType.create.tip= -observe.action.sizeMeasureType.delete.tip= -observe.action.sizeMeasureType.detail.tip= -observe.action.sizeMeasureType.modify.tip= -observe.action.sizeMeasureType.save.tip= -observe.action.species.create.tip= -observe.action.species.delete.tip= -observe.action.species.detail.tip= -observe.action.species.modify.tip= -observe.action.species.save.tip= -observe.action.speciesFate.create.tip= -observe.action.speciesFate.delete.tip= -observe.action.speciesFate.detail.tip= -observe.action.speciesFate.modify.tip= -observe.action.speciesFate.save.tip= -observe.action.speciesGroupSpecies.create.tip= -observe.action.speciesGroupSpecies.delete.tip= -observe.action.speciesGroupSpecies.detail.tip= -observe.action.speciesGroupSpecies.modify.tip= -observe.action.speciesGroupSpecies.save.tip= -observe.action.speciesList.create.tip= -observe.action.speciesList.delete.tip= -observe.action.speciesList.detail.tip= -observe.action.speciesList.modify.tip= -observe.action.speciesStatus.create.tip= -observe.action.speciesStatus.delete.tip= -observe.action.speciesStatus.detail.tip= -observe.action.speciesStatus.modify.tip= -observe.action.speciesStatus.save.tip= -observe.action.start.h2.web.server= -observe.action.start.h2.web.server.tip= -observe.action.start.server.mode= -observe.action.start.server.mode.tip= -observe.action.stomacFullness.create.tip= -observe.action.stomacFullness.delete.tip= -observe.action.stomacFullness.detail.tip= -observe.action.stomacFullness.modify.tip= -observe.action.stomacFullness.save.tip= -observe.action.stop.h2.web.server= -observe.action.stop.h2.web.server.tip= -observe.action.stop.server.mode= -observe.action.stop.server.mode.tip= -observe.action.storage.apply= -observe.action.storage.apply.tip= -observe.action.storage.applyAction= -observe.action.storage.cancel= -observe.action.storage.cancel.tip= -observe.action.surroundingActivity.create.tip= -observe.action.surroundingActivity.delete.tip= -observe.action.surroundingActivity.detail.tip= -observe.action.surroundingActivity.modify.tip= -observe.action.surroundingActivity.save.tip= -observe.action.synchro.apply.modifications= -observe.action.synchro.cancel.tip= -observe.action.synchro.copy.tip= -observe.action.synchro.launch.operation= -observe.action.synchro.prepare.operation= -observe.action.synchro.report.reset.tip= -observe.action.test.remote= -observe.action.test.remote.tip= -observe.action.transmittingBuoyOperation.create.tip= -observe.action.transmittingBuoyOperation.delete.tip= -observe.action.transmittingBuoyOperation.detail.tip= -observe.action.transmittingBuoyOperation.modify.tip= -observe.action.transmittingBuoyOperation.save.tip= -observe.action.transmittingBuoyType.create.tip= -observe.action.transmittingBuoyType.delete.tip= -observe.action.transmittingBuoyType.detail.tip= -observe.action.transmittingBuoyType.modify.tip= -observe.action.transmittingBuoyType.save.tip= -observe.action.tripType.create.tip= -observe.action.tripType.delete.tip= -observe.action.tripType.detail.tip= -observe.action.tripType.modify.tip= -observe.action.tripType.save.tip= -observe.action.vessel.create.tip= -observe.action.vessel.delete.tip= -observe.action.vessel.detail.tip= -observe.action.vessel.modify.tip= -observe.action.vessel.save.tip= -observe.action.vesselActivityLongline.create.tip= -observe.action.vesselActivityLongline.delete.tip= -observe.action.vesselActivityLongline.detail.tip= -observe.action.vesselActivityLongline.modify.tip= -observe.action.vesselActivityLongline.save.tip= -observe.action.vesselActivitySeine.create.tip= -observe.action.vesselActivitySeine.delete.tip= -observe.action.vesselActivitySeine.detail.tip= -observe.action.vesselActivitySeine.modify.tip= -observe.action.vesselActivitySeine.save.tip= -observe.action.vesselSizeCategory.create.tip= -observe.action.vesselSizeCategory.delete.tip= -observe.action.vesselSizeCategory.detail.tip= -observe.action.vesselSizeCategory.modify.tip= -observe.action.vesselSizeCategory.save.tip= -observe.action.vesselType.create.tip= -observe.action.vesselType.delete.tip= -observe.action.vesselType.detail.tip= -observe.action.vesselType.modify.tip= -observe.action.vesselType.save.tip= -observe.action.weightCategory.create.tip= -observe.action.weightCategory.delete.tip= -observe.action.weightCategory.detail.tip= -observe.action.weightCategory.modify.tip= -observe.action.weightCategory.save.tip= -observe.action.weightMeasureType.create.tip= -observe.action.weightMeasureType.delete.tip= -observe.action.weightMeasureType.detail.tip= -observe.action.weightMeasureType.modify.tip= -observe.action.weightMeasureType.save.tip= -observe.action.wind.create.tip= -observe.action.wind.delete.tip= -observe.action.wind.detail.tip= -observe.action.wind.modify.tip= -observe.action.wind.save.tip= -observe.activityLongline.coordinate= -observe.activityLongline.fpaZone= -observe.activityLongline.message.active.found= -observe.activityLongline.message.active.found.for.other.trip= -observe.activityLongline.message.creating= -observe.activityLongline.message.no.active.found= -observe.activityLongline.message.no.active.found.for.other.trip= -observe.activityLongline.message.not.open= -observe.activityLongline.message.updating= -observe.activityLongline.seaSurfaceTemperature= -observe.activityLongline.timeStamp= -observe.activityLongline.title= -observe.activityLongline.vesselActivityLongline= -observe.activityLonglines.title= -observe.activityObservedSystem.availableObservedSystem= -observe.activityObservedSystem.selectedObservedSystem= -observe.activitySeine.message.active.found= -observe.activitySeine.message.active.found.for.other.route= -observe.activitySeine.message.creating= -observe.activitySeine.message.no.active.found= -observe.activitySeine.message.no.active.found.for.other.route= -observe.activitySeine.message.not.open= -observe.activitySeine.message.updating= -observe.activitySeine.tab.general= -observe.activitySeine.tab.measurements= -observe.activitySeine.title= -observe.activitySeineObservedSystem.title= -observe.activitySeines.title= -observe.admin.resume.no.operation.done= -observe.admin.resume.operation.canceled= -observe.admin.resume.operation.done= -observe.admin.resume.operation.failed= -observe.admin.resume.operation.need.fix= -observe.admin.resume.operation.not.started= -observe.admin.resume.operation.running= -observe.application.config= -observe.baitsComposition.action.create= -observe.baitsComposition.action.create.tip= -observe.baitsComposition.baitSettingStatus= -observe.baitsComposition.baitType= -observe.baitsComposition.individualSize= -observe.baitsComposition.individualWeight= -observe.baitsComposition.proportion= -observe.baitsComposition.proportionSum= -observe.baitsComposition.table.baitSettingStatus= -observe.baitsComposition.table.baitSettingStatus.tip= -observe.baitsComposition.table.baitType= -observe.baitsComposition.table.baitType.tip= -observe.baitsComposition.table.individualSize= -observe.baitsComposition.table.individualSize.tip= -observe.baitsComposition.table.individualWeight= -observe.baitsComposition.table.individualWeight.tip= -observe.baitsComposition.table.proportion= -observe.baitsComposition.table.proportion.tip= -observe.baitsComposition.title= -observe.basket.cant.delete.message= -observe.basket.cant.delete.title= -observe.basket.invalid.nextFloatline1Length= -observe.branchLine.cant.delete.message= -observe.branchLine.cant.delete.title= -observe.branchline.baitHaulingStatus= -observe.branchline.baitSettingStatus= -observe.branchline.baitType= -observe.branchline.comment= -observe.branchline.depthRecorder= -observe.branchline.hookLost= -observe.branchline.hookOffset= -observe.branchline.hookSize= -observe.branchline.hookType= -observe.branchline.message.modified= -observe.branchline.message.modified.but.invalid= -observe.branchline.snapWeight= -observe.branchline.swivelWeight= -observe.branchline.tab.general= -observe.branchline.tab.hookAndBait= -observe.branchline.timeSinceContact= -observe.branchline.timer= -observe.branchline.timerTimeOnBoard= -observe.branchline.title= -observe.branchline.topType= -observe.branchline.traceCutOff= -observe.branchline.tracelineType= -observe.branchline.weightedSnap= -observe.branchline.weightedSwivel= -observe.branchlinesComposition.action.create= -observe.branchlinesComposition.action.create.tip= -observe.branchlinesComposition.length= -observe.branchlinesComposition.proportion= -observe.branchlinesComposition.proportionSum= -observe.branchlinesComposition.table.length= -observe.branchlinesComposition.table.length.tip= -observe.branchlinesComposition.table.proportion= -observe.branchlinesComposition.table.proportion.tip= -observe.branchlinesComposition.table.topType= -observe.branchlinesComposition.table.topType.tip= -observe.branchlinesComposition.table.tracelineType= -observe.branchlinesComposition.table.tracelineType.tip= -observe.branchlinesComposition.title= -observe.branchlinesComposition.topType= -observe.branchlinesComposition.tracelineType= -observe.broughtOnDeck.comment= -observe.catchLongline.acquisitionMode= -observe.catchLongline.acquisitionMode.grouped= -observe.catchLongline.acquisitionMode.individual= -observe.catchLongline.action.create= -observe.catchLongline.action.create.tip= -observe.catchLongline.action.new= -observe.catchLongline.action.new.tip= -observe.catchLongline.action.reset.photoReferences.tip= -observe.catchLongline.availablePredator= -observe.catchLongline.basket= -observe.catchLongline.beatDiameter= -observe.catchLongline.branchline= -observe.catchLongline.catchFateLongline= -observe.catchLongline.catchHealthness= -observe.catchLongline.comment= -observe.catchLongline.count= -observe.catchLongline.depredated= -observe.catchLongline.discardHealthness= -observe.catchLongline.gonadeWeight= -observe.catchLongline.hookPosition= -observe.catchLongline.hookWhenDiscarded= -observe.catchLongline.locationOnLongline= -observe.catchLongline.maturityStatus= -observe.catchLongline.photoReferences= -observe.catchLongline.predator= -observe.catchLongline.resetBranchline= -observe.catchLongline.resetBranchline.tip= -observe.catchLongline.saveBranchline= -observe.catchLongline.saveBranchline.tip= -observe.catchLongline.section= -observe.catchLongline.selectedPredator= -observe.catchLongline.sex= -observe.catchLongline.speciesCatch= -observe.catchLongline.stomacFullness= -observe.catchLongline.tab.branchline= -observe.catchLongline.tab.caracteristics= -observe.catchLongline.tab.depredated= -observe.catchLongline.tab.foodAndSexual= -observe.catchLongline.tab.sizeMeasures= -observe.catchLongline.tab.weightMeasures= -observe.catchLongline.title= -observe.catchLongline.totalWeight= -observe.catchlongline.table.acquisitionMode= -observe.catchlongline.table.acquisitionMode.tip= -observe.catchlongline.table.basketHaulingId= -observe.catchlongline.table.basketHaulingId.tip= -observe.catchlongline.table.branchlineHaulingId= -observe.catchlongline.table.branchlineHaulingId.tip= -observe.catchlongline.table.catchFateLongline= -observe.catchlongline.table.catchFateLongline.tip= -observe.catchlongline.table.catchHealthness= -observe.catchlongline.table.catchHealthness.tip= -observe.catchlongline.table.comment= -observe.catchlongline.table.comment.tip= -observe.catchlongline.table.count= -observe.catchlongline.table.count.tip= -observe.catchlongline.table.depredated= -observe.catchlongline.table.depredated.tip= -observe.catchlongline.table.discardHealthness= -observe.catchlongline.table.discardHealthness.tip= -observe.catchlongline.table.sectionHaulingId= -observe.catchlongline.table.sectionHaulingId.tip= -observe.catchlongline.table.size= -observe.catchlongline.table.size.tip= -observe.catchlongline.table.sizeMeasureType= -observe.catchlongline.table.sizeMeasureType.tip= -observe.catchlongline.table.speciesCatch= -observe.catchlongline.table.speciesCatch.tip= -observe.catchlongline.table.weight= -observe.catchlongline.table.weight.tip= -observe.catchlongline.table.weightMeasureType= -observe.catchlongline.table.weightMeasureType.tip= -observe.choice.cancel= -observe.choice.confirm.delete= -observe.choice.continue= -observe.choice.create.fin.veille.activity= -observe.choice.create.fin.veille.activity.and.continue= -observe.choice.createLocalStorage= -observe.choice.doNotSave= -observe.choice.doNothing= -observe.choice.not.create.fin.veille.activity.and.continue= -observe.choice.quit= -observe.choice.save= -observe.choice.useRemoteStorage= -observe.common.acquisitionMode= -observe.common.acquisitionMode.count= -observe.common.acquisitionMode.individu= -observe.common.activities= -observe.common.activities.list= -observe.common.activity= +observe.action.about=À propos +observe.action.about.tip=À propos d'ObServe... +observe.action.add.floatingObject=Ajouter un DCP +observe.action.add.floatingObject.tip=Ajouter un objet flottant à l'activité +observe.action.add.set=Ajouter la calée +observe.action.add.set.tip=Ajouter la calée de l'activité +observe.action.add.setLongline=Ajouter l'opération de pêche +observe.action.add.setLongline.tip=Ajouter l'opération de pêche associée à cette activité +observe.action.admin.cancel=Annulation de l'assistant +observe.action.admin.close=Fermeture de l'assistant +observe.action.apply=Appliquer +observe.action.auto.copy.to.clipboard=Copie automatique dans le presse-papier +observe.action.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le contenu du presse-papier avec les résultats +observe.action.back.to.list=Retour à la liste +observe.action.back.to.list.tip=Retour à la liste des données +observe.action.baitHaulingStatus.create.tip=Créer un nouveau status de l'appât au virage +observe.action.baitHaulingStatus.delete.tip=Supprimer le status de l'appât au virage sélectionné +observe.action.baitHaulingStatus.detail.tip=Voir les détails du status de l'appât au virage sélectionné +observe.action.baitHaulingStatus.modify.tip=Modifier le status de l'appât au virage sélectionné +observe.action.baitHaulingStatus.save.tip=Sauver les modifications du status de l'appât au virage +observe.action.baitSettingStatus.create.tip=Créer un nouveau status de l'appât au filage +observe.action.baitSettingStatus.delete.tip=Supprimer le status de l'appât au filage sélectionné +observe.action.baitSettingStatus.detail.tip=Voir les détails du status de l'appât au filage sélectionné +observe.action.baitSettingStatus.modify.tip=Modifier le status de l'appât au filage sélectionné +observe.action.baitSettingStatus.save.tip=Sauver les modifications du status de l'appât au filage +observe.action.baitType.create.tip=Créer un nouveau type d'appât +observe.action.baitType.delete.tip=Supprimer le type d'appât sélectionné +observe.action.baitType.detail.tip=Voir les détails du type d'appât sélectionné +observe.action.baitType.modify.tip=Modifier le type d'appât sélectionné +observe.action.baitType.save.tip=Sauver les modifications du type d'appât +observe.action.cancel=Annuler +observe.action.cancel.create.tip=Annuler la création de l'objet +observe.action.catchFateLongline.create.tip=Créer un nouveau devenir capture +observe.action.catchFateLongline.delete.tip=Supprimer le devenir capture sélectionné +observe.action.catchFateLongline.detail.tip=Voir les détails du devenir capture sélectionné +observe.action.catchFateLongline.modify.tip=Modifier le devenir capture sélectionné +observe.action.catchFateLongline.save.tip=Sauver les modifications du devenir capture +observe.action.change.storage=Changer la source de données +observe.action.change.storage.tip=Pour changer la source de données de l'application +observe.action.choose.db.dump=Choisir la sauvegarde +observe.action.choose.db.dump.description=Sauvegarde de base (*.sql.gz) +observe.action.choose.db.dump.directory=Choisir le répertoire de sauvegarde +observe.action.choose.importGPS=Utiliser ce fichier +observe.action.choose.importGPS.description=Fichier GPS (*.gpx) +observe.action.choose.report.directory=Choisir le répertoire des rapports +observe.action.choose.reportFile=Choisir le fichier de définition de report +observe.action.choose.reportFile.description=Fichier de définition (*.properties) +observe.action.choose.sensorUsed.exportData=Exporter le fichier de données +observe.action.choose.sensorUsed.importData=Importer le fichier de données +observe.action.choose.tdr.exportData=Exporter le fichier de données +observe.action.choose.tdr.importData=Importer le fichier de données +observe.action.close=Fermer +observe.action.close.activity.tip=Clôturer l'activité ouverte +observe.action.close.maree.tip=Clôturer la marée ouverte +observe.action.close.open=Clôturer +observe.action.close.open.tip=Clotûrer la données ouverte +observe.action.close.route.tip=Clôturer la route ouverte +observe.action.close.storage=Fermer la source de données +observe.action.close.storage.tip=Fermer la source de données actuellement utilisée +observe.action.close.synchro.tip=Fermer la fenêtre +observe.action.closeAndCreate=Clôturer et créer +observe.action.closeAndCreate.activity=Activité suivante +observe.action.closeAndCreate.activity.tip=Clôturer l'activite courante et en créer une nouvelle +observe.action.closeAndCreate.maree=Marée suivante +observe.action.closeAndCreate.maree.tip=Clôturer la marée courante et en créer une nouvelle +observe.action.closeAndCreate.route=Route suivante +observe.action.closeAndCreate.route.tip=Clôturer la route courante et en créer une nouvelle +observe.action.closeAndCreate.tip=Clôturer l'élément courant et en créer un nouveau +observe.action.commandline.configure.ui=Configurer l'application +observe.action.commandline.create.id=Générer des topiaIds.\nDeux paramètres sont nécessaires\:\n\tLe FQN de la classe\n\tLe nombre d'id à générer. +observe.action.commandline.disable.main.ui=Ne pas lancer l'interface graphique +observe.action.commandline.help=Afficher l'aide +observe.action.commandline.help.ui=Afficher le manuel utilisateur (mode graphique) +observe.action.commandline.launch.admin.ui=Lancer une opération d'administration +observe.action.commandline.launch.h2.server.mode=Lancer ObServe en mode serveur +observe.action.commandline.launch.obstuna.admin.ui=Lancer une opération d'administration sur Obstuna +observe.action.commandline.use.jmx=Ajouter le support JMX +observe.action.configuration=Configuration +observe.action.configuration.tip=Modifier la configuration +observe.action.configure=Configurer +observe.action.continue=Continuer +observe.action.copy=Copier dans le presse-papier +observe.action.copy.column.headers=Copier les entêtes de colonne +observe.action.copy.column.headers.tip=Ajoute dans le résultat les entêtes de colonne (i.e la première ligne) +observe.action.copy.row.headers=Copier les entêtes de ligne +observe.action.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne) +observe.action.country.create.tip=Créer un nouveau pays +observe.action.country.delete.tip=Supprimer le pays sélectionné +observe.action.country.detail.tip=Voir les détails du pays sélectionné +observe.action.country.modify.tip=Modifier le pays sélectionné +observe.action.country.save.tip=Sauver les modifications du pays +observe.action.create=Créer +observe.action.create.activity=Créer une nouvelle activité +observe.action.create.activity.tip=Créer une nouvelle activité pour la route courante +observe.action.create.entry.tip=Créer une nouvelle entrée +observe.action.create.gearUseFeaturesLongline=Créer un équipement +observe.action.create.gearUseFeaturesLongline.tip=Créer un nouvel équipement +observe.action.create.gearUseFeaturesSeine=Créer un équipement +observe.action.create.gearUseFeaturesSeine.tip=Créer un nouvel équipement +observe.action.create.maree=Créer une nouvelle marée +observe.action.create.maree.tip=Créer une nouvelle marée pour le programme courant +observe.action.create.nonTargetCatch=Insérer cette espèce / poids / devenir +observe.action.create.nonTargetCatch.tip=Insérer cette espèce / poids / devenir +observe.action.create.nonTargetSample=Insérer cet échantillon +observe.action.create.nonTargetSample.tip=Insérer cet échantillon de faune accessoire +observe.action.create.objectObservedSpecies=Insérer +observe.action.create.objectObservedSpecies.tip=Insérer l'espèce faune observée +observe.action.create.route=Créer une nouvelle route +observe.action.create.route.tip=Créer une nouvelle route pour la marée courante +observe.action.create.schoolEstimate=Insérer cette estimation +observe.action.create.schoolEstimate.tip=Insérer la nouvelle estimation dans la table +observe.action.create.targetCatch=Insérer cette capture / catégorie +observe.action.create.targetCatch.tip=Insérer cette capture / catégorie +observe.action.create.targetDiscarded=Insérer ce rejet / catégorie / raison +observe.action.create.targetDiscarded.tip=Insérer ce rejet / catégorie / raison +observe.action.create.targetSample=Insérer cet échantillon +observe.action.create.targetSample.tip=Insérer cet échantillon de thon rejeté +observe.action.create.targetSampleCapture=Insérer cet échantillon +observe.action.create.targetSampleCapture.tip=Insérer cet échantillon de thon capturé +observe.action.db.locale.es.tip=Changer la langue du référentiel en espagnol +observe.action.db.locale.fr.tip=Changer la langue du référentiel en français +observe.action.db.locale.uk.tip=Changer la langue du référentiel en anglais +observe.action.delete=Supprimer +observe.action.delete.activity.tip=Supprimer l'activité +observe.action.delete.entry.tip=Supprimer l'entrée en cours d'édition +observe.action.delete.floatingObject.tip=Supprimer l'objet flottant courant +observe.action.delete.maree.tip=Supprimer la marée +observe.action.delete.route.tip=Supprimer la route +observe.action.delete.set.tip=Supprimer la calée +observe.action.delete.tip=Supprimer +observe.action.detail=Voir les détails +observe.action.detectionMode.create.tip=Créer un nouveau mode détection +observe.action.detectionMode.delete.tip=Supprimer le mode de détection sélectionné +observe.action.detectionMode.detail.tip=Voir les détails du mode détection sélectionné +observe.action.detectionMode.modify.tip=Modifier le mode de détection sélectionné +observe.action.detectionMode.save.tip=Sauver les modifications du mode de détection +observe.action.do.backup=Sauver la base locale +observe.action.do.backup.tip=Effectuer une sauvegarde dela base locale avant d'appliquer les changements +observe.action.encounterType.create.tip=Créer un nouveau type de rencontre +observe.action.encounterType.delete.tip=Supprimer le type de rencontre sélectionné +observe.action.encounterType.detail.tip=Voir les détails du type de rencontre sélectionné +observe.action.encounterType.modify.tip=Modifier le type de rencontre sélectionné +observe.action.encounterType.save.tip=Sauver les modifications du type de rencontre +observe.action.exit=Quitter +observe.action.exit.tip=Quitter ObServe +observe.action.fpaZone.create.tip=Créer une nouvelle zone FPA +observe.action.fpaZone.delete.tip=Supprimer la zone FPA sélectionnée +observe.action.fpaZone.detail.tip=Voir les détails de la zone FPA sélectionnée +observe.action.fpaZone.modify.tip=Modifier la zone FPA sélectionnée +observe.action.fpaZone.save.tip=Sauver les modifications de la zone FPA +observe.action.gear.create.tip=Créer un nouvel équipment +observe.action.gear.delete.tip=Supprimer l'équipment sélectionné +observe.action.gear.detail.tip=Voir les détails de l'équipment sélectionné +observe.action.gear.modify.tip=Modifier l'équipment sélectionné +observe.action.gear.save.tip=Sauver les modifications de l'équipment +observe.action.gearCaracteristic.create.tip=Créer une nouvelle caractéristique +observe.action.gearCaracteristic.delete.tip=Supprimer la caractéristique sélectionnée +observe.action.gearCaracteristic.detail.tip=Voir les détails de la caractéristique sélectionnée +observe.action.gearCaracteristic.modify.tip=Modifier la caractéristique sélectionnée +observe.action.gearCaracteristic.save.tip=Sauver les modifications de la caractéristique +observe.action.gearCaracteristicType.create.tip=Créer un nouveau type de caractéristique +observe.action.gearCaracteristicType.delete.tip=Supprimer le type de caractéristique sélectionné +observe.action.gearCaracteristicType.detail.tip=Voir les détails du type de caractéristique sélectionné +observe.action.gearCaracteristicType.modify.tip=Modifier le type de caractéristique sélectionné +observe.action.gearCaracteristicType.save.tip=Sauver les modifications du type de caractéristique +observe.action.goDown=Descendre vers ... +observe.action.goDown.tip=Descendre dans la navigation +observe.action.goUp=Remonter vers ... +observe.action.goUp.tip=Remonter dans la navigation +observe.action.goto.next.stage=Suivant +observe.action.goto.next.stage.tip=Accéder à l'étape suivante +observe.action.goto.open.activity=Accéder à l'activité ouverte +observe.action.goto.open.activity.short=Activité ouverte +observe.action.goto.open.activity.tip=Accéder à l'activité ouverte +observe.action.goto.open.maree=Accéder à la marée ouverte +observe.action.goto.open.other.activity=Accéder à l'activité ouverte dans une autre route +observe.action.goto.open.other.activity.tip=Accéder à l'activité ouverte (dans une autre route) +observe.action.goto.open.other.maree=Accéder à la marée ouverte dans un autre program +observe.action.goto.open.other.maree.tip=Accéder à la marée ouverte (dans un autre program) +observe.action.goto.open.other.route=Accéder à la route ouverte dans une autre marée +observe.action.goto.open.other.route.tip=Accéder à la route ouverte (dans une autre marée) +observe.action.goto.open.program.short=Program ouvert +observe.action.goto.open.program.tip=Accéder au programme ouvert +observe.action.goto.open.route=Accéder à la route ouverte +observe.action.goto.open.route.short=Route ouverte +observe.action.goto.open.route.tip=Accéder à la route ouverte +observe.action.goto.open.set.short=Calée ouverte +observe.action.goto.open.set.tip=Accéder à la calée ouverte +observe.action.goto.open.trip.short=Marée ouverte +observe.action.goto.open.trip.tip=Accéder à la marée ouverte +observe.action.goto.previous.stage=Précédent +observe.action.goto.previous.stage.tip=Accèder à l'étape précédente +observe.action.goto.referentiel.short=Référentiel +observe.action.goto.referentiel.tip=Accéder au référentiel +observe.action.goto.selected.activity=Accéder à l'activité +observe.action.goto.selected.activity.tip=Accéder à l'activité sélectionnée +observe.action.goto.selected.maree=Accéder à la marée +observe.action.goto.selected.maree.tip=Accéder à la marée sélectionnée +observe.action.goto.selected.route=Accéder à la route +observe.action.goto.selected.route.tip=Accéder à la route sélectionnée +observe.action.harbour.create.tip=Créer un nouveau port +observe.action.harbour.delete.tip=Supprimer le port sélectionné +observe.action.harbour.detail.tip=Voir les détails du port sélectionné +observe.action.harbour.modify.tip=Modifier le port sélectionné +observe.action.harbour.save.tip=Sauver les modifications du port +observe.action.healthness.create.tip=Créer un nouveau statut de capture +observe.action.healthness.delete.tip=Supprimer le statut de santé sélectionné +observe.action.healthness.detail.tip=Voir les détails du statut de santé sélectionné +observe.action.healthness.modify.tip=Modifier le statut de santé sélectionné +observe.action.healthness.save.tip=Sauver les modifications du statut de santé +observe.action.hookPosition.create.tip=Créer une nouvelle position d'hameçon +observe.action.hookPosition.delete.tip=Supprimer la position d'hameçon sélectionnée +observe.action.hookPosition.detail.tip=Voir les détails de la position d'hameçon sélectionnée +observe.action.hookPosition.modify.tip=Modifier la position d'hameçon sélectionnée +observe.action.hookPosition.save.tip=Sauver les modifications de la position d'hameçon +observe.action.hookSize.create.tip=Créer une nouvelle taille d'hameçon +observe.action.hookSize.delete.tip=Supprimer la taille d'hameçon sélectionné +observe.action.hookSize.detail.tip=Voir les détails de la taille d'hameçon sélectionné +observe.action.hookSize.modify.tip=Modifier la taille d'hameçon sélectionné +observe.action.hookSize.save.tip=Sauver les modifications du type de hameçon +observe.action.hookType.create.tip=Créer un nouveau type d'hameçon +observe.action.hookType.delete.tip=Supprimer le type d'hameçon sélectionné +observe.action.hookType.detail.tip=Voir les détails du type d'hameçon sélectionné +observe.action.hookType.modify.tip=Modifier le type d'hameçon sélectionné +observe.action.hookType.save.tip=Sauver les modifications du type d'hameçon +observe.action.info.storage=Informations sur la source de données +observe.action.info.storage.tip=Voir les informations sur la source de données actuellement utilisée +observe.action.itemHorizontalPosition.create.tip=Créer une nouvelle localisation de l'élément sur la ligne mère +observe.action.itemHorizontalPosition.delete.tip=Supprimer la localisation de l'élément sur la ligne mère sélectionnée +observe.action.itemHorizontalPosition.detail.tip=Voir les détails de la localisation de l'élément sur la ligne mère sélectionnée +observe.action.itemHorizontalPosition.modify.tip=Modifier la localisation de l'élément sur la ligne mère sélectionnée +observe.action.itemHorizontalPosition.save.tip=Sauver les modifications de la localisation de l'élément sur la ligne mère +observe.action.itemVerticalPosition.create.tip=Créer une nouvelle localisation de l'élément sur l'avançon +observe.action.itemVerticalPosition.delete.tip=Supprimer la localisation de l'élément sur l'avançon sélectionnée +observe.action.itemVerticalPosition.detail.tip=Voir les détails de la localisation de l'élément sur l'avançon sélectionnée +observe.action.itemVerticalPosition.modify.tip=Modifier la localisation de l'élément sur l'avançon sélectionnée +observe.action.itemVerticalPosition.save.tip=Sauver les modifications de la localisation de l'élément sur l'avançon +observe.action.lengthWeightParameter.create.tip=Créer un nouveau paramétrage taille-poids +observe.action.lengthWeightParameter.delete.tip=Supprimer le paramétrage taille-poids sélectionné +observe.action.lengthWeightParameter.detail.tip=Voir les détails du paramétrage taille-poids +observe.action.lengthWeightParameter.modify.tip=Modifier le paramétrage taille-poids +observe.action.lengthWeightParameter.save.tip=Sauver les modifications du paramétrage taille-poids +observe.action.lightsticksColor.create.tip=Créer une nouvelle couleur de baton lumineux +observe.action.lightsticksColor.delete.tip=Supprimer la couleur de baton lumineux sélectionnée +observe.action.lightsticksColor.detail.tip=Voir les détails de la couleur de baton lumineux sélectionnée +observe.action.lightsticksColor.modify.tip=Modifier la couleur de baton lumineux sélectionnée +observe.action.lightsticksColor.save.tip=Sauver les modifications de la couleur de baton lumineux +observe.action.lightsticksType.create.tip=Créer un nouveau type de baton lumineux +observe.action.lightsticksType.delete.tip=Supprimer le type de baton lumineux sélectionné +observe.action.lightsticksType.detail.tip=Voir les détails du type de baton lumineux sélectionné +observe.action.lightsticksType.modify.tip=Modifier le type de baton lumineux sélectionné +observe.action.lightsticksType.save.tip=Sauver les modifications du type de baton lumineux +observe.action.lineType.create.tip=Créer un nouveau type de ligne +observe.action.lineType.delete.tip=Supprimer le type de ligne sélectionné +observe.action.lineType.detail.tip=Voir les détails du type de ligne sélectionné +observe.action.lineType.modify.tip=Modifier le type de ligne sélectionné +observe.action.lineType.save.tip=Sauver les modifications du type de ligne +observe.action.load.from.file=Importer une sauvegarde +observe.action.load.from.file.tip=Charger une base locale depuis un fichier de sauvegarde +observe.action.locale.es=Espagnol +observe.action.locale.es.tip=Changer la langue de l'application en espagnol +observe.action.locale.fr=Français +observe.action.locale.fr.tip=Changer la langue de l'application en français +observe.action.locale.uk=Anglais +observe.action.locale.uk.tip=Changer la langue de l'application en anglais +observe.action.maturityStatus.create.tip=Créer une nouvelle maturité +observe.action.maturityStatus.delete.tip=Supprimer le maturité sélectionnée +observe.action.maturityStatus.detail.tip=Voir les détails de la maturité sélectionnée +observe.action.maturityStatus.modify.tip=Modifier la maturité sélectionnée +observe.action.maturityStatus.save.tip=Sauver les modifications de la maturité +observe.action.mitigationType.create.tip=Créer un nouveau type de mesure d'atténuation +observe.action.mitigationType.delete.tip=Supprimer le type de mesure d'atténuation sélectionné +observe.action.mitigationType.detail.tip=Voir les détails du type de mesure d'atténuation sélectionné +observe.action.mitigationType.modify.tip=Modifier le type de mesure d'atténuation sélectionné +observe.action.mitigationType.save.tip=Sauver les modifications du type de mesure d'atténuation +observe.action.modify=Modifier +observe.action.new.entry=Nouveau +observe.action.new.entry.tip=Créer une nouvelle entrée +observe.action.objectFate.create.tip=Créer un nouveau devenir objet +observe.action.objectFate.delete.tip=Supprimer le devenir objet sélectionné +observe.action.objectFate.detail.tip=Voir les détails du devenir objet sélectionné +observe.action.objectFate.modify.tip=Modifier le devenir objet sélectionné +observe.action.objectFate.save.tip=Sauver les modifications du devenir objet +observe.action.objectOperation.create.tip=Créer une nouvelle opération objet +observe.action.objectOperation.delete.tip=Supprimer l'opération objet sélectionné +observe.action.objectOperation.detail.tip=Voir les détails de l'opération objet sélectionnée +observe.action.objectOperation.modify.tip=Modifier l'opération objet sélectionnée +observe.action.objectOperation.save.tip=Sauver les modifications de l'opération objet +observe.action.objectType.create.tip=Créer un nouveau type d'objet +observe.action.objectType.delete.tip=Supprimer le type d'objet sélectionné +observe.action.objectType.detail.tip=Voir les détails du type d'objet sélectionné +observe.action.objectType.modify.tip=Modifier le type d'objet sélectionné +observe.action.objectType.save.tip=Sauver les modifications du type d'objet +observe.action.observedSystem.create.tip=Créer un nouveau système observé +observe.action.observedSystem.delete.tip=Supprimer le système observé sélectionné +observe.action.observedSystem.detail.tip=Voir les détails du système observé sélectionné +observe.action.observedSystem.modify.tip=Modifier le système observé sélectionné +observe.action.observedSystem.save.tip=Sauver les modifications du système observé +observe.action.ocean.create.tip=Créer un nouvel océan +observe.action.ocean.delete.tip=Supprimer l'océan sélectionné +observe.action.ocean.detail.tip=Voir les détails sur l'océan sélectionné +observe.action.ocean.modify.tip=Modifier l'océan sélectionné +observe.action.ocean.save.tip=Sauver les modifications sur l'ocean +observe.action.open.screen=Ouverture de l'écran <%1$s> +observe.action.openLink.formsUrl.tip=Accéder aux formulaires dans un navigateur web +observe.action.openLink.reportsUrl.tip=Accéder aux rapports dans un navigateur web +observe.action.organism.create.tip=Créer un nouvel organisme +observe.action.organism.delete.tip=Supprimer l'organisme sélectionné +observe.action.organism.detail.tip=Voir les détaile de l'organisme +observe.action.organism.modify.tip=Modifier l'organisme sélectionné +observe.action.organism.save.tip=Sauver les modifications de l'organisme +observe.action.person.create.tip=Créer un nouvelle personne +observe.action.person.delete.tip=Supprimer la personne sélectionnée +observe.action.person.detail.tip=Voir les détails de la personne sélectionnée +observe.action.person.modify.tip=Modifier la personne sélectionnée +observe.action.person.save.tip=Sauver les modifications sur la personne +observe.action.program.create.tip=Créer un nouveau programme +observe.action.program.delete.tip=Supprimer le programme sélectionné +observe.action.program.detail.tip=Voir les détails du programme sélectionné +observe.action.program.modify.tip=Modifier le programme sélectionné +observe.action.program.save.tip=Sauver les modifications sur le programme +observe.action.quitHelp.tip=Quitter l'écran d'aide +observe.action.reasonForDiscard.create.tip=Créer une nouvelle raison de rejet +observe.action.reasonForDiscard.delete.tip=Supprimer la raison de rejet sélectionnée +observe.action.reasonForDiscard.detail.tip=voir les détail de la raison de rejet sélectionnée +observe.action.reasonForDiscard.modify.tip=Modifier la raison de rejet sélectionnée +observe.action.reasonForDiscard.save.tip=Sauver les modifications du raison de rejet +observe.action.reasonForNoFishing.create.tip=Créer une nouvelle raison de non coup de senne +observe.action.reasonForNoFishing.delete.tip=Supprimer la raison de non coup de senne sélectionné +observe.action.reasonForNoFishing.detail.tip=Voir les détails de la raison de non coup de senne sélectionnée +observe.action.reasonForNoFishing.modify.tip=Modifier la raison de non coup de senne sélectionnée +observe.action.reasonForNoFishing.save.tip=Sauver les modifications de la raison de non coup de senne +observe.action.reasonForNullSet.create.tip=Créer une nouvelle cause de coup nul +observe.action.reasonForNullSet.delete.tip=Supprimer la cause de coup nul sélectionnée +observe.action.reasonForNullSet.detail.tip=Voir les détails de la cause de coup nul sélectionnée +observe.action.reasonForNullSet.modify.tip=Modifier la cause de coup nul sélectionnée +observe.action.reasonForNullSet.save.tip=Sauver les modifications du cause de coup nul +observe.action.reload.application=Redémarrer l'application +observe.action.reload.storage=Recharger la source de données +observe.action.reload.storage.tip=Ferme et réouvre la source de données +observe.action.reload.ui=Recharger l'interface graphique +observe.action.reloadDefaultConfiguration=Configuration par défaut +observe.action.reloadDefaultConfiguration.tip=Rétablir la configuration par défaut +observe.action.reloadResources=Resources par défaut +observe.action.reloadResources.tip=Rétablir les ressources par défaut (toute modification sera perdue) +observe.action.reopen=Réouvrir +observe.action.reopen.activity.tip=Réouvrir l'activité +observe.action.reopen.maree.tip=Réouvrir la marée +observe.action.reopen.route.tip=Réouvrir la route +observe.action.reopen.selected.activity=Réouvrir l'activité +observe.action.reopen.selected.activity.tip=Réouvrir l'activité sélectionnée +observe.action.reopen.selected.maree=Réouvrir la marée +observe.action.reopen.selected.maree.tip=Réouvrir la marée sélectionnée +observe.action.reopen.selected.route=Réouvrir la route +observe.action.reopen.selected.route.tip=Réouvrir la route sélectionnée +observe.action.reopen.tip=Réouvrir la donnée +observe.action.reset=Annuler +observe.action.reset.entry.tip=Réinitialiser l'entré en cours d'édition +observe.action.reset.ersId.tip=Réinitialiser l'id ERS +observe.action.reset.formsUrl.tip=Réinitialiser l'url des formulaires +observe.action.reset.homeId.tip=Réinitialiser +observe.action.reset.new.entry.tip=Annuler la création de la nouvelle entrée +observe.action.reset.picturesReferences.tip=Réinitialiser +observe.action.reset.reportsUrl.tip=Réinitialiser l'url des rapports +observe.action.reset.supportVesselName.tip=Réinitialiser +observe.action.reset.tip=Annuler les modifications +observe.action.reset.well.tip=Réinitialiser +observe.action.restart.application=Redémarrer +observe.action.restart.application.tip=Redémarrer l'application +observe.action.save=Enregistrer +observe.action.save.all.tip=Sauver toutes les modifications +observe.action.save.entry.tip=Sauver l'entrée en cours d'édition +observe.action.save.tip=Sauver les modifications +observe.action.save.to.file=Sauver la base +observe.action.save.to.file.tip=Effectuer une sauvegarde de la base ouverte +observe.action.selectNode=Sélectionner le noeud +observe.action.selectNode.tip=Sélectionner le noeud +observe.action.sensorBrand.create.tip=Créer une nouvelle marque de capteur +observe.action.sensorBrand.delete.tip=Supprimer la marque de capteur sélectionnée +observe.action.sensorBrand.detail.tip=Voir les détails de la marque de capteur sélectionnée +observe.action.sensorBrand.modify.tip=Modifier la marque de capteur sélectionnée +observe.action.sensorBrand.save.tip=Sauver les modifications de la marque de capteur +observe.action.sensorDataFormat.create.tip=Créer un nouveau format de données de capteur +observe.action.sensorDataFormat.delete.tip=Supprimer le format de données de capteur sélectionné +observe.action.sensorDataFormat.detail.tip=Voir les détails du format de données de capteur sélectionné +observe.action.sensorDataFormat.modify.tip=Modifier le format de données de capteur sélectionné +observe.action.sensorDataFormat.save.tip=Sauver les modifications du format de données de capteur +observe.action.sensorType.create.tip=Créer un nouveau type de capteur +observe.action.sensorType.delete.tip=Supprimer le type de capteur sélectionné +observe.action.sensorType.detail.tip=Voir les détails du type de capteur sélectionné +observe.action.sensorType.modify.tip=Modifier le type de capteur sélectionné +observe.action.sensorType.save.tip=Sauver les modifications du type de capteur +observe.action.settingShape.create.tip=Créer une nouvelle forme au filage +observe.action.settingShape.delete.tip=Supprimer la forme au filage sélectionnée +observe.action.settingShape.detail.tip=Voir les détails de la forme au filage sélectionnée +observe.action.settingShape.modify.tip=Modifier la forme au filage sélectionnée +observe.action.settingShape.save.tip=Sauver les modifications de la forme au filage +observe.action.sex.create.tip=Créer un nouveau sexe +observe.action.sex.delete.tip=Supprimer le sexe sélectionné +observe.action.sex.detail.tip=Voir les détails du sexe sélectionné +observe.action.sex.modify.tip=Modifier le sexe sélectionné +observe.action.sex.save.tip=Sauver les modifications du sexe +observe.action.show.technical.informations.tip=Voir les information techniques +observe.action.show.unique.keys.tip=Voir le tableau de toutes les clefs métier utilisées pour ce référentiel +observe.action.show.usages.tip=Voir toutes les utilisations de ce référentiel +observe.action.showConfig.title=Configuration +observe.action.site=Site internet +observe.action.site.tip=Accéder au site de l'application sur internet +observe.action.sizeMeasureType.create.tip=Créer un nouveau type de mesure de taille +observe.action.sizeMeasureType.delete.tip=Supprimer le type de mesure de taille sélectionné +observe.action.sizeMeasureType.detail.tip=Voir les détails du type de mesure de taille sélectionné +observe.action.sizeMeasureType.modify.tip=Modifier le type de mesure de taille sélectionné +observe.action.sizeMeasureType.save.tip=Sauver les modifications du type de mesure de taille +observe.action.species.create.tip=Créer une nouvelle espèce +observe.action.species.delete.tip=Supprimer l'espèce sélectionnée +observe.action.species.detail.tip=Voir les détails de l'espèce sélectionnée +observe.action.species.modify.tip=Modifier l'espèce sélectionnée +observe.action.species.save.tip=Sauver les modifications de l'espèce +observe.action.speciesFate.create.tip=Créer un nouveau devenir +observe.action.speciesFate.delete.tip=Supprimer le devenir sélectionné +observe.action.speciesFate.detail.tip=Voir les détails du devenir sélectionné +observe.action.speciesFate.modify.tip=Modifier le devenir sélectionné +observe.action.speciesFate.save.tip=Sauver les modifications du devenir +observe.action.speciesGroupSpecies.create.tip=Créer un nouveau groupe d'espèce +observe.action.speciesGroupSpecies.delete.tip=Supprimer le groupe d'espèce sélectionné +observe.action.speciesGroupSpecies.detail.tip=Voir les détails du groupe d'espèce sélectionné +observe.action.speciesGroupSpecies.modify.tip=Modifier le groupe d'espèce sélectionné +observe.action.speciesGroupSpecies.save.tip=Sauver les modifications du groupe d'espèce +observe.action.speciesList.create.tip=Créer une nouvelle liste d'espèce +observe.action.speciesList.delete.tip=Supprimer la liste d'espèce sélectionnée +observe.action.speciesList.detail.tip=Voir les détails de la liste d'espèce sélectionnée +observe.action.speciesList.modify.tip=Modifier la liste d'espèce sélectionnée +observe.action.speciesStatus.create.tip=Créer un nouveau statut d'espèce +observe.action.speciesStatus.delete.tip=Supprimer le statut d'espèce sélectionné +observe.action.speciesStatus.detail.tip=Voir les détails du statut d'espèce sélectionné +observe.action.speciesStatus.modify.tip=Modifier le statut d'espèce sélectionné +observe.action.speciesStatus.save.tip=Sauver les modifications du statut d'espèce +observe.action.start.h2.web.server=Démarrer le serveur web +observe.action.start.h2.web.server.tip=Démarrer le serveur web H2 +observe.action.start.server.mode=Mode serveur +observe.action.start.server.mode.tip=Démarrer la base locale en mode serveur +observe.action.stomacFullness.create.tip=Créer un nouveau niveau de remplissage de l'estomac +observe.action.stomacFullness.delete.tip=Supprimer le niveau de remplissage de l'estomac sélectionné +observe.action.stomacFullness.detail.tip=Voir les détails du niveau de remplissage de l'estomac sélectionné +observe.action.stomacFullness.modify.tip=Modifier le niveau de remplissage de l'estomac sélectionné +observe.action.stomacFullness.save.tip=Sauver les modifications du niveau de remplissage de l'estomac +observe.action.stop.h2.web.server=Arrêter le serveur web +observe.action.stop.h2.web.server.tip=Arrêter le serveur web H2 +observe.action.stop.server.mode=Arrêter le mode serveur +observe.action.stop.server.mode.tip=Arrêter le mode serveur de la base locale +observe.action.storage.apply=Utiliser +observe.action.storage.apply.tip=Utiliser la source de données configurée +observe.action.storage.applyAction=Changement de source de données +observe.action.storage.cancel=Annuler le changement de source de données +observe.action.storage.cancel.tip=Annuler le changement de source de données +observe.action.surroundingActivity.create.tip=Créer un nouvelle activité environnante +observe.action.surroundingActivity.delete.tip=Supprimer l'activité environnante sélectionnée +observe.action.surroundingActivity.detail.tip=Voir les détails de l'activité environnante sélectionnée +observe.action.surroundingActivity.modify.tip=Modifier l'activité environnante sélectionnée +observe.action.surroundingActivity.save.tip=Sauver les modifications de l'activité environnante +observe.action.synchro.apply.modifications=Appliquer les modifications +observe.action.synchro.cancel.tip=Annuler +observe.action.synchro.copy.tip=Copier le rapport dans le presse-papier +observe.action.synchro.launch.operation=Démarrer l'opération < %1$s > +observe.action.synchro.prepare.operation=Préparer l'opération <%1$s> +observe.action.synchro.report.reset.tip=Déselectionner le report courant. +observe.action.test.remote=Valider la connexion +observe.action.test.remote.tip=Cliquer pour valider la connexion au serveur distant +observe.action.transmittingBuoyOperation.create.tip=Créer une nouvelle opération sur balise +observe.action.transmittingBuoyOperation.delete.tip=Supprimer l'opération sur balise sélectionné +observe.action.transmittingBuoyOperation.detail.tip=Voir les détails de l'opération sur balise sélectionnée +observe.action.transmittingBuoyOperation.modify.tip=Modifier l'opération sur balise sélectionnée +observe.action.transmittingBuoyOperation.save.tip=Sauver les modifications de l'opération sur balise +observe.action.transmittingBuoyType.create.tip=Créer un nouveau type de balise +observe.action.transmittingBuoyType.delete.tip=Supprimer le type de balise sélectionné +observe.action.transmittingBuoyType.detail.tip=Voir les détails du type de balise sélectionné +observe.action.transmittingBuoyType.modify.tip=Modifier le type de balise sélectionné +observe.action.transmittingBuoyType.save.tip=Sauver les modifications du type de balise +observe.action.tripType.create.tip=Créer un nouveau type de marée +observe.action.tripType.delete.tip=Supprimer le type de marée sélectionné +observe.action.tripType.detail.tip=Voir les détails du type de marée sélectionné +observe.action.tripType.modify.tip=Modifier le type de marée sélectionné +observe.action.tripType.save.tip=Sauver les modifications du type de marée +observe.action.vessel.create.tip=Créer un nouveau bateau +observe.action.vessel.delete.tip=Supprimer le bateau sélectionné +observe.action.vessel.detail.tip=Voir les détails du bateau sélectionné +observe.action.vessel.modify.tip=Modifier le bateau sélectionné +observe.action.vessel.save.tip=Sauver les modifications sur le bateau +observe.action.vesselActivityLongline.create.tip=Créer un nouveau type d'activité +observe.action.vesselActivityLongline.delete.tip=Supprimer le type d'activité sélectionné +observe.action.vesselActivityLongline.detail.tip=Voir les détails du type d'activité sélectionné +observe.action.vesselActivityLongline.modify.tip=Modifier le type d'activité sélectionné +observe.action.vesselActivityLongline.save.tip=Sauver les modifications du type d'activité +observe.action.vesselActivitySeine.create.tip=Créer une nouvelle activité vessel +observe.action.vesselActivitySeine.delete.tip=Supprimer l'activité vessel sélectionnée +observe.action.vesselActivitySeine.detail.tip=Voir les détails de l'activité vessel sélectionnée +observe.action.vesselActivitySeine.modify.tip=Modifier l'activité de vessel sélectionnée +observe.action.vesselActivitySeine.save.tip=Sauver les modifications de l'activité vessel +observe.action.vesselSizeCategory.create.tip=Créer une nouvelle catégorie de vessel +observe.action.vesselSizeCategory.delete.tip=Supprimer le catégorie de vessel sélectionnée +observe.action.vesselSizeCategory.detail.tip=Voir les détails de la catégorie de vessel sélectionnée +observe.action.vesselSizeCategory.modify.tip=Modifier le vessel sélectionné +observe.action.vesselSizeCategory.save.tip=Sauver les modifications de la catégorie de vessel +observe.action.vesselType.create.tip=Créer un nouveau type de vessel +observe.action.vesselType.delete.tip=Supprimer le type de vessel sélectionné +observe.action.vesselType.detail.tip=Voir les détails du type de vessel sélectionné +observe.action.vesselType.modify.tip=Modifier le type de vessel sélectionné +observe.action.vesselType.save.tip=Sauver les modifications du type de vessel +observe.action.weightCategory.create.tip=Créer une nouvelle catégorie de poids +observe.action.weightCategory.delete.tip=Supprimer la catégorie de poids sélectionnée +observe.action.weightCategory.detail.tip=Voir les détails de la catégorie de poids sélectionnée +observe.action.weightCategory.modify.tip=Modifier la catégorie de poids sélectionnée +observe.action.weightCategory.save.tip=Sauver les modifications de la catégorie de poids +observe.action.weightMeasureType.create.tip=Créer un nouveau type de mesure de poids +observe.action.weightMeasureType.delete.tip=Supprimer le type de mesure de poids sélectionné +observe.action.weightMeasureType.detail.tip=Voir les détails du type de mesure de poids sélectionné +observe.action.weightMeasureType.modify.tip=Modifier le type de mesure de poids sélectionné +observe.action.weightMeasureType.save.tip=Sauver les modifications du type de mesure de poids +observe.action.wind.create.tip=Créer un nouveau vent Beaufort +observe.action.wind.delete.tip=Supprimer le vent Beaufort sélectionné +observe.action.wind.detail.tip=Voir les détails du vent Beaufort sélectionné +observe.action.wind.modify.tip=Modifier le vent Beaufort sélectionné +observe.action.wind.save.tip=Sauver les modifications du vent Beaufort +observe.activityLongline.coordinate=Coordonnées +observe.activityLongline.fpaZone=Zone FPA +observe.activityLongline.message.active.found=Une activité est ouverte. +observe.activityLongline.message.active.found.for.other.trip=Une activité ouverte existe dans une autre marée. +observe.activityLongline.message.creating=L'activité est en cours de création. +observe.activityLongline.message.no.active.found=Aucune activité ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrire une. +observe.activityLongline.message.no.active.found.for.other.trip=Aucune activité ouverte sur la marée ouverte +observe.activityLongline.message.not.open=L'opération de pêche n'est pas ouverte, aucune modification possible. +observe.activityLongline.message.updating=L'activité est en cours de modification. +observe.activityLongline.seaSurfaceTemperature=Température surface (°c) +observe.activityLongline.timeStamp=Horodatage +observe.activityLongline.title=Activité +observe.activityLongline.vesselActivityLongline=Activité bateau +observe.activityLonglines.title=Activités +observe.activityObservedSystem.availableObservedSystem=Systèmes observés disponibles +observe.activityObservedSystem.selectedObservedSystem=Systèmes observés sélectionnés +observe.activitySeine.message.active.found=Une activité est ouverte. +observe.activitySeine.message.active.found.for.other.route=Une activité ouverte existe dans une autre route. +observe.activitySeine.message.creating=L'activité est en cours de création. +observe.activitySeine.message.no.active.found=Aucune activité ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrire une. +observe.activitySeine.message.no.active.found.for.other.route=Aucune activité ouverte sur la route ouverte +observe.activitySeine.message.not.open=L'activité n'est pas ouverte, aucune modification possible. +observe.activitySeine.message.updating=L'activité est en cours de modification. +observe.activitySeine.tab.general=Caractéristiques générales +observe.activitySeine.tab.measurements=Mesures +observe.activitySeine.title=Activité +observe.activitySeineObservedSystem.title=Système observé +observe.activitySeines.title=Activités +observe.admin.resume.no.operation.done=Aucune opération réalisée. +observe.admin.resume.operation.canceled=opération annulée +observe.admin.resume.operation.done=opération réussie +observe.admin.resume.operation.failed=opération échouée +observe.admin.resume.operation.need.fix=opération nécessitant des corrections +observe.admin.resume.operation.not.started=opération non démarrée +observe.admin.resume.operation.running=opération en cours... +observe.application.config=configuration d'ObServe +observe.baitsComposition.action.create=Inserer cet appât +observe.baitsComposition.action.create.tip=Inserer cet appât +observe.baitsComposition.baitSettingStatus=État au filage +observe.baitsComposition.baitType=Type d'appât +observe.baitsComposition.individualSize=Taille (cm) +observe.baitsComposition.individualWeight=Poids (kg) +observe.baitsComposition.proportion=Proportion (%) +observe.baitsComposition.proportionSum=Somme des proportions d'appâts (%) +observe.baitsComposition.table.baitSettingStatus=Statut +observe.baitsComposition.table.baitSettingStatus.tip=Statut au filage +observe.baitsComposition.table.baitType=Type d'appât +observe.baitsComposition.table.baitType.tip=Type d'appât +observe.baitsComposition.table.individualSize=Taille (cm) +observe.baitsComposition.table.individualSize.tip=Taille (cm) +observe.baitsComposition.table.individualWeight=Poids (kg) +observe.baitsComposition.table.individualWeight.tip=Poids (kg) +observe.baitsComposition.table.proportion=Proportion (%) +observe.baitsComposition.table.proportion.tip=Proportion (%) +observe.baitsComposition.title=Composition des appâts +observe.basket.cant.delete.message=Le panier ne peut pas être supprimé car il est utilisé dans des données. +observe.basket.cant.delete.title=Impossible de supprimer le panier +observe.basket.invalid.nextFloatline1Length=La longueur d'orin 2 (%s) n'est pas égale à la longueur d'orin 1 du panier suivant (%s) +observe.branchLine.cant.delete.message=L'avançon ne peut pas être supprimé car il est utilisé dans des données. +observe.branchLine.cant.delete.title=Impossible de supprimer l'avançon +observe.branchline.baitHaulingStatus=Statut appât au virage +observe.branchline.baitSettingStatus=Statut appât au filage +observe.branchline.baitType=Type d'appât +observe.branchline.comment=Commentaire +observe.branchline.depthRecorder=Enregistreur de profondeur +observe.branchline.hookLost=Hameçon perdu +observe.branchline.hookOffset=Offset hameçon (°) +observe.branchline.hookSize=Taille d'hameçon +observe.branchline.hookType=Type d'hameçon +observe.branchline.message.modified=L'avançon en cours d'édition a été modifié et est valide. +observe.branchline.message.modified.but.invalid=L'avançon en cours d'édition a été modifié, mais n'est pas valide. +observe.branchline.snapWeight=Poids snap (kg) +observe.branchline.swivelWeight=Poids émerillon (kg) +observe.branchline.tab.general=Généralités +observe.branchline.tab.hookAndBait=Hameçon et appât +observe.branchline.timeSinceContact=Temps depuis déclenchement +observe.branchline.timer=Horloge +observe.branchline.timerTimeOnBoard=Horodatage de montée à bord +observe.branchline.title=Détail de l'avançon +observe.branchline.topType=Type partie supérieure +observe.branchline.traceCutOff=Bas de ligne coupé +observe.branchline.tracelineType=Type bas de ligne +observe.branchline.weightedSnap=Snap plombé +observe.branchline.weightedSwivel=Émerillon plombé +observe.branchlinesComposition.action.create=Inserer cet avançon +observe.branchlinesComposition.action.create.tip=Inserer cet avançon +observe.branchlinesComposition.length=Longueur (m) +observe.branchlinesComposition.proportion=Proportion (%) +observe.branchlinesComposition.proportionSum=Somme des proportions d'avançons (%) +observe.branchlinesComposition.table.length=Longueur (m) +observe.branchlinesComposition.table.length.tip=Longueur (m) +observe.branchlinesComposition.table.proportion=Proportion (%) +observe.branchlinesComposition.table.proportion.tip=Proportion (%) +observe.branchlinesComposition.table.topType=Type partie supérieure +observe.branchlinesComposition.table.topType.tip=Type partie supérieure +observe.branchlinesComposition.table.tracelineType=Type basse de ligne +observe.branchlinesComposition.table.tracelineType.tip=Type bas de ligne +observe.branchlinesComposition.title=Composition des avançons +observe.branchlinesComposition.topType=Type partie supérieure +observe.branchlinesComposition.tracelineType=Type bas de ligne +observe.broughtOnDeck.comment=Seules les espèces montées sur le pont pourront être échantillonnées +observe.catchLongline.acquisitionMode=Mode de saisie +observe.catchLongline.acquisitionMode.grouped=Groupé +observe.catchLongline.acquisitionMode.individual=Par individu +observe.catchLongline.action.create=Insérer cette capture +observe.catchLongline.action.create.tip=Insérer cette capture +observe.catchLongline.action.new=Nouvelle capture +observe.catchLongline.action.new.tip=Créér une nouvelle capture +observe.catchLongline.action.reset.photoReferences.tip=Réinitiliser les références photo +observe.catchLongline.availablePredator=Prédateurs disponibles +observe.catchLongline.basket=Panier +observe.catchLongline.beatDiameter=Diamètre de la morsure +observe.catchLongline.branchline=Avançon +observe.catchLongline.catchFateLongline=Devenir +observe.catchLongline.catchHealthness=Santé à la capture +observe.catchLongline.comment=Commentaire +observe.catchLongline.count=Nombre +observe.catchLongline.depredated=Victime de déprédation +observe.catchLongline.discardHealthness=Santé au rejet +observe.catchLongline.gonadeWeight=Poids des gonades (g) +observe.catchLongline.hookPosition=Position de l'hameçon +observe.catchLongline.hookWhenDiscarded=Rejeté avec hameçon +observe.catchLongline.locationOnLongline=Position sur la ligne +observe.catchLongline.maturityStatus=Maturité sexuelle +observe.catchLongline.photoReferences=Références photo +observe.catchLongline.predator=Prédateurs +observe.catchLongline.resetBranchline=Annuler +observe.catchLongline.resetBranchline.tip=Annuler les modifications sur l'avançon +observe.catchLongline.saveBranchline=Enregister l'avançon +observe.catchLongline.saveBranchline.tip=Enregister les modifications sur l'avançon +observe.catchLongline.section=Section +observe.catchLongline.selectedPredator=Prédateurs sélectionnés +observe.catchLongline.sex=Sexe +observe.catchLongline.speciesCatch=Espèce +observe.catchLongline.stomacFullness=État de l'estomac +observe.catchLongline.tab.branchline=Avançon +observe.catchLongline.tab.caracteristics=Caractéristiques +observe.catchLongline.tab.depredated=Déprédation +observe.catchLongline.tab.foodAndSexual=Alimentation et maturité sexuelle +observe.catchLongline.tab.sizeMeasures=Tailles (cm) +observe.catchLongline.tab.weightMeasures=Poids (kg) +observe.catchLongline.title=Captures +observe.catchLongline.totalWeight=Poids total (kg) +observe.catchlongline.table.acquisitionMode=Mode +observe.catchlongline.table.acquisitionMode.tip=Mode de saisie +observe.catchlongline.table.basketHaulingId=N° panier +observe.catchlongline.table.basketHaulingId.tip=Numéro de virage du panier +observe.catchlongline.table.branchlineHaulingId=N° avançon +observe.catchlongline.table.branchlineHaulingId.tip=Numéro de virage de l'avançon +observe.catchlongline.table.catchFateLongline=Devenir +observe.catchlongline.table.catchFateLongline.tip=Devenir +observe.catchlongline.table.catchHealthness=État +observe.catchlongline.table.catchHealthness.tip=État à la capture +observe.catchlongline.table.comment=Commentaire +observe.catchlongline.table.comment.tip=Commentaire +observe.catchlongline.table.count=Nombre +observe.catchlongline.table.count.tip=Nombre +observe.catchlongline.table.depredated=Déprédation +observe.catchlongline.table.depredated.tip=Victime de déprédation +observe.catchlongline.table.discardHealthness=Santé au rejet +observe.catchlongline.table.discardHealthness.tip=Santé au rejet +observe.catchlongline.table.sectionHaulingId=N° section +observe.catchlongline.table.sectionHaulingId.tip=Numéro de virage de la section +observe.catchlongline.table.size=Mesure (cm) +observe.catchlongline.table.size.tip=Mesure (cm) +observe.catchlongline.table.sizeMeasureType=Type de mesure +observe.catchlongline.table.sizeMeasureType.tip=Type de mesure +observe.catchlongline.table.speciesCatch=Espèce +observe.catchlongline.table.speciesCatch.tip=Espèce +observe.catchlongline.table.weight=Mesure (kg) +observe.catchlongline.table.weight.tip=Mesure (kg) +observe.catchlongline.table.weightMeasureType=Type de mesure +observe.catchlongline.table.weightMeasureType.tip=Type de mesure +observe.choice.cancel=Annuler +observe.choice.confirm.delete=Supprimer +observe.choice.continue=Continuer +observe.choice.create.fin.veille.activity=Créer l'activité de fin de veille +observe.choice.create.fin.veille.activity.and.continue=Créer l'activité de fin de veille et continuer +observe.choice.createLocalStorage=Créer la base locale +observe.choice.doNotSave=Ne pas enregistrer +observe.choice.doNothing=Ne rien faire +observe.choice.not.create.fin.veille.activity.and.continue=Ne pas créer l'activité de fin de veille et continuer +observe.choice.quit=Fermer +observe.choice.save=Enregistrer +observe.choice.useRemoteStorage=Utiliser une base distante +observe.common.acquisitionMode=Mode de saisie +observe.common.acquisitionMode.count=Saisie par nombre +observe.common.acquisitionMode.individu=Saisie par individu +observe.common.activities=Activités +observe.common.activities.list=Liste des activités +observe.common.activity=Activité observe.common.activityLongline= observe.common.activitySeine= observe.common.baitHaulingStatus= -observe.common.baitObservation= +observe.common.baitObservation=Gleure observe.common.baitSettingStatus= observe.common.baitType= observe.common.baitsComposition= observe.common.basket= -observe.common.birdsObservation= -observe.common.boolean.false= -observe.common.boolean.null= -observe.common.boolean.true= +observe.common.birdsObservation=Oiseaux +observe.common.boolean.false=Non +observe.common.boolean.null=Indéterminé +observe.common.boolean.true=Oui observe.common.branchline= observe.common.branchlineLength= observe.common.branchlinesComposition= -observe.common.brand= -observe.common.brandName= -observe.common.broughtOnDeck= -observe.common.capacity= -observe.common.capacityLabel= -observe.common.captain= -observe.common.caracteristics= +observe.common.brand=Marque +observe.common.brandName=Marque +observe.common.broughtOnDeck=Monté sur le pont +observe.common.capacity=Capacité transport (m³) +observe.common.capacityLabel=Libellé capacité +observe.common.captain=Capitaine +observe.common.caracteristics=Caractéristiques observe.common.catchFateLongline= observe.common.catchLongline= -observe.common.catchWeight= -observe.common.catchWeightComputed.computed.tip= -observe.common.catchWeightComputed.observed.tip= -observe.common.changeDate= -observe.common.code= -observe.common.codeAndStatus= -observe.common.coefficients= -observe.common.comment= -observe.common.comment.activity= -observe.common.comment.floatingObject= -observe.common.comment.nonTargetCatch= -observe.common.comment.nonTargetSample= -observe.common.comment.set= -observe.common.comment.targetCatch= -observe.common.comment.targetDiscarded= -observe.common.comment.targetSample= -observe.common.count= -observe.common.country= -observe.common.currentFpaZone= -observe.common.dataEntryOperator= -observe.common.date= -observe.common.daysAtSeaCount= -observe.common.departureHarbour= -observe.common.description= -observe.common.detailledActivitiesObservation= -observe.common.detectionMode= -observe.common.directory= +observe.common.catchWeight=Poids estimé (en t) +observe.common.catchWeightComputed.computed.tip=Le poids estimé a été calculé (%s) +observe.common.catchWeightComputed.observed.tip=Le poids estimé a été observé +observe.common.changeDate=Date changement pavillon +observe.common.code=Identifiant +observe.common.codeAndStatus=Code / Statut +observe.common.coefficients=Coefficients +observe.common.comment=Commentaire +observe.common.comment.activity=Commentaire de l'activité +observe.common.comment.floatingObject=Commentaire sur l'objet flottant +observe.common.comment.nonTargetCatch=Commentaire de la faune accessoire +observe.common.comment.nonTargetSample=Commentaire de l'échantillonage faune +observe.common.comment.set=Commentaire de la calée +observe.common.comment.targetCatch=Commentaire de la capture +observe.common.comment.targetDiscarded=Commentaire du rejet +observe.common.comment.targetSample=Commentaire de l'échantillonage thon +observe.common.count=Nombre +observe.common.country=Pays +observe.common.currentFpaZone=Zone FPA actuelle +observe.common.dataEntryOperator=Saisisseur +observe.common.date=Jour d'observation +observe.common.daysAtSeaCount=Nombre de jours à l'eau +observe.common.departureHarbour=Port de départ +observe.common.description=Description +observe.common.detailledActivitiesObservation=Activités détaillées +observe.common.detectionMode=Mode détection +observe.common.directory=Répertoire observe.common.encounter= observe.common.encounterType= -observe.common.endDate= -observe.common.endLogValue= -observe.common.equation= -observe.common.ersId= +observe.common.endDate=Fin de validité +observe.common.endLogValue=Loch du soir (milles) +observe.common.equation=Relation Taille-Poids +observe.common.ersId=Id ERS observe.common.faoCode= -observe.common.file= -observe.common.firstName= -observe.common.flagCountry= +observe.common.file=Fichier +observe.common.firstName=Prénom +observe.common.flagCountry=Pavillon observe.common.floatingObject= observe.common.floatline1Length= observe.common.floatline2Length= observe.common.floatlineLengths= observe.common.floatlinesComposition= -observe.common.formsUrl= +observe.common.formsUrl=URL des formulaires observe.common.fpaZone= -observe.common.gaugeLabel= +observe.common.gaugeLabel=Libellé jauge observe.common.gear= observe.common.gearCaracteristic= observe.common.gearCaracteristicType= -observe.common.gearType= +observe.common.gearType=Type d'engin observe.common.gearUseFeaturesLongline= observe.common.gearUseFeaturesSeine= observe.common.gender= -observe.common.generateReport= -observe.common.global.progression.description= +observe.common.generateReport=Générer un rapport de validation +observe.common.global.progression.description=Progression globale observe.common.gps.activity= observe.common.gps.gpsPoint= observe.common.gps.gpsPointInterval= @@ -813,84 +813,84 @@ observe.common.gpsPointInterval= observe.common.harbour= observe.common.haulingIdentifier= observe.common.healthness= -observe.common.heureobservation= +observe.common.heureobservation=Heure d'observation observe.common.homeId= -observe.common.homeIdFAOWormsId= +observe.common.homeIdFAOWormsId=Code 3L / FAO / Worms observe.common.hookPosition= observe.common.hookSize= observe.common.hookType= observe.common.hooksComposition= observe.common.id= observe.common.inconnu= -observe.common.iso2Code= -observe.common.iso3Code= +observe.common.iso2Code=code ISO-2 +observe.common.iso3Code=Code ISO-3 observe.common.itemHorizontalPosition= observe.common.itemVerticalPosition= -observe.common.keelCodeFlotte= -observe.common.label1= -observe.common.label2= -observe.common.label3= -observe.common.label4= -observe.common.label5= -observe.common.label6= -observe.common.label7= -observe.common.label8= -observe.common.landingHarbour= -observe.common.lastName= -observe.common.latitude= -observe.common.length= -observe.common.length.computed.tip= -observe.common.length.inf= -observe.common.length.observed.tip= -observe.common.lengthMeasureType= -observe.common.lengthWeightFormula= +observe.common.keelCodeFlotte=Code quille /Code flotte +observe.common.label1=Libellé anglais +observe.common.label2=Libellé français +observe.common.label3=Libellé espagnol +observe.common.label4=Libellé 4 +observe.common.label5=Libellé 5 +observe.common.label6=Libellé 6 +observe.common.label7=Libellé 7 +observe.common.label8=Libellé 8 +observe.common.landingHarbour=Port d'arrivée +observe.common.lastName=Nom +observe.common.latitude=Latitude +observe.common.length=Longueur hors tout +observe.common.length.computed.tip=La longueur a été calculée +observe.common.length.inf=Longueur (cm inf.) +observe.common.length.observed.tip=La longueur a été observée +observe.common.lengthMeasureType=Type de mensuration +observe.common.lengthWeightFormula=Relation Poids observe.common.lengthWeightParameter= -observe.common.libelles= +observe.common.libelles=Libellés observe.common.lightsticksColor= observe.common.lightsticksType= observe.common.lineType= observe.common.locode= -observe.common.longitude= -observe.common.lowerValueUpperValue= -observe.common.mammalsObservation= +observe.common.longitude=Longitude +observe.common.lowerValueUpperValue=Borne min-max +observe.common.mammalsObservation=Mammifères observe.common.maturityStatus= -observe.common.meanLength= -observe.common.meanLengthComputed.computed.tip= -observe.common.meanLengthComputed.observed.tip= -observe.common.meanValues= -observe.common.meanWeight= -observe.common.meanWeightComputed.computed.tip= -observe.common.meanWeightComputed.observed.tip= -observe.common.measureType= -observe.common.measureType.ld1= -observe.common.measureType.lf= -observe.common.measureType.unknown= -observe.common.minLengthMax= -observe.common.minWeightMax= +observe.common.meanLength=Taille moyenne (en cm) +observe.common.meanLengthComputed.computed.tip=La taille moyenne a été calculée (%s) +observe.common.meanLengthComputed.observed.tip=La taille moyenne a été observée +observe.common.meanValues=Valeurs moyennes +observe.common.meanWeight=Poids moyen (en Kg) +observe.common.meanWeightComputed.computed.tip=Le poids moyen a été calculé (%s) +observe.common.meanWeightComputed.observed.tip=Le poids moyen a été observé +observe.common.measureType=Type de mensuration +observe.common.measureType.ld1=LD1 +observe.common.measureType.lf=LF +observe.common.measureType.unknown=Inconnu +observe.common.minLengthMax=Taille min-max (en cm) +observe.common.minWeightMax=Poids min-max (en Kg) observe.common.mitigationType= observe.common.name= -observe.common.needComment= -observe.common.nextFpaZone= -observe.common.no.balise= +observe.common.needComment=Nécessite un commentaire +observe.common.nextFpaZone=Zone FPA pénétrée +observe.common.no.balise=Aucune balise lue observe.common.nocode= -observe.common.nonCoupSenne= -observe.common.nonTargetCatch= +observe.common.nonCoupSenne=Non coup de senne +observe.common.nonTargetCatch=Faune accessoire conservée ou rejetée observe.common.nonTargetLength= -observe.common.nonTargetObservation= -observe.common.nonTargetSample= +observe.common.nonTargetObservation=Faune associée +observe.common.nonTargetSample=Echantillon faune accessoire observe.common.none= -observe.common.objectFate= -observe.common.objectObservedSpecies= -observe.common.objectOperation= +observe.common.objectFate=Devenir de l'objet +observe.common.objectObservedSpecies=Faune observée +observe.common.objectOperation=Opération sur l'objet observe.common.objectSchoolEstimate= -observe.common.objectType= -observe.common.objectsObservation= -observe.common.observedSystem= -observe.common.observedSystemDistance= -observe.common.observer= +observe.common.objectType=Type d'objet +observe.common.objectsObservation=Objet flottants +observe.common.observedSystem=Système observé +observe.common.observedSystemDistance=Distance système observé (en milles avec 1 décimale) +observe.common.observer=Observateur observe.common.observerLabel= -observe.common.obsolete.entity= -observe.common.ocean= +observe.common.obsolete.entity=Le référentiel %1$s est désactivé. +observe.common.ocean=Océan observe.common.ocean/label1= observe.common.ocean/label2= observe.common.ocean/label3= @@ -899,55 +899,55 @@ observe.common.ocean/label5= observe.common.ocean/label6= observe.common.ocean/label7= observe.common.ocean/label8= -observe.common.oceanForSpecies= +observe.common.oceanForSpecies=Liste des océans observe.common.oldCode3L= -observe.common.operation.resume= -observe.common.organism= -observe.common.ownership= +observe.common.operation.resume=Résumé des opérations +observe.common.organism=Organisme +observe.common.ownership=Appartenance observe.common.person= -observe.common.picturesReferences= -observe.common.power= -observe.common.previousFpaZone= +observe.common.picturesReferences=Référence Photo +observe.common.power=Puissance moteur principal +observe.common.previousFpaZone=Zone FPA quitée observe.common.program= -observe.common.program.observation.value.0= -observe.common.program.observation.value.1= -observe.common.program.observation.value.2= -observe.common.program.observation.value.3= -observe.common.program.observation.value.4= -observe.common.program.observation.value.5= -observe.common.program.observation.value.6= -observe.common.program.observation.value.7= -observe.common.program.observation.value.8= -observe.common.program.observation.value.9= -observe.common.reasonForDiscard= +observe.common.program.observation.value.0=non observé +observe.common.program.observation.value.1=observé +observe.common.program.observation.value.2=valeur 2 non définie +observe.common.program.observation.value.3=valeur 3 non définie +observe.common.program.observation.value.4=valeur 4 non définie +observe.common.program.observation.value.5=valeur 5 non définie +observe.common.program.observation.value.6=valeur 6 non définie +observe.common.program.observation.value.7=valeur 7 non définie +observe.common.program.observation.value.8=valeur 8 non définie +observe.common.program.observation.value.9=valeur 9 non définie +observe.common.reasonForDiscard=Raison rejet observe.common.reasonForNoFishing= observe.common.reasonForNullSet= -observe.common.reportsUrl= -observe.common.resume= +observe.common.reportsUrl=URL de rapport +observe.common.resume=Résumé de la configuration observe.common.route= -observe.common.routes.list= -observe.common.samplesObservation= -observe.common.schoolEstimate= -observe.common.schoolType= -observe.common.scientificLabel= -observe.common.seaSurfaceTemperature= -observe.common.searchMaximum= +observe.common.routes.list=Liste des routes +observe.common.samplesObservation=Mensurations +observe.common.schoolEstimate=Estimation banc +observe.common.schoolType=Type de banc +observe.common.scientificLabel=Libellé scientifique +observe.common.seaSurfaceTemperature=Température surface (°) +observe.common.searchMaximum=Vitesse maximale observe.common.section= -observe.common.select.gps.import.file= -observe.common.select.gps.import.file.tip= -observe.common.select.gps.maxDelay= -observe.common.select.gps.maxDelay.tip= -observe.common.select.gps.maxSpeed= -observe.common.select.gps.maxSpeed.tip= -observe.common.select.report.file= -observe.common.select.report.file.tip= -observe.common.select.validate.context= -observe.common.select.validate.context.tip= -observe.common.select.validate.mode= -observe.common.select.validate.mode.tip= -observe.common.select.validate.scope= -observe.common.select.validate.scope.tip= -observe.common.selected.validators= +observe.common.select.gps.import.file=Fichier à importer +observe.common.select.gps.import.file.tip=Choisir le fichier de trace GPS à importer +observe.common.select.gps.maxDelay=Temps maximum (mn) +observe.common.select.gps.maxDelay.tip=Renseigner le délais maximum autorisée entre 2 points gps (en minutes) +observe.common.select.gps.maxSpeed=Vitesse maximum (nd) +observe.common.select.gps.maxSpeed.tip=Renseigner la vitesse maximum autorisée entre 2 points gps (en noeud) +observe.common.select.report.file=Fichier de définition de reports +observe.common.select.report.file.tip=Choisir le fichier de définition des reports +observe.common.select.validate.context=Contexte de validation +observe.common.select.validate.context.tip=Choisir le context de validation +observe.common.select.validate.mode=Type de données à valider +observe.common.select.validate.mode.tip=Choisir le type de données à valider +observe.common.select.validate.scope=Niveau de validation +observe.common.select.validate.scope.tip=Choisir le ou les niveaux de validation +observe.common.selected.validators=Nombre de validateurs détectés \: %1$s observe.common.sensorBrand= observe.common.sensorDataFormat= observe.common.sensorPosition= @@ -957,59 +957,59 @@ observe.common.setLongline= observe.common.setSeine= observe.common.settingIdentifier= observe.common.settingShape= -observe.common.sex= +observe.common.sex=Sexe observe.common.sizeMeasure= observe.common.sizeMeasureType= -observe.common.species= +observe.common.species=Espèce observe.common.species/scientificLabel= -observe.common.speciesFate= -observe.common.speciesFaune= -observe.common.speciesGroup= +observe.common.speciesFate=Devenir espèce +observe.common.speciesFaune=Espèce de faune +observe.common.speciesGroup=Groupe espèce observe.common.speciesList= -observe.common.speciesStatus= -observe.common.speciesThon= -observe.common.speedRange= -observe.common.startDate= -observe.common.startDateFinProgram= -observe.common.startDateFinValidite= -observe.common.startLogValue= -observe.common.status= -observe.common.step.description= +observe.common.speciesStatus=Statut faune observée +observe.common.speciesThon=Espèce de thon +observe.common.speedRange=Libellé vitesse vent +observe.common.startDate=Début de validité +observe.common.startDateFinProgram=Début - Fin du programme +observe.common.startDateFinValidite=Début - fin de validité +observe.common.startLogValue=Loch du matin (milles) +observe.common.status=Statut +observe.common.step.description=Description de l'étape observe.common.stomacFullness= -observe.common.storage.not.valid= -observe.common.supportVesselName= -observe.common.surroundingActivity= -observe.common.taille= -observe.common.taillePoids.caracteristics= -observe.common.targetCatch= -observe.common.targetDiscarded= -observe.common.targetDiscardsObservation= +observe.common.storage.not.valid=Source de données non configurée +observe.common.supportVesselName=Nom supply +observe.common.surroundingActivity=Activité environnante +observe.common.taille=Taille (cm) +observe.common.taillePoids.caracteristics=Caractéristiques Taille-Poids +observe.common.targetCatch=Capture cible +observe.common.targetDiscarded=Rejet de thon +observe.common.targetDiscardsObservation=Rejets thon observe.common.targetLength= -observe.common.targetSample= -observe.common.targetSampleCapture= +observe.common.targetSample=Echantillon thon rejeté +observe.common.targetSampleCapture=Echantillon thon capturé observe.common.tdr= observe.common.tdrRecord= observe.common.time= -observe.common.topiaCreateDate= -observe.common.topiaId= -observe.common.topiaVersion= -observe.common.totalCount= -observe.common.totalCountComputed.computed.tip= -observe.common.totalCountComputed.observed.tip= -observe.common.totalWeight= +observe.common.topiaCreateDate=Date de création +observe.common.topiaId=Identifiant technique +observe.common.topiaVersion=Version +observe.common.totalCount=Nombre estimé +observe.common.totalCountComputed.computed.tip=Le nombre estimé a été calculé (%s) +observe.common.totalCountComputed.observed.tip=Le nombre estimé a été observé +observe.common.totalWeight=Poids observe.common.tracelineLength= observe.common.transmittingBuoy= -observe.common.transmittingBuoyOperation= -observe.common.transmittingBuoyType= +observe.common.transmittingBuoyOperation=Opération balise +observe.common.transmittingBuoyType=Type de balise observe.common.tripLongline= observe.common.tripSeine= observe.common.tripType= -observe.common.trips.list= -observe.common.typeTransmittingBuoyOperation= -observe.common.undefined= -observe.common.undefined.tip= -observe.common.uri= -observe.common.vessel= +observe.common.trips.list=Liste des marées +observe.common.typeTransmittingBuoyOperation=Type d'opération sur balise +observe.common.undefined=< non défini > +observe.common.undefined.tip=< non défini > +observe.common.uri=URI +observe.common.vessel=Bateau observe.common.vessel/label1= observe.common.vessel/label2= observe.common.vessel/label3= @@ -1019,8 +1019,8 @@ observe.common.vessel/label6= observe.common.vessel/label7= observe.common.vessel/label8= observe.common.vesselActivityLongline= -observe.common.vesselActivitySeine= -observe.common.vesselActivitySeine.comment= +observe.common.vesselActivitySeine=Activité bateau +observe.common.vesselActivitySeine.comment=Seule l'activité %1$s permet de saisir une calée. observe.common.vesselActivitySeine/label1= observe.common.vesselActivitySeine/label2= observe.common.vesselActivitySeine/label3= @@ -1029,386 +1029,390 @@ observe.common.vesselActivitySeine/label5= observe.common.vesselActivitySeine/label6= observe.common.vesselActivitySeine/label7= observe.common.vesselActivitySeine/label8= -observe.common.vesselSizeCategory= -observe.common.vesselSpeed= -observe.common.vesselType= -observe.common.waveHeight= -observe.common.weight= -observe.common.weight.computed.tip= -observe.common.weight.ind= -observe.common.weight.observed.tip= -observe.common.weightCategory= -observe.common.weightLengthFormula= +observe.common.vesselSizeCategory=Catégorie de bateau +observe.common.vesselSpeed=Vitesse bateau (nd) +observe.common.vesselType=Type de pêcherie +observe.common.waveHeight=Libellé Hauteur moyenne vagues +observe.common.weight=Poids (en t) +observe.common.weight.computed.tip=Le poids a été calculé +observe.common.weight.ind=Poids ind. (en Kg) +observe.common.weight.observed.tip=Le poids a été observé +observe.common.weightCategory=Catégorie de poids +observe.common.weightLengthFormula=Relation Taille observe.common.weightMeasure= observe.common.weightMeasureType= -observe.common.well= -observe.common.wind= -observe.common.yearService= -observe.comon.exist.on.remote= -observe.config.category.changeStorage= -observe.config.category.changeStorage.description= -observe.config.category.directories= -observe.config.category.directories.description= -observe.config.category.gps= -observe.config.category.gps.description= -observe.config.category.h2= -observe.config.category.h2.description= -observe.config.category.map= -observe.config.category.map.description= -observe.config.category.observation= -observe.config.category.observation.description= -observe.config.category.obstuna= -observe.config.category.obstuna.description= -observe.config.category.other= -observe.config.category.other.description= -observe.config.category.speciesList.longline= -observe.config.category.speciesList.longline.description= -observe.config.category.speciesList.seine= -observe.config.category.speciesList.seine.description= -observe.config.category.synchro= -observe.config.category.synchro.description= -observe.config.configFileName.description= -observe.config.db.locale= -observe.config.defaultBackupDirectory.description= -observe.config.defaultCreationMode= -observe.config.defaultDataDirectory.description= -observe.config.defaultDbMode= -observe.config.defaultGpsMaxDelay= -observe.config.defaultGpsMaxSpeed= -observe.config.defaultI18nDirectory.description= -observe.config.defaultInitialDbDump.description= -observe.config.defaultLocalDbDirectory.description= +observe.common.well=Cuve +observe.common.wind=Vent Beaufort +observe.common.yearService=Année de mise en service +observe.comon.exist.on.remote=%1$s (déjà existante) +observe.config.category.changeStorage=Source de données +observe.config.category.changeStorage.description=Options de changement de source de données +observe.config.category.directories=Répertoires +observe.config.category.directories.description=Répertoires de l'application +observe.config.category.gps=GPS +observe.config.category.gps.description=Configuration GPS +observe.config.category.h2=Base locale +observe.config.category.h2.description=Configuration base locale +observe.config.category.map=Carte +observe.config.category.map.description=Configuration des fonds à utiliser pour les cartes +observe.config.category.observation=Qualification des observations +observe.config.category.observation.description=Gestion des indicateurs de qualification des programmes +observe.config.category.obstuna=Base distante +observe.config.category.obstuna.description=Configuration base distante +observe.config.category.other=Autre +observe.config.category.other.description=Autres options +observe.config.category.speciesList.longline=Configuration des listes d'espèces (Palangre) +observe.config.category.speciesList.longline.description=Choisir les listes d'espèces à utiliser dans les formulaire d'une maréee de type palangre +observe.config.category.speciesList.seine=Configuration des listes d'espèces (Senne) +observe.config.category.speciesList.seine.description=Choisir les listes d'espèces à utiliser dans les formulaire d'une maréee de type senne +observe.config.category.synchro=Actions sur base +observe.config.category.synchro.description=Configuration actions sur base +observe.config.configFileName.description=Le nom du fichier de configuration +observe.config.db.locale=La langue du référentiel +observe.config.defaultBackupDirectory.description=Répertoire par défaut où sauvegarder les bases locales +observe.config.defaultCreationMode=Le mode de création de base locale par défaut +observe.config.defaultDataDirectory.description=Répertoire par défault des resources utilisateurs de l'application +observe.config.defaultDbMode=Le mode de connexion a créer par défaut +observe.config.defaultGpsMaxDelay=Le count par défaut de minutes maximum entre dexu points gps +observe.config.defaultGpsMaxSpeed=La vitesse maximum par défaut en tre dexu points gps +observe.config.defaultI18nDirectory.description=Répertoire par défault des resources de traduction de l'application +observe.config.defaultInitialDbDump.description=La base embarquée créee lors de le premier import d'une base distante. +observe.config.defaultLocalDbDirectory.description=Le répertoire où est stockée la base locale. observe.config.defaultMapDirectory.description= -observe.config.defaultReportDirectory.description= -observe.config.defaultResourcesDirectory.description= -observe.config.defaultTmpDirectory.description= -observe.config.defaultValidationReportDirectory.description= -observe.config.devMode= -observe.config.h2.can.migrate.description= -observe.config.h2.login.description= -observe.config.h2.password.description= -observe.config.h2.serverPort.description= -observe.config.logConfigurationFile.description= -observe.config.map.background.description= -observe.config.map.layer1.description= -observe.config.map.layer10.description= -observe.config.map.layer2.description= -observe.config.map.layer3.description= -observe.config.map.layer4.description= -observe.config.map.layer5.description= -observe.config.map.layer6.description= -observe.config.map.layer7.description= -observe.config.map.layer8.description= -observe.config.map.layer9.description= -observe.config.map.style.description= -observe.config.observation.activitysDetaillees= -observe.config.observation.fauneAssociee= -observe.config.observation.floatingObject= -observe.config.observation.gleure= -observe.config.observation.mammiferes= -observe.config.observation.mensurations= -observe.config.observation.oiseaux= -observe.config.observation.rejetsThons= -observe.config.obstuna.login.description= -observe.config.obstuna.password.description= -observe.config.obstuna.url.description= -observe.config.obstuna.useSsl.description= -observe.config.pg.can.migrate.description= -observe.config.showMigrationProgression= -observe.config.showMigrationSql= -observe.config.showSql= -observe.config.speciesList.longline.catch= -observe.config.speciesList.longline.encounter= -observe.config.speciesList.seine.nonTargetCatch= -observe.config.speciesList.seine.objectObservedSpecies= -observe.config.speciesList.seine.objectSchoolEstimate= -observe.config.speciesList.seine.schoolEstimate= -observe.config.speciesList.seine.targetCatch= -observe.config.ui.autoPopupNumberEditor= -observe.config.ui.changeSynchroSrc= -observe.config.ui.fullscreen= -observe.config.ui.loadLocalStorage= -observe.config.ui.locale= -observe.config.ui.showNumberEditorButton= -observe.config.ui.showTimeEditorSlider= -observe.config.ui.storeRemoteStorage= -observe.content.mode.create.tip= -observe.content.mode.read.tip= -observe.content.mode.update.tip= -observe.encounter.action.create= -observe.encounter.action.create.tip= -observe.encounter.count= -observe.encounter.distance= -observe.encounter.encounterType= -observe.encounter.species= -observe.encounter.table.count= -observe.encounter.table.count.tip= -observe.encounter.table.distance= -observe.encounter.table.distance.tip= -observe.encounter.table.encouterType= -observe.encounter.table.encouterType.tip= -observe.encounter.table.species= -observe.encounter.table.species.tip= -observe.encounter.title= -observe.entity.message.updating= -observe.error.can.not.create.directory= -observe.error.no.activity.6= -observe.error.open.first.db= -observe.error.speciesList.longline.catch.notFound= -observe.error.speciesList.longline.depredator.notFound= -observe.error.speciesList.longline.encounter.notFound= -observe.error.speciesList.seine.objectObservedSpecies.notFound= -observe.error.speciesList.seine.objectSchoolEstimate.notFound= -observe.error.speciesList.seine.targetCatch.notFound= -observe.error.storage.could.not.backup.unsane.local.db= -observe.error.storage.could.not.load.local.db= -observe.floatingObject.message.creating= -observe.floatingObject.message.updating= -observe.floatingObject.title= -observe.floatingObjectTransmittingBuoyOperation.title= -observe.floatlinesComposition.action.create= -observe.floatlinesComposition.action.create.tip= -observe.floatlinesComposition.length= -observe.floatlinesComposition.lineType= -observe.floatlinesComposition.proportion= -observe.floatlinesComposition.proportionSum= -observe.floatlinesComposition.table.length= -observe.floatlinesComposition.table.length.tip= -observe.floatlinesComposition.table.lineType= -observe.floatlinesComposition.table.lineType.tip= -observe.floatlinesComposition.table.proportion= -observe.floatlinesComposition.table.proportion.tip= -observe.floatlinesComposition.title= -observe.gear.availableGearCaracteristic= -observe.gear.gearCaracteristic= -observe.gear.gearCaracteristicType= -observe.gear.selectedGearCaracteristic= -observe.gear.tab.gearCaracteristic= -observe.gear.tab.general= -observe.gear.unit= -observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement= -observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip= -observe.gearUseFeaturesLongline.comment= -observe.gearUseFeaturesLongline.gear= -observe.gearUseFeaturesLongline.number= -observe.gearUseFeaturesLongline.tab.general= -observe.gearUseFeaturesLongline.tab.measurements= -observe.gearUseFeaturesLongline.table.comment= -observe.gearUseFeaturesLongline.table.comment.tip= -observe.gearUseFeaturesLongline.table.gear= -observe.gearUseFeaturesLongline.table.gear.tip= -observe.gearUseFeaturesLongline.table.gearCaracteristic= -observe.gearUseFeaturesLongline.table.gearCaracteristic.tip= -observe.gearUseFeaturesLongline.table.number= -observe.gearUseFeaturesLongline.table.number.tip= -observe.gearUseFeaturesLongline.table.usedInTrip= -observe.gearUseFeaturesLongline.table.usedInTrip.tip= -observe.gearUseFeaturesLongline.table.value= -observe.gearUseFeaturesLongline.table.value.tip= -observe.gearUseFeaturesLongline.title= -observe.gearUseFeaturesLongline.usedInTrip= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement= -observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip= -observe.gearUseFeaturesSeine.comment= -observe.gearUseFeaturesSeine.gear= -observe.gearUseFeaturesSeine.number= -observe.gearUseFeaturesSeine.tab.general= -observe.gearUseFeaturesSeine.tab.measurements= -observe.gearUseFeaturesSeine.table.comment= -observe.gearUseFeaturesSeine.table.comment.tip= -observe.gearUseFeaturesSeine.table.gear= -observe.gearUseFeaturesSeine.table.gear.tip= -observe.gearUseFeaturesSeine.table.gearCaracteristic= -observe.gearUseFeaturesSeine.table.gearCaracteristic.tip= -observe.gearUseFeaturesSeine.table.number= -observe.gearUseFeaturesSeine.table.number.tip= -observe.gearUseFeaturesSeine.table.usedInTrip= -observe.gearUseFeaturesSeine.table.usedInTrip.tip= -observe.gearUseFeaturesSeine.table.value= -observe.gearUseFeaturesSeine.table.value.tip= -observe.gearUseFeaturesSeine.title= -observe.gearUseFeaturesSeine.usedInTrip= -observe.harbour.coordinates= -observe.harbour.locode= -observe.harbour.name= -observe.hooksComposition.action.create= -observe.hooksComposition.action.create.tip= -observe.hooksComposition.hookOffset= -observe.hooksComposition.hookSize= -observe.hooksComposition.hookType= -observe.hooksComposition.proportion= -observe.hooksComposition.proportionSum= -observe.hooksComposition.table.hookOffset= -observe.hooksComposition.table.hookOffset.tip= -observe.hooksComposition.table.hookSize= -observe.hooksComposition.table.hookSize.tip= -observe.hooksComposition.table.hookType= -observe.hooksComposition.table.hookType.tip= -observe.hooksComposition.table.proportion= -observe.hooksComposition.table.proportion.tip= -observe.hooksComposition.title= -observe.info.selected.validators= -observe.info.validation.credentials= -observe.init.local.db.detected= -observe.init.no.initial.dump.detected= -observe.init.no.local.db.detected= -observe.init.storage.done= -observe.label.coefficients.info= -observe.label.lengthWeightFormula.info= -observe.label.usage.data.title= -observe.label.usage.referentiel.title= -observe.label.weightLengthFormula.info= -observe.lengthWeightParameter.tab.general= -observe.lengthWeightParameter.tab.other= +observe.config.defaultReportDirectory.description=Répertoire par défaut des rapports de l'application +observe.config.defaultResourcesDirectory.description=Le répertoire où sont stockées les resources de l'utilisateur comme les traductions ou les requètes de rapports. +observe.config.defaultTmpDirectory.description=Le répertoire temporaire par défaut +observe.config.defaultValidationReportDirectory.description=Le répertoire par défaut où sont stockés les rapports de validation +observe.config.devMode=Mode développeur +observe.config.h2.can.migrate.description=Autoriser la mise à jour des bases locales (h2) +observe.config.h2.login.description=Le login h2 +observe.config.h2.password.description=Le mot de passe h2 +observe.config.h2.serverPort.description=Port du serveur h2 +observe.config.logConfigurationFile.description=Fichier de configuration des logs +observe.config.map.background.description=Couleur du fond de carte +observe.config.map.layer1.description=Fichier (shapeFiles) du premier calque de la carte +observe.config.map.layer10.description=Fichier (shapeFiles) du dixième calque de la carte +observe.config.map.layer2.description=Fichier (shapeFiles) du deuxième calque de la carte +observe.config.map.layer3.description=Fichier (shapeFiles) du troisième calque de la carte +observe.config.map.layer4.description=Fichier (shapeFiles) du quatrième calque de la carte +observe.config.map.layer5.description=Fichier (shapeFiles) du cinquième calque de la carte +observe.config.map.layer6.description=Fichier (shapeFiles) du sixième calque de la carte +observe.config.map.layer7.description=Fichier (shapeFiles) du septième calque de la carte +observe.config.map.layer8.description=Fichier (shapeFiles) du huitième calque de la carte +observe.config.map.layer9.description=Fichier (shapeFiles) du neuvième calque de la carte +observe.config.map.style.description=Fichier des style à appliquer sur les calques de la carte +observe.config.observation.activitysDetaillees=Observation des activités détaillées +observe.config.observation.fauneAssociee=Observation des Faunes associées +observe.config.observation.floatingObject=Observation des objets flottants +observe.config.observation.gleure=Observation des gleures +observe.config.observation.mammiferes=Observation des mammifères +observe.config.observation.mensurations=Observation des mensurations +observe.config.observation.oiseaux=Observation des oiseaux +observe.config.observation.rejetsThons=Observation des rejets thon +observe.config.obstuna.login.description=Le nom d'utilisateur pour se connecter à la base Obstuna +observe.config.obstuna.password.description=Le mote de passe pour se connecter à la base Obstuna +observe.config.obstuna.url.description=L'url de connexion à la base Obstuna +observe.config.obstuna.useSsl.description=Drapeau pour permettre l'utilisation du mode ssl pour la connexion à Obstuna +observe.config.pg.can.migrate.description=Autoriser la mise à jour des bases distantes (il faut être propriétaire de la base) +observe.config.server.dataBaseName.description= +observe.config.server.login.description= +observe.config.server.password.description= +observe.config.server.url.description= +observe.config.showMigrationProgression=Affichier dans les logs la progression de la mise à jour d'une base +observe.config.showMigrationSql=Afficher dans les logs les requêtes jouées lors de la mise à jour d'une base +observe.config.showSql=Afficher dans les logs toutes les requêtes sql exéts +observe.config.speciesList.longline.catch=Espèces pour les captures - TDR +observe.config.speciesList.longline.encounter=Espèces pour les rencontre +observe.config.speciesList.seine.nonTargetCatch=Espèces pour les captures non cible +observe.config.speciesList.seine.objectObservedSpecies=Espèces pour les espèces non cible observées +observe.config.speciesList.seine.objectSchoolEstimate=Espèces pour les estimations banc objet +observe.config.speciesList.seine.schoolEstimate=Espèces pour les estimations +observe.config.speciesList.seine.targetCatch=Espèces pour les captures cible +observe.config.ui.autoPopupNumberEditor=Pour afficher automatiquement l'éditeur numérique lors de l'édition d'un count +observe.config.ui.changeSynchroSrc=Pour autoriser la sélection de la base source dans les opérations sur base +observe.config.ui.fullscreen=Pour afficher l'application en mode pleine écran +observe.config.ui.loadLocalStorage=Charger la base locale au démarrage de l'application +observe.config.ui.locale=Langue utilisée par l'application (fr_FR, en_GB ou es_ES) +observe.config.ui.showNumberEditorButton=Pour afficher le bouton qui permet d'utiliser l'éditeur numérique à gauche de chaque champs numérique +observe.config.ui.showTimeEditorSlider=Pour afficher la réglette d'édition des heures +observe.config.ui.storeRemoteStorage=Pour activer la sauvegarde de la configuration de la source distante +observe.content.mode.create.tip=L'objet est en cours de création +observe.content.mode.read.tip=L'objet n'est pas éditable +observe.content.mode.update.tip=L'objet est en cours d'édition +observe.encounter.action.create=Insérer cette rencontre +observe.encounter.action.create.tip=Insérer cette rencontre +observe.encounter.count=Nombre +observe.encounter.distance=Distance (m) +observe.encounter.encounterType=Type +observe.encounter.species=Espèce +observe.encounter.table.count=Nombre +observe.encounter.table.count.tip=Nombre +observe.encounter.table.distance=Distance (m) +observe.encounter.table.distance.tip=Distance (m) +observe.encounter.table.encouterType=Type +observe.encounter.table.encouterType.tip=Type de la rencontre +observe.encounter.table.species=Espèce +observe.encounter.table.species.tip=Espèce rencontrée +observe.encounter.title=Rencontres +observe.entity.message.updating=L'objet '%1$s' est en cours de modification. +observe.error.can.not.create.directory=Création du répertoire %1$s impossible\! +observe.error.no.activity.6=L'activité de type 6 n'a pas été trouvée en base. +observe.error.open.first.db=La base est en cours d'utilisation par une autre application.\nVeuillez fermer l'application H2 et réessayer. +observe.error.speciesList.longline.catch.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Palangre) > speciesList.longline.catch) que la liste d'espèces est bien renseignée. +observe.error.speciesList.longline.depredator.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Palangre) > speciesList.longline.depredator) que la liste d'espèces est bien renseignée. +observe.error.speciesList.longline.encounter.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Palangre) > speciesList.longline.encounter) que la liste d'espèces est bien renseignée. +observe.error.speciesList.seine.objectObservedSpecies.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Senne) > speciesList.seine.objectObservedSpecies) que la liste d'espèces est bien renseignée. +observe.error.speciesList.seine.objectSchoolEstimate.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Senne) > speciesList.seine.objectSchoolEstimate) que la liste d'espèces est bien renseignée. +observe.error.speciesList.seine.targetCatch.notFound=Impossible de charger la liste d'espèces.\nVérifier dans la configuration (Onglet Configuration des listes d'espèces (Senne) > speciesList.seine.targetCatch) que la liste d'espèces est bien renseignée. +observe.error.storage.could.not.backup.unsane.local.db=Impossible d'enregistrer une base non endommagée +observe.error.storage.could.not.load.local.db=Impossible d'ouvrir la base locale pour la raison suivante \: %s +observe.floatingObject.message.creating=L'objet flottant est en cours de création. +observe.floatingObject.message.updating=L'objet flottant est en cours de modification. +observe.floatingObject.title=Objet flottant +observe.floatingObjectTransmittingBuoyOperation.title=Opération sur balises +observe.floatlinesComposition.action.create=Insérer cet orin +observe.floatlinesComposition.action.create.tip=Insérer cet orin +observe.floatlinesComposition.length=Longueur +observe.floatlinesComposition.lineType=Type +observe.floatlinesComposition.proportion=Proportion (%) +observe.floatlinesComposition.proportionSum=Somme des proportions d'orins (%) +observe.floatlinesComposition.table.length=Longueur (m) +observe.floatlinesComposition.table.length.tip=Longueur (m) +observe.floatlinesComposition.table.lineType=Type +observe.floatlinesComposition.table.lineType.tip=Type +observe.floatlinesComposition.table.proportion=Proportion (%) +observe.floatlinesComposition.table.proportion.tip=Proportion (%) +observe.floatlinesComposition.title=Composition des orins +observe.gear.availableGearCaracteristic=Caractéristiques disponibles +observe.gear.gearCaracteristic=Caractéristiques +observe.gear.gearCaracteristicType=Type de caractéristique +observe.gear.selectedGearCaracteristic=Caractéristiques utilisées +observe.gear.tab.gearCaracteristic=Caractéristiques de l'équipement +observe.gear.tab.general=Caractéristiques générales +observe.gear.unit=Unité +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement=Supprimer +observe.gearUseFeaturesLongline.action.deleteSelectedMeasurement.tip=Supprimer la caractéristique +observe.gearUseFeaturesLongline.comment=Commentaire +observe.gearUseFeaturesLongline.gear=Équipement +observe.gearUseFeaturesLongline.number=Nombre +observe.gearUseFeaturesLongline.tab.general=Définition +observe.gearUseFeaturesLongline.tab.measurements=Caractéristiques +observe.gearUseFeaturesLongline.table.comment=Commentaire +observe.gearUseFeaturesLongline.table.comment.tip=Commentaire +observe.gearUseFeaturesLongline.table.gear=Équipement +observe.gearUseFeaturesLongline.table.gear.tip=Équipement +observe.gearUseFeaturesLongline.table.gearCaracteristic=Caractéristique +observe.gearUseFeaturesLongline.table.gearCaracteristic.tip=Caractéristique +observe.gearUseFeaturesLongline.table.number=Nombre +observe.gearUseFeaturesLongline.table.number.tip=Nombre +observe.gearUseFeaturesLongline.table.usedInTrip=Utilisé +observe.gearUseFeaturesLongline.table.usedInTrip.tip=Utilisé dans la marée +observe.gearUseFeaturesLongline.table.value=Valeur +observe.gearUseFeaturesLongline.table.value.tip=Valeur +observe.gearUseFeaturesLongline.title=Équipements +observe.gearUseFeaturesLongline.usedInTrip=Utilisé dans la marée +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement=Supprimer +observe.gearUseFeaturesSeine.action.deleteSelectedMeasurement.tip=Supprimer la caractéristique +observe.gearUseFeaturesSeine.comment=Commentaire +observe.gearUseFeaturesSeine.gear=Équipement +observe.gearUseFeaturesSeine.number=Nombre +observe.gearUseFeaturesSeine.tab.general=Définition +observe.gearUseFeaturesSeine.tab.measurements=Caractéristiques +observe.gearUseFeaturesSeine.table.comment=Commentaire +observe.gearUseFeaturesSeine.table.comment.tip=Commentaire +observe.gearUseFeaturesSeine.table.gear=Équipement +observe.gearUseFeaturesSeine.table.gear.tip=Équipement +observe.gearUseFeaturesSeine.table.gearCaracteristic=Caractéristique +observe.gearUseFeaturesSeine.table.gearCaracteristic.tip=Caractéristique +observe.gearUseFeaturesSeine.table.number=Nombre +observe.gearUseFeaturesSeine.table.number.tip=Nombre +observe.gearUseFeaturesSeine.table.usedInTrip=Utilisé +observe.gearUseFeaturesSeine.table.usedInTrip.tip=Utilisé dans la marée +observe.gearUseFeaturesSeine.table.value=Valeur +observe.gearUseFeaturesSeine.table.value.tip=Valeur +observe.gearUseFeaturesSeine.title=Équipements +observe.gearUseFeaturesSeine.usedInTrip=Utilisé dans la marée +observe.harbour.coordinates=Nom +observe.harbour.locode=Locode +observe.harbour.name=Nom +observe.hooksComposition.action.create=Inserer cet hameçon +observe.hooksComposition.action.create.tip=Inserer cet hameçon +observe.hooksComposition.hookOffset=Offset +observe.hooksComposition.hookSize=Taille +observe.hooksComposition.hookType=Type +observe.hooksComposition.proportion=Proportion (%) +observe.hooksComposition.proportionSum=Somme des proportions d'hameçons (%) +observe.hooksComposition.table.hookOffset=Offset (°) +observe.hooksComposition.table.hookOffset.tip=Offset (°) +observe.hooksComposition.table.hookSize=Taille +observe.hooksComposition.table.hookSize.tip=Taille +observe.hooksComposition.table.hookType=Type +observe.hooksComposition.table.hookType.tip=Type +observe.hooksComposition.table.proportion=Proportion (%) +observe.hooksComposition.table.proportion.tip=Proportion (%) +observe.hooksComposition.title=Composition des hameçons +observe.info.selected.validators=Il faut au moins un validateur sélectionné pour continuer. +observe.info.validation.credentials=Pour valider le référentiel (resp. les données), vous devez posséder les droits en lecture-écriture correspondants. +observe.init.local.db.detected=%1$s détectée. +observe.init.no.initial.dump.detected=Base embarquée %1$s non détectée. +observe.init.no.local.db.detected=Base locale %1$s non détectée. +observe.init.storage.done=Initialisation du service de persistance terminé. +observe.label.coefficients.info=Les coefficients des relations sont de la forme nom\=valeur et sont séparé par des \: (exemple \: a\=1\:b\=2\:c\=3) +observe.label.lengthWeightFormula.info=La relation poids permet de calculer le poids à partir de la taille, elle doit contenir la variable L +observe.label.usage.data.title=Donnée '%1$s' (%2$d occurrences) +observe.label.usage.referentiel.title=Référentiel '%1$s' (%2$d occurrences) +observe.label.weightLengthFormula.info=La relation taille permet de calculer la taille à partir du poids, elle doit contenir la variable P +observe.lengthWeightParameter.tab.general=Caractéristiques générales +observe.lengthWeightParameter.tab.other=Autres caractéristiques observe.list.HookSize= observe.list.HookType= -observe.list.baitHaulingStatus= -observe.list.baitSettingStatus= -observe.list.baitType= -observe.list.catchFateLongline= -observe.list.country= -observe.list.detectionMode= -observe.list.encounterType= -observe.list.fpaZone= -observe.list.gear= -observe.list.gearCaracteristic= -observe.list.gearCaracteristicType= -observe.list.harbour= -observe.list.healthness= -observe.list.hookPosition= -observe.list.hookSize= -observe.list.hookType= -observe.list.itemHorizontalPosition= -observe.list.itemVerticalPosition= -observe.list.lengthWeightParameter= -observe.list.lightsticksColor= -observe.list.lightsticksType= -observe.list.lineType= -observe.list.maturityStatus= -observe.list.mitigationType= -observe.list.objectFate= -observe.list.objectOperation= -observe.list.objectType= -observe.list.observedSystem= -observe.list.ocean= -observe.list.operation= -observe.list.organism= -observe.list.person= -observe.list.program= -observe.list.reasonForDiscard= -observe.list.reasonForNoFishing= -observe.list.reasonForNullSet= -observe.list.sensorBrand= -observe.list.sensorDataFormat= -observe.list.sensorType= -observe.list.settingShape= -observe.list.sex= -observe.list.sizeMeasureType= -observe.list.speciesFate= -observe.list.speciesFaune= -observe.list.speciesGroupSpecies= -observe.list.speciesList= -observe.list.speciesStatus= -observe.list.stomacFullness= -observe.list.surroundingActivity= -observe.list.transmittingBuoyType= -observe.list.tripType= -observe.list.vessel= -observe.list.vesselActivityLongline= -observe.list.vesselActivitySeine= -observe.list.vesselSizeCategory= -observe.list.vesselType= -observe.list.weightCategory= -observe.list.weightMeasureType= -observe.list.wind= -observe.longlineDetailComposition.action.deleteAllSections= -observe.longlineDetailComposition.action.deleteAllSections.tip= -observe.longlineDetailComposition.action.deleteSelectedBasket= -observe.longlineDetailComposition.action.deleteSelectedBasket.tip= -observe.longlineDetailComposition.action.deleteSelectedBranchline= -observe.longlineDetailComposition.action.deleteSelectedBranchline.tip= -observe.longlineDetailComposition.action.deleteSelectedSection= -observe.longlineDetailComposition.action.deleteSelectedSection.tip= -observe.longlineDetailComposition.action.deleteSelectedSectionTemplate= -observe.longlineDetailComposition.action.deleteSelectedSectionTemplate.tip= -observe.longlineDetailComposition.action.generateAllSections= -observe.longlineDetailComposition.action.generateAllSections.tip= -observe.longlineDetailComposition.action.insertAfterSelectedBasket= -observe.longlineDetailComposition.action.insertAfterSelectedBasket.tip= -observe.longlineDetailComposition.action.insertAfterSelectedBranchline= -observe.longlineDetailComposition.action.insertAfterSelectedBranchline.tip= -observe.longlineDetailComposition.action.insertAfterSelectedSection= -observe.longlineDetailComposition.action.insertAfterSelectedSection.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedBasket= -observe.longlineDetailComposition.action.insertBeforeSelectedBasket.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedBranchline= -observe.longlineDetailComposition.action.insertBeforeSelectedBranchline.tip= -observe.longlineDetailComposition.action.insertBeforeSelectedSection= -observe.longlineDetailComposition.action.insertBeforeSelectedSection.tip= -observe.longlineDetailComposition.baskets= -observe.longlineDetailComposition.basketsTable.floatline1Length= -observe.longlineDetailComposition.basketsTable.floatline1Length.tip= -observe.longlineDetailComposition.basketsTable.floatline2Length= -observe.longlineDetailComposition.basketsTable.floatline2Length.tip= -observe.longlineDetailComposition.basketsTable.haulingIdentifier= -observe.longlineDetailComposition.basketsTable.haulingIdentifier.tip= -observe.longlineDetailComposition.basketsTable.settingIdentifier= -observe.longlineDetailComposition.basketsTable.settingIdentifier.tip= -observe.longlineDetailComposition.branchlines= -observe.longlineDetailComposition.branchlinesTable.branchlineLength= -observe.longlineDetailComposition.branchlinesTable.branchlineLength.tip= -observe.longlineDetailComposition.branchlinesTable.haulingIdentifier= -observe.longlineDetailComposition.branchlinesTable.haulingIdentifier.tip= -observe.longlineDetailComposition.branchlinesTable.settingIdentifier= -observe.longlineDetailComposition.branchlinesTable.settingIdentifier.tip= -observe.longlineDetailComposition.branchlinesTable.tracelineLength= -observe.longlineDetailComposition.branchlinesTable.tracelineLength.tip= -observe.longlineDetailComposition.canGenerate= -observe.longlineDetailComposition.firstTemplate.template.notCompilant.basketCount= -observe.longlineDetailComposition.message.updating= -observe.longlineDetailComposition.sectionTemplatesTable.identifier= -observe.longlineDetailComposition.sectionTemplatesTable.identifier.tip= -observe.longlineDetailComposition.sectionTemplatesTable.value= -observe.longlineDetailComposition.sectionTemplatesTable.value.tip= -observe.longlineDetailComposition.sections= -observe.longlineDetailComposition.sectionsTable.haulingIdentifier= -observe.longlineDetailComposition.sectionsTable.haulingIdentifier.tip= -observe.longlineDetailComposition.sectionsTable.settingIdentifier= -observe.longlineDetailComposition.sectionsTable.settingIdentifier.tip= -observe.longlineDetailComposition.sectionsTable.template= -observe.longlineDetailComposition.sectionsTable.template.tip= -observe.longlineDetailComposition.tab.branchlineDetail= -observe.longlineDetailComposition.tab.composition= -observe.longlineDetailComposition.tab.generate= -observe.longlineDetailComposition.title= -observe.longlineDetailComposition.title.section.cant.use.firstTemplate= -observe.longlineGlobalComposition.availableMitigationType= -observe.longlineGlobalComposition.message.updating= -observe.longlineGlobalComposition.mitigationType= -observe.longlineGlobalComposition.selectedMitigationType= -observe.longlineGlobalComposition.tab.baitsComposition= -observe.longlineGlobalComposition.tab.branchlinesComposition= -observe.longlineGlobalComposition.tab.floatlinesComposition= -observe.longlineGlobalComposition.tab.hooksComposition= -observe.longlineGlobalComposition.tab.mitigationType= -observe.longlineGlobalComposition.title= -observe.map.action.exportPng= -observe.map.action.exportPng.tip= -observe.map.action.zoomIt= -observe.map.action.zoomIt.tip= -observe.map.east= -observe.map.export.chooseFile.ok= -observe.map.export.chooseFile.png= -observe.map.export.chooseFile.title= -observe.map.export.overwrite= -observe.map.export.overwrite.cancel= -observe.map.export.overwrite.ok= -observe.map.export.overwrite.title= -observe.map.export.success= -observe.map.legend.hauling= -observe.map.legend.setting= -observe.map.legend.tripBetweenTwoDays= -observe.map.legend.tripDay= +observe.list.baitHaulingStatus=Liste des statuts de l'appât au virage enregistrés +observe.list.baitSettingStatus=Liste des statuts de l'appât au filage enregistrés +observe.list.baitType=Liste des types d'appât enregistrés +observe.list.catchFateLongline=Liste des devenirs capture enregistrés +observe.list.country=Liste des pays enregistrés +observe.list.detectionMode=Liste des modes de détection enregistrés +observe.list.encounterType=Liste des types de rencontre enregistrés +observe.list.fpaZone=Liste des zones FPA enregistrées +observe.list.gear=Liste des équipements enregistrées +observe.list.gearCaracteristic=Liste des caractéristiques d'équipement enregistrées +observe.list.gearCaracteristicType=Liste des types de caractéristique enregistrés +observe.list.harbour=Liste des ports enregistrés +observe.list.healthness=Liste des états de santé enregistrés +observe.list.hookPosition=Liste des positions d'hameçon enregistrées +observe.list.hookSize=Liste des tailles d'hameçon enregistrées +observe.list.hookType=Liste des types d'hameçon enregistrées +observe.list.itemHorizontalPosition=Liste des localisations de l'élément sur la ligne mère enregistrées +observe.list.itemVerticalPosition=Liste des localisations de l'élément sur l'avançon enregistrées +observe.list.lengthWeightParameter=Liste des paramétrages taille-poids thons +observe.list.lightsticksColor=Liste des couleurs de cyalumes enregistrées +observe.list.lightsticksType=Liste des types de cyalumes enregistrés +observe.list.lineType=Liste des types de ligne enregistrés +observe.list.maturityStatus=Liste des maturités enregistrées +observe.list.mitigationType=Listes des types de mesure d'atténuation enregistrés +observe.list.objectFate=Liste des devenirs objet enregistrés +observe.list.objectOperation=Liste des opérations objet enregistrées +observe.list.objectType=Liste des types d'opération enregistrés +observe.list.observedSystem=Liste des systèmes observés enregistrés +observe.list.ocean=Liste des océans enregistrés +observe.list.operation=Liste des opérations sur balise enregistrées +observe.list.organism=Liste des organismes enregistrés +observe.list.person=Liste des personnes enregistrés +observe.list.program=Liste des programmes enregistrés +observe.list.reasonForDiscard=Liste des raisons de rejet enregistrées +observe.list.reasonForNoFishing=Liste des non coup de senne enregistrées +observe.list.reasonForNullSet=Liste des causes coup nul enregistrées +observe.list.sensorBrand=Liste des marques de capteur enregistrées +observe.list.sensorDataFormat=Liste des formats de données de capteur enregistrés +observe.list.sensorType=Liste des types de capteur enregistrés +observe.list.settingShape=Liste des formes au filage enregistrées +observe.list.sex=Liste des sexes enregistrés +observe.list.sizeMeasureType=Liste des types de mesure de taille enregistrés +observe.list.speciesFate=Liste des devenirs de faune enregistrés +observe.list.speciesFaune=[devrait s'appeler speciesNonTarget ou nonTargetSpecies] +observe.list.speciesGroupSpecies=Liste des groupes d'espèce de faune enregistrés +observe.list.speciesList=Liste des listes de favoris d'espèces enregistrées +observe.list.speciesStatus=Liste des statuts d'espèce enregistrés +observe.list.stomacFullness=Liste des niveaux de remplissage de l'estomac enregistrés +observe.list.surroundingActivity=Liste des activités environnantes +observe.list.transmittingBuoyType=Liste des types de balise enregistrées +observe.list.tripType=Liste des types de marée enregistrés +observe.list.vessel=Liste des bateaux enregistrés +observe.list.vesselActivityLongline=Liste des activités bateau enregistrées +observe.list.vesselActivitySeine=Lise des activités bateau enregistrées +observe.list.vesselSizeCategory=Liste des catégories de bateaux enregistrées +observe.list.vesselType=Liste des types de bateaux enregistrés +observe.list.weightCategory=Liste des catégories poids enregistrées +observe.list.weightMeasureType=Liste des types de mesure de poids enregistrés +observe.list.wind=Liste des vents Beaufort enregistrés +observe.longlineDetailComposition.action.deleteAllSections=Tout supprimer +observe.longlineDetailComposition.action.deleteAllSections.tip=Supprimer toutes les section - paniers et avançons +observe.longlineDetailComposition.action.deleteSelectedBasket=Supprimer +observe.longlineDetailComposition.action.deleteSelectedBasket.tip=Supprimer le panier sélectionné +observe.longlineDetailComposition.action.deleteSelectedBranchline=Supprimer +observe.longlineDetailComposition.action.deleteSelectedBranchline.tip=Supprimer l'avançon sélectionné +observe.longlineDetailComposition.action.deleteSelectedSection=Supprimer +observe.longlineDetailComposition.action.deleteSelectedSection.tip=Supprimer la section sélectionnée +observe.longlineDetailComposition.action.deleteSelectedSectionTemplate=Supprimer +observe.longlineDetailComposition.action.deleteSelectedSectionTemplate.tip=Supprimer la template sélectionnée +observe.longlineDetailComposition.action.generateAllSections=Tout générer +observe.longlineDetailComposition.action.generateAllSections.tip=Générer toutes les sections - paniers et avançons +observe.longlineDetailComposition.action.insertAfterSelectedBasket=Insérer après +observe.longlineDetailComposition.action.insertAfterSelectedBasket.tip=Insérer après le panier sélectionné +observe.longlineDetailComposition.action.insertAfterSelectedBranchline=Insérer après +observe.longlineDetailComposition.action.insertAfterSelectedBranchline.tip=Insérer après l'avançon sélectionné +observe.longlineDetailComposition.action.insertAfterSelectedSection=Insérer après +observe.longlineDetailComposition.action.insertAfterSelectedSection.tip=Insérer après la section sélectionnée +observe.longlineDetailComposition.action.insertBeforeSelectedBasket=Insérer avant +observe.longlineDetailComposition.action.insertBeforeSelectedBasket.tip=Insérer avant le panier sélectionné +observe.longlineDetailComposition.action.insertBeforeSelectedBranchline=Insérer avant +observe.longlineDetailComposition.action.insertBeforeSelectedBranchline.tip=Insérer avant l'avançon sélectionné +observe.longlineDetailComposition.action.insertBeforeSelectedSection=Insérer avant +observe.longlineDetailComposition.action.insertBeforeSelectedSection.tip=Insérer avant la section sélectionnée +observe.longlineDetailComposition.baskets=Paniers +observe.longlineDetailComposition.basketsTable.floatline1Length=Orin 1 (m) +observe.longlineDetailComposition.basketsTable.floatline1Length.tip=Longueur Orin 1 (m) +observe.longlineDetailComposition.basketsTable.floatline2Length=Orin 2 (m) +observe.longlineDetailComposition.basketsTable.floatline2Length.tip=Longueur Orin 1 (m) +observe.longlineDetailComposition.basketsTable.haulingIdentifier=Id Virage +observe.longlineDetailComposition.basketsTable.haulingIdentifier.tip=Identifiant Virage +observe.longlineDetailComposition.basketsTable.settingIdentifier=Id Filage +observe.longlineDetailComposition.basketsTable.settingIdentifier.tip=Identifiant Filage +observe.longlineDetailComposition.branchlines=Avançons +observe.longlineDetailComposition.branchlinesTable.branchlineLength=Avançon (m) +observe.longlineDetailComposition.branchlinesTable.branchlineLength.tip=Longueur Avançon (m) +observe.longlineDetailComposition.branchlinesTable.haulingIdentifier=Id Virage +observe.longlineDetailComposition.branchlinesTable.haulingIdentifier.tip=Identifiant Virage +observe.longlineDetailComposition.branchlinesTable.settingIdentifier=Id Filage +observe.longlineDetailComposition.branchlinesTable.settingIdentifier.tip=Identifiant Filage +observe.longlineDetailComposition.branchlinesTable.tracelineLength=Partie basse (m) +observe.longlineDetailComposition.branchlinesTable.tracelineLength.tip=Longueur basse (m) +observe.longlineDetailComposition.canGenerate=Autoriser la génération +observe.longlineDetailComposition.firstTemplate.template.notCompilant.basketCount=La template à utiliser %s n'est pas compatible avec le nombre de paniers par section (%s) +observe.longlineDetailComposition.message.updating=Composition détaillée de la palangre en cours de modification +observe.longlineDetailComposition.sectionTemplatesTable.identifier=Identifiant +observe.longlineDetailComposition.sectionTemplatesTable.identifier.tip=Identifiant +observe.longlineDetailComposition.sectionTemplatesTable.value=Template +observe.longlineDetailComposition.sectionTemplatesTable.value.tip=Template +observe.longlineDetailComposition.sections=Sections +observe.longlineDetailComposition.sectionsTable.haulingIdentifier=Id Virage +observe.longlineDetailComposition.sectionsTable.haulingIdentifier.tip=Identifiant Virage +observe.longlineDetailComposition.sectionsTable.settingIdentifier=Id Filage +observe.longlineDetailComposition.sectionsTable.settingIdentifier.tip=Identifiant Filage +observe.longlineDetailComposition.sectionsTable.template=Template +observe.longlineDetailComposition.sectionsTable.template.tip=Template +observe.longlineDetailComposition.tab.branchlineDetail=Détail avançon +observe.longlineDetailComposition.tab.composition=Composition +observe.longlineDetailComposition.tab.generate=Définition des modèles +observe.longlineDetailComposition.title=Schéma de palangre +observe.longlineDetailComposition.title.section.cant.use.firstTemplate=Impossible d'utiliser le premier modèle lors de la génération +observe.longlineGlobalComposition.availableMitigationType=Atténuations disponibles +observe.longlineGlobalComposition.message.updating=Composition globale de la palangre en cours de modification +observe.longlineGlobalComposition.mitigationType=Atténuations +observe.longlineGlobalComposition.selectedMitigationType=Atténuations sélectionnées +observe.longlineGlobalComposition.tab.baitsComposition=Appâts +observe.longlineGlobalComposition.tab.branchlinesComposition=Avançons +observe.longlineGlobalComposition.tab.floatlinesComposition=Orins +observe.longlineGlobalComposition.tab.hooksComposition=Hameçons +observe.longlineGlobalComposition.tab.mitigationType=Atténuations +observe.longlineGlobalComposition.title=Composition globale de la palangre +observe.map.action.exportPng=Exporter +observe.map.action.exportPng.tip=Exporter la carte au format PNG +observe.map.action.zoomIt=Centrer +observe.map.action.zoomIt.tip=Centrer la carte sur la marée +observe.map.east=Est +observe.map.export.chooseFile.ok=Exporter +observe.map.export.chooseFile.png=image PNG +observe.map.export.chooseFile.title=Exporter la carte +observe.map.export.overwrite=Le fichier existe déjà. Voulez-vous le remplacer ? +observe.map.export.overwrite.cancel=Annuler +observe.map.export.overwrite.ok=Remplacer +observe.map.export.overwrite.title=Attention +observe.map.export.success=Carte exportée (%s) +observe.map.legend.hauling=Virage +observe.map.legend.setting=Filage +observe.map.legend.tripBetweenTwoDays=Trajet entre deux jours +observe.map.legend.tripDay=Trajet d'une journée observe.map.longLine.activity= observe.map.longLine.activity.hauling.end= observe.map.longLine.activity.hauling.start= @@ -1417,329 +1421,330 @@ observe.map.longLine.activity.setting.end= observe.map.longLine.activity.setting.start= observe.map.longLine.activity.station= observe.map.longLine.seine.harbour= -observe.map.miles= -observe.map.north= +observe.map.miles=milles +observe.map.north=Nord observe.map.seine.activity= observe.map.seine.activity.inHarbour= observe.map.seine.activity.schollType.free= observe.map.seine.activity.schollType.object= observe.map.seine.harbour.departure= observe.map.seine.harbour.landing= -observe.map.south= -observe.map.waitLoading= -observe.map.west= -observe.measurement.delete.message= -observe.menu.actions= -observe.menu.application.locale= -observe.menu.configuration= -observe.menu.configuration.tip= -observe.menu.db.locale= -observe.menu.file= -observe.menu.help= -observe.menu.locale= -observe.menu.navigation= -observe.menu.storage= -observe.message.can.not.write.data= -observe.message.cant.add.echantillonRejetThon= -observe.message.cant.add.echantillonTargetCatch= -observe.message.cant.add.nonTargetSample= -observe.message.consolidate.operation.done= -observe.message.consolidate.save.changes= -observe.message.creating.referentiel= -observe.message.db.closed= -observe.message.db.loaded= -observe.message.db.loading= -observe.message.db.none.loaded= -observe.message.db.none.loaded.tip= -observe.message.delete= -observe.message.delete.directory= -observe.message.delete.new= -observe.message.detected.accepted.interval= -observe.message.detected.rejected.interval= -observe.message.exportData.delete.remote.maree= -observe.message.exportData.not.possible= -observe.message.exportData.operation.needFix= -observe.message.exportData.prepare.data= -observe.message.exportData.replicate.maree= -observe.message.goto.site= -observe.message.h2.server.login= -observe.message.h2.server.password= -observe.message.h2.server.url= -observe.message.help.usage= -observe.message.historical.data= -observe.message.importGPS.apply.point= -observe.message.importGPS.apply.points= -observe.message.importGPS.detect.point= -observe.message.importGPS.detect.points= -observe.message.importGPS.detected.point= -observe.message.importGPS.no.activity.selected= -observe.message.importGPS.no.detected.point= -observe.message.importGPS.no.invalid.interval= -observe.message.importGPS.nothing.to.do= -observe.message.importGPS.operation.needFix= -observe.message.importGPS.prepare.importFile= -observe.message.loaded.tip= -observe.message.need.fin.veille.activity= -observe.message.no.accepted.intervalle.detected= -observe.message.no.activity.detected= -observe.message.no.activity.for.route= -observe.message.no.activity.for.trip= -observe.message.no.local.db.found= -observe.message.no.open.maree.detected= -observe.message.no.report.selected= -observe.message.no.route.detected= -observe.message.no.route.for.maree= -observe.message.no.species.selected= -observe.message.no.trip.for.program= -observe.message.no.usage.for.entity= -observe.message.no.validation.detected= -observe.message.quit.invalid.edit= -observe.message.quit.valid.edit= -observe.message.referentiel.editable= -observe.message.referentiel.home= -observe.message.referentiel.no.editable= -observe.message.save.configuration= -observe.message.select.report= -observe.message.server.info= -observe.message.show.usage.for.delete= -observe.message.show.usage.for.delete2= -observe.message.show.usage.for.desactivated= -observe.message.show.usage.for.desactivated2= -observe.message.show.usage.for.desactivated3= -observe.message.show.usages= -observe.message.synchro.build.diff= -observe.message.synchro.create.temporary.db.to.resolve.obsoletes= -observe.message.synchro.local.modification= -observe.message.synchro.no.local.modification= -observe.message.synchro.no.referentiel.conflict= -observe.message.synchro.obsolete.data.to.duplicate= -observe.message.synchro.operation.canceled= -observe.message.synchro.operation.done= -observe.message.synchro.operation.failed= -observe.message.synchro.operation.needFix= -observe.message.synchro.ref.is.updtodate= -observe.message.synchro.referentiel.was.added= -observe.message.synchro.referentiel.was.modified= -observe.message.synchro.referentiel.was.removed= -observe.message.table.editBean.modified= -observe.message.table.editBean.modified.but.invalid= -observe.message.updating.floatingObject= -observe.message.updating.referentiel= -observe.message.validation.detected= -observe.message.validation.not.save.report= -observe.message.validation.nothing.to.do= -observe.message.validation.operation.done= -observe.message.validation.operation.needFix= -observe.message.validation.prepare.validators= -observe.message.validation.save.report= -observe.message.validation.start.maree= -observe.message.validation.start.referentiel= -observe.message.validation.use.storage= -observe.message.warning.will.be.delete= -observe.navigationMenu.moveTrip= -observe.navigationMenu.noAction= -observe.nonTargetCatch.message.table.will.delete.nonTargetSample= -observe.nonTargetCatch.table.catchWeight= -observe.nonTargetCatch.table.catchWeight.tip= -observe.nonTargetCatch.table.comment= -observe.nonTargetCatch.table.comment.tip= -observe.nonTargetCatch.table.deleteExtraMessage= -observe.nonTargetCatch.table.meanLength= -observe.nonTargetCatch.table.meanLength.tip= -observe.nonTargetCatch.table.meanWeight= -observe.nonTargetCatch.table.meanWeight.tip= -observe.nonTargetCatch.table.reasonForDiscard= -observe.nonTargetCatch.table.reasonForDiscard.tip= -observe.nonTargetCatch.table.speciesFate= -observe.nonTargetCatch.table.speciesFate.tip= -observe.nonTargetCatch.table.speciesFaune= -observe.nonTargetCatch.table.speciesFaune.tip= -observe.nonTargetCatch.table.totalCount= -observe.nonTargetCatch.table.totalCount.tip= -observe.nonTargetSample.table.count= -observe.nonTargetSample.table.count.tip= -observe.nonTargetSample.table.gender= -observe.nonTargetSample.table.gender.tip= -observe.nonTargetSample.table.length= -observe.nonTargetSample.table.length.tip= -observe.nonTargetSample.table.meanWeight= -observe.nonTargetSample.table.meanWeight.tip= -observe.nonTargetSample.table.picturesReferences= -observe.nonTargetSample.table.picturesReferences.tip= -observe.nonTargetSample.table.speciesFaune= -observe.nonTargetSample.table.speciesFaune.tip= -observe.objectObservedSpecies.table.count= -observe.objectObservedSpecies.table.count.tip= -observe.objectObservedSpecies.table.speciesFaune= -observe.objectObservedSpecies.table.speciesFaune.tip= -observe.objectObservedSpecies.table.speciesStatus= -observe.objectObservedSpecies.table.speciesStatus.tip= -observe.obstuna.action.create= -observe.obstuna.action.create.description= -observe.obstuna.action.drop= -observe.obstuna.action.drop.description= -observe.obstuna.action.security= -observe.obstuna.action.security.description= -observe.obstuna.action.update= -observe.obstuna.action.update.description= -observe.person.country= -observe.program.tab.general= -observe.program.tab.observations= -observe.route.message.active.found= -observe.route.message.active.found.for.other.trip= -observe.route.message.creating= -observe.route.message.no.active.found= -observe.route.message.no.active.found.for.other.trip= -observe.route.message.not.open= -observe.route.message.updating= -observe.route.title= -observe.routes.title= -observe.runner.config.loaded= -observe.runner.config.migrate.file= -observe.runner.context.loaded= -observe.runner.copy.default.logConfigurationFile.file= +observe.map.south=Sud +observe.map.waitLoading=< Veuillez patienter pendant le chargement de la carte > +observe.map.west=Ouest +observe.measurement.delete.message=Supprimer la caractéristique sélectionnée +observe.menu.actions=Actions +observe.menu.application.locale=Application +observe.menu.configuration=Configuration +observe.menu.configuration.tip=Menu de configuration +observe.menu.db.locale=Référentiel +observe.menu.file=Fichier +observe.menu.help=Aide +observe.menu.locale=Langues +observe.menu.navigation=Navigation +observe.menu.storage=Source de données +observe.message.can.not.write.data=Vous n'êtes pas autorisé à écrire des données observateurs sur cette source de données. +observe.message.cant.add.echantillonRejetThon=<html><body><strong>Impossible d'ajouter des échantillons de rejet thons</strong>(pas de rejet thon monté sur le pont)</body></html> +observe.message.cant.add.echantillonTargetCatch=<html><body><strong>Impossible d'ajouter des échantillons thons</strong> (pas de capture thon)</body></html> +observe.message.cant.add.nonTargetSample=<html><body><strong>Impossible d'ajouter des échantillons</strong>(pas de rejet faune)</body></html> +observe.message.consolidate.operation.done=Opération de calcul des données terminée à %1$s. +observe.message.consolidate.save.changes=Sauvegarde des modifications sur la(es) %1$s marée(s) modifiée(s). +observe.message.creating.referentiel=L'objet est en cours de création. +observe.message.db.closed=%1$s a été fermé +observe.message.db.loaded=%1$s chargé +observe.message.db.loading=%1$s en cours de chargement +observe.message.db.none.loaded=Aucune source de données chargée +observe.message.db.none.loaded.tip=Aucune source de données chargée... +observe.message.delete=Confirmer la suppression de l'objet \:\n\n '%1$s' - '%2$s'\n +observe.message.delete.directory=Suppresion du répertoire %1$s +observe.message.delete.new=Confirmer la suppression de l'objet \:\n\n '%1$s'\n +observe.message.detected.accepted.interval=Intervalle de point gps acceptable détecté \: %1$s +observe.message.detected.rejected.interval=Intervalle de point gps rejecté détecté \: %1$s +observe.message.exportData.delete.remote.maree=Suppression de la marée (%1$s) du programme (%2$s) de la base distante. +observe.message.exportData.not.possible=L'opération d'export n'est pas possible (voir les messages précédents). +observe.message.exportData.operation.needFix=Veuillez sélectionner les marées à exporter. +observe.message.exportData.prepare.data=Préparation des données à exporter... +observe.message.exportData.replicate.maree=Duplication de la marée (%1$s) du programme (%2$s) vers la base distante. +observe.message.goto.site=Accéder au site d'Observe (%1$s) +observe.message.h2.server.login=Login +observe.message.h2.server.password=Mot de passe +observe.message.h2.server.url=Url d'accès au serveur +observe.message.help.usage=Aide d'ObServe v %1$s +observe.message.historical.data=Donnée historique (peut-être clôturé même si non valide) +observe.message.importGPS.apply.point=Intégration données gps %1$s pour %2$s +observe.message.importGPS.apply.points=Intégration des données gps dans les activités sélectionnées de la marée ouverte +observe.message.importGPS.detect.point=Détection du point gps pour l'activité %1$s +observe.message.importGPS.detect.points=Détection de points gps pour les activités de la marée ouverte +observe.message.importGPS.detected.point=Point gps détecté %1$s +observe.message.importGPS.no.activity.selected=Aucune activité sélectionnée +observe.message.importGPS.no.detected.point=Pas de point gps détecté pour l'activité +observe.message.importGPS.no.invalid.interval=< Aucun intervalle de points non utilisables > +observe.message.importGPS.nothing.to.do=Aucune donnée à importer +observe.message.importGPS.operation.needFix=L'opération d'import GPS requière des corrections +observe.message.importGPS.prepare.importFile=Préparation de l'import GPS \:\n - fichier à utiliser \: %1$s \n - temps maximum \: %2$s\n - vitesse maximum \: %3$s +observe.message.loaded.tip=La %1$s est chargée,\n\nVous pouvez changer de base en cliquant ici. +observe.message.need.fin.veille.activity=Aucune activité de fin de veille enregistrée sur la route à clotûrer.\nVous pouvez \:\n\n\t- Annuler la fermeture et rester sur la route\n\t- Créer l'activité de fin de veille et vous y rendre\n\t- Créer l'activité de fin de veille, la clôturer puis clôturer la route\n\t- Continuer la clôture de la route sans créer cette activité de fin de veille. +observe.message.no.accepted.intervalle.detected=Aucun intervalle de point gps acceptable détecté +observe.message.no.activity.detected=Aucune activité détectée pour la marée ouverte +observe.message.no.activity.for.route=< Aucune activité pour la route courante > +observe.message.no.activity.for.trip=< Aucune activité pour la marée courante > +observe.message.no.local.db.found=La base locale n'existe pas (emplacement %1$s).\n\nVous pouvez à ce stade créer la base locale ou vous connecter à une base distante. +observe.message.no.open.maree.detected=Aucune marée ouverte détectée +observe.message.no.report.selected=< Aucun report sélectionné > +observe.message.no.route.detected=Aucune route détectée sur la marée ouverte +observe.message.no.route.for.maree=< Aucune route pour la marée courante > +observe.message.no.species.selected=Pas d'espèce sélectionnée +observe.message.no.trip.for.program=< Aucune marée pour le programme courant > +observe.message.no.usage.for.entity=Aucune utilisation trouvée. +observe.message.no.validation.detected=Aucun validateur détecté. +observe.message.quit.invalid.edit=Les données ne sont pas valides et ne peuvent pas être sauvées\!\n\nNote\: le fait de continuer annulera toutes les modifications. +observe.message.quit.valid.edit=Les données ont été modifiées et sont valides\! +observe.message.referentiel.editable=Le référentiel est éditable. +observe.message.referentiel.home=< Référentiel > +observe.message.referentiel.no.editable=Vous n'êtes pas autorisé à éditer le référentiel. +observe.message.save.configuration=Sauvegarde de la configuration dans le fichier %1$s +observe.message.select.report=Choisissez une requête +observe.message.server.info=La base locale %1$s est démarrée en mode serveur. +observe.message.show.usage.for.delete=Le référentiel %1$s "%2$s" ne peut pas être supprimé. +observe.message.show.usage.for.delete2=Des objets utilisent actuellement cet entité dont les références sont citées plus bas. +observe.message.show.usage.for.desactivated=Le référentiel %1$s "%2$s" va être désactivé. +observe.message.show.usage.for.desactivated2=Des objets utilisent actuellement cet entité dont les références sont citées plus bas. +observe.message.show.usage.for.desactivated3=Ces objets devront utiliser un autre référentiel (non désactivé) pour pouvoir être mis à jour. +observe.message.show.usages=Listes des utilisations du référentiel %1$s \: '%2$s' +observe.message.synchro.build.diff=Construction du différentiel de référentiel depuis %1$s +observe.message.synchro.create.temporary.db.to.resolve.obsoletes=Des entités obsolètes ont été détectées, création d'une base temporaire pour les résoudre. +observe.message.synchro.local.modification=Des données ont été modifiées et la base locale doit être sauvée. +observe.message.synchro.no.local.modification=Aucune donnée de la base locale n'a été modifiée, sauvegarde non requise. +observe.message.synchro.no.referentiel.conflict=Le référentiel de votre base locale n'est pas à jour (mais aucun conflit détecté). +observe.message.synchro.obsolete.data.to.duplicate=Objet %s à recopier dans la base temporaire. +observe.message.synchro.operation.canceled=L'opération a été annulée +observe.message.synchro.operation.done=Opération terminée le %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$tS +observe.message.synchro.operation.failed=L'opération a échouée +observe.message.synchro.operation.needFix=L'opération requière des corrections. +observe.message.synchro.ref.is.updtodate=Le référentiel de la base locale est à jour, aucune correction requise. +observe.message.synchro.referentiel.was.added=Des données ont été ajoutées au référentiel distant (%1$d objet(s)) +observe.message.synchro.referentiel.was.modified=Des données ont été modifiées sur le référentiel distant (%1$d objet(s)) +observe.message.synchro.referentiel.was.removed=Des données ont été supprimées du réferentiel distant (%1$d objet(s)) +observe.message.table.editBean.modified=L'entrée en cours d'édition a été modifiée et est valide. +observe.message.table.editBean.modified.but.invalid=L'entrée en cours d'édition a été modifiée, mais n'est pas valide. +observe.message.updating.floatingObject=L'objet flottant est en cours de modification. +observe.message.updating.referentiel=L'objet est en cours de mise à jour. +observe.message.validation.detected=Validateur détecté pour le type %1$s +observe.message.validation.not.save.report=Pas de rapport à sauvegarder. +observe.message.validation.nothing.to.do=Les données sont valides et ne nécessitent pas de correction. +observe.message.validation.operation.done=L'opération de validation terminé le %1$td/%1$tm/%1$tY à %1$tH\:%1$tM\:%1$ts. +observe.message.validation.operation.needFix=Vos données ne sont valides et nécessitent des corrections. +observe.message.validation.prepare.validators=Détection des validateurs +observe.message.validation.save.report=Le rapport de validation a été sauvegardé dans le fichier %1$s +observe.message.validation.start.maree=Validation de la marée '%1$s' (%2$s) +observe.message.validation.start.referentiel=Validation du référentiel de type '%1$s' (%2$s entités) +observe.message.validation.use.storage=La validation sera effectuée sur %1$s +observe.message.warning.will.be.delete=%1$s\n\nAttention, l'export remplacera la marée existante. +observe.model.version= +observe.navigationMenu.moveTrip=Réallocation du programme +observe.navigationMenu.noAction=< Aucune action définie > +observe.nonTargetCatch.message.table.will.delete.nonTargetSample=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonages \:\n%1$s\nCela entrainera la suppression des échantillonages suivants \:\n%2$s +observe.nonTargetCatch.table.catchWeight=Poids +observe.nonTargetCatch.table.catchWeight.tip=Poids estimé (en t) +observe.nonTargetCatch.table.comment=Com +observe.nonTargetCatch.table.comment.tip=Commentaire +observe.nonTargetCatch.table.deleteExtraMessage=\nLe fait de supprimer une capture de faune peut entrainer la suppression d'échantillonnage(s) sur l'espèce. +observe.nonTargetCatch.table.meanLength=Taille +observe.nonTargetCatch.table.meanLength.tip=Taille moyenne (en cm) +observe.nonTargetCatch.table.meanWeight=Poids moy +observe.nonTargetCatch.table.meanWeight.tip=Poids moyen (en Kg) +observe.nonTargetCatch.table.reasonForDiscard=Raison rejet +observe.nonTargetCatch.table.reasonForDiscard.tip=Raison rejet +observe.nonTargetCatch.table.speciesFate=Devenir +observe.nonTargetCatch.table.speciesFate.tip=Devenir faune +observe.nonTargetCatch.table.speciesFaune=Espèce de faune +observe.nonTargetCatch.table.speciesFaune.tip=Espèce de faune +observe.nonTargetCatch.table.totalCount=Nombre +observe.nonTargetCatch.table.totalCount.tip=Nombre estimé +observe.nonTargetSample.table.count=Effectif +observe.nonTargetSample.table.count.tip=Effectif +observe.nonTargetSample.table.gender=Sex +observe.nonTargetSample.table.gender.tip=Sex +observe.nonTargetSample.table.length=Longueur +observe.nonTargetSample.table.length.tip=Longueur +observe.nonTargetSample.table.meanWeight=Poids ind. +observe.nonTargetSample.table.meanWeight.tip=Poids individuel (en Kg) +observe.nonTargetSample.table.picturesReferences=Ref photo +observe.nonTargetSample.table.picturesReferences.tip=référence photo +observe.nonTargetSample.table.speciesFaune=Espèce faune +observe.nonTargetSample.table.speciesFaune.tip=Espèce faune +observe.objectObservedSpecies.table.count=Nombre +observe.objectObservedSpecies.table.count.tip=Nombre +observe.objectObservedSpecies.table.speciesFaune=Espèce de faune +observe.objectObservedSpecies.table.speciesFaune.tip=Espèce de faune +observe.objectObservedSpecies.table.speciesStatus=Statut Espèce +observe.objectObservedSpecies.table.speciesStatus.tip=Statut Espèce +observe.obstuna.action.create=Création d'obstuna +observe.obstuna.action.create.description=Création d'une nouvelle base distante obstuna +observe.obstuna.action.drop=Destruction d'obstuna +observe.obstuna.action.drop.description=Destruction d'une base distante obstuna +observe.obstuna.action.security=Mise à jour de la sécurité d'obstuna +observe.obstuna.action.security.description=Mise à jour de la sécurité d'une base distante obstuna +observe.obstuna.action.update=Mise à jour d'obstuna +observe.obstuna.action.update.description=Mise à jour d'une base distante obstuna +observe.person.country=Nationalité +observe.program.tab.general=Caractértistiques générales +observe.program.tab.observations=Observations +observe.route.message.active.found=Une route est ouverte. +observe.route.message.active.found.for.other.trip=Une route ouverte existe dans une autre marée. +observe.route.message.creating=La route est en cours de création. +observe.route.message.no.active.found=Aucune route ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrir une. +observe.route.message.no.active.found.for.other.trip=Aucune route ouverte sur la marée ouverte +observe.route.message.not.open=La route courante n'est pas ouverte, aucune modification possible. +observe.route.message.updating=La route est en cours de modification. +observe.route.title=Route +observe.routes.title=Routes +observe.runner.config.loaded=Configuration d'ObServe v. %1$s chargée. +observe.runner.config.migrate.file=Le fichier de configuration %1$s a été déplacée de \n%2$s\nvers\n%3$s +observe.runner.context.loaded=Initialisation du contexte terminée en %1$s. +observe.runner.copy.default.logConfigurationFile.file=Création du fichier de configuration des logs $1. observe.runner.copy.default.map.file= -observe.runner.copy.default.report.file= -observe.runner.copy.default.ui.file= -observe.runner.create.directory= -observe.runner.exists.directory= -observe.runner.i18n.loaded= -observe.runner.init= -observe.runner.load.database= -observe.runner.loaded= -observe.runner.loading.ui.configuration= -observe.runner.quit.withno.ui= -observe.runner.start= -observe.runner.ui.loaded= -observe.runner.user.directories.loaded= -observe.schoolEstimate.table.meanWeight= -observe.schoolEstimate.table.meanWeight.tip= -observe.schoolEstimate.table.speciesThon= -observe.schoolEstimate.table.speciesThon.tip= -observe.schoolEstimate.table.weight= -observe.schoolEstimate.table.weight.tip= -observe.section.cant.delete.message= -observe.section.cant.delete.title= -observe.sectionTemplate.delete.message= -observe.sections.delete.message= -observe.security.referentiel= -observe.security.referentiel.tip= -observe.security.role= -observe.security.role.tip= -observe.security.technicien= -observe.security.technicien.tip= -observe.security.unused= -observe.security.unused.tip= -observe.security.utilisateur= -observe.security.utilisateur.tip= -observe.sensorUsed.action.create= -observe.sensorUsed.action.create.tip= -observe.sensorUsed.action.reset.dataLocation.tip= -observe.sensorUsed.action.reset.sensorSerialNo.tip= -observe.sensorUsed.data= -observe.sensorUsed.dataLocation= -observe.sensorUsed.dataLocation.tip= -observe.sensorUsed.delete.data.message= -observe.sensorUsed.deleteData= -observe.sensorUsed.deleteData.tip= -observe.sensorUsed.exportData= -observe.sensorUsed.exportData.tip= -observe.sensorUsed.importData= -observe.sensorUsed.importData.tip= -observe.sensorUsed.message.data.exported= -observe.sensorUsed.message.data.imported= -observe.sensorUsed.sensorBrand= -observe.sensorUsed.sensorDataFormat= -observe.sensorUsed.sensorSerialNo= -observe.sensorUsed.sensorType= -observe.sensorUsed.table.data= -observe.sensorUsed.table.data.tip= -observe.sensorUsed.table.dataLocation= -observe.sensorUsed.table.dataLocation.tip= -observe.sensorUsed.table.sensorBrand= -observe.sensorUsed.table.sensorBrand.tip= -observe.sensorUsed.table.sensorDataFormat= -observe.sensorUsed.table.sensorDataFormat.tip= -observe.sensorUsed.table.sensorSerialNo= -observe.sensorUsed.table.sensorSerialNo.tip= -observe.sensorUsed.table.sensorType= -observe.sensorUsed.table.sensorType.tip= -observe.sensorUsed.title= -observe.setLongline.action.reset.homeId.tip= -observe.setLongline.basketsPerSectionCount= -observe.setLongline.branchlinesPerBasketCount= -observe.setLongline.haulingBreaks= -observe.setLongline.haulingDirectionSameAsSetting= -observe.setLongline.haulingEndCoordinates= -observe.setLongline.haulingEndTimeStamp= -observe.setLongline.haulingStartCoordinates= -observe.setLongline.haulingStartTimeStamp= -observe.setLongline.homeId= -observe.setLongline.lightsticksColor= -observe.setLongline.lightsticksPerBasketCount= -observe.setLongline.lightsticksType= -observe.setLongline.lineType= -observe.setLongline.maxDepthTargeted= -observe.setLongline.message.creating= -observe.setLongline.message.updating= -observe.setLongline.monitored= -observe.setLongline.number= -observe.setLongline.settingEndCoordinates= -observe.setLongline.settingEndTimeStamp= -observe.setLongline.settingShape= -observe.setLongline.settingStartCoordinates= -observe.setLongline.settingStartTimeStamp= -observe.setLongline.settingVesselSpeed= -observe.setLongline.shooterSpeed= -observe.setLongline.shooterUsed= -observe.setLongline.snapWeight= -observe.setLongline.swivelWeight= -observe.setLongline.tab.hauling= -observe.setLongline.tab.setting= -observe.setLongline.tab.settingCaracteristics= -observe.setLongline.timeBetweenHooks= -observe.setLongline.title= -observe.setLongline.totalBasketsCount= -observe.setLongline.totalHooksCount= -observe.setLongline.totalSectionsCount= -observe.setLongline.weightedSnap= -observe.setLongline.weightedSwivel= -observe.setSeine.currentDirection= -observe.setSeine.currentMeasureDepth= -observe.setSeine.currentSpeed= -observe.setSeine.endPursingTimeStamp= -observe.setSeine.endSetTimeStamp= -observe.setSeine.maxGearDepth= -observe.setSeine.message.creating= +observe.runner.copy.default.report.file=Création du fichier de reports %1$s. +observe.runner.copy.default.ui.file=Création du fichier de cosmétique %1$s. +observe.runner.create.directory=Création du répertoire %1$s +observe.runner.exists.directory=Le répertoire %1$s existe. +observe.runner.i18n.loaded=Service de traduction chargé dans la langue %1$s. +observe.runner.init=Initialisation d'ObServe %1$s %2$s +observe.runner.load.database=Chargement de la source de données +observe.runner.loaded=ObServe v %1$s est chargé +observe.runner.loading.ui.configuration=Chargement du fichier de cosmétique %1$s +observe.runner.quit.withno.ui=Fermeture de l'application sans ouvrir l'interface graphique +observe.runner.start=Démarrage d'ObServe %1$s %2$s +observe.runner.ui.loaded=Initialisation de l'interface graphique terminée. +observe.runner.user.directories.loaded=Le répertoire utilisateur a été initialisé (%1$s). +observe.schoolEstimate.table.meanWeight=Poids moyen (en Kg) +observe.schoolEstimate.table.meanWeight.tip=Poids moyen (en Kg) +observe.schoolEstimate.table.speciesThon=Espèce de thon +observe.schoolEstimate.table.speciesThon.tip=Espèce de thon (ne peut pas être modifié une fois l'estimation crée) +observe.schoolEstimate.table.weight=Poids (en t) +observe.schoolEstimate.table.weight.tip=Poids (en t) +observe.section.cant.delete.message=La section ne peut pas être supprimée car elle est utilisée dans des données. +observe.section.cant.delete.title=Impossible de supprimer la section +observe.sectionTemplate.delete.message=Confirmer la suppression de la template sélectionnée. +observe.sections.delete.message=Confirmer la suppression de toutes les sections. +observe.security.referentiel=Référentiel +observe.security.referentiel.tip=Rôle de lecture seule du référentiel (aucun droit sur les données) +observe.security.role=Rôle +observe.security.role.tip=Nom du rôle de la base +observe.security.technicien=Technicien +observe.security.technicien.tip=Rôle ayant tous les droits sur le référentiel et les données +observe.security.unused=Non utilisé +observe.security.unused.tip=Ne pas utiliser ce rôle +observe.security.utilisateur=Utilisateur +observe.security.utilisateur.tip=Rôle ayant les droits de lecture sur le référentiel et les données +observe.sensorUsed.action.create=Insérer ce capteur +observe.sensorUsed.action.create.tip=Insérer ce capteur +observe.sensorUsed.action.reset.dataLocation.tip=Réinitialiser +observe.sensorUsed.action.reset.sensorSerialNo.tip=Réinitialiser +observe.sensorUsed.data=Fichier de données +observe.sensorUsed.dataLocation=Hébergement +observe.sensorUsed.dataLocation.tip=Hébergement du fichier de données +observe.sensorUsed.delete.data.message=Confirmer la suppression du fichier de données +observe.sensorUsed.deleteData=Supprimer +observe.sensorUsed.deleteData.tip=Supprimer le fichier de données +observe.sensorUsed.exportData=Exporter +observe.sensorUsed.exportData.tip=Exporter le fichier de données enregistré +observe.sensorUsed.importData=Importer +observe.sensorUsed.importData.tip=Importer un fichier de données +observe.sensorUsed.message.data.exported=Le fichier de données a été exporté (%s). +observe.sensorUsed.message.data.imported=Le fichier de données %s a été importé. +observe.sensorUsed.sensorBrand=Marque +observe.sensorUsed.sensorDataFormat=Format de données +observe.sensorUsed.sensorSerialNo=Numéro de série +observe.sensorUsed.sensorType=Type +observe.sensorUsed.table.data=Fichier +observe.sensorUsed.table.data.tip=Fichier de données présent ? +observe.sensorUsed.table.dataLocation=Hébergement +observe.sensorUsed.table.dataLocation.tip=Hébergement du fichier de données +observe.sensorUsed.table.sensorBrand=Marque +observe.sensorUsed.table.sensorBrand.tip=Marque de capteur +observe.sensorUsed.table.sensorDataFormat=Format de données +observe.sensorUsed.table.sensorDataFormat.tip=Format de données du capteur +observe.sensorUsed.table.sensorSerialNo=Numéro de série +observe.sensorUsed.table.sensorSerialNo.tip=Numéro de stié du capteur +observe.sensorUsed.table.sensorType=Type +observe.sensorUsed.table.sensorType.tip=Type de capteur +observe.sensorUsed.title=Capteurs +observe.setLongline.action.reset.homeId.tip=Réinitialiser l'id métier +observe.setLongline.basketsPerSectionCount=Nombre de paniers par section +observe.setLongline.branchlinesPerBasketCount=Nombre d'hameçons par panier +observe.setLongline.haulingBreaks=Nombre de coupures +observe.setLongline.haulingDirectionSameAsSetting=Sens du virage identique à celui du filage +observe.setLongline.haulingEndCoordinates=Coordonnées fin de virage +observe.setLongline.haulingEndTimeStamp=Horodatage fin +observe.setLongline.haulingStartCoordinates=Coordonnées début de virage +observe.setLongline.haulingStartTimeStamp=Horodatage début +observe.setLongline.homeId=Id métier +observe.setLongline.lightsticksColor=Couleur de cyalumes +observe.setLongline.lightsticksPerBasketCount=Nombre de cyalumes par panier +observe.setLongline.lightsticksType=Type de cyalumes +observe.setLongline.lineType=Type de ligne +observe.setLongline.maxDepthTargeted=Profondeur maximum ciblée +observe.setLongline.message.creating=L'opération de pêche est en cours de création. +observe.setLongline.message.updating=L'opération de pêche est en cours de modification. +observe.setLongline.monitored=Instrumentée +observe.setLongline.number=Numéro +observe.setLongline.settingEndCoordinates=Coordonnées fin de filage +observe.setLongline.settingEndTimeStamp=Horodatage fin +observe.setLongline.settingShape=Forme du filage +observe.setLongline.settingStartCoordinates=Coordonnées début de filage +observe.setLongline.settingStartTimeStamp=Horodatage début +observe.setLongline.settingVesselSpeed=Vitesse bateau (nd) +observe.setLongline.shooterSpeed=Vitesse shooter (nd) +observe.setLongline.shooterUsed=Shooter utilisé +observe.setLongline.snapWeight=Poids snap (kg) +observe.setLongline.swivelWeight=Poids de l'émerillon (kg) +observe.setLongline.tab.hauling=Virage +observe.setLongline.tab.setting=Filage +observe.setLongline.tab.settingCaracteristics=Caractéristiques +observe.setLongline.timeBetweenHooks=Temps entre hameçons (s) +observe.setLongline.title=Opération de pêche +observe.setLongline.totalBasketsCount=Nombre total de baskets +observe.setLongline.totalHooksCount=Nombre total d'avançons +observe.setLongline.totalSectionsCount=Nombre total de sections +observe.setLongline.weightedSnap=Snap lesté +observe.setLongline.weightedSwivel=Émerillon lesté +observe.setSeine.currentDirection=Direction du courant (°) +observe.setSeine.currentMeasureDepth=Profondeur de mesure du courant (m) +observe.setSeine.currentSpeed=Vitesse du courant (nd) +observe.setSeine.endPursingTimeStamp=Date - Heure de fin coulissage +observe.setSeine.endSetTimeStamp=Date - Heure de fin de validité +observe.setSeine.maxGearDepth=Profondeur maximum (m) +observe.setSeine.message.creating=La calée est en cours de création. observe.setSeine.message.information.schoolType= -observe.setSeine.message.no.nonTargetDiscarded= -observe.setSeine.message.no.targetCatch= -observe.setSeine.message.no.targetDiscarded= -observe.setSeine.message.updating= -observe.setSeine.nonTargetDiscarded= -observe.setSeine.reasonForNullSet= -observe.setSeine.schoolMeanDepth= -observe.setSeine.schoolThickness= -observe.setSeine.schoolTopDepth= -observe.setSeine.schoolType= -observe.setSeine.schoolType.not.fill= -observe.setSeine.sonarUsed= -observe.setSeine.sonarUsedAvantSet= -observe.setSeine.startTime= -observe.setSeine.supportVesselName= -observe.setSeine.tab.general= -observe.setSeine.tab.measurements= -observe.setSeine.targetDiscarded= -observe.setSeine.title= -observe.species.availableOcean= -observe.species.selectedOcean= -observe.species.tab.general= -observe.species.tab.other= -observe.speciesList.availableSpecies= -observe.speciesList.selectedSpecies= -observe.speciesList.tab.general= -observe.speciesList.tab.species= -observe.storage.action.canMigrate= +observe.setSeine.message.no.nonTargetDiscarded=La calée n'a pas de rejet de faune +observe.setSeine.message.no.targetCatch=Pour échantilloner les thons capturés, il faut au moins une capture. +observe.setSeine.message.no.targetDiscarded=Pour échantilloner les thons, il faut au moins un rejet de thon monté sur le pont. +observe.setSeine.message.updating=La calée est en cours de modification. +observe.setSeine.nonTargetDiscarded=Rejet de faune +observe.setSeine.reasonForNullSet=Cause coup nul +observe.setSeine.schoolMeanDepth=Profondeur moyenne (m) +observe.setSeine.schoolThickness=Épaisseur du banc (m) +observe.setSeine.schoolTopDepth=Profondeur sommet (m) +observe.setSeine.schoolType=Type de banc +observe.setSeine.schoolType.not.fill=Non renseigné +observe.setSeine.sonarUsed=Utilisation sonar pendant la calée +observe.setSeine.sonarUsedAvantSet=Utilisation du sonar +observe.setSeine.startTime=Date - Heure de début de validité +observe.setSeine.supportVesselName=Nom supply +observe.setSeine.tab.general=Caractéristiques générales +observe.setSeine.tab.measurements=Mesures +observe.setSeine.targetDiscarded=Rejet de thon +observe.setSeine.title=Calée +observe.species.availableOcean=Océans disponibles +observe.species.selectedOcean=Océans sélectionnés +observe.species.tab.general=Caractéristiques générales +observe.species.tab.other=Autres caractéristiques +observe.speciesList.availableSpecies=Espèces disponibles +observe.speciesList.selectedSpecies=Espèces sélectionnées +observe.speciesList.tab.general=Caractéristiques générales +observe.speciesList.tab.species=Espèces +observe.storage.action.canMigrate=Mettre à jour la base (version courante %1$s) observe.storage.connexionStatut.failed= observe.storage.connexionStatut.failed.description= observe.storage.connexionStatut.success= @@ -1754,6 +1759,8 @@ observe.storage.creationMode.importLocalStorage= observe.storage.creationMode.importLocalStorage.description= observe.storage.creationMode.importRemoteStorage= observe.storage.creationMode.importRemoteStorage.description= +observe.storage.creationMode.importServerStorage= +observe.storage.creationMode.importServerStorage.description= observe.storage.creationMode.internalDump= observe.storage.creationMode.internalDump.description= observe.storage.dataPolicy.readData= @@ -1770,566 +1777,577 @@ observe.storage.dbMode.useLocal= observe.storage.dbMode.useLocal.description= observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= -observe.storage.error.dbVersionMismatch= -observe.storage.importExternalDump.config= -observe.storage.importExternalDump.description= -observe.storage.importExternalDumpData.config= -observe.storage.importExternalDumpReferentiel.config= -observe.storage.importRemoteStorage.config= -observe.storage.importRemoteStorage.description= -observe.storage.importRemoteStorageData.config= -observe.storage.importRemoteStorageReferentiel.config= -observe.storage.internalDump.last.modified= -observe.storage.internalDump.not.exist= -observe.storage.label.backup= -observe.storage.label.data.import.db= -observe.storage.label.db.to.create= -observe.storage.label.db.to.drop= -observe.storage.label.db.to.update= -observe.storage.label.db.to.update.security= -observe.storage.label.import.data= -observe.storage.label.import.local= -observe.storage.label.import.referentiel= -observe.storage.label.import.remote= -observe.storage.label.local= -observe.storage.label.reference.import.db= -observe.storage.label.remote= -observe.storage.label.synchro= -observe.storage.label.synchro.incoming= -observe.storage.label.synchro.referentiel= -observe.storage.locale.db= +observe.storage.dbMode.useServer=Utiliser un serveur distant +observe.storage.dbMode.useServer.description=Utiliser un serveur distant +observe.storage.error.dbVersionMismatch=La version de la base distante (%s) n'est pas compatible avec la version du modèle (%s) +observe.storage.importExternalDump.config=Sélection de la sauvegarde à utiliser +observe.storage.importExternalDump.description=Veuillez sélectionner le fichier d'une sauvegarde (*.sql.gz). +observe.storage.importExternalDumpData.config=Choisir la sauvegarde contenant les données à importer +observe.storage.importExternalDumpReferentiel.config=Choisir la sauvegarde contenant le référentiel à importer +observe.storage.importRemoteStorage.config=Sélection de la base distante à importer +observe.storage.importRemoteStorage.description=Veuillez configurer la connexion vers une base distante.\nAvant de pouvoir poursuivre, vous devez valider la connexion. +observe.storage.importRemoteStorageData.config=Choisir la base distante contenant les données à importer +observe.storage.importRemoteStorageReferentiel.config=Choisir la base distante contenant le référentiel à importer +observe.storage.internalDump.last.modified=(dernier import \: %1$td/%1$tm/%1$tY à %1$tH\:%1$tM) +observe.storage.internalDump.not.exist=Pas de base embarquée. +observe.storage.label.backup=Base temporaire pour backup +observe.storage.label.data.import.db=Base d'import de données +observe.storage.label.db.to.create=Base à créer +observe.storage.label.db.to.drop=Base à vider +observe.storage.label.db.to.update=Base à mettre à jour +observe.storage.label.db.to.update.security=Base à mettre à jour (sécurité) +observe.storage.label.import.data=Base distante d'import de données +observe.storage.label.import.local=Base locale d'import +observe.storage.label.import.referentiel=Base distante d'import +observe.storage.label.import.remote=Base distante d'import +observe.storage.label.local=Base locale +observe.storage.label.reference.import.db=Base d'import de référentiels +observe.storage.label.remote=Base distante +observe.storage.label.rest= +observe.storage.label.synchro=Base de synchronisation +observe.storage.label.synchro.incoming=Base source <%1$s> +observe.storage.label.synchro.referentiel=Base centrale <%1$s> +observe.storage.locale.db=(locale) observe.storage.message.provider.detected= -observe.storage.no.creationMode= -observe.storage.no.creationMode.required= -observe.storage.no.dbMode= -observe.storage.noImportData.config= -observe.storage.noImportReferentiel.config= -observe.storage.remote.db= -observe.storage.remote.login= -observe.storage.remote.password= -observe.storage.remote.url= -observe.storage.remote.useSll= -observe.storage.report.action.backup.local= -observe.storage.report.action.backup.remote= -observe.storage.report.action.connect.local= -observe.storage.report.action.connect.remote= -observe.storage.report.action.create.local= -observe.storage.report.action.data.import.backup= -observe.storage.report.action.import.backup= -observe.storage.report.action.import.internal= -observe.storage.report.action.import.remote.data= -observe.storage.report.action.import.remote.referentiel= -observe.storage.report.action.migrate= -observe.storage.report.action.no.data.import= -observe.storage.report.action.no.referentiel.import= -observe.storage.report.action.referentiel.import.backup= -observe.storage.report.can.migrate= -observe.storage.report.can.not.migrate= -observe.storage.report.no.create.mode= -observe.storage.report.security.owner= -observe.storage.report.security.readers= -observe.storage.report.security.referentiels= -observe.storage.report.security.techniciens= -observe.storage.report.selected.all.data= -observe.storage.report.selected.all.data.to.import= -observe.storage.report.selected.backup.file= -observe.storage.report.selected.data= -observe.storage.report.selected.data.for.import= -observe.storage.report.selected.data.referentiel= -observe.storage.report.selected.data.to.export= -observe.storage.report.selected.data.to.import= -observe.storage.report.selected.localStorageFile= -observe.storage.report.selected.no.data= -observe.storage.report.selected.no.data.to.import= -observe.storage.report.selected.remoteStorage= -observe.storage.report.selected.security= -observe.storage.required.rw.on.data= -observe.storage.security.administrateur= -observe.storage.selected.dbMode= -observe.storage.selectedCreationMode= -observe.storage.showMigrationProgression= -observe.storage.showMigrationSql= -observe.storage.step.backup= -observe.storage.step.backup.description= -observe.storage.step.config= -observe.storage.step.config.description= -observe.storage.step.configData= -observe.storage.step.configData.description= -observe.storage.step.configReferentiel= -observe.storage.step.configReferentiel.description= -observe.storage.step.confirm= -observe.storage.step.confirm.description= -observe.storage.step.creationMode= -observe.storage.step.dbMode= -observe.storage.step.dbMode.description= -observe.storage.step.dbMode.detail= -observe.storage.step.label= -observe.storage.step.roles= -observe.storage.step.roles.description= -observe.storage.step.selectData= -observe.storage.step.selectData.description= -observe.storage.store.remote.config= -observe.storage.store.remote.config.tip= -observe.storage.useRemoteStorage.config= -observe.storage.useRemoteStorage.description= -observe.synchro.add.object= -observe.synchro.common.activity= -observe.synchro.common.latitude= -observe.synchro.common.longitude= -observe.synchro.common.quadrant= -observe.synchro.common.reference= -observe.synchro.common.select= -observe.synchro.common.vitesse= -observe.synchro.config.data.mode= -observe.synchro.config.data.storage= -observe.synchro.config.export.required.read.data= -observe.synchro.config.export.required.read.referentiel= -observe.synchro.config.export.required.write.data= -observe.synchro.config.importGPS= -observe.synchro.config.referentiel.mode= -observe.synchro.config.referentiel.storage= -observe.synchro.config.report= -observe.synchro.config.source.storage= -observe.synchro.config.validate= -observe.synchro.config.validation.report= -observe.synchro.configuration= -observe.synchro.continue.with.no.save.report= -observe.synchro.import.data.fromBackup= -observe.synchro.import.data.fromRemoteStorage= -observe.synchro.importGPS.invalidIntervals.list= -observe.synchro.message.all.obsolete.entities.fixed= -observe.synchro.message.need.save.for.synchro.operation= -observe.synchro.message.need.save.for.validation.operation= -observe.synchro.message.obsolete.entities.fixed= -observe.synchro.message.obsolote.entity.ref.found= -observe.synchro.message.obsolote.entity.refs.found= -observe.synchro.message.saveLocal.skip= -observe.synchro.no.data.import= -observe.synchro.no.local.storage= -observe.synchro.no.referentiel.import= -observe.synchro.no.remote.storage= -observe.synchro.obsolete.entities.list= -observe.synchro.obsolete.entity.fix= -observe.synchro.obsolete.entity.label= -observe.synchro.obsolete.entity.to.change.label= -observe.synchro.operation.canceled= -observe.synchro.operation.consolidate= -observe.synchro.operation.consolidate.description= -observe.synchro.operation.exportData= -observe.synchro.operation.exportData.description= -observe.synchro.operation.failed= -observe.synchro.operation.importGPS= -observe.synchro.operation.importGPS.description= -observe.synchro.operation.needFix= -observe.synchro.operation.report= -observe.synchro.operation.report.description= -observe.synchro.operation.running= -observe.synchro.operation.saveLocal= -observe.synchro.operation.saveLocal.description= -observe.synchro.operation.successed= -observe.synchro.operation.synchronize= -observe.synchro.operation.synchronize.description= -observe.synchro.operation.validate= -observe.synchro.operation.validate.description= -observe.synchro.operations= -observe.synchro.remove.object= -observe.synchro.replaceObsolete.object= -observe.synchro.report.copy.options= -observe.synchro.report.report.description= -observe.synchro.report.result= -observe.synchro.report.select= -observe.synchro.report.variables= -observe.synchro.safe.entity.to.choose.label= -observe.synchro.save.report= -observe.synchro.step.config= -observe.synchro.step.config.description= -observe.synchro.step.consolidate= -observe.synchro.step.consolidate.description= -observe.synchro.step.exportData= -observe.synchro.step.exportData.description= -observe.synchro.step.importGPS= -observe.synchro.step.importGPS.description= -observe.synchro.step.report= -observe.synchro.step.report.description= -observe.synchro.step.saveLocal= -observe.synchro.step.saveLocal.description= -observe.synchro.step.selectData= -observe.synchro.step.selectData.description= -observe.synchro.step.showResume= -observe.synchro.step.showResume.description= -observe.synchro.step.synchronize= -observe.synchro.step.synchronize.description= -observe.synchro.step.validate= -observe.synchro.step.validate.description= -observe.synchro.table.exportData.exist.label= -observe.synchro.table.exportData.exist.label.tip= -observe.synchro.table.exportData.program.label= -observe.synchro.table.exportData.program.label.tip= -observe.synchro.table.exportData.selected= -observe.synchro.table.exportData.selected.tip= -observe.synchro.table.exportData.trip.label= -observe.synchro.table.exportData.trip.label.tip= -observe.synchro.table.importGPS.activity.label= -observe.synchro.table.importGPS.activity.label.tip= -observe.synchro.table.importGPS.activity.latitude= -observe.synchro.table.importGPS.activity.latitude.tip= -observe.synchro.table.importGPS.activity.longitude= -observe.synchro.table.importGPS.activity.longitude.tip= -observe.synchro.table.importGPS.activity.quadrant= -observe.synchro.table.importGPS.activity.quadrant.tip= -observe.synchro.table.importGPS.activity.select= -observe.synchro.table.importGPS.activity.select.tip= -observe.synchro.table.importGPS.activity.vitesse= -observe.synchro.table.importGPS.activity.vitesse.tip= -observe.synchro.table.importGPS.computed.label= -observe.synchro.table.importGPS.computed.label.tip= -observe.synchro.table.importGPS.data.label= -observe.synchro.table.importGPS.data.label.tip= -observe.synchro.table.obsolete.entity.label= -observe.synchro.table.obsolete.entity.label.tip= -observe.synchro.table.obsolete.entity.select= -observe.synchro.table.obsolete.entity.select.tip= -observe.synchro.update.object= -observe.synchro.validate.invalid.data.list= -observe.synchro.validate.message.list= -observe.synchro.validate.save.reportFile= -observe.targetCatch.table.comment= -observe.targetCatch.table.comment.tip= -observe.targetCatch.table.deleteExtraMessage= -observe.targetCatch.table.speciesThon= -observe.targetCatch.table.speciesThon.tip= -observe.targetCatch.table.weight= -observe.targetCatch.table.weight.tip= -observe.targetCatch.table.weightCategory= -observe.targetCatch.table.weightCategory.tip= -observe.targetCatch.table.well= -observe.targetCatch.table.well.tip= -observe.targetDiscarded.message.table.will.delete.targetLength= -observe.targetDiscarded.table.broughtOnDeck= -observe.targetDiscarded.table.broughtOnDeck.tip= -observe.targetDiscarded.table.comment= -observe.targetDiscarded.table.comment.tip= -observe.targetDiscarded.table.deleteExtraMessage= -observe.targetDiscarded.table.reasonForDiscard= -observe.targetDiscarded.table.reasonForDiscard.tip= -observe.targetDiscarded.table.speciesThon= -observe.targetDiscarded.table.speciesThon.tip= -observe.targetDiscarded.table.weight= -observe.targetDiscarded.table.weight.tip= -observe.targetDiscarded.table.weightCategory= -observe.targetDiscarded.table.weightCategory.tip= -observe.targetSample.table.count= -observe.targetSample.table.count.tip= -observe.targetSample.table.length= -observe.targetSample.table.length.tip= -observe.targetSample.table.meanWeight= -observe.targetSample.table.meanWeight.tip= -observe.targetSample.table.measureType= -observe.targetSample.table.measureType.tip= -observe.targetSample.table.speciesThon= -observe.targetSample.table.speciesThon.tip= -observe.targetSample.table.totalWeight= -observe.targetSample.table.totalWeight.tip= -observe.tdr.action.create= -observe.tdr.action.create.tip= -observe.tdr.action.reset.dataLocation.tip= -observe.tdr.action.reset.homeId.tip= -observe.tdr.action.reset.serialNo.tip= -observe.tdr.availableSpecies= -observe.tdr.basket= -observe.tdr.branchline= -observe.tdr.data= -observe.tdr.dataLocation= -observe.tdr.dataLocation.tip= -observe.tdr.delete.data.message= -observe.tdr.deleteData= -observe.tdr.deleteData.tip= -observe.tdr.deployementEnd= -observe.tdr.deployementStart= -observe.tdr.enableTimestamp= -observe.tdr.enableTimestamp.tip= -observe.tdr.exportData= -observe.tdr.exportData.tip= -observe.tdr.fishingEnd= -observe.tdr.fishingEndDepth= -observe.tdr.fishingStart= -observe.tdr.fishingStartDepth= -observe.tdr.floatline1Length= -observe.tdr.floatline2Length= -observe.tdr.homeId= -observe.tdr.importData= -observe.tdr.importData.tip= -observe.tdr.itemHorizontalPosition= -observe.tdr.itemVerticalPosition= -observe.tdr.locationOnLongline= -observe.tdr.maxFishingDepth= -observe.tdr.meanDeployementDepth= -observe.tdr.meanFishingDepth= -observe.tdr.medianDeployementDepth= -observe.tdr.medianFishingDepth= -observe.tdr.message.data.imported= -observe.tdr.minFishingDepth= -observe.tdr.section= -observe.tdr.selectedSpecies= -observe.tdr.sensorBrand= -observe.tdr.serialNo= -observe.tdr.species= -observe.tdr.tab.caracteristics= -observe.tdr.tab.keyData= -observe.tdr.tab.localisation= -observe.tdr.tab.species= -observe.tdr.tab.timestamp= -observe.tdr.table.data= -observe.tdr.table.homeId= -observe.tdr.table.homeId.tip= -observe.tdr.table.sensorBrand= -observe.tdr.table.sensorBrand.tip= -observe.tdr.table.serialNo= -observe.tdr.table.serialNo.tip= -observe.tdr.title= -observe.title.about= -observe.title.can.not.delete.referentiel= -observe.title.can.not.export.obstuna= -observe.title.change.storage= -observe.title.choose.db.dump= -observe.title.choose.db.dump.directory= -observe.title.choose.importGPS= -observe.title.choose.report.directory= -observe.title.choose.reportFile= -observe.title.choose.sensorUsed.exportData= -observe.title.choose.sensorUsed.importData= -observe.title.choose.tdr.exportData= -observe.title.choose.tdr.importData= -observe.title.config.migrate= -observe.title.connect.existingDB= -observe.title.connect.localDB= -observe.title.connect.remoteDB= -observe.title.consolidate= -observe.title.consolidate.tip= +observe.storage.no.creationMode=Aucun mode de création sélectionné +observe.storage.no.creationMode.required=Non requis. +observe.storage.no.dbMode=Aucun type de source de données sélectionné +observe.storage.noImportData.config=< Pas de configuration > +observe.storage.noImportReferentiel.config=< Pas de configuration > +observe.storage.remote.db=(distante) +observe.storage.remote.login=Login +observe.storage.remote.password=Mot de passe +observe.storage.remote.url=Url +observe.storage.remote.useSll=mode ssl ? +observe.storage.report.action.backup.local=Sauvegarde de la base locale +observe.storage.report.action.backup.remote=Sauvegarde de la base distante +observe.storage.report.action.connect.local=Connection à la base locale +observe.storage.report.action.connect.remote=Connexion à une base distante +observe.storage.report.action.create.local=Création de la base locale +observe.storage.report.action.data.import.backup=Import de données depuis une sauvegarde \: +observe.storage.report.action.import.backup=Import depuis une sauvegarde \: +observe.storage.report.action.import.internal=Import depuis une le dernier référentiel téléchargé \: +observe.storage.report.action.import.remote.data=Import de données depuis une base distante \: +observe.storage.report.action.import.remote.referentiel=Import du référentiel depuis une base distante \: +observe.storage.report.action.migrate=Politique de mise à jour +observe.storage.report.action.no.data.import=Pas d'import de données +observe.storage.report.action.no.referentiel.import=Pas d'import de référentiel +observe.storage.report.action.referentiel.import.backup=Import du référentiel depuis une sauvegarde \: +observe.storage.report.can.migrate=Mise à jour si nécessaire (version actuelle \: %1$s) +observe.storage.report.can.not.migrate=Pas de mise à jour possible +observe.storage.report.no.create.mode=Mode de création de base non requis +observe.storage.report.security.owner=Propriétaire \: %1$s +observe.storage.report.security.readers=Lecteurs \: %1$s +observe.storage.report.security.referentiels=Référentiels \: %1$s +observe.storage.report.security.techniciens=Techniciens \: %1$s +observe.storage.report.selected.all.data=Toutes les données observateur sont à exporter (%1$s marée(s)). +observe.storage.report.selected.all.data.to.import=Toutes les données observateur sont à importer (%1$s marée(s)). +observe.storage.report.selected.backup.file=Emplacement de la sauvegarde \: +observe.storage.report.selected.data=%1$s marée(s) à exporter +observe.storage.report.selected.data.for.import=%1$s marée(s) à importer +observe.storage.report.selected.data.referentiel=Le référentiel sera exporté +observe.storage.report.selected.data.to.export=Données à exporter \: +observe.storage.report.selected.data.to.import=Données à importer \: +observe.storage.report.selected.localStorageFile=Emplacement de la base locale \: +observe.storage.report.selected.no.data=Pas de données observateur à exporter +observe.storage.report.selected.no.data.to.import=Pas de données observateur à importer +observe.storage.report.selected.remoteStorage=Informations sur la connexion distance à utiliser \: +observe.storage.report.selected.security=Sécurité +observe.storage.required.rw.on.data=Vous n'avez pas les droits suffisants pour effectuer cette opération.\n\nPour effectuer cette opération vous devez avoir les droits de lecture et d'écriture sur les données observateur. +observe.storage.security.administrateur=Propriétaire de la base +observe.storage.selected.dbMode=Type de source de données sélectionné +observe.storage.selectedCreationMode=Mode de création sélectionné +observe.storage.server.dataBase= +observe.storage.showMigrationProgression=Afficher la progression lors des mises à jour +observe.storage.showMigrationSql=Afficher les requêtes sql lors des mises à jour +observe.storage.step.backup=Sauvegarde +observe.storage.step.backup.description=Sauvegarder la base locale avant de changer de source de données +observe.storage.step.config=Configuration +observe.storage.step.config.description=Configurer la source de données sélectionnée +observe.storage.step.configData=Données +observe.storage.step.configData.description=Configurer l'import de données +observe.storage.step.configReferentiel=Référentiel +observe.storage.step.configReferentiel.description=Configurer l'import du référentiel +observe.storage.step.confirm=Résumé +observe.storage.step.confirm.description=Résumé des opérations à effectuer. +observe.storage.step.creationMode=Création base locale +observe.storage.step.dbMode=Mode +observe.storage.step.dbMode.description=Choisir le mode de connexion +observe.storage.step.dbMode.detail=Type de source de données +observe.storage.step.label=Etape %1$d/%2$d \: %3$s +observe.storage.step.roles=Sécurité +observe.storage.step.roles.description=Mise en place de la sécurité +observe.storage.step.selectData=Sélection données +observe.storage.step.selectData.description=Selectionner les données à exporter dans la sauvegarde +observe.storage.store.remote.config=Conserver le paramétrage +observe.storage.store.remote.config.tip=Conserver le paramétrage de la source de données distante dans votre configuration (sauf les mots de passe pour des raisons de sécurité) +observe.storage.useRemoteStorage.config=Configurer la base distante à utiliser +observe.storage.useRemoteStorage.description=Veuillez configurer votre connexion à la base distante\nAvant de pouvoir poursuivre, vous devez valider la connexion. +observe.storage.useServerStorage.config= +observe.storage.useServerStorage.description= +observe.synchro.add.object=Ajout du référentiel %1$s +observe.synchro.common.activity=Activité +observe.synchro.common.exist=Marée présente sur la base distante +observe.synchro.common.latitude=Latitude +observe.synchro.common.longitude=Longitude +observe.synchro.common.maree=Maréee +observe.synchro.common.program=Program +observe.synchro.common.quadrant=Quadrant +observe.synchro.common.reference=Référence +observe.synchro.common.select=... +observe.synchro.common.selected=Marée à exporter +observe.synchro.common.vitesse=Vitesse +observe.synchro.config.data.mode=Mode d'import des données +observe.synchro.config.data.storage=Configuration de la base de données +observe.synchro.config.export.required.read.data=Vous devez posséder les droits de lecture sur les données de la base distante +observe.synchro.config.export.required.read.referentiel=Vous devez posséder les droits de lecture sur le référentiel de la base distante +observe.synchro.config.export.required.write.data=Vous devez posséder les droits d'écritures sur les données de la base distante +observe.synchro.config.importGPS=Configurer le fichier d'import GPS +observe.synchro.config.referentiel.mode=Mode d'import du référentiel +observe.synchro.config.referentiel.storage=Configuration de la base de référence +observe.synchro.config.report=Configuration des reports +observe.synchro.config.source.storage=Configuration de la base source +observe.synchro.config.validate=Configuration de la validation +observe.synchro.config.validation.report=Rapport de validation +observe.synchro.configuration=Configuration des opérations +observe.synchro.continue.with.no.save.report=Continuer sans sauver de rapport +observe.synchro.import.data.fromBackup=Importer les données depuis une sauvegarde de base locale (*.sql.gz) +observe.synchro.import.data.fromRemoteStorage=Importer les données depuis une base distante +observe.synchro.importGPS.invalidIntervals.list=Liste des intervalles de points gps non utilisables +observe.synchro.message.all.obsolete.entities.fixed=Il n'y a plus de références sur des objets obsolètes. +observe.synchro.message.need.save.for.synchro.operation=L'opération de synchronisation du référentiel a engendrée des modifications. +observe.synchro.message.need.save.for.validation.operation=L'opération de validation des données a engendrée des modifications. +observe.synchro.message.obsolete.entities.fixed=Les références sur %1$s ont été supprimées +observe.synchro.message.obsolote.entity.ref.found=%1$s \: "%2$s" (1 référence) +observe.synchro.message.obsolote.entity.refs.found=%1$s \: "%2$s" (%3$d références) +observe.synchro.message.saveLocal.skip=L'opération de sauvegarde de la base locale n'est pas requise. +observe.synchro.no.data.import=Ne pas importer de données +observe.synchro.no.local.storage=Aucune base source définie +observe.synchro.no.referentiel.import=Ne pas importer de référentiel +observe.synchro.no.remote.storage=Aucune base de référence définie +observe.synchro.obsolete.entities.list=Liste des entités du référentiel obsolètes +observe.synchro.obsolete.entity.fix=Changer les références sur l'objet sélectionné +observe.synchro.obsolete.entity.label=%1$s \: "%2$s" +observe.synchro.obsolete.entity.to.change.label=Objet obsolète +observe.synchro.operation.canceled=L'opération <%1$s> a été annulée. +observe.synchro.operation.consolidate=Calculer les données +observe.synchro.operation.consolidate.description=Calculer les données non observées +observe.synchro.operation.exportData=Exporter les données observateurs +observe.synchro.operation.exportData.description=Exporter les données observateurs vers la base centrale +observe.synchro.operation.failed=L'opération < %1$s > a échouée. +observe.synchro.operation.importGPS=Import GPS +observe.synchro.operation.importGPS.description=Importer un fichier de trace GPS +observe.synchro.operation.needFix=L'opération < %1$s > nécessite des corrections. +observe.synchro.operation.report=Tableaux de synthèse +observe.synchro.operation.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement +observe.synchro.operation.running=L'opération < %1$s > est en cours d'exécution... +observe.synchro.operation.saveLocal=Sauvegarde de la base locale +observe.synchro.operation.saveLocal.description=Sauvegarder les modifications effectuées vers la base locale +observe.synchro.operation.successed=L'opération < %1$s > est terminée. +observe.synchro.operation.synchronize=Synchroniser le référentiel +observe.synchro.operation.synchronize.description=Synchroniser le référentiel depuis la base centrale +observe.synchro.operation.validate=Valider les données +observe.synchro.operation.validate.description=Valider les données de la base source +observe.synchro.operations=Opérations à effectuer +observe.synchro.remove.object=Suppression du référentiel %1$s +observe.synchro.replaceObsolete.object=Application du remplacement d'un référentiel obsolète %1$s +observe.synchro.report.copy.options=Options de copie dans le presse-papier +observe.synchro.report.report.description=Description du rapport sélectionné +observe.synchro.report.result=Résultats du rapport +observe.synchro.report.select=Sélection du rapport +observe.synchro.report.variables=Configuration des variables +observe.synchro.safe.entity.to.choose.label=Objets disponibles +observe.synchro.save.report=Sauver le rapport +observe.synchro.step.config=Configuration +observe.synchro.step.config.description=Configuration des opérations et sources de données à utiliser. +observe.synchro.step.consolidate=Calculer les données +observe.synchro.step.consolidate.description=Calculer les données non observées +observe.synchro.step.exportData=Exporter +observe.synchro.step.exportData.description=Exporter les données observateurs vers la base centrale +observe.synchro.step.importGPS=Import GPS +observe.synchro.step.importGPS.description=Importer un fichier de trace GPS +observe.synchro.step.report=Tableaux de synthèse +observe.synchro.step.report.description=Aide à la génération du rapport de fin d'embarquement +observe.synchro.step.saveLocal=Sauvegarde locale +observe.synchro.step.saveLocal.description=Sauver les modifications sur votre base source +observe.synchro.step.selectData=Sélection des données +observe.synchro.step.selectData.description=Sélection des données pour effectuer les opérations +observe.synchro.step.showResume=Résumé +observe.synchro.step.showResume.description=Voir un résumé des opérations effectuées +observe.synchro.step.synchronize=Synchronisation Référentiel +observe.synchro.step.synchronize.description=Synchronizer le référentiel depuis la base centrale +observe.synchro.step.validate=Validation +observe.synchro.step.validate.description=Validation des données d'une source de données +observe.synchro.table.exportData.exist.label=E +observe.synchro.table.exportData.exist.label.tip=Marée déjà présente sur la base distante +observe.synchro.table.exportData.program.label=Programme +observe.synchro.table.exportData.program.label.tip=Libellé du programme de la maréee +observe.synchro.table.exportData.selected=... +observe.synchro.table.exportData.selected.tip=Sélectionner - Désélectionner toutes les marées à exporter +observe.synchro.table.exportData.trip.label=Marée +observe.synchro.table.exportData.trip.label.tip=Libellé de la marée +observe.synchro.table.importGPS.activity.label=Activité +observe.synchro.table.importGPS.activity.label.tip=Activité [ quadrant - latitude - longitude ] +observe.synchro.table.importGPS.activity.latitude=Lat. +observe.synchro.table.importGPS.activity.latitude.tip=Latitude (°') +observe.synchro.table.importGPS.activity.longitude=Long. +observe.synchro.table.importGPS.activity.longitude.tip=Longitude (°') +observe.synchro.table.importGPS.activity.quadrant=Quadrant +observe.synchro.table.importGPS.activity.quadrant.tip=Quadrant +observe.synchro.table.importGPS.activity.select=... +observe.synchro.table.importGPS.activity.select.tip=Sélectionner - Désélectionner toutes les activités +observe.synchro.table.importGPS.activity.vitesse=Vitesse +observe.synchro.table.importGPS.activity.vitesse.tip=Vitesse (nd) +observe.synchro.table.importGPS.computed.label=Donnée calculée +observe.synchro.table.importGPS.computed.label.tip=Donnée calculée à partir des traces gps +observe.synchro.table.importGPS.data.label=Donnée saisie +observe.synchro.table.importGPS.data.label.tip=Donnée saisie par l'observateur +observe.synchro.table.obsolete.entity.label=Objet +observe.synchro.table.obsolete.entity.label.tip=L'objet qui utilise la référence sur l'objet obsolète +observe.synchro.table.obsolete.entity.select=... +observe.synchro.table.obsolete.entity.select.tip=Sélectionner - Désélectionner toutes les références +observe.synchro.update.object=Mise à jour du référentiel %1$s à la version %2$s +observe.synchro.validate.invalid.data.list=Liste des objets invalides +observe.synchro.validate.message.list=Liste des messages portant sur l'objet sélectionné +observe.synchro.validate.save.reportFile=Le rapport de validation sera généré ici\n%1$s +observe.targetCatch.table.comment=Com +observe.targetCatch.table.comment.tip=Commentaire +observe.targetCatch.table.deleteExtraMessage=\nLe fait de supprimer une capture thon peut entrainer la suppression d'échantillonnage(s) sur l'espèce. +observe.targetCatch.table.speciesThon=Thon mis en cuve +observe.targetCatch.table.speciesThon.tip=Thon mis en cuve +observe.targetCatch.table.weight=Poids (en t) +observe.targetCatch.table.weight.tip=Poids (en t) +observe.targetCatch.table.weightCategory=Catégorie de poids +observe.targetCatch.table.weightCategory.tip=Catégorie de poids +observe.targetCatch.table.well=Cuve +observe.targetCatch.table.well.tip=Cuve +observe.targetDiscarded.message.table.will.delete.targetLength=En confirmant la sauvegarde des objets vont être supprimés\!\n\nLes espèces suivantes ne seront plus utilisables dans des échantillonages \:\n%1$s\nCela entrainera la suppression des échantillonnages suivants \:\n%2$s +observe.targetDiscarded.table.broughtOnDeck=M +observe.targetDiscarded.table.broughtOnDeck.tip=Monté sur le pont ? +observe.targetDiscarded.table.comment=Comm +observe.targetDiscarded.table.comment.tip=Commentaire +observe.targetDiscarded.table.deleteExtraMessage=\nLe fait de supprimer un rejet de thon peut entrainer la suppression d'échantillonnage(s) sur l'espèce. +observe.targetDiscarded.table.reasonForDiscard=Raison rejet +observe.targetDiscarded.table.reasonForDiscard.tip=Raison rejet +observe.targetDiscarded.table.speciesThon=Espèce de thon +observe.targetDiscarded.table.speciesThon.tip=Espèce de thon +observe.targetDiscarded.table.weight=Poids +observe.targetDiscarded.table.weight.tip=Poids (en t) +observe.targetDiscarded.table.weightCategory=Catégorie de poids +observe.targetDiscarded.table.weightCategory.tip=Catégorie de poids +observe.targetSample.table.count=Effectif +observe.targetSample.table.count.tip=Effectif +observe.targetSample.table.length=Longueur +observe.targetSample.table.length.tip=Longueur (cm inf.) +observe.targetSample.table.meanWeight=Poids ind. +observe.targetSample.table.meanWeight.tip=Poids individuel (en Kg) +observe.targetSample.table.measureType=Type de mensuration +observe.targetSample.table.measureType.tip=Le type de mensuration utilisé (LF ou LD1) +observe.targetSample.table.speciesThon=Espèce de thon +observe.targetSample.table.speciesThon.tip=Espèce de thon +observe.targetSample.table.totalWeight=Poids tot. +observe.targetSample.table.totalWeight.tip=Poids total (en t) +observe.tdr.action.create=Insérer le capteur +observe.tdr.action.create.tip=Insérer ce nouveau capteur +observe.tdr.action.reset.dataLocation.tip=Réinitialiser l'hébergement du fichier +observe.tdr.action.reset.homeId.tip=Réinitialiser l'id métier +observe.tdr.action.reset.serialNo.tip=Réinitialiser le numéro se série +observe.tdr.availableSpecies=Espèces disponibles +observe.tdr.basket=Panier +observe.tdr.branchline=Avançon +observe.tdr.data=Données +observe.tdr.dataLocation=Hébergement +observe.tdr.dataLocation.tip=Hébergement du fichier de données +observe.tdr.delete.data.message=Confirmer la suppression du fichier de données +observe.tdr.deleteData=Supprimer +observe.tdr.deleteData.tip=Supprimer le fichier de données +observe.tdr.deployementEnd=Fin déploiement +observe.tdr.deployementStart=Début déploiement +observe.tdr.enableTimestamp=Activer l'horodatage +observe.tdr.enableTimestamp.tip=Activer l'horodatage pour cet enregistreur +observe.tdr.exportData=Exporter +observe.tdr.exportData.tip=Exporter les données enregistrées +observe.tdr.fishingEnd=Fin pêche +observe.tdr.fishingEndDepth=Profondeur en fin de pêche (m) +observe.tdr.fishingStart=Début pêche +observe.tdr.fishingStartDepth=Profondeur en début de pêche (m) +observe.tdr.floatline1Length=Longueur 1 d'orin (m) +observe.tdr.floatline2Length=Longueur 2 d'orin (m) +observe.tdr.homeId=Id métier +observe.tdr.importData=Importer +observe.tdr.importData.tip=Importer un fichier de données +observe.tdr.itemHorizontalPosition=Position sur la ligne +observe.tdr.itemVerticalPosition=Position verticale +observe.tdr.locationOnLongline=Localisation sur la ligne +observe.tdr.maxFishingDepth=Profondeur maximale de pêche (m) +observe.tdr.meanDeployementDepth=Profondeur moyenne de deploiement (m) +observe.tdr.meanFishingDepth=Profondeur moyenne de pêche (m) +observe.tdr.medianDeployementDepth=Profondeur médiane de deploiement (m) +observe.tdr.medianFishingDepth=Profondeur médiane de pêche (m) +observe.tdr.message.data.imported=Le fichier de données %s a été importé. +observe.tdr.minFishingDepth=Profondeur minimale de pêche (m) +observe.tdr.section=Section +observe.tdr.selectedSpecies=Espèces sélectionnées +observe.tdr.sensorBrand=Marque +observe.tdr.serialNo=Numéro de série +observe.tdr.species=Espèces +observe.tdr.tab.caracteristics=Caractéristiques +observe.tdr.tab.keyData=Données clef +observe.tdr.tab.localisation=Localisation +observe.tdr.tab.species=Espèces associées +observe.tdr.tab.timestamp=Horodatage +observe.tdr.table.data=Fichier +observe.tdr.table.homeId=Id +observe.tdr.table.homeId.tip=Identifiant +observe.tdr.table.sensorBrand=Marque +observe.tdr.table.sensorBrand.tip=Marque du capteur +observe.tdr.table.serialNo=N° +observe.tdr.table.serialNo.tip=Numéro de série +observe.tdr.title=Enregistreur de profondeur +observe.title.about=A propos d'ObServe... +observe.title.can.not.delete.referentiel=Impossible de supprimer un référentiel en cours d'utilisation... +observe.title.can.not.export.obstuna=Impossible d'exporter des données d'obstuna... +observe.title.change.storage=Changer la source de données +observe.title.choose.db.dump=Choisir une sauvegarder de base locale +observe.title.choose.db.dump.directory=Choisir le répertoire de destination de la sauvegarde +observe.title.choose.importGPS=Choisir un fichier de trace GPS +observe.title.choose.report.directory=Choisir le répertoire de destination des rapports +observe.title.choose.reportFile=Choisir le fichier de définition des reports +observe.title.choose.sensorUsed.exportData=Choisir l'emplacement du fichier de données à exporter +observe.title.choose.sensorUsed.importData=Choisir le fichier de données à importer +observe.title.choose.tdr.exportData=Choisir l'emplacement du fichier de données à exporter +observe.title.choose.tdr.importData=Choisir le fichier de données à importer +observe.title.config.migrate=Déplacement du fichier de configuration +observe.title.connect.existingDB=Connexion à une source de données existante +observe.title.connect.localDB=Connexion à une source de données locale +observe.title.connect.remoteDB=Connexion à une source de données distante +observe.title.consolidate=Consolider les données observateur +observe.title.consolidate.tip=Consolider les données observateur observe.title.content.HookSizes= observe.title.content.HookTypes= -observe.title.content.baitHaulingStatuss= -observe.title.content.baitSettingStatuss= -observe.title.content.baitTypes= -observe.title.content.catchFateLonglines= -observe.title.content.country= -observe.title.content.detectionModes= -observe.title.content.encounterTypes= -observe.title.content.fpaZones= -observe.title.content.gearCaracteristicTypes= -observe.title.content.gearCaracteristics= -observe.title.content.gears= -observe.title.content.harbours= -observe.title.content.healthnesss= -observe.title.content.hookPositions= -observe.title.content.hookSizes= -observe.title.content.hookTypes= -observe.title.content.itemHorizontalPositions= -observe.title.content.itemVerticalPositions= -observe.title.content.lengthWeightParameters= -observe.title.content.lightsticksColors= -observe.title.content.lightsticksTypes= -observe.title.content.lineTypes= -observe.title.content.maturityStatuss= -observe.title.content.mitigationTypes= -observe.title.content.objectFates= -observe.title.content.objectOperations= -observe.title.content.objectTypes= -observe.title.content.observedSystems= -observe.title.content.oceans= -observe.title.content.organisms= -observe.title.content.persons= -observe.title.content.programs= -observe.title.content.reasonForDiscards= -observe.title.content.reasonForNoFishings= -observe.title.content.reasonForNullSets= -observe.title.content.sensorBrands= -observe.title.content.sensorDataFormats= -observe.title.content.sensorTypes= -observe.title.content.settingShapes= -observe.title.content.sexx= -observe.title.content.sizeMeasureTypes= -observe.title.content.speciesFates= -observe.title.content.speciesGroupSpeciess= -observe.title.content.speciesLists= -observe.title.content.speciesStatuss= -observe.title.content.speciess= -observe.title.content.stomacFullnesss= -observe.title.content.surroundingActivitys= -observe.title.content.transmittingBuoyOperations= -observe.title.content.transmittingBuoyTypes= -observe.title.content.tripTypes= -observe.title.content.vesselActivityLonglines= -observe.title.content.vesselActivitySeines= -observe.title.content.vesselSizeCategoryx= -observe.title.content.vesselTypex= -observe.title.content.vesselx= -observe.title.content.weightCategory= -observe.title.content.weightMeasureTypes= -observe.title.content.windSpeeds= -observe.title.create.local.db= -observe.title.delete= -observe.title.error.dialog= -observe.title.exportData= -observe.title.exportData.tip= -observe.title.h2.server.parameters= -observe.title.import.localDB= -observe.title.importGPS= -observe.title.importGPS.tip= -observe.title.load.remote.db= -observe.title.need.confirm= -observe.title.need.confirm.to.desactivate.referentiel= -observe.title.no.local.db.found= -observe.title.report= -observe.title.report.tip= -observe.title.save.localDB= -observe.title.save.remoteDB= -observe.title.show.usage= -observe.title.speciesList.not.found= -observe.title.storage.info= -observe.title.synchronize= -observe.title.synchronize.tip= -observe.title.technical.informations= -observe.title.unique.key= -observe.title.validate= -observe.title.validate.tip= -observe.title.welcome.admin= -observe.tree.activityLongline= -observe.tree.activityLongline.unsaved= -observe.tree.activitySeine= -observe.tree.activitySeine.unsaved= -observe.tree.baitHaulingStatus= -observe.tree.baitSettingStatus= -observe.tree.baitType= -observe.tree.catchFateLongline= -observe.tree.catchLongline= -observe.tree.country= -observe.tree.detectionMode= -observe.tree.encounter= -observe.tree.encounterType= -observe.tree.floatingObject.unsaved= -observe.tree.fpaZone= -observe.tree.gear= -observe.tree.gearCaracteristic= -observe.tree.gearCaracteristicType= -observe.tree.gearUseFeaturesLongline= -observe.tree.gearUseFeaturesSeine= -observe.tree.harbour= -observe.tree.healthness= -observe.tree.hookPosition= -observe.tree.hookSize= -observe.tree.hookType= -observe.tree.itemHorizontalPosition= -observe.tree.itemVerticalPosition= -observe.tree.lengthWeightParameter= -observe.tree.lightsticksColor= -observe.tree.lightsticksType= -observe.tree.lineType= -observe.tree.longlineDetailComposition= -observe.tree.longlineGlobalComposition= -observe.tree.maturityStatus= -observe.tree.mitigationType= -observe.tree.nonTargetCatch= -observe.tree.nonTargetSample= -observe.tree.objectFate= -observe.tree.objectObservedSpecies= -observe.tree.objectOperation= -observe.tree.objectSchoolEstimate= -observe.tree.objectType= -observe.tree.observedSystem= -observe.tree.ocean= -observe.tree.organism= -observe.tree.person= -observe.tree.program= -observe.tree.reasonForDiscard= -observe.tree.reasonForNoFishing= -observe.tree.reasonForNullSet= -observe.tree.reference.common= -observe.tree.reference.longline= -observe.tree.reference.seine= -observe.tree.route= -observe.tree.route.unsaved= -observe.tree.schoolEstimate= -observe.tree.sensorBrand= -observe.tree.sensorDataFormat= -observe.tree.sensorType= -observe.tree.sensorUsed= -observe.tree.setLongline= -observe.tree.setLongline.unsaved= -observe.tree.setSeine= -observe.tree.setSeine.unsaved= -observe.tree.settingShape= -observe.tree.sex= -observe.tree.sizeMeasureType= -observe.tree.species= -observe.tree.speciesFate= -observe.tree.speciesGroup= -observe.tree.speciesList= -observe.tree.speciesStatus= -observe.tree.stomacFullness= -observe.tree.surroundingActivity= -observe.tree.targetCatch= -observe.tree.targetDiscarded= -observe.tree.targetSample= -observe.tree.targetSampleCapture= -observe.tree.tdr= -observe.tree.transmittingBuoyOperation= -observe.tree.transmittingBuoyType= -observe.tree.tripLongline.unsaved= -observe.tree.tripSeine.unsaved= -observe.tree.tripType= -observe.tree.vessel= -observe.tree.vesselActivityLongline= -observe.tree.vesselActivitySeine= -observe.tree.vesselSizeCategory= -observe.tree.vesselType= -observe.tree.weightCategory= -observe.tree.weightMeasureType= -observe.tree.wind= -observe.tripLongline.captain= -observe.tripLongline.dataEntryOperator= -observe.tripLongline.endDate= -observe.tripLongline.homeId= -observe.tripLongline.message.active.found= -observe.tripLongline.message.active.found.for.other.program= -observe.tripLongline.message.creating= -observe.tripLongline.message.no.active.found= -observe.tripLongline.message.not.open= -observe.tripLongline.message.updating= -observe.tripLongline.observer= -observe.tripLongline.ocean= -observe.tripLongline.startDate= -observe.tripLongline.tab.general= -observe.tripLongline.tab.map= -observe.tripLongline.title= -observe.tripLongline.totalFishingOperationsNumber= -observe.tripLongline.tripType= -observe.tripLongline.vessel= -observe.tripSeine.message.active.found= -observe.tripSeine.message.active.found.for.other.program= -observe.tripSeine.message.creating= -observe.tripSeine.message.no.active.found= -observe.tripSeine.message.not.open= -observe.tripSeine.message.updating= -observe.tripSeine.tab.general= -observe.tripSeine.tab.map= -observe.tripSeine.title= +observe.title.content.baitHaulingStatuss=Gestion des status de l'appât au virage +observe.title.content.baitSettingStatuss=Gestion des status de l'appât au filage +observe.title.content.baitTypes=Gestion des types d'appât +observe.title.content.catchFateLonglines=Gestion des devenirs capture +observe.title.content.country=Gestion des pays +observe.title.content.detectionModes=Gestion des modes de détection +observe.title.content.encounterTypes=Gestion des types de rencontre +observe.title.content.fpaZones=Gestion des zones FPA +observe.title.content.gearCaracteristicTypes=Gestion des types de caractéristiques +observe.title.content.gearCaracteristics=Gestion des caractéristiques d'équipement +observe.title.content.gears=Gestion des équipements +observe.title.content.harbours=GEstion des ports +observe.title.content.healthnesss=Gestion des statuts de santé +observe.title.content.hookPositions=Gestion des positions d'hameçon +observe.title.content.hookSizes=Gestion des tailles d'hameçon +observe.title.content.hookTypes=Gestion des types d'hameçon +observe.title.content.itemHorizontalPositions=Gestion des localisations de l'élément sur la ligne mère +observe.title.content.itemVerticalPositions=Gestion des localisations de l'élément sur l'avançon +observe.title.content.lengthWeightParameters=Gestion des paramétrages taille-poids +observe.title.content.lightsticksColors=Gestion des couleurs de baton lumineux +observe.title.content.lightsticksTypes=Gestion des types de baton lumineux +observe.title.content.lineTypes=Gestion des types de ligne +observe.title.content.maturityStatuss=Gestion des maturité +observe.title.content.mitigationTypes=Gestion des types de mesure d'atténuation +observe.title.content.objectFates=Gestion des devenirs objet +observe.title.content.objectOperations=Gestion des opérations objet +observe.title.content.objectTypes=Gestion des types d'objet +observe.title.content.observedSystems=Gestion des systèmes observés +observe.title.content.oceans=Gestion des océans +observe.title.content.organisms=Gestion des organismes +observe.title.content.persons=Gestion des observateurs +observe.title.content.programs=Gestion des programmes +observe.title.content.reasonForDiscards=Gestion des raisons de rejet +observe.title.content.reasonForNoFishings=Gestion des non coup de senne +observe.title.content.reasonForNullSets=Gestion des causes coup nul +observe.title.content.sensorBrands=Gestion des marques de capteur +observe.title.content.sensorDataFormats=Gestion des formats de données de capteur +observe.title.content.sensorTypes=Gestion des types de capteur +observe.title.content.settingShapes=Gestion des formes au filage +observe.title.content.sexx=Gestion des sexes +observe.title.content.sizeMeasureTypes=Gestion des types de mesure de taille +observe.title.content.speciesFates=Gestion des devenir d'espèces +observe.title.content.speciesGroupSpeciess=Gestion des groupes d'espèces +observe.title.content.speciesLists=Gestion des listes d'espèces +observe.title.content.speciesStatuss=Gestion des statuts d'espèces +observe.title.content.speciess=Gestion des espèces +observe.title.content.stomacFullnesss=Gestion des niveaux de remplissage de l'estomac +observe.title.content.surroundingActivitys=Gestion des activités environnantes +observe.title.content.transmittingBuoyOperations=Gestion des opérations sur balise +observe.title.content.transmittingBuoyTypes=Gestion des types de balise +observe.title.content.tripTypes=Gestion des types de marée +observe.title.content.vesselActivityLonglines=Gestion des types d'activité +observe.title.content.vesselActivitySeines=Gestion des types d'activités +observe.title.content.vesselSizeCategoryx=Gestion des catégories de navires +observe.title.content.vesselTypex=Gestion des types de vessel +observe.title.content.vesselx=Gestion des bateaux +observe.title.content.weightCategory=Gestion des catégories poids +observe.title.content.weightMeasureTypes=Gestion des types de mesure de poids +observe.title.content.windSpeeds=Gestion des vents Beaufort +observe.title.create.local.db=Chargement d'une base locale +observe.title.delete=Confirmation de suppression +observe.title.error.dialog=Une erreur est survenue\! +observe.title.exportData=Exporter les données +observe.title.exportData.tip=Exporter les données utilisateurs vers obstuna +observe.title.h2.server.parameters=Paramétrage de la base locale en mode serveur +observe.title.import.localDB=Imcporter une base locale depuis une sauvegarde +observe.title.importGPS=Import GPS +observe.title.importGPS.tip=Importer un fichier de trace GPS +observe.title.load.remote.db=Chargement d'une base distante +observe.title.need.confirm=Une confirmation de votre part est requise... +observe.title.need.confirm.to.desactivate.referentiel=Une confirmation de votre part est requise pour désactiver un référentiel... +observe.title.no.local.db.found=Aucune base locale trouvée +observe.title.report=Aide à la génération de rapport +observe.title.report.tip=Aide à la génération du rapport de fin d'embarquement +observe.title.save.localDB=Sauver la base locale vers une fichier +observe.title.save.remoteDB=Sauver la base distante vers un fichier +observe.title.show.usage=Listes des utilisations d'un référentiel... +observe.title.speciesList.not.found=Liste d'espèces non trouvée +observe.title.storage.info=Information sur la source de données +observe.title.synchronize=Synchronisation du référentiel +observe.title.synchronize.tip=Opération de synchronisation du référentiel de la base locale +observe.title.technical.informations=Informations techniques du référentiel %1$s +observe.title.unique.key=Clefs métier du référentiel %1$s +observe.title.validate=Validation des données +observe.title.validate.tip=Valider les données d'une source de données +observe.title.welcome.admin=Observe Administrateur +observe.tree.activityLongline=Activités +observe.tree.activityLongline.unsaved=Nouvelle activité +observe.tree.activitySeine=Activités +observe.tree.activitySeine.unsaved=Nouvelle activité +observe.tree.baitHaulingStatus=Status de l'appât au virage +observe.tree.baitSettingStatus=Status de l'appât au filage +observe.tree.baitType=Type d'appât +observe.tree.catchFateLongline=Devenir capture +observe.tree.catchLongline=Captures +observe.tree.country=Pays +observe.tree.detectionMode=Mode détection +observe.tree.encounter=Rencontres +observe.tree.encounterType=Type de rencontre +observe.tree.floatingObject.unsaved=Nouveau DCP +observe.tree.fpaZone=Zone FPA +observe.tree.gear=Équipement +observe.tree.gearCaracteristic=Caractéristique d'un équipement +observe.tree.gearCaracteristicType=Type de caractéristique d'équipement +observe.tree.gearUseFeaturesLongline=Équipements +observe.tree.gearUseFeaturesSeine=Équipements +observe.tree.harbour=Port +observe.tree.healthness=Status de la capture +observe.tree.hookPosition=Position du hameçon +observe.tree.hookSize=Taille d'hameçon +observe.tree.hookType=Type d'hameçon +observe.tree.itemHorizontalPosition=Localisation de l'élément sur la ligne mère +observe.tree.itemVerticalPosition=Localisation de l'élément sur l'avançon +observe.tree.lengthWeightParameter=Relation Taille-Poids +observe.tree.lightsticksColor=Couleur de baton lumineux +observe.tree.lightsticksType=Type de baton lumineux +observe.tree.lineType=Type de ligne +observe.tree.longlineDetailComposition=Schéma de palangre +observe.tree.longlineGlobalComposition=Composition +observe.tree.maturityStatus=Maturité +observe.tree.mitigationType=Type de mesure d'atténuation +observe.tree.nonTargetCatch=Faune accessoire conservée ou rejetée +observe.tree.nonTargetSample=Echantillon faune accessoire +observe.tree.objectFate=Devenir de l'objet +observe.tree.objectObservedSpecies=Faune observée +observe.tree.objectOperation=Opération sur l'objet +observe.tree.objectSchoolEstimate=Estimation banc objet +observe.tree.objectType=Type d'objet +observe.tree.observedSystem=Système observé +observe.tree.ocean=Océan +observe.tree.organism=Organisme +observe.tree.person=Personne +observe.tree.program=Programme +observe.tree.reasonForDiscard=Raison rejet +observe.tree.reasonForNoFishing=Raison de non coup de Senne +observe.tree.reasonForNullSet=Cause coup nul +observe.tree.reference.common=Référentiel commun +observe.tree.reference.longline=Référentiel Palangre +observe.tree.reference.seine=Référentiel Senne +observe.tree.route=Routes +observe.tree.route.unsaved=Nouvelle route +observe.tree.schoolEstimate=Estimation banc +observe.tree.sensorBrand=Marque de capteur +observe.tree.sensorDataFormat=Format de données de capteur +observe.tree.sensorType=Type de capteur +observe.tree.sensorUsed=Capteurs utilisés +observe.tree.setLongline=Détails de l'opération +observe.tree.setLongline.unsaved=Nouvelle opération de pêche +observe.tree.setSeine=Calée +observe.tree.setSeine.unsaved=Nouvelle calée +observe.tree.settingShape=Forme au filage +observe.tree.sex=Sexe +observe.tree.sizeMeasureType=Type de mesure de taille +observe.tree.species=Espèce +observe.tree.speciesFate=Devenir espèce +observe.tree.speciesGroup=Groupe espèce +observe.tree.speciesList=Liste d'espèces +observe.tree.speciesStatus=Statut faune observée +observe.tree.stomacFullness=Niveau de remplissage de l'estomac +observe.tree.surroundingActivity=Activité environnante +observe.tree.targetCatch=Capture cible +observe.tree.targetDiscarded=Rejet de thon +observe.tree.targetSample=Echantillon thon rejeté +observe.tree.targetSampleCapture=Echantillon thon capturé +observe.tree.tdr=Enregistreurs de profondeur +observe.tree.transmittingBuoyOperation=Opération balise +observe.tree.transmittingBuoyType=Type de balise +observe.tree.tripLongline.unsaved=Nouvelle marée +observe.tree.tripSeine.unsaved=Nouvelle marée +observe.tree.tripType=Type de marée +observe.tree.vessel=Bateau +observe.tree.vesselActivityLongline=Activité bateau +observe.tree.vesselActivitySeine=Activité bateau +observe.tree.vesselSizeCategory=Catégorie de bateau +observe.tree.vesselType=Type de pêcherie +observe.tree.weightCategory=Catégorie de poids +observe.tree.weightMeasureType=Type de mesure de poids +observe.tree.wind=Vent Beaufort +observe.tripLongline.captain=Capitaine +observe.tripLongline.dataEntryOperator=Opérateur de saisie +observe.tripLongline.endDate=Date fin +observe.tripLongline.homeId=Id métier +observe.tripLongline.message.active.found=Une marée est ouverte. +observe.tripLongline.message.active.found.for.other.program=Une marée ouverte existe dans un autre programme. +observe.tripLongline.message.creating=La marée est en cours de création. +observe.tripLongline.message.no.active.found=Aucune marée ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrir une. +observe.tripLongline.message.not.open=La marée courante n'est pas ouverte, aucune modification possible. +observe.tripLongline.message.updating=La maréee est en cours de modification. +observe.tripLongline.observer=Observateur +observe.tripLongline.ocean=Océan +observe.tripLongline.startDate=Date début +observe.tripLongline.tab.general=Caractéristiques +observe.tripLongline.tab.map=Carte +observe.tripLongline.title=Marée +observe.tripLongline.totalFishingOperationsNumber=Nombre total d'opérations de pêche +observe.tripLongline.tripType=Type de marée +observe.tripLongline.vessel=Navire +observe.tripSeine.message.active.found=Une marée est ouverte. +observe.tripSeine.message.active.found.for.other.program=Une marée ouverte existe dans un autre programme. +observe.tripSeine.message.creating=La marée est en cours de création. +observe.tripSeine.message.no.active.found=Aucune marée ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrir une. +observe.tripSeine.message.not.open=La marée courante n'est pas ouverte, aucune modification possible. +observe.tripSeine.message.updating=La maréee est en cours de modification. +observe.tripSeine.tab.general=Caractéristiques +observe.tripSeine.tab.map=Carte +observe.tripSeine.title=Marée observe.validation.model.type.all= observe.validation.model.type.all.description= observe.validation.model.type.data= observe.validation.model.type.data.description= observe.validation.model.type.referentiel= observe.validation.model.type.referentiel.description= -observe.validation.report.contextName= -observe.validation.report.entities.with.messages= -observe.validation.report.entity= -observe.validation.report.scopes= -observe.validation.report.title= -observe.vessel.tab.general= -observe.vessel.tab.other= -observe.view.message= -observe.view.navigation= -observe.view.server= -observe.warning.nimbus.landf= -observe.warning.no.ui= -ui.main.body.synchro.action.copy.to.clipBoard= +observe.validation.report.contextName=Context de validation utilisé \: %1$s +observe.validation.report.entities.with.messages=Nombre d'entités avec des messages \: %1$s +observe.validation.report.entity=Entité %1$s '%2$s' Nombre de messages %3$s (sur %4$s scope(s)). +observe.validation.report.scopes=Scopes de validation utilisés \: %1$s +observe.validation.report.title=Rapport de validation généré le %1$s +observe.vessel.tab.general=Caractéristiques générales +observe.vessel.tab.other=Autres caractéristiques +observe.view.message=Messages +observe.view.navigation=Navigation +observe.view.server=Base locale en mode serveur +observe.warning.nimbus.landf=Le look and Feel Nimbus n'a pas été trouvé, il faut au moins la version 1.6u10 de java. +observe.warning.no.ui=Aucun environnement graphique détecté +observeweb.configuration.description= +ui.main.body.synchro.action.copy.to.clipBoard=Copier le contenu dans le presse-papier diff --git a/observe-application-swing/src/main/resources/observeSwing.conf b/observe-application-swing/src/main/resources/observeSwing.conf new file mode 100644 index 0000000..bb05deb --- /dev/null +++ b/observe-application-swing/src/main/resources/observeSwing.conf @@ -0,0 +1,5 @@ +observe.devMode=${devMode} +observe.build.version=${project.version} +observe.build.date=${buildDate} +observe.build.number=${buildNumber} +observe.model.version=${observe.model.version} \ No newline at end of file diff --git a/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java b/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java index d3561b3..2424e7a 100644 --- a/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java +++ b/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java @@ -22,14 +22,15 @@ package fr.ird.observe.ui.content.impl.longline; * #L% */ -import fr.ird.observe.business.ObserveApplicationContext; -import fr.ird.observe.business.ObserveServiceHelper; +import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; import fr.ird.observe.services.dto.longline.SectionDto; import fr.ird.observe.services.service.actions.validate.ObserveValidator; -import fr.ird.observe.ui.DecoratorService; import jaxx.runtime.validator.swing.SwingValidatorMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -62,7 +63,7 @@ public class LonglineDetailCompositionValidatorServiceTest { public void setUp() throws Exception { ObserveServiceHelper.close(); - ObserveApplicationContext applicationContext = new ObserveApplicationContext(); + ObserveSwingApplicationContext applicationContext = new ObserveSwingApplicationContext(); ObserveServiceHelper.set(applicationContext); DecoratorService decoratorService = new DecoratorService(ReferentialLocale.FR); @@ -99,9 +100,8 @@ public class LonglineDetailCompositionValidatorServiceTest { { // 2 sections, without settingIdentifier - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 2); + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 2); } { @@ -109,9 +109,8 @@ public class LonglineDetailCompositionValidatorServiceTest { sections.get(0).setSettingIdentifier(1); sections.get(1).setSettingIdentifier(2); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 0); + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 0); } @@ -136,82 +135,79 @@ public class LonglineDetailCompositionValidatorServiceTest { basket.setId("11"); sections.get(1).addBasket(basket); } - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 4); + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 4); } - List<BasketDto> basket0 = new ArrayList<>(sections.get(0).getBasket()); - List<BasketDto> basket1 = new ArrayList<>(sections.get(1).getBasket()); { // 2 sections with baskets with settingIdentifier - basket0.get(0).setSettingIdentifier(1); - basket0.get(1).setSettingIdentifier(2); - basket1.get(0).setSettingIdentifier(1); - basket1.get(1).setSettingIdentifier(2); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 0); +// sections.get(0).getBasket().get(0).setSettingIdentifier(1); +// sections.get(0).getBasket().get(1).setSettingIdentifier(2); +// sections.get(1).getBasket().get(0).setSettingIdentifier(1); +// sections.get(1).getBasket().get(1).setSettingIdentifier(2); + + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 0); } { // Section 1 - Basket 1 mistmatch floatline1Length with Section 1 - Basket 2 - basket0.get(0).setFloatline1Length(1f); - basket0.get(0).setFloatline2Length(2f); - - basket0.get(1).setFloatline1Length(1f); // should be 2 - basket0.get(1).setFloatline2Length(6f); - - basket1.get(0).setFloatline1Length(6f); - basket1.get(0).setFloatline2Length(11f); - - basket1.get(1).setFloatline1Length(11f); - basket1.get(1).setFloatline2Length(12f); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 1); +// sections.get(0).getBasket().get(0).setFloatline1Length(1f); +// sections.get(0).getBasket().get(0).setFloatline2Length(2f); +// +// sections.get(0).getBasket().get(1).setFloatline1Length(1f); // should be 2 +// sections.get(0).getBasket().get(1).setFloatline2Length(6f); +// +// sections.get(1).getBasket().get(0).setFloatline1Length(6f); +// sections.get(1).getBasket().get(0).setFloatline2Length(11f); +// +// sections.get(1).getBasket().get(1).setFloatline1Length(11f); +// sections.get(1).getBasket().get(1).setFloatline2Length(12f); + + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 1); } { // OK d'ont check if last floatline has same length of first floatline for next section - basket0.get(0).setFloatline1Length(1f); - basket0.get(0).setFloatline2Length(2f); - - basket0.get(1).setFloatline1Length(2f); - basket0.get(1).setFloatline2Length(6f); - - basket1.get(0).setFloatline1Length(10f); // Should be 6 - basket1.get(0).setFloatline2Length(11f); - - basket1.get(1).setFloatline1Length(11f); - basket1.get(1).setFloatline2Length(12f); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 0); +// sections.get(0).getBasket().get(0).setFloatline1Length(1f); +// sections.get(0).getBasket().get(0).setFloatline2Length(2f); +// +// sections.get(0).getBasket().get(1).setFloatline1Length(2f); +// sections.get(0).getBasket().get(1).setFloatline2Length(6f); +// +// sections.get(1).getBasket().get(0).setFloatline1Length(10f); // Should be 6 +// sections.get(1).getBasket().get(0).setFloatline2Length(11f); +// +// sections.get(1).getBasket().get(1).setFloatline1Length(11f); +// sections.get(1).getBasket().get(1).setFloatline2Length(12f); + + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 0); } { // Ok - basket0.get(0).setFloatline1Length(1f); - basket0.get(0).setFloatline2Length(2f); - - basket0.get(1).setFloatline1Length(2f); - basket0.get(1).setFloatline2Length(10f); - - basket1.get(0).setFloatline1Length(10f); - basket1.get(0).setFloatline2Length(11f); - - basket1.get(1).setFloatline1Length(11f); - basket1.get(1).setFloatline2Length(12f); - //FIXME -// List<SwingValidatorMessage> messages = service.validateSections(sections); -// assertMessages(messages, 0); +// sections.get(0).getBasket().get(0).setFloatline1Length(1f); +// sections.get(0).getBasket().get(0).setFloatline2Length(2f); +// +// sections.get(0).getBasket().get(1).setFloatline1Length(2f); +// sections.get(0).getBasket().get(1).setFloatline2Length(10f); +// +// sections.get(1).getBasket().get(0).setFloatline1Length(10f); +// sections.get(1).getBasket().get(0).setFloatline2Length(11f); +// +// sections.get(1).getBasket().get(1).setFloatline1Length(11f); +// sections.get(1).getBasket().get(1).setFloatline2Length(12f); + + List<SwingValidatorMessage> messages = service.validateSections(sections); + assertMessages(messages, 0); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java index ab5cf7e..025bb3c 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java @@ -142,7 +142,8 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport observeDataSourceConnection.canReadReferential(), observeDataSourceConnection.canWriteReferential(), observeDataSourceConnection.canReadData(), - observeDataSourceConnection.canWriteData() + observeDataSourceConnection.canWriteData(), + observeDataSourceConnection.getVersion() ); return dataSourceConnection; diff --git a/observe-entities/pom.xml b/observe-entities/pom.xml index ff8aebf..bf0c74c 100644 --- a/observe-entities/pom.xml +++ b/observe-entities/pom.xml @@ -151,6 +151,13 @@ <include>*.properties</include> </includes> </resource> + <resource> + <directory>src/main/xmi</directory> + <filtering>true</filtering> + <includes> + <include>*.properties</include> + </includes> + </resource> </resources> <testResources> <testResource> @@ -163,6 +170,55 @@ <plugins> <plugin> + + <artifactId>maven-antrun-plugin</artifactId> + <inherited>false</inherited> + <executions> + + <!-- on recopie le les fichiers de modèle pour appliquer les filtres --> + <execution> + <id>copy model properties</id> + <phase>generate-sources</phase> + <configuration> + <tasks> + <copy verbose="true" failonerror="false" overwrite="true" filtering="true" + todir="${project.build.directory}/xmi"> + <filterset> + <filter value="${observe.model.version}" token="observe.model.version" /> + </filterset> + <fileset dir="${basedir}/src/main/xmi"> + <include name="*.properties"/> + </fileset> + </copy> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + + <execution> + <id>copy model zargo</id> + <phase>generate-sources</phase> + <configuration> + <tasks> + <copy verbose="true" failonerror="false" overwrite="true" + todir="${project.build.directory}/xmi"> + <fileset dir="${basedir}/src/main/xmi"> + <include name="*.zargo"/> + </fileset> + </copy> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + + </executions> + </plugin> + + <plugin> <groupId>org.nuiton.eugene</groupId> <artifactId>eugene-maven-plugin</artifactId> <configuration> @@ -175,9 +231,9 @@ <id>generate-persistence</id> <configuration> <inputs> - <input>zargo:src/main/xmi:observe-common.zargo</input> - <input>zargo:src/main/xmi:observe-seine.zargo</input> - <input>zargo:src/main/xmi:observe-longline.zargo</input> + <input>zargo:target/xmi:observe-common.zargo</input> + <input>zargo:target/xmi:observe-seine.zargo</input> + <input>zargo:target/xmi:observe-longline.zargo</input> </inputs> <!--org.nuiton.eugene.java.JavaInterfaceTransformer,--> <templates> diff --git a/observe-entities/src/main/xmi/observe-common.properties b/observe-entities/src/main/xmi/observe-common.properties index a59d1d4..3308c19 100644 --- a/observe-entities/src/main/xmi/observe-common.properties +++ b/observe-entities/src/main/xmi/observe-common.properties @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -model.tagvalue.version=5.0 +model.tagvalue.version=@observe.model.version@ model.tagvalue.notGenerateToString=true model.tagvalue.generateForeignKeyNames=true model.tagvalue.generatePropertyChangeSupport =true diff --git a/observe-entities/src/main/xmi/observe-longline.properties b/observe-entities/src/main/xmi/observe-longline.properties index 64a0d53..ebc8a7d 100644 --- a/observe-entities/src/main/xmi/observe-longline.properties +++ b/observe-entities/src/main/xmi/observe-longline.properties @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -model.tagvalue.version=5.0 +model.tagvalue.version=@observe.model.version@ model.tagvalue.notGenerateToString=true model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.generateForeignKeyNames=true diff --git a/observe-entities/src/main/xmi/observe-seine.properties b/observe-entities/src/main/xmi/observe-seine.properties index 3d6b241..7b40a04 100644 --- a/observe-entities/src/main/xmi/observe-seine.properties +++ b/observe-entities/src/main/xmi/observe-seine.properties @@ -19,7 +19,7 @@ # <http://www.gnu.org/licenses/gpl-3.0.html>. # #L% ### -model.tagvalue.version=5.0 +model.tagvalue.version=@observe.model.version@ model.tagvalue.notGenerateToString=true model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.generateForeignKeyNames=true diff --git a/observe-services-configuration-api/pom.xml b/observe-services-configuration-api/pom.xml index 83a1b1c..670870b 100644 --- a/observe-services-configuration-api/pom.xml +++ b/observe-services-configuration-api/pom.xml @@ -29,6 +29,12 @@ <artifactId>guava</artifactId> </dependency> + <!-- Nuiton --> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + </dependency> + <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> diff --git a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java index ef37453..e16c9bc 100644 --- a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java +++ b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnection.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.configuration; * #L% */ +import org.nuiton.util.version.Version; + /** * Représente une source de donnée une fois la connexion acceptée. * @@ -56,4 +58,6 @@ public interface ObserveDataSourceConnection { */ boolean canWriteData(); + Version getVersion(); + } diff --git a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java index 73ea41f..a7b52fb 100644 --- a/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java +++ b/observe-services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionSupport.java @@ -23,6 +23,7 @@ package fr.ird.observe.services.configuration; */ import com.google.common.base.MoreObjects; +import org.nuiton.util.version.Version; import java.util.Objects; @@ -43,16 +44,20 @@ public abstract class ObserveDataSourceConnectionSupport implements ObserveDataS protected final boolean writeData; + protected final Version version; + protected ObserveDataSourceConnectionSupport(String authenticationToken, boolean readReferential, boolean writeReferential, boolean readData, - boolean writeData) { + boolean writeData, + Version version) { this.authenticationToken = authenticationToken; this.writeData = writeData; this.readReferential = readReferential; this.writeReferential = writeReferential; this.readData = readData; + this.version = version; } public String getAuthenticationToken() { @@ -80,6 +85,11 @@ public abstract class ObserveDataSourceConnectionSupport implements ObserveDataS } @Override + public Version getVersion() { + return version; + } + + @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof ObserveDataSourceConnectionSupport)) return false; @@ -100,6 +110,7 @@ public abstract class ObserveDataSourceConnectionSupport implements ObserveDataS .add("writeReferential", writeReferential) .add("readData", readData) .add("writeData", writeData) + .add("version", version) .toString(); } diff --git a/observe-services-configuration-rest/pom.xml b/observe-services-configuration-rest/pom.xml index 4bbbb64..6e7ced9 100644 --- a/observe-services-configuration-rest/pom.xml +++ b/observe-services-configuration-rest/pom.xml @@ -36,6 +36,12 @@ <artifactId>guava</artifactId> </dependency> + <!-- Nuiton --> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + </dependency> + <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java index 2fd0643..1cca594 100644 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java +++ b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionRest.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.configuration; * #L% */ +import org.nuiton.util.version.Version; + import java.net.URL; /** @@ -38,8 +40,9 @@ public class ObserveDataSourceConnectionRest extends ObserveDataSourceConnection boolean readReferential, boolean writeReferential, boolean readData, - boolean writeData) { - super(authenticationToken, readReferential, writeReferential, readData, writeData); + boolean writeData, + Version version) { + super(authenticationToken, readReferential, writeReferential, readData, writeData, version); this.serverUrl = serverUrl; } diff --git a/observe-services-configuration-topia/pom.xml b/observe-services-configuration-topia/pom.xml index cac2c0e..5787cf8 100644 --- a/observe-services-configuration-topia/pom.xml +++ b/observe-services-configuration-topia/pom.xml @@ -44,10 +44,10 @@ </dependency> <!-- Nuiton --> - <!--dependency> + <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> - </dependency--> + </dependency> <!-- persistence --> <!--dependency> diff --git a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java index 1736bab..26d13c0 100644 --- a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java +++ b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConnectionTopia.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.configuration; * #L% */ +import org.nuiton.util.version.Version; + /** * Created on 04/09/15. * @@ -33,8 +35,9 @@ public class ObserveDataSourceConnectionTopia extends ObserveDataSourceConnectio boolean readReferential, boolean writeReferential, boolean readData, - boolean writeData) { - super(authenticationToken, readReferential, writeReferential, readData, writeData); + boolean writeData, + Version version) { + super(authenticationToken, readReferential, writeReferential, readData, writeData, version); } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java index 0b8d347..c5197de 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java @@ -5,6 +5,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; import org.nuiton.topia.persistence.jdbc.JdbcHelper; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; import java.sql.Connection; import java.sql.DatabaseMetaData; @@ -56,4 +58,37 @@ public class ObserveJdbcHelper extends JdbcHelper { } + public Version getVersion() { + Version version = Version.VZERO; + + Connection connection = null; + PreparedStatement preparedStatement = null; + try { + connection = openConnection(); + // la connexion est reussie, on recherche les droits de + // récupération de la version de la base + preparedStatement = connection.prepareStatement("SELECT version FROM tms_version;"); + ResultSet resultSet = preparedStatement.executeQuery(); + + if (resultSet.next()) { + String versionStr = resultSet.getString(1); + version = Versions.valueOf(versionStr); + } + + return version; + + } catch (SQLException e) { + throw new RuntimeException(e); + } finally { + closeQuietly(preparedStatement); + closeQuietly(connection); + } + + + + + + + } + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java index 1d401b2..53d2820 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -42,6 +42,7 @@ import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationExce import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.jdbc.JdbcHelper; +import org.nuiton.util.version.Version; import java.io.File; import java.io.IOException; @@ -289,6 +290,12 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS boolean readData; boolean writeData; + Version version; + + ObserveJdbcHelper observeJdbcHelper = new ObserveJdbcHelper(topiaConfiguration); + + version = observeJdbcHelper.getVersion(); + if (dataSourceConfiguration.isH2Database()) { // Sur une base H2, on a le droit de tout lire, mais uniquement d'écrire les données @@ -299,8 +306,6 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } else { - ObserveJdbcHelper observeJdbcHelper = new ObserveJdbcHelper(topiaConfiguration); - // on recherche les droits de l'utilisateur sur cette base //TODO chemit 2010-10-28 : il vaudrait mieux utiliser des fonctions postgres adéquates qui elle sont fiables... @@ -348,7 +353,8 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS readReferential, writeReferential, readData, - writeData); + writeData, + version); return dataSourceConnection; } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveDataSourceConnectionTopiaTaiste.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveDataSourceConnectionTopiaTaiste.java index c106377..735aa5c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveDataSourceConnectionTopiaTaiste.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveDataSourceConnectionTopiaTaiste.java @@ -1,6 +1,7 @@ package fr.ird.observe.services; import fr.ird.observe.services.configuration.ObserveDataSourceConnectionTopia; +import org.nuiton.util.version.Version; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -9,7 +10,7 @@ public class ObserveDataSourceConnectionTopiaTaiste extends ObserveDataSourceCon public ObserveDataSourceConnectionTopiaTaiste(String authenticationToken) { // on se donne tout les droit pour pouvoir tout tester - super(authenticationToken, true, true, true, true); + super(authenticationToken, true, true, true, true, Version.VZERO); } } diff --git a/pom.xml b/pom.xml index cf9b610..7fbc20d 100644 --- a/pom.xml +++ b/pom.xml @@ -151,6 +151,9 @@ <buildDate>${maven.build.timestamp}</buildDate> <devMode>true</devMode> + <!--Modèle version--> + <observe.model.version>5.0</observe.model.version> + </properties> <repositories> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.