This is an automated email from the git hooks/post-receive script. New commit to branch feature/7528 in repository observe. See http://git.codelutin.com/observe.git commit 048f9e4294cb214a5b40a8e3cf539e6d5387b6c3 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 23 08:42:39 2015 +0200 commexion au serveur de données (refs #7529) --- .../src/main/filters/observe-ui.properties | 1 + .../observe/ObserveSwingApplicationContext.java | 312 +++++++++------------ .../ObserveSwingApplicationConfigOption.java | 2 +- .../ObserveSwingApplicationConfigProvider.java | 2 +- .../fr/ird/observe/db/ObserveSwingDataSource.java | 166 ++++++++++- .../db/event/ObserveSwingDataSourceEvent.java | 83 ++++++ .../db/event/ObserveSwingDataSourceListener.java | 75 +++++ .../ObserveSwingDataSourceListenerAdapter.java | 56 ++++ .../fr/ird/observe/ui/ObserveMainUIHandler.java | 4 +- .../ui/actions/SaveStorageToFileAction.java | 4 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 12 - .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 9 +- .../observe/ui/admin/export/ExportUIHandler.java | 2 +- .../observe/ui/admin/report/ReportUIHandler.java | 2 +- .../ui/admin/synchronize/SynchronizeUIHandler.java | 2 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../ui/storage/StorageBackupUILauncher.java | 2 +- .../ird/observe/ui/storage/StorageUIHandler.java | 71 +++-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 185 ++++++++---- .../fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx | 2 +- .../ui/storage/tabs/StorageTabUIHandler.java | 26 +- .../ui/tree/DataSelectionTreeSelectionModel.java | 95 +++---- .../ird/observe/ui/tree/ObserveDataProvider.java | 10 +- .../tree/ObserveNavigationTreeShowPopupAction.java | 14 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 10 +- .../ui/tree/loadors/AbstractNodeChildLoador.java | 6 +- .../loadors/ActivityLonglinesNodeChildLoador.java | 4 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 4 +- .../loadors/ActivitySeinesNodeChildLoador.java | 4 +- .../loadors/ProgramLonglineNodeChildLoador.java | 4 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 4 +- .../ui/tree/loadors/RootNodeChildLoador.java | 4 +- .../ui/tree/loadors/RoutesNodeChildLoador.java | 4 +- .../observe-application-swing_en_GB.properties | 18 +- .../observe-application-swing_es_ES.properties | 18 +- .../observe-application-swing_fr_FR.properties | 99 ++++--- .../src/main/resources/icons/action-db-server.png | Bin 0 -> 923 bytes .../web/controller/v1/PingServiceController.java | 8 +- .../ObserveWebSecurityApplicationContext.java | 2 +- .../ird/observe/services/service/PingService.java | 2 + .../services/dto/gson/ObserveDtoGsonSupplier.java | 2 + .../observe/services/dto/gson/VersionAdapter.java | 31 ++ .../ird/observe/services/TestMethodResource.java | 2 +- 43 files changed, 906 insertions(+), 459 deletions(-) diff --git a/observe-application-swing/src/main/filters/observe-ui.properties b/observe-application-swing/src/main/filters/observe-ui.properties index 80e57c2..7a0608a 100644 --- a/observe-application-swing/src/main/filters/observe-ui.properties +++ b/observe-application-swing/src/main/filters/observe-ui.properties @@ -102,6 +102,7 @@ icon.action.connect_ok=action-connect_ok.png icon.action.close=action-close.png icon.action.db-change=action-db-change.png icon.action.db-local=action-db-local.png +icon.action.db-server=action-db-server.png icon.action.db-none=action-db-none.png icon.action.db-remote=action-db-remote.png icon.action.db-reload=action-db-reload.png diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index 6f3ab5f..9f5fc4b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -31,6 +31,8 @@ import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.db.event.ObserveSwingDataSourceEvent; +import fr.ird.observe.db.event.ObserveSwingDataSourceListenerAdapter; import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceMainFactory; @@ -55,6 +57,7 @@ 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; @@ -590,197 +593,134 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { */ public void prepareMainStorage(ObserveSwingDataSource dataSource) { - // ajout support JMX -// if (ObserveServiceHelper.isUseJMX()) { -// service.getConfig().getDbConfig().setProperty( -// Environment.GENERATE_STATISTICS, -// String.valueOf(true)); -// } - //FIXME -// service.addDataSourceListener(new DataSourceListenerAdapter() { -// -// @Override -// public void onOpening(DataSourceEvent event) { -// DataSource s = event.getSource(); -// UIHelper.displayInfo( -// t("observe.message.db.loading", s.getLabel())); -// } -// -// @Override -// public void onOpened(DataSourceEvent event) { -// -// // le service est disponible, on enregistre les listeners -// DataSource source = event.getSource(); -// -// try { -// openOnUI(source); -// } catch (Exception e) { -// -// // la base n'a pas pu être chargée proprement -// // ceci peut être due a une base dans une version pas -// // assez recente, on doit donc refermer cette base -// if (log.isErrorEnabled()) { -// log.error("Could not obtain open datas from " + source.getLabel(), e); -// } -// ErrorDialogUI.showError(e); -// -// // fermeture de la source -// try { -// source.doClose(false); -// } catch (DataSourceException e1) { -// throw new RuntimeException(e1); -// } -// } -// -// } -// -// @Override -// public void onClosing(DataSourceEvent event) { -// -// super.onClosing(event); -// -// DataSource source = event.getSource(); -// -// // on désenregistre la source du service de données -// getDataService().unregisterDataSource(source); -// -// // on dettache la validation -// getValidationContext().closeDataSource(); -// -// ObserveMainUI mainUI = getObserveMainUI(); -// DataContext dataContext = getDataContext(); -// dataContext.setEnabled(false); -// -// // suppresion des opens dans le context de données -// dataContext.populateOpens(); -// -// mainUI.getTreeHelper().cleanNavigationUI(mainUI); -// -// // on met a jour l'état dans la config -// getConfig().setMainStorageOpened(false); -// } -// -// -// @Override -// public void onClosed(DataSourceEvent event) { -// // le service est indisponible, il faut supprimer toutes les -// // references vers le service -// DataSource source = event.getSource(); -// -// // gestion JMX -//// if (ObserveServiceHelper.isUseJMX()) { -//// -//// dettachHibernateMBean(source); -//// } -// -// ObserveMainUI mainUI = getObserveMainUI(); -// -// // nettoyage de l'ui ( suppression navigation et autres ) -// if (mainUI != null) { -// -// if (log.isDebugEnabled()) { -// log.debug("dispose ui from storage " + -// source.getLabel() + ": " + mainUI.getName()); -// } -// -// mainUI.setMode(ObserveUIMode.NO_DB); -// -// UIHelper.displayInfo( -// t("observe.message.db.closed", source.getLabel())); -// -// } -// } -// -// protected void openOnUI(DataSource source) throws DataSourceException { -// // on rend le service disponible dans le service de données -// getDataService().registerDataSource(source); -// -// // on rend le service disponible dans le service de validation -// getValidationContext().setDataSource(source); -// -// // toutes les données sont chargées, on peut declarer le service -// // comme ouvert dans la configuration -// ObserveSwingApplicationConfig config = getConfig(); -// config.setMainStorageOpened(true); -// config.setMainStorageOpenedLocal(source instanceof H2DataSource); -// -// if (source instanceof H2DataSource) { -// config.setLocalStorageExist(true); -// } -// -// // gestion JMX -//// if (ObserveServiceHelper.isUseJMX()) { -//// createHibernateMBean(source); -//// } -// -// // remplissage de l'ui -// ObserveMainUI mainUI = getObserveMainUI(); -// -// if (mainUI != null) { -// if (log.isDebugEnabled()) { -// log.debug("loading ui for storage " + source.getLabel() + -// ": " + mainUI.getName()); -// } -// -// DataContext dataContext = mainUI.getDataContext(); -// dataContext.setEnabled(true); -// -// ObserveTreeHelper treeHelper = mainUI.getTreeHelper(); -// -// treeHelper.cleanNavigationUI(mainUI); -// -// + + dataSource.addDataSourceListener(new ObserveSwingDataSourceListenerAdapter() { + + @Override + public void onOpening(ObserveSwingDataSourceEvent event) { + ObserveSwingDataSource s = event.getSource(); + UIHelper.displayInfo( + t("observe.message.db.loading", s.getLabel())); + } + + @Override + public void onOpened(ObserveSwingDataSourceEvent event) { + + // le service est disponible, on enregistre les listeners + ObserveSwingDataSource source = event.getSource(); + + try { + openOnUI(source); + } catch (Exception e) { + + // la base n'a pas pu être chargée proprement + // ceci peut être due a une base dans une version pas + // assez recente, on doit donc refermer cette base + if (log.isErrorEnabled()) { + log.error("Could not obtain open datas from " + source.getLabel(), e); + } + ErrorDialogUI.showError(e); + + // fermeture de la source + source.close(); + } + + } + + @Override + public void onClosing(ObserveSwingDataSourceEvent event) { + + super.onClosing(event); + + ObserveSwingDataSource source = event.getSource(); + + // on dettache la validation + getValidationContext().closeDataSource(); + + ObserveMainUI mainUI = getObserveMainUI(); + DataContext dataContext = getDataContext(); + dataContext.setEnabled(false); + + // suppresion des opens dans le context de données + dataContext.populateOpens(); + + mainUI.getTreeHelper().cleanNavigationUI(mainUI); + + // on met a jour l'état dans la config + getConfig().setMainStorageOpened(false); + } + + + @Override + public void onClosed(ObserveSwingDataSourceEvent event) { + // le service est indisponible, il faut supprimer toutes les + // references vers le service + ObserveSwingDataSource source = event.getSource(); + + ObserveMainUI mainUI = getObserveMainUI(); + + // nettoyage de l'ui ( suppression navigation et autres ) + if (mainUI != null) { + + if (log.isDebugEnabled()) { + log.debug("dispose ui from storage " + + source.getLabel() + ": " + mainUI.getName()); + } + + mainUI.setMode(ObserveUIMode.NO_DB); + + UIHelper.displayInfo( + t("observe.message.db.closed", source.getLabel())); + + } + } + + protected void openOnUI(ObserveSwingDataSource source) { + // FIXME + // on rend le service disponible dans le service de validation + //getValidationContext().setDataSource(source); + + // toutes les données sont chargées, on peut declarer le service + // comme ouvert dans la configuration + ObserveSwingApplicationConfig config = getConfig(); + config.setMainStorageOpened(true); + config.setMainStorageOpenedLocal(source.isLocal()); + + if (source.isLocal()) { + config.setLocalStorageExist(true); + } + + // remplissage de l'ui + ObserveMainUI mainUI = getObserveMainUI(); + + if (mainUI != null) { + if (log.isDebugEnabled()) { + log.debug("loading ui for storage " + source.getLabel() + + ": " + mainUI.getName()); + } + + DataContext dataContext = mainUI.getDataContext(); + dataContext.setEnabled(true); + + ObserveTreeHelper treeHelper = mainUI.getTreeHelper(); + + treeHelper.cleanNavigationUI(mainUI); + + // FIXME // String[] openIds = getDataService().getOpenIds(source); // mainUI.getDataContext().populateOpens(openIds); -// treeHelper.loadNavigationUI(source, mainUI); -// -// mainUI.setMode(ObserveUIMode.DB); -// -// mainUI.getStatus().setStatus( -// t("observe.message.db.loaded", source.getLabel())); -// -// } -// } -// }); - } + treeHelper.loadNavigationUI(source, mainUI); -// protected void createHibernateMBean(DataSource source) { -// try { -// ObjectName on = createMBean(source); -// if (log.isInfoEnabled()) { -// log.info("attach MBean " + on); -// } -// MBeanServer server = ManagementFactory.getPlatformMBeanServer(); -// // MBean implementation -// StatisticsService stats = new StatisticsService(); -// // Bind the stats to a SessionFactory -// stats.setSessionFactory(((TopiaContextImplementor) source.getRootCtxt()).getHibernateFactory()); -// // Register the Mbean on the server -// server.registerMBean(stats, on); -// } catch (Exception e) { -// if (log.isErrorEnabled()) { -// log.error("Could not attach hibernate session to JMX...", e); -// } -// } -// } + mainUI.setMode(ObserveUIMode.DB); -// public void dettachHibernateMBean(DataSource source) { -// // suppression MBean sur la session hibernate -// try { -// MBeanServer server = ManagementFactory.getPlatformMBeanServer(); -// ObjectName on = createMBean(source); -// if (log.isInfoEnabled()) { -// log.info("dettach MBean " + on); -// } -// // UnRegister the Mbean on the server -// server.unregisterMBean(on); -// } catch (Exception e) { -// if (log.isErrorEnabled()) { -// log.error("Could not dettach hibernate session from JMX...", e); -// } -// } -// } + mainUI.getStatus().setStatus( + t("observe.message.db.loaded", source.getLabel())); + + } + } + }); + } public void registerShareActions(ObserveMainUI ui) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java index 8c5a421..ca2b649 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/configuration/ObserveSwingApplicationConfigOption.java @@ -329,7 +329,7 @@ public enum ObserveSwingApplicationConfigOption implements ConfigOptionDef { SERVER_DATABASE_NAME( "server.dataBaseName", n("observe.config.server.dataBaseName.description"), - "", + null, String.class, false, false 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 index 3e8550c..27e1a7f 100644 --- 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 @@ -22,7 +22,7 @@ public class ObserveSwingApplicationConfigProvider implements ApplicationConfigP @Override public String getDescription(Locale locale) { - return l(locale, "observeweb.configuration.description"); + return l(locale, "observe.configuration.description"); } @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java index eccfbd7..1b9c1c7 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java @@ -3,6 +3,8 @@ package fr.ird.observe.db; import com.google.common.base.Preconditions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.event.ObserveSwingDataSourceEvent; +import fr.ird.observe.db.event.ObserveSwingDataSourceListener; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceInitializer; import fr.ird.observe.services.ObserveServiceMainFactory; @@ -19,17 +21,26 @@ import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.jdesktop.beans.AbstractSerializableBean; +import org.nuiton.util.version.Version; +import javax.swing.event.EventListenerList; import java.io.File; import java.util.Locale; +import static org.nuiton.i18n.I18n.t; + /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ public class ObserveSwingDataSource extends AbstractSerializableBean { - public static final String PROPERTY_OPEN = "open"; + private static final Log log = LogFactory.getLog(ObserveSwingDataSource.class); + + /** le conteneur de listeners */ + protected final EventListenerList listenerList; protected final ObserveDataSourceConfiguration configuration; @@ -37,6 +48,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { public ObserveSwingDataSource(ObserveDataSourceConfiguration configuration) { this.configuration = configuration; + this.listenerList = new EventListenerList(); this.connection = null; } @@ -48,29 +60,83 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { return connection; } + public String getLabel() { + return configuration.getLabel(); + } + + public String getAuthenticationToken() { + String result = null; + if (connection != null) { + result = connection.getAuthenticationToken(); + } + return result; + } + + public boolean canWriteData() { + boolean result = connection != null && connection.canWriteData(); + return result; + } + + public Version getVersion() { + Version result = null; + if (connection != null) { + result = connection.getVersion(); + } + return result; + } + + public boolean canReadReferential() { + boolean result = connection != null && connection.canReadReferential(); + return result; + } + + public boolean canReadData() { + boolean result = connection != null && connection.canReadData(); + return result; + } + + public boolean canWriteReferential() { + boolean result = connection != null && connection.canWriteReferential(); + return result; + } + public void open() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - Preconditions.checkState(connection == null, "Connection is alredy open"); + + Preconditions.checkState(!isOpen(), "Connection is alredy open"); + + fireNewMessage(t("observe.storage.message.opening", getLabel())); + fireOpening(); + DataSourceService dataSourceService = newService(DataSourceService.class); connection = dataSourceService.open(configuration); - firePropertyChange(PROPERTY_OPEN, false, true); + fireNewMessage(t("observe.storage.message.opened", getLabel())); + fireOpened(); } public void create(DataSourceCreateConfigurationDto creatDto) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { - Preconditions.checkState(connection == null, "Connection is alredy open"); + + Preconditions.checkState(!isOpen(), "Connection is alredy open"); + + fireNewMessage(t("observe.storage.message.creating", getLabel())); + fireOpening(); DataSourceService dataSourceService = newService(DataSourceService.class); connection = dataSourceService.create(configuration, creatDto); - firePropertyChange(PROPERTY_OPEN, false, true); + fireNewMessage(t("observe.storage.message.created", getLabel())); + fireOpened(); } public void close() { - Preconditions.checkState(connection != null, "Connection is not open"); + Preconditions.checkState(isOpen(), "Connection is not open"); + + fireNewMessage(t("observe.storage.message.closing", getLabel())); + fireClosing(); DataSourceService dataSourceService = newService(DataSourceService.class); @@ -78,12 +144,17 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { connection = null; - firePropertyChange(PROPERTY_OPEN, true, false); + fireNewMessage(t("observe.storage.message.closed", getLabel())); + fireClosed(); + } public void destroy() { - Preconditions.checkState(connection != null, "Connection is not open"); + Preconditions.checkState(isOpen(), "Connection is not open"); + + fireNewMessage(t("observe.storage.message.destroying", getLabel())); + fireClosing(); DataSourceService dataSourceService = newService(DataSourceService.class); @@ -91,7 +162,9 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { connection = null; - firePropertyChange(PROPERTY_OPEN, true, false); + fireNewMessage(t("observe.storage.message.destroyed", getLabel())); + fireClosed(); + } public boolean isOpen() { @@ -151,8 +224,81 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { return configuration instanceof ObserveDataSourceConfigurationTopiaPG; } - public boolean isServeur() { + public boolean isServer() { return configuration instanceof ObserveDataSourceConfigurationRest; } + + public void addDataSourceListener(ObserveSwingDataSourceListener listener) { + listenerList.add(ObserveSwingDataSourceListener.class, listener); + } + + public boolean containsDataSourceListener(ObserveSwingDataSourceListener listener) { + ObserveSwingDataSourceListener[] listeners = getDataSourceListeners(); + for (ObserveSwingDataSourceListener l : listeners) { + if (l.equals(listener)) { + return true; + } + } + return false; + } + + public ObserveSwingDataSourceListener[] getDataSourceListeners() { + return listenerList.getListeners(ObserveSwingDataSourceListener.class); + } + + public void removeDataSourceListener(ObserveSwingDataSourceListener listener) { + listenerList.remove(ObserveSwingDataSourceListener.class, listener); + } + + protected void removeDataSourceListeners() { + // remove all listeners + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + if (log.isInfoEnabled()) { + log.info("removing listener " + listener); + } + removeDataSourceListener(listener); + } + } + + public void fireNewMessage(String message) { + fireNewMessage(message, ObserveSwingDataSourceEvent.MessageLevel.INFO); + } + + public void fireNewMessage(String message, ObserveSwingDataSourceEvent.MessageLevel level) { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this, message, level); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onNewMessage(evt); + } + } + + protected void fireOpening() { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onOpening(evt); + } + } + + protected void fireOpened() { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onOpened(evt); + } + } + + protected void fireClosing() { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onClosing(evt); + } + } + + protected void fireClosed() { + ObserveSwingDataSourceEvent evt = new ObserveSwingDataSourceEvent(this); + for (ObserveSwingDataSourceListener listener : getDataSourceListeners()) { + listener.onClosed(evt); + } + } + + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceEvent.java b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceEvent.java new file mode 100644 index 0000000..637247a --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceEvent.java @@ -0,0 +1,83 @@ +/* + * #%L + * ObServe :: Business + * %% + * 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.db.event; + +import fr.ird.observe.db.ObserveSwingDataSource; + +import java.util.EventObject; + +/** + * Les évènements produits lors des changements du cycle de vie d'une source + * de données. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public class ObserveSwingDataSourceEvent extends EventObject { + + private static final long serialVersionUID = 1L; + + /** an extra message to be used when using {@link ObserveSwingDataSourceListener#onNewMessage(ObserveSwingDataSourceEvent)}. */ + protected String message; + + public enum MessageLevel { + FATAL, + ERROR, + WARN, + INFO, + DEBUG, + TRACE + } + + protected MessageLevel messageLevel; + + /** + * Constructs a prototypical Event. + * + * @param source The object on which the Event initially occurred. + * @throws IllegalArgumentException if source is null. + */ + public ObserveSwingDataSourceEvent(ObserveSwingDataSource source) { + super(source); + } + + public ObserveSwingDataSourceEvent(ObserveSwingDataSource source, + String message, + MessageLevel messageLevel) { + super(source); + this.message = message; + this.messageLevel = messageLevel; + } + + @Override + public ObserveSwingDataSource getSource() { + return (ObserveSwingDataSource) super.getSource(); + } + + public String getMessage() { + return message; + } + + public MessageLevel getMessageLevel() { + return messageLevel; + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListener.java b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListener.java new file mode 100644 index 0000000..8ae2593 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListener.java @@ -0,0 +1,75 @@ +/* + * #%L + * ObServe :: Business + * %% + * 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.db.event; + +import fr.ird.observe.db.ObserveSwingDataSource; + +import java.util.EventListener; + +/** + * Le contrat d'un listener sur une source de données. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public interface ObserveSwingDataSourceListener extends EventListener { + + + /** + * Déclanché avant l'ouverture d'un service (i.e au debut de la méthode + * {@link ObserveSwingDataSource#open()}). + * + * @param event l'evenement de pre-ouverture + */ + void onOpening(ObserveSwingDataSourceEvent event); + + /** + * Déclanché apres une ouverture d'un service (i.e à la fin de la méthode + * {@link ObserveSwingDataSource#open()}). + * + * @param event l'evenement d'ouverture + */ + void onOpened(ObserveSwingDataSourceEvent event); + + /** + * Déclanché avant la fermeture d'un service (i.e au avant la méthode {@link + * ObserveSwingDataSource#close()}). + * + * @param event l'evenement de pre-fermeture + */ + void onClosing(ObserveSwingDataSourceEvent event); + + /** + * Déclanché apres la fermeture d'un service (i.e apres de la méthode {@link + * ObserveSwingDataSource#close()}). + * + * @param event l'evenement de fermeture + */ + void onClosed(ObserveSwingDataSourceEvent event); + + /** + * Déclanché pour envoyer un nouveau message. + * + * @param event l'evenement de message + */ + void onNewMessage(ObserveSwingDataSourceEvent event); +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListenerAdapter.java b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListenerAdapter.java new file mode 100644 index 0000000..1345ab8 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/event/ObserveSwingDataSourceListenerAdapter.java @@ -0,0 +1,56 @@ +/* + * #%L + * ObServe :: Business + * %% + * 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.db.event; + +/** + * Un adapteur de {@link ObserveSwingDataSourceListener}. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 1.4 + */ +public class ObserveSwingDataSourceListenerAdapter implements ObserveSwingDataSourceListener { + + @Override + public void onOpening(ObserveSwingDataSourceEvent event) { + // ne fait rien + } + + @Override + public void onOpened(ObserveSwingDataSourceEvent event) { + // ne fait rien + } + + @Override + public void onClosing(ObserveSwingDataSourceEvent event) { + // ne fait rien + } + + @Override + public void onClosed(ObserveSwingDataSourceEvent event) { + // ne fait rien + } + + @Override + public void onNewMessage(ObserveSwingDataSourceEvent event) { + // ne fait rien + } +} 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 65d29bc..22af25c 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 @@ -410,7 +410,7 @@ public class ObserveMainUIHandler { String text; if (ui.getConfig().isMainStorageOpened()) { ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); - text = source.getConfiguration().getLabel(); + text = source.getLabel(); } else { text = t("observe.message.db.none.loaded"); } @@ -421,7 +421,7 @@ public class ObserveMainUIHandler { String text; if (ui.getConfig().isMainStorageOpened()) { ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); - text = t("observe.message.loaded.tip", source.getConfiguration().getLabel()); + text = t("observe.message.loaded.tip", source.getLabel()); } else { text = t("observe.message.db.none.loaded.tip"); } 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 b64b062..dab2b45 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 @@ -24,7 +24,6 @@ package fr.ird.observe.ui.actions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.storage.StorageBackupUILauncher; @@ -67,8 +66,7 @@ public class SaveStorageToFileAction extends AbstractAction { ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSource(); - ObserveDataSourceConnection connection = service.getConnection(); - if (!service.isLocal() && !(connection.canReadData() && connection.canWriteData())) { + if (!service.isLocal() && !(service.canReadData() && service.canWriteData())) { UIHelper.askUser( null, 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 d1143cb..c5a6a5e 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 @@ -23,7 +23,6 @@ package fr.ird.observe.ui.admin; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUIMode; import fr.ird.observe.ui.UIHelper; @@ -265,17 +264,6 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad model.doCloseSource(source, false); - // on avait une source avant l'opération et aussi une ui - ObserveDataSourceConfiguration sourceConfig = source.getConfiguration(); - - //FIXME -// if (sourceConfig instanceof H2DataSourceConfig) -// source = DataSourceFactory.newService( -// (H2DataSourceConfig) sourceConfig); -// else -// source = DataSourceFactory.newService( -// (PGDataSourceConfig) sourceConfig); - // on attache la source a l'ui ObserveSwingApplicationContext.get().prepareMainStorage(source); 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 af2a398..0481a5a 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 @@ -525,7 +525,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (log.isDebugEnabled()) { log.debug("Close previous source " + - previousSource.getConfiguration().getLabel()); + previousSource.getLabel()); } doCloseSource(previousSource, false); } @@ -1318,12 +1318,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { protected ObserveSwingDataSource createDataSource(StorageUIModel model) { - ObserveDataSourceConfiguration service = storageHandler.newDataSourceConfigurationFromModel( - model, - n("observe.storage.label.local") - ); - - ObserveSwingDataSource dataSource = new ObserveSwingDataSource(service); + ObserveSwingDataSource dataSource = storageHandler.newDataSourceFromModel(model); return dataSource; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java index 2a67b31..5afccf2 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java @@ -205,7 +205,7 @@ public class ExportUIHandler extends AdminTabUIHandler { stepModel.setCentralSource(centralSource); - if (!centralSource.getConnection().canWriteData()) { + if (!centralSource.canWriteData()) { // l'utilisateur n'a pas le droit d'écrire sur la base distante sendMessage(t("observe.message.can.not.write.data")); return WizardState.FAILED; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java index 6c84080..a0a06c9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java @@ -504,7 +504,7 @@ public class ReportUIHandler extends AdminTabUIHandler { openSource(source); } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException eee) { throw new IllegalStateException( - "Could not open data source " + source.getConfiguration().getLabel(), eee); + "Could not open data source " + source.getLabel(), eee); } ReportExecute execute = stepModel.getReportExecute(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java index abd3c64..bf817a3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java @@ -330,7 +330,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { // construction du différentiel sendMessage(t("observe.message.synchro.build.diff", - centralSource.getConfiguration().getLabel())); + centralSource.getLabel())); //FIXME // DiffState.DiffStateMap diff = 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 2f3c4ba..c947a75 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 @@ -363,7 +363,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { ValidatorsMap validators = validationModel.getValidators(); sendMessage(t("observe.message.validation.use.storage", - source.getConfiguration().getLabel())); + source.getLabel())); sendMessage(t("observe.message.validation.prepare.validators")); 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 c7b144d..2d9bbab 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 @@ -71,7 +71,7 @@ public class StorageBackupUILauncher extends StorageUILauncher { } else if (source.isRemote()) { model.setCanUseRemoteService(true); model.setDbMode(DbMode.USE_REMOTE); - } else if (source.isServeur()) { + } else if (source.isServer()) { model.setCanUseServerService(true); model.setDbMode(DbMode.USE_SERVER); } 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 171fd3b..2b69301 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 @@ -36,6 +36,8 @@ import fr.ird.observe.db.ObserveSwingDataSource; 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.db.event.ObserveSwingDataSourceEvent; +import fr.ird.observe.db.event.ObserveSwingDataSourceListenerAdapter; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; @@ -69,7 +71,6 @@ 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; /** @@ -93,49 +94,45 @@ public class StorageUIHandler { * Le service ne sera pas ouvert. * * @param model le modèle de la source de données - * @param localLabel le label de la source si local * @return le service de persistance initialisé mais non ouvert. */ - public ObserveDataSourceConfiguration newDataSourceConfigurationFromModel( - StorageUIModel model, - String localLabel) { - - ObserveDataSourceConfiguration mainConfiguration = null; + public ObserveSwingDataSource newDataSourceFromModel( + StorageUIModel model) { + ObserveSwingDataSource dataSource = null; + ObserveDataSourceConfiguration configuration; switch (model.getDbMode()) { case CREATE_LOCAL: case USE_LOCAL: - mainConfiguration = model.toH2StorageConfig(localLabel); + configuration = model.toH2StorageConfig(t("observe.storage.label.local")); - // FIXME -// h2Service.addDataSourceListener( -// new DataSourceListenerAdapter() { -// -// @Override -// public void onOpened(DataSourceEvent event) { -// H2DataSource s = (H2DataSource) -// event.getSource(); -// -// ObserveContext context = ObserveContext.get(); -// // la base locale existe desormais -// context.getContextValue(ObserveConfig.class). -// setLocalStorageExist(true); -// -// // le service est en mode normal -// s.getConfig().setCreationMode(null); -// } -// }); + dataSource = new ObserveSwingDataSource(configuration); + + dataSource.addDataSourceListener( + new ObserveSwingDataSourceListenerAdapter() { + + @Override + public void onOpened(ObserveSwingDataSourceEvent event) { + ObserveSwingDataSource source = event.getSource(); + + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + // la base locale existe desormais + context.getConfig().setLocalStorageExist(true); + } + }); break; case USE_REMOTE: - mainConfiguration = model.toPGStorageConfig(localLabel); + configuration = model.toPGStorageConfig(t("observe.storage.label.remote")); + dataSource = new ObserveSwingDataSource(configuration); break; case USE_SERVER: - mainConfiguration = model.toRestStorageConfig(localLabel); + configuration = model.toRestStorageConfig(t("observe.storage.label.server")); + dataSource = new ObserveSwingDataSource(configuration); break; } - return mainConfiguration; + return dataSource; } public void initUI(final StorageUI ui) { @@ -369,7 +366,7 @@ public class StorageUIHandler { if (destroyLocalBase || model.isDoBackup()) { if (localDataSource == null) { try { - ObserveDataSourceConfigurationTopiaH2 localConfiguration = config.getDataSourceConfigurationH2(n("observe.storage.label.local")); + ObserveDataSourceConfigurationTopiaH2 localConfiguration = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); // la base ne doit pas etre mise a jour dans ce cas localConfiguration.setCanMigrate(false); @@ -457,7 +454,7 @@ public class StorageUIHandler { } // suppression du storage precedent - if (currentDataSource != null) { + if (currentDataSource != null && currentDataSource.isOpen()) { if (log.isDebugEnabled()) { log.debug(">>> close main storage " + currentDataSource); } @@ -486,16 +483,18 @@ public class StorageUIHandler { try { - ObserveDataSourceConfiguration dataSourceConfiguration = newDataSourceConfigurationFromModel(model, t("observe.storage.label.local")); - currentDataSource = new ObserveSwingDataSource(dataSourceConfiguration); + currentDataSource = newDataSourceFromModel(model); + + observeContext.setDataSource(currentDataSource); + observeContext.prepareMainStorage(currentDataSource); // ouverture du nouveau storage currentDataSource.open(); - observeContext.setDataSource(currentDataSource); + if (log.isInfoEnabled()) { - log.info(">>> main storage opened " + currentDataSource.getConfiguration().getLabel()); + log.info(">>> main storage opened " + currentDataSource.getLabel()); } if (model.isStoreRemoteConfig()) { @@ -1275,7 +1274,7 @@ public class StorageUIHandler { importDataSource.open(); - model.checkImportDbVersion(importDataSource.getConnection()); + model.checkImportDbVersion(importDataSource); initSelectData(ui, importDataSource, false); 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 2914fc0..0d1cc85 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 @@ -35,14 +35,14 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia 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.service.DatabaseConnexionNotAuthorizedException; -import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.services.service.PingService; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.JAXXContext; import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.wizard.WizardModel; import jaxx.runtime.swing.wizard.WizardUILancher; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; @@ -58,7 +58,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -181,6 +180,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { /** la configuration d'un serveur web */ protected ObserveDataSourceConfigurationRest restConfig; + protected String serverUrl; + /** Les information de connextion a la base**/ protected ObserveDataSourceConnection connection; @@ -235,7 +236,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); h2Config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( - n("observe.storage.label.remote"), + t("observe.storage.label.local"), null, ObserveSwingApplicationConfig.DB_NAME, "", @@ -245,7 +246,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { ); pgConfig = configurationMainFactory.createObserveDataSourceConfigurationTopiaPG( - n("observe.storage.label.local"), + t("observe.storage.label.remote"), "", "", EMPTY_PASSWORD, @@ -255,7 +256,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { ); restConfig = configurationMainFactory.createObserveDataSourceConfigurationRest( - n("observe.storage.label.rest"), + t("observe.storage.label.server"), null, "", EMPTY_PASSWORD, @@ -342,9 +343,9 @@ 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")); + h2Config = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); + pgConfig = config.getDataSourceConfigurationPG(t("observe.storage.label.remote")); + restConfig = config.getDataSourceConfigurationRest(t("observe.storage.label.server")); if (source != null) { @@ -527,9 +528,9 @@ 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 - h2Config = config.getDataSourceConfigurationH2(n("observe.storage.label.remote")); - pgConfig = config.getDataSourceConfigurationPG(n("observe.storage.label.local")); - restConfig = config.getDataSourceConfigurationRest(n("observe.storage.label.rest")); + h2Config = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); + pgConfig = config.getDataSourceConfigurationPG(t("observe.storage.label.remote")); + restConfig = config.getDataSourceConfigurationRest(t("observe.storage.label.server")); DbMode newDbMode = config.getDefaultDbMode(); if (getAdminAction() != null) { @@ -727,7 +728,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public String getLabel() { String txt; String params; - txt = n("observe.storage.label.import.referentiel"); + txt = t("observe.storage.label.import.referentiel"); if (getDbMode() == DbMode.CREATE_LOCAL) { params = getH2Config().getDirectory().getAbsolutePath(); } else { @@ -757,7 +758,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { public String getLabel() { String txt; String params; - txt = n("observe.storage.label.import.data"); + txt = t("observe.storage.label.import.data"); if (getDbMode() == DbMode.CREATE_LOCAL) { params = getH2Config().getDirectory().getAbsolutePath(); } else { @@ -1299,7 +1300,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { url = pgConfig.getJdbcUrl(); break; case USE_SERVER: - url = restConfig.getServerUrl().toString(); + url = serverUrl; break; } } @@ -1334,16 +1335,66 @@ public class StorageUIModel extends WizardModel<StorageStep> { return restConfig; } + public String getDataSourceConfigDetail() { + String result = null; + if (dbMode != null) { + switch (dbMode) { + case USE_LOCAL: + case CREATE_LOCAL: + result = t("observe.storage.detail.local", h2Config.getDbName()); + break; + case USE_REMOTE: + String yes = t("observe.boolean.yes"); + String no = t("observe.boolean.no"); + result = t("observe.storage.detail.remote", + pgConfig.getJdbcUrl(), + pgConfig.getUsername(), + "***", + (pgConfig.isUseSsl() ? yes : no)); + break; + case USE_SERVER: + result = t("observe.storage.detail.server", + restConfig.getServerUrl(), + restConfig.getLogin(), + "***", + restConfig.getOptionalDatabaseName().orNull()); + break; + } + } + return result; + } + + + + public void setRemoteLogin(String remoteLogin) { String oldValue = getRemoteLogin(); - - pgConfig.setUsername(remoteLogin); + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + pgConfig.setUsername(remoteLogin); + break; + case USE_SERVER: + restConfig.setLogin(remoteLogin); + break; + } + } firePgConfigChanged(REMOTE_LOGIN_ROPERTY_NAME, oldValue, remoteLogin); } public void setRemotePassword(char[] remotePassword) { char[] oldValue = getRemotePassword(); - pgConfig.setPassword(remotePassword); + + if (dbMode != null) { + switch (dbMode) { + case USE_REMOTE: + pgConfig.setPassword(remotePassword); + break; + case USE_SERVER: + restConfig.setPassword(remotePassword); + break; + } + } firePgConfigChanged(REMOTE_PASSWORD_PROPERTY_NAME, oldValue, remotePassword); } @@ -1378,12 +1429,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { pgConfig.setJdbcUrl(remoteUrl); break; case USE_SERVER: - URL url = null; - try { - url = new URL(remoteUrl); - } catch (MalformedURLException e) { - } - restConfig.setServerUrl(url); + serverUrl = remoteUrl; break; } } @@ -1398,8 +1444,12 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void setServerDatabase(String database) { String oldValue = getServerDatabase(); - restConfig.setOptionalDatabaseName(database); - firePgConfigChanged(SERVER_DATABASE_PROPERTY_NAME, oldValue, database); + if (StringUtils.isBlank(database)) { + restConfig.setOptionalDatabaseName(null); + } else { + restConfig.setOptionalDatabaseName(database); + } + firePgConfigChanged(SERVER_DATABASE_PROPERTY_NAME, oldValue, restConfig.getOptionalDatabaseName()); } // ---------------------------------------------------------- @@ -1500,7 +1550,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { ObserveDataSourceConfigurationRest result = configurationFactory.createObserveDataSourceConfigurationRest( label, restConfig.getServerUrl(), - restConfig.getLabel(), + restConfig.getLogin(), restConfig.getPassword(), restConfig.getOptionalDatabaseName().orNull() ); @@ -1541,54 +1591,85 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ public boolean testRemote() { - ObserveSwingDataSource dataSource = new ObserveSwingDataSource(pgConfig); - + ObserveDataSourceConfiguration config = null; boolean result = false; connexionStatusError = ""; - try { - dataSource.checkCanConnect(); + if (DbMode.USE_REMOTE.equals(getDbMode())) { + config = pgConfig; + } else if (DbMode.USE_SERVER.equals(getDbMode())) { + try { + URL url = new URL(serverUrl); - dataSource.open(); + restConfig.setServerUrl(url); - ObserveDataSourceConnection connection = dataSource.getConnection(); + config = restConfig; - Version versionDataSource = connection.getVersion(); + } catch (MalformedURLException e) { - if (versionDataSource.equals(getModleVersion())) { + connexionStatusError = t("observe.storage.error.badUrl", serverUrl); - setConnexionStatus(ConnexionStatus.SUCCESS); + setConnexionStatus(ConnexionStatus.FAILED); - result = true; + } - } else { + } - connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, getModleVersion()); + if (config != null) { - setConnexionStatus(ConnexionStatus.FAILED); + ObserveSwingDataSource dataSource = new ObserveSwingDataSource(config); - } + try { + + if (DbMode.USE_SERVER.equals(getDbMode())) { + + PingService pingService = dataSource.newService(PingService.class); + + pingService.ping(); - } catch (DatabaseNotFoundException e) { + } + + dataSource.checkCanConnect(); + + dataSource.open(); + + Version versionDataSource = dataSource.getVersion(); + + if (getModleVersion().equals(versionDataSource)) { + + setConnexionStatus(ConnexionStatus.SUCCESS); + + result = true; + + } else { - connexionStatusError = e.getMessage(); + connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, getModleVersion()); - setConnexionStatus(ConnexionStatus.FAILED); + setConnexionStatus(ConnexionStatus.FAILED); - } catch (DatabaseConnexionNotAuthorizedException e) { + } + + } catch (Exception e) { + + connexionStatusError = e.getMessage(); + + if (log.isErrorEnabled()) { + log.error("Error in test remote", e); + } - connexionStatusError = e.getMessage(); + setConnexionStatus(ConnexionStatus.FAILED); - setConnexionStatus(ConnexionStatus.FAILED); - } finally { - if (dataSource.isOpen()) { - dataSource.close(); + } finally { + if (dataSource.isOpen()) { + dataSource.close(); + } } } return result; } + public String getConnexionStatusError() { return connexionStatusError; } @@ -1611,9 +1692,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, oldValue, connexionStatus); } - public void checkImportDbVersion(ObserveDataSourceConnection connection) { + public void checkImportDbVersion(ObserveSwingDataSource source) { - Version importServiceDbVersion = connection.getVersion(); + Version importServiceDbVersion = source.getVersion(); 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/ConfigUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.jaxx index 57d82df..779fd17 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 @@ -144,7 +144,7 @@ public void init() { </row> <row> <cell weighty='1' weightx='1'> - <JPanel id='USE_SERVERE_content' + <JPanel id='USE_SERVER_content' minimumSize='{new Dimension(20,300)}'/> </cell> </row> 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 b245639..b0cee4b 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,11 +21,13 @@ */ package fr.ird.observe.ui.storage.tabs; +import com.google.common.collect.ImmutableSet; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; 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.ui.UIHelper; import fr.ird.observe.ui.storage.StorageStep; import fr.ird.observe.ui.storage.StorageUIHandler; @@ -139,6 +141,8 @@ public class StorageTabUIHandler { String id = null; if (model.getDbMode() == DbMode.USE_REMOTE) { id = DbMode.USE_REMOTE.name(); + } else if (model.getDbMode() == DbMode.USE_SERVER) { + id = DbMode.USE_SERVER.name(); } else { if (model.getCreationMode() != null) { id = model.getCreationMode().name(); @@ -300,6 +304,8 @@ public class StorageTabUIHandler { ui.IMPORT_REMOTE_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); } else if (c.equals(ui.USE_REMOTE)) { ui.USE_REMOTE_content.add(ui.remoteConfig, BorderLayout.CENTER); + } else if (c.equals(ui.USE_SERVER)) { + ui.USE_SERVER_content.add(ui.remoteConfig, BorderLayout.CENTER); } } } @@ -341,7 +347,7 @@ public class StorageTabUIHandler { text = t(text); break; case SUCCESS: - text = t(text, ui.model.getPgConfig().toString()); + text = t(text, ui.model.getDataSourceConfigDetail()); break; case FAILED: text = t(text, ui.model.getConnexionStatusError()); @@ -405,13 +411,12 @@ public class StorageTabUIHandler { JTree tree = ui.selectTree; helper.setUI(tree, false, null); - //FIXME -// tree.setModel(helper.createModel(ui, dataModel, source)); + + tree.setModel(helper.createModel(ui, dataModel, source)); DataSelectionTreeSelectionModel selectionModel = ui.getSelectionModel(); selectionModel.initUI(tree); - //FIXME -// selectionModel.setDataModel(dataModel); + selectionModel.setDataModel(dataModel); } } @@ -442,9 +447,8 @@ public class StorageTabUIHandler { ); // on recopie la configuration de la source d'import - //FIXME -// PGDataSourceConfig config = sourceModel.toPostgresStorageConfig("Import référentiel"); -// ui.getModel().getPgConfig().setImportConfig(config); + ObserveDataSourceConfiguration config = sourceModel.toPGStorageConfig("Import référentiel"); + ui.getModel().getCreationConfigurationDto().setImportReferentialDataSourceConfiguration(config); sourceModel.validate(StorageStep.CONFIG); @@ -459,9 +463,9 @@ public class StorageTabUIHandler { sourceModel ); -// // on recopie la configuration de la source d'import -// PGDataSourceConfig config = sourceModel.toPostgresStorageConfig("Import données"); -// ui.getModel().getPgConfig().setImportDataConfig(config); + // on recopie la configuration de la source d'import + ObserveDataSourceConfiguration config = sourceModel.toPGStorageConfig("Import référentiel"); + ui.getModel().getCreationConfigurationDto().setImportDataConfiguration(config, ImmutableSet.<String>of()); sourceModel.validate(StorageStep.CONFIG); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java index ba2333e..8ba4944 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DataSelectionTreeSelectionModel.java @@ -22,7 +22,9 @@ package fr.ird.observe.ui.tree; import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -66,8 +68,7 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop private static final long serialVersionUID = -1L; - //FIXME -// protected DataSelectionModel dataModel; + protected DataSelectionModel dataModel; /** * Paths that are currently selected. Will be null if nothing is currently @@ -126,21 +127,20 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop } } - //FIXME -// public void setDataModel(DataSelectionModel dataModel) { -// DataSelectionModel oldModel = this.dataModel; -// if (oldModel != null) { -// oldModel.removePropertyChangeListener(this); -// oldModel.destroy(); -// //TODO Should destroy all other listeners ? -// //TODO this means model is dead... -// } -// this.dataModel = dataModel; -// if (dataModel != null) { -// this.dataModel.addPropertyChangeListener(this); -// } -// updateModel(); -// } + public void setDataModel(DataSelectionModel dataModel) { + DataSelectionModel oldModel = this.dataModel; + if (oldModel != null) { + oldModel.removePropertyChangeListener(this); + oldModel.destroy(); + //TODO Should destroy all other listeners ? + //TODO this means model is dead... + } + this.dataModel = dataModel; + if (dataModel != null) { + this.dataModel.addPropertyChangeListener(this); + } + updateModel(); + } @Override public void setSelectionMode(int mode) { @@ -154,10 +154,9 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop @Override public void setSelectionPath(TreePath path) { - //FIXME -// if (dataModel == null) { -// return; -// } + if (dataModel == null) { + return; + } Object o = path.getLastPathComponent(); ObserveNode node = AbstractObserveTreeCellRenderer.getNode(o); if (node == null) { @@ -229,14 +228,12 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop if (log.isDebugEnabled()) { log.debug("Will remove all referentiels"); } - //FIXME -// dataModel.removeAllSelectedReferentiel(); + dataModel.removeAllSelectedReferentiel(); } else { if (log.isDebugEnabled()) { log.debug("Will add all referentiels"); } - //FIXME -// dataModel.addAllSelectedReferentiel(); + dataModel.addAllSelectedReferentiel(); } return; } @@ -247,14 +244,12 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop if (log.isDebugEnabled()) { log.debug("Will remove referentiel " + internalClass + " to model"); } - //FIXME -// dataModel.removeSelectedReferentiel(internalClass); + dataModel.removeSelectedReferentiel(internalClass); } else { if (log.isDebugEnabled()) { log.debug("Will add referentiel " + internalClass + " to model"); } - //FIXME -// dataModel.addSelectedReferentiel(internalClass); + dataModel.addSelectedReferentiel((Class<? extends ReferentialDto>) internalClass); } return; } @@ -318,19 +313,16 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop @Override public boolean isPathSelected(TreePath path) { - //FIXME -// if (dataModel == null) { -// return false; -// } + if (dataModel == null) { + return false; + } Object o = path.getLastPathComponent(); ObserveNode node = AbstractObserveTreeCellRenderer.getNode(o); if (node != null) { Class<?> internalClass = node.getInternalClass(); if (node.isReferentielNode() && node.isStringNode()) { - //FIXME -// boolean result = dataModel.isReferentielFull(); - boolean result = false; + boolean result = dataModel.isReferentielFull(); if (log.isTraceEnabled()) { log.trace("selectModel use full referentiel " + internalClass + " ? " + result); @@ -338,9 +330,7 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop return result; } if (node.isReferentielNode()) { - //FIXME -// boolean result = dataModel.isSelectedReferentiel(internalClass); - boolean result = false; + boolean result = dataModel.isSelectedReferentiel(internalClass); if (log.isTraceEnabled()) { log.trace("selectModel use referentiel " + internalClass + " ? " + result); @@ -371,13 +361,11 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop @Override public void clearSelection() { - //FIXME -// if (dataModel == null) { -// return; -// } + if (dataModel == null) { + return; + } selection = null; - //FIXME -// dataModel.removeAll(); + dataModel.removeAll(); } @Override @@ -618,15 +606,14 @@ public class DataSelectionTreeSelectionModel implements TreeSelectionModel, Prop @Override public void propertyChange(PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); - //FIXME -// if (DataSelectionModel.PROPERTY_SELECTED_DATA.equals(propertyName) || -// DataSelectionModel.PROPERTY_SELECTED_REFERENTIEL.equals(propertyName)) { -// // la selection a changee -// Object value = evt.getNewValue(); -// if (log.isDebugEnabled()) { -// log.debug("selection data changed " + value); -// } -// } + if (DataSelectionModel.PROPERTY_SELECTED_DATA.equals(propertyName) || + DataSelectionModel.PROPERTY_SELECTED_REFERENTIEL.equals(propertyName)) { + // la selection a changee + Object value = evt.getNewValue(); + if (log.isDebugEnabled()) { + log.debug("selection data changed " + value); + } + } updateModel(); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java index 9313336..a078a82 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import jaxx.runtime.swing.nav.NavDataProvider; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -37,7 +37,7 @@ public class ObserveDataProvider implements NavDataProvider { /** Logger */ static private final Log log = LogFactory.getLog(ObserveDataProvider.class); - protected DataSource dataSource; + protected ObserveSwingDataSource dataSource; //FIXME // protected DataService dataService; @@ -47,11 +47,11 @@ public class ObserveDataProvider implements NavDataProvider { private boolean creating; - public ObserveDataProvider(DataSource dataSource) { + public ObserveDataProvider(ObserveSwingDataSource dataSource) { this.dataSource = dataSource; } - public void setSource(DataSource dataSource) { + public void setSource(ObserveSwingDataSource dataSource) { this.dataSource = dataSource; } @@ -69,7 +69,7 @@ public class ObserveDataProvider implements NavDataProvider { return dataSource != null && dataSource.isOpen();// || selectionModel != null; } - public DataSource getDataSource() { + public ObserveSwingDataSource getDataSource() { return dataSource; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java index 036d4fd..c62b2d4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java @@ -23,14 +23,20 @@ package fr.ird.observe.ui.tree; */ import com.google.common.base.Preconditions; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.ProgramDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.*; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTree; +import javax.swing.MenuElement; +import javax.swing.SwingUtilities; import javax.swing.tree.TreePath; -import java.awt.*; +import java.awt.Point; +import java.awt.Rectangle; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; @@ -202,7 +208,7 @@ public class ObserveNavigationTreeShowPopupAction { moveTripPopup.removeAll(); // DataService dataService = treeHelper.getDataService(); - DataSource dataSource = treeHelper.getDataProvider().getDataSource(); + ObserveSwingDataSource dataSource = treeHelper.getDataProvider().getDataSource(); String tripId = selectedNode.getId(); 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 51850c4..510e8da 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 @@ -25,7 +25,7 @@ import com.google.common.base.Preconditions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.OpenableDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; @@ -158,7 +158,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { return model; } - public TreeModel createModel(DataSource source) { + public TreeModel createModel(ObserveSwingDataSource source) { setDataSource(source); @@ -185,7 +185,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { //FIXME // DataSelectionModel dataModel, Object dataModel, - DataSource source) { + ObserveSwingDataSource source) { setDataSource(source); context.setContextValue(dataModel); @@ -228,7 +228,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { * @param source la source de données * @param mainUI l'ui principale */ - public void loadNavigationUI(DataSource source, ObserveMainUI mainUI) { + public void loadNavigationUI(ObserveSwingDataSource source, ObserveMainUI mainUI) { ObserveNode.count = 0; @@ -542,7 +542,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { } - void setDataSource(DataSource source) { + void setDataSource(ObserveSwingDataSource source) { NavDataProvider provider = null; if (source != null) { provider = new ObserveDataProvider(source); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java index 682ab02..19afb2a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/AbstractNodeChildLoador.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import jaxx.runtime.swing.nav.NavDataProvider; @@ -44,9 +44,9 @@ public abstract class AbstractNodeChildLoador<O> extends NavTreeNodeChildLoador< super(beanType); } - protected DataSource getDataSource(NavDataProvider dataProvider) { + protected ObserveSwingDataSource getDataSource(NavDataProvider dataProvider) { ObserveDataProvider provider = (ObserveDataProvider) dataProvider; - DataSource result = provider.getDataSource(); + ObserveSwingDataSource result = provider.getDataSource(); return result; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java index 484ab92..40b27c8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.ui.tree.ActivityLonglineNode; import fr.ird.observe.ui.tree.ObserveDataProvider; @@ -50,7 +50,7 @@ public class ActivityLonglinesNodeChildLoador extends AbstractNodeChildLoador<Ac String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + ObserveSwingDataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); //FIXME // List<ActivityLonglineDto> data = getDataService().getActivityLonglineStubByTrip(dataSource, parentId); // return data; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java index 0f96c12..65c335d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.ActivitySeineObservedSystemDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; @@ -115,7 +115,7 @@ public class ActivitySeineNodeChildLoador extends AbstractNodeChildLoador<Floati String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + ObserveSwingDataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); //FIXME // List<FloatingObject> data = getDataService().getFloatinObjectStubByActivitySeine(dataSource, parentId); // return data; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java index 94a1d93..0eb1b9e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.ui.tree.ActivitySeineNode; import fr.ird.observe.ui.tree.ObserveDataProvider; @@ -49,7 +49,7 @@ public class ActivitySeinesNodeChildLoador extends AbstractNodeChildLoador<Activ String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + ObserveSwingDataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); //FIXME // List<ActivitySeineDto> data = getDataService().getActivitySeineStubByRoute(dataSource, parentId); // return data; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java index 9a88f0a..da2efb0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.TripLonglineNode; @@ -76,7 +76,7 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = getDataSource(dataProvider); + ObserveSwingDataSource dataSource = getDataSource(dataProvider); //FIXME // DataService service = getDataService(); // DataSelectionModel selectionModel = getSelectionModel(dataProvider); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java index d7d6dfc..46a0b57 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.TripSeineNode; @@ -73,7 +73,7 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<TripSei String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = getDataSource(dataProvider); + ObserveSwingDataSource dataSource = getDataSource(dataProvider); //FIXME // DataService service = getDataService(); // DataSelectionModel selectionModel = getSelectionModel(dataProvider); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java index cd29821..7f3e9be 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.constants.GearType; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.ui.tree.ObserveNode; @@ -71,7 +71,7 @@ public class RootNodeChildLoador extends AbstractNodeChildLoador<ProgramDto> { String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = getDataSource(dataProvider); + ObserveSwingDataSource dataSource = getDataSource(dataProvider); //FIXME // DataService service = getDataService(); // DataSelectionModel selectionModel = getSelectionModel(dataProvider); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java index 9acb6a8..ba4d6f3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; @@ -55,7 +55,7 @@ public class RoutesNodeChildLoador extends AbstractNodeChildLoador<RouteDto> { String parentId, NavDataProvider dataProvider) throws Exception { - DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + ObserveSwingDataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); //FIXME // List<RouteDto> data = getDataService().getRouteStubByTrip(dataSource, parentId); // return data; 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 aceeef5..dfd2c7e 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 @@ -595,6 +595,8 @@ 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.boolean.no=No +observe.boolean.yes=Yes 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 @@ -1136,6 +1138,7 @@ 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.configuration.description= observe.content.mode.create.tip= observe.content.mode.read.tip= observe.content.mode.update.tip= @@ -1784,6 +1787,10 @@ observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= observe.storage.dbMode.useServer= observe.storage.dbMode.useServer.description= +observe.storage.detail.local= +observe.storage.detail.remote= +observe.storage.detail.server= +observe.storage.error.badUrl= observe.storage.error.dbVersionMismatch= observe.storage.importExternalDump.config= observe.storage.importExternalDump.description= @@ -1808,11 +1815,20 @@ observe.storage.label.import.remote= observe.storage.label.local=Local database observe.storage.label.reference.import.db= observe.storage.label.remote= -observe.storage.label.rest= +observe.storage.label.server= observe.storage.label.synchro= observe.storage.label.synchro.incoming= observe.storage.label.synchro.referentiel= observe.storage.locale.db= +observe.storage.message.closed= +observe.storage.message.closing= +observe.storage.message.create= +observe.storage.message.created= +observe.storage.message.creating= +observe.storage.message.destroyed= +observe.storage.message.destroying= +observe.storage.message.opened= +observe.storage.message.opening= observe.storage.message.provider.detected= observe.storage.no.creationMode= observe.storage.no.creationMode.required= 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 ec010ce..082d33d 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 @@ -595,6 +595,8 @@ observe.baitsComposition.title= observe.basket.cant.delete.message= observe.basket.cant.delete.title= observe.basket.invalid.nextFloatline1Length= +observe.boolean.no= +observe.boolean.yes= observe.branchLine.cant.delete.message= observe.branchLine.cant.delete.title= observe.branchline.baitHaulingStatus= @@ -1136,6 +1138,7 @@ 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=Para activar la copia de seguridad de la configuración del origen de datos remota +observe.configuration.description= 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 @@ -1786,6 +1789,10 @@ observe.storage.dbMode.useRemote= observe.storage.dbMode.useRemote.description= observe.storage.dbMode.useServer= observe.storage.dbMode.useServer.description= +observe.storage.detail.local= +observe.storage.detail.remote= +observe.storage.detail.server= +observe.storage.error.badUrl= 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). @@ -1810,11 +1817,20 @@ 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=Base remota -observe.storage.label.rest= +observe.storage.label.server= 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.closed= +observe.storage.message.closing= +observe.storage.message.create= +observe.storage.message.created= +observe.storage.message.creating= +observe.storage.message.destroyed= +observe.storage.message.destroying= +observe.storage.message.opened= +observe.storage.message.opening= observe.storage.message.provider.detected= observe.storage.no.creationMode=No se ha seleccionado ningún modo de creación observe.storage.no.creationMode.required=No requerido. 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 d85dd79..7884eda 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 @@ -595,6 +595,8 @@ 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.boolean.no=Non +observe.boolean.yes=Oui 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 @@ -1136,6 +1138,7 @@ observe.config.ui.locale=Langue utilisée par l'application (fr_FR, en_GB ou 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.configuration.description= 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 @@ -1540,7 +1543,7 @@ 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.model.version=Version du modèle de données 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 @@ -1745,40 +1748,50 @@ 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= -observe.storage.connexionStatut.success.description= -observe.storage.connexionStatut.untested= -observe.storage.connexionStatut.untested.description= -observe.storage.creationMode.empty= -observe.storage.creationMode.empty.description= -observe.storage.creationMode.externalDump= -observe.storage.creationMode.externalDump.description= -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= -observe.storage.dataPolicy.readData.description= -observe.storage.dataPolicy.readReferentiel= -observe.storage.dataPolicy.readReferentiel.description= -observe.storage.dataPolicy.writeData= -observe.storage.dataPolicy.writeData.description= -observe.storage.dataPolicy.writeReferentiel= -observe.storage.dataPolicy.writeReferentiel.description= -observe.storage.dbMode.createLocal= -observe.storage.dbMode.createLocal.description= -observe.storage.dbMode.useLocal= -observe.storage.dbMode.useLocal.description= -observe.storage.dbMode.useRemote= -observe.storage.dbMode.useRemote.description= +observe.storage.connexionStatut.failed=Connexion échouée +observe.storage.connexionStatut.failed.description=La connexion a échouée pour la raison suivante \:\n %1$s +observe.storage.connexionStatut.success=Connexion réussie +observe.storage.connexionStatut.success.description=Information sur la connexion \:\n%1$s. +observe.storage.connexionStatut.untested=Connexion non validée +observe.storage.connexionStatut.untested.description=La connexion n'a jamais été validée, \nou a été modifiée depuis le dernier test de connexion. +observe.storage.creationMode.empty=Générer une base vide +observe.storage.creationMode.empty.description=Générer une nouvelle base locale vide.\nCette base n'aura pas de référentiel et il vous faudra ensuite faire un import de référentiel... +observe.storage.creationMode.externalDump=Charger une sauvegarde de base locale (*.sql.gz) +observe.storage.creationMode.externalDump.description=Créer une nouvelle base locale à partir\nd'une précédente sauvegarde de l'application +observe.storage.creationMode.importLocalStorage=Importer le référentiel d'une base locale +observe.storage.creationMode.importLocalStorage.description=Générer une nouvelle base locale et y importer le référentiel d'une autre base locale. +observe.storage.creationMode.importRemoteStorage=Importer le référentiel d'une base distante +observe.storage.creationMode.importRemoteStorage.description=Générer une nouvelle base locale et y importer le référentiel d'une autre base distante. +observe.storage.creationMode.importServerStorage=Importer le référentiel dun serveur distant +observe.storage.creationMode.importServerStorage.description=Générer une nouvelle base locale et y importer le référentiel d'un serveur distant. +observe.storage.creationMode.internalDump=Charger la base embarquée +observe.storage.creationMode.internalDump.description=Générer une nouvelle base locale à partir\nde la dernière version de la base embarquée. +observe.storage.dataPolicy.data=Données observateur +observe.storage.dataPolicy.no.wrights=Aucun droit. +observe.storage.dataPolicy.read=Lecture +observe.storage.dataPolicy.readData=Lecture données observateur +observe.storage.dataPolicy.readData.description=Autorisation de lire les données observateurs +observe.storage.dataPolicy.readReferentiel=Lecture référentiel +observe.storage.dataPolicy.readReferentiel.description=Autorisation de lire les données du référentiel +observe.storage.dataPolicy.readWrite=Lecture / Ecriture +observe.storage.dataPolicy.referentiel=Référentiel +observe.storage.dataPolicy.write=Ecriture +observe.storage.dataPolicy.writeData=Ecriture données observateur +observe.storage.dataPolicy.writeData.description=Autorisation d'écrire des données observateurs +observe.storage.dataPolicy.writeReferentiel=Ecriture référentiel +observe.storage.dataPolicy.writeReferentiel.description=Autorisation d'écrire des données dans le référentiel +observe.storage.dbMode.createLocal=Créer une base locale +observe.storage.dbMode.createLocal.description=Creer une base locale de type h2 +observe.storage.dbMode.useLocal=Utiliser une base locale +observe.storage.dbMode.useLocal.description=Utiliser une base locale de type h2 +observe.storage.dbMode.useRemote=Utiliser une base distante +observe.storage.dbMode.useRemote.description=Utiliser une base distante de type postgres observe.storage.dbMode.useServer=Utiliser un serveur distant observe.storage.dbMode.useServer.description=Utiliser un serveur distant +observe.storage.detail.local=- Base local \: %1s\n- Login \: %2s +observe.storage.detail.remote=- URL JDBC \: %1s\n- Login \: %2s\n- Mot de passe \: %3s \n- Mode SSL \: %4s +observe.storage.detail.server=- URL serveur \: %1s\n- Login \: %2s\n- Mot de passe \: %3s \n- Base de données \: %4s +observe.storage.error.badUrl=Erreur dans le format de l'URL %s 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). @@ -1803,11 +1816,19 @@ 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.server=Serveur Distant 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.closed=La connexion [%1$s] est fermé +observe.storage.message.closing=Fermeture de la connexion [%1$s] +observe.storage.message.created=La source de données [%1$s] est créée +observe.storage.message.creating=Création de la source de données [%1$s] +observe.storage.message.destroyed=La source de données [%1$s] est supprimée +observe.storage.message.destroying=Suppression de la source de données [%1$s] +observe.storage.message.opened=Le service de persistence [%1$s] est ouvert +observe.storage.message.opening=Ouverture de la connexion [%1$s] observe.storage.message.provider.detected= observe.storage.no.creationMode=Aucun mode de création sélectionné observe.storage.no.creationMode.required=Non requis. @@ -1829,8 +1850,8 @@ 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.import.server.data= -observe.storage.report.action.import.server.referentiel= +observe.storage.report.action.import.server.data=Import de données depuis un serveur distant \: +observe.storage.report.action.import.server.referentiel=Import du référentiel depuis un serveur distant \: 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 @@ -1859,7 +1880,7 @@ observe.storage.required.rw.on.data=Vous n'avez pas les droits suffisants pour e 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.server.dataBase=Base de données 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 @@ -1885,8 +1906,8 @@ 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.storage.useServerStorage.config=Configurer le serveur distant à utiliser +observe.storage.useServerStorage.description=Veuillez configurer votre connexion au serveur distant\nAvant de pouvoir poursuivre, vous devez valider la connexion. 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 diff --git a/observe-application-swing/src/main/resources/icons/action-db-server.png b/observe-application-swing/src/main/resources/icons/action-db-server.png new file mode 100644 index 0000000..68f21d3 Binary files /dev/null and b/observe-application-swing/src/main/resources/icons/action-db-server.png differ diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java index 2d709d1..992c4c8 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java @@ -23,17 +23,17 @@ package fr.ird.observe.application.web.controller.v1; */ import fr.ird.observe.application.web.controller.ObserveWebMotionController; -import org.debux.webmotion.server.render.Render; +import fr.ird.observe.services.service.PingService; /** * Created on 06/09/15. * * @author Tony Chemit - chemit@codelutin.com */ -public class PingServiceController extends ObserveWebMotionController { +public class PingServiceController extends ObserveWebMotionController implements PingService { - public Render ping() { - return renderContent("pong", "text/plain"); + public String ping() { + return PING_RESULT; } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java index a6e799e..87c184d 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java @@ -172,7 +172,7 @@ public class ObserveWebSecurityApplicationContext implements Closeable { if (dataSourceConfiguration == null) { // unknown userLogin - database - throw new UnknownObserveWebUserForDatabaseException(userLogin, databaseName); + throw new UnknownObserveWebUserForDatabaseException(databaseName, userLogin); } if (log.isInfoEnabled()) { diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java index c0a6936..282318b 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/PingService.java @@ -32,6 +32,8 @@ import fr.ird.observe.services.spi.NoDataAccess; */ public interface PingService extends ObserveService { + String PING_RESULT = "Pong"; + @NoDataAccess String ping(); diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java index a2f48c4..383c93e 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/ObserveDtoGsonSupplier.java @@ -31,6 +31,7 @@ import com.google.gson.GsonBuilder; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import org.nuiton.util.version.Version; import java.sql.Timestamp; import java.util.Date; @@ -94,6 +95,7 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(ReferenceDto.class, new ReferenceDtoAdapter()); gsonBuilder.registerTypeAdapter(ReferentialReferenceDto.class, new ReferentialReferenceDtoAdapter()); gsonBuilder.registerTypeAdapter(ReportVariable.class, new ReportVariableAdapter()); + gsonBuilder.registerTypeAdapter(Version.class, new VersionAdapter()); gsonBuilder.enableComplexMapKeySerialization(); } return gsonBuilder; diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java new file mode 100644 index 0000000..15c576d --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/gson/VersionAdapter.java @@ -0,0 +1,31 @@ +package fr.ird.observe.services.dto.gson; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; + +import java.lang.reflect.Type; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class VersionAdapter implements JsonSerializer<Version>, JsonDeserializer<Version> { + + @Override + public Version deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + + String versionStr = json.getAsString(); + + return Versions.valueOf(versionStr); + } + + @Override + public JsonElement serialize(Version src, Type typeOfSrc, JsonSerializationContext context) { + return context.serialize(src.getVersion()); + } +} diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java b/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java index c71d292..cf61796 100644 --- a/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java @@ -137,7 +137,7 @@ public class TestMethodResource implements TestRule { try { String ping = service.ping(); - if (!"ping".equals(ping)) { + if (!PingService.PING_RESULT.equals(ping)) { serverExist = false; } } catch (Exception e) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.