This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 433387f1e1248dcba5094d49849b5e01b70405fd Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Dec 20 15:03:46 2016 +0100 Ajout écran de gestion des connexions (Refs #8555) --- .../src/main/config/ObserveSwingApplication.ini | 4 +- .../ObserveSwingApplicationConfig.java | 36 ++- .../swing/decoration/DecoratorService.java | 4 + .../application/swing/ui/ObserveMainUI.jaxx | 5 + .../application/swing/ui/ObserveMainUI.jcss | 4 + .../application/swing/ui/ObserveUIMode.java | 2 + .../ird/observe/application/swing/ui/UIHelper.java | 7 + .../menu/config/ShowDataSourcePresetsAction.java | 36 +++ .../SaveCurrentRemoteConfigurationUIAction.java | 4 +- .../SaveCurrentServerConfigurationUIAction.java | 4 +- .../storage/UseRemoteConfigurationUIAction.java | 2 +- .../storage/UseServerConfigurationUIAction.java | 2 +- .../swing/ui/storage/presets/RemotePresetsUI.jaxx | 139 +++++++++ .../swing/ui/storage/presets/RemotePresetsUI.jcss | 115 ++++++++ .../ui/storage/presets/RemotePresetsUIHandler.java | 314 +++++++++++++++++++++ .../ui/storage/presets/RemotePresetsUIModel.java | 78 +++++ .../swing/ui/storage/tabs/ConfigUIHandler.java | 4 +- .../i18n/application-swing_en_GB.properties | 8 + .../i18n/application-swing_es_ES.properties | 8 + .../i18n/application-swing_fr_FR.properties | 8 + .../presets}/RemoteDataSourceConfiguration.java | 23 +- .../presets}/ServerDataSourceConfiguration.java | 23 +- 22 files changed, 816 insertions(+), 14 deletions(-) diff --git a/application-swing-configuration/src/main/config/ObserveSwingApplication.ini b/application-swing-configuration/src/main/config/ObserveSwingApplication.ini index c9f9e77..6ef19d2 100644 --- a/application-swing-configuration/src/main/config/ObserveSwingApplication.ini +++ b/application-swing-configuration/src/main/config/ObserveSwingApplication.ini @@ -155,12 +155,12 @@ defaultValue = 9093 [option remoteDataSourceConfigurations] description = observe.config.remoteDataSourceConfigurations.description key = remoteDataSourceConfigurations -type = fr.ird.observe.application.swing.configuration.RemoteDataSourceConfiguration[] +type = fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration[] [option serverDataSourceConfigurations] description = observe.config.serverDataSourceConfigurations.description key = serverDataSourceConfigurations -type = fr.ird.observe.application.swing.configuration.ServerDataSourceConfiguration[] +type = fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration[] [option obstunaCanMigrate] description = observe.config.pg.can.migrate.description diff --git a/application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/ObserveSwingApplicationConfig.java b/application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/ObserveSwingApplicationConfig.java index c6ed6cd..e29ecc6 100644 --- a/application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/ObserveSwingApplicationConfig.java +++ b/application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/ObserveSwingApplicationConfig.java @@ -27,6 +27,8 @@ import com.google.common.collect.Sets; import com.google.gson.Gson; import fr.ird.observe.application.swing.configuration.constants.CreationMode; import fr.ird.observe.application.swing.configuration.constants.DbMode; +import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -392,13 +394,28 @@ public class ObserveSwingApplicationConfig extends GeneratedObserveSwingApplicat return option == null ? new RemoteDataSourceConfiguration[0] : new Gson().fromJson(option, RemoteDataSourceConfiguration[].class); } - public void addRemoteDataSourceConfigurations(RemoteDataSourceConfiguration remoteDataSourceConfiguration) { + public void addRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) { List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations())); remoteDataSourceConfigurations.add(remoteDataSourceConfiguration); setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()])); saveForUser(); } + public void updateRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) { + List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations())); + remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration); + remoteDataSourceConfigurations.add(remoteDataSourceConfiguration); + setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()])); + saveForUser(); + } + + public void removeRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) { + List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations())); + remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration); + setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()])); + saveForUser(); + } + @Override public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] remoteDataSourceConfigurations) { String option = new Gson().toJson(remoteDataSourceConfigurations); @@ -411,13 +428,28 @@ public class ObserveSwingApplicationConfig extends GeneratedObserveSwingApplicat return option == null ? new ServerDataSourceConfiguration[0] : new Gson().fromJson(option, ServerDataSourceConfiguration[].class); } - public void addServerDataSourceConfigurations(ServerDataSourceConfiguration remoteDataSourceConfiguration) { + public void addServerDataSourceConfiguration(ServerDataSourceConfiguration remoteDataSourceConfiguration) { + List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations())); + remoteDataSourceConfigurations.add(remoteDataSourceConfiguration); + setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()])); + saveForUser(); + } + + public void updateServerDataSourceConfiguration(ServerDataSourceConfiguration remoteDataSourceConfiguration) { List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations())); + remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration); remoteDataSourceConfigurations.add(remoteDataSourceConfiguration); setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()])); saveForUser(); } + public void removeServerDataSourceConfiguration(ServerDataSourceConfiguration serverDataSourceConfiguration) { + List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations())); + serverDataSourceConfigurations.remove(serverDataSourceConfiguration); + setServerDataSourceConfigurations(serverDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[serverDataSourceConfigurations.size()])); + saveForUser(); + } + @Override public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] serverDataSourceConfigurations) { String option = new Gson().toJson(serverDataSourceConfigurations); diff --git a/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java b/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java index 1b55aa4..0815119 100644 --- a/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java +++ b/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java @@ -49,6 +49,8 @@ import fr.ird.observe.services.dto.longline.SetLonglineDto; import fr.ird.observe.services.dto.longline.TdrDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.longline.TripLonglineGearUseDto; +import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; import fr.ird.observe.services.dto.referential.CountryDto; import fr.ird.observe.services.dto.referential.FpaZoneDto; import fr.ird.observe.services.dto.referential.GearCaracteristicDto; @@ -434,6 +436,8 @@ public class DecoratorService extends DecoratorProvider { " "); registerObserveDecorator(SectionTemplate.class, "${id}$s##${floatlineLengths}$s", " "); + registerObserveDecorator(RemoteDataSourceConfiguration.class, "${name}$s", " "); + registerObserveDecorator(ServerDataSourceConfiguration.class, "${name}$s", " "); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx index 833c73a..3c295e2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx @@ -50,6 +50,7 @@ fr.ird.observe.application.swing.ui.actions.menu.config.ReloadDefaultConfigurationAction fr.ird.observe.application.swing.ui.actions.menu.config.ReloadResourcesAction fr.ird.observe.application.swing.ui.actions.menu.config.ShowConfigAction + fr.ird.observe.application.swing.ui.actions.menu.config.ShowDataSourcePresetsAction fr.ird.observe.application.swing.ui.actions.menu.file.CloseApplicationAction fr.ird.observe.application.swing.ui.actions.menu.file.ReloadApplicationAction fr.ird.observe.application.swing.ui.actions.menu.file.ToFullScreenAction @@ -207,6 +208,7 @@ protected void finalize() throws Throwable { </JMenu> <JSeparator/> <JMenuItem id='menuConfigurationConfiguration'/> + <JMenuItem id='menuConfigurationDataSourcePresets'/> <JMenuItem id='menuConfigurationReloadDefault'/> <JMenuItem id='menuConfigurationReloadResources'/> </JMenu> @@ -336,6 +338,9 @@ protected void finalize() throws Throwable { </JXTitledPanel> + <JXTitledPanel id='dataSourcePresets' constraints='ObserveUIMode.PRESETS.name()'> + + </JXTitledPanel> </JPanel> <!-- status message bar --> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss index 452ddb9..3387d95 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss @@ -81,6 +81,10 @@ JSplitPane { _observeAction:{ShowConfigAction.ACTION_NAME}; } +#menuConfigurationDataSourcePresets { + _observeAction:{ShowDataSourcePresetsAction.ACTION_NAME}; +} + #menuConfiguration { text: "observe.menu.configuration"; toolTipText: "observe.menu.configuration.tip"; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUIMode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUIMode.java index a038682..7cf5f4e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUIMode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUIMode.java @@ -37,6 +37,8 @@ public enum ObserveUIMode { /** Pour affiher le mode server */ SERVER, + /** Gestion des connections **/ + PRESETS, /** Opérations complexes */ SYNCHRO diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/UIHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/UIHelper.java index 17406bb..3e9763f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/UIHelper.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/UIHelper.java @@ -170,6 +170,13 @@ public class UIHelper extends SwingUtil { } } + public static void displayInfo(String title, String text) { + + ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); + JOptionPane.showMessageDialog(ui, text, title, JOptionPane.INFORMATION_MESSAGE); + + } + public static void displayWarning(String title, String text) { ObserveMainUI ui = ObserveSwingApplicationContext.get().getMainUI(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ShowDataSourcePresetsAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ShowDataSourcePresetsAction.java new file mode 100644 index 0000000..d03a041 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ShowDataSourcePresetsAction.java @@ -0,0 +1,36 @@ +package fr.ird.observe.application.swing.ui.actions.menu.config; + +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.ObserveUIMode; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; +import fr.ird.observe.application.swing.ui.storage.presets.RemotePresetsUI; +import org.jdesktop.swingx.JXTitledPanel; + +import java.awt.event.ActionEvent; + +/** + * Created on 20/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class ShowDataSourcePresetsAction extends AbstractUIAction { + + public static final String ACTION_NAME = ShowDataSourcePresetsAction.class.getName(); + + public ShowDataSourcePresetsAction(ObserveMainUI mainUI) { + super(mainUI, ACTION_NAME, "Gérer les connections", "Gérer les connections", "db-remote", null); + putValue(MNEMONIC_KEY, (int) 'G'); + } + + @Override + public void actionPerformed(ActionEvent e) { + + JXTitledPanel panel = getMainUI().getDataSourcePresets(); + panel.removeAll(); + panel.add(new RemotePresetsUI()); + + getMainUI().getModel().setMode(ObserveUIMode.PRESETS); + + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/SaveCurrentRemoteConfigurationUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/SaveCurrentRemoteConfigurationUIAction.java index 12b9396..540654d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/SaveCurrentRemoteConfigurationUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/SaveCurrentRemoteConfigurationUIAction.java @@ -1,6 +1,6 @@ package fr.ird.observe.application.swing.ui.actions.storage; -import fr.ird.observe.application.swing.configuration.RemoteDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; @@ -94,7 +94,7 @@ public class SaveCurrentRemoteConfigurationUIAction extends AbstractUIAction { configuration.setLogin(model.getRemoteLogin()); configuration.setPassword(new String(model.getRemotePassword())); configuration.setUseSsl(model.isUseSsl()); - getMainUI().getConfig().addRemoteDataSourceConfigurations(configuration); + getMainUI().getConfig().addRemoteDataSourceConfiguration(configuration); configUI.getHandler().addRemoteConfiguration(configuration); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/SaveCurrentServerConfigurationUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/SaveCurrentServerConfigurationUIAction.java index 10a741d..1d73901 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/SaveCurrentServerConfigurationUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/SaveCurrentServerConfigurationUIAction.java @@ -1,6 +1,6 @@ package fr.ird.observe.application.swing.ui.actions.storage; -import fr.ird.observe.application.swing.configuration.ServerDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; @@ -94,7 +94,7 @@ public class SaveCurrentServerConfigurationUIAction extends AbstractUIAction { configuration.setLogin(model.getRemoteLogin()); configuration.setPassword(new String(model.getRemotePassword())); configuration.setDatabaseName(model.getServerDatabase()); - getMainUI().getConfig().addServerDataSourceConfigurations(configuration); + getMainUI().getConfig().addServerDataSourceConfiguration(configuration); configUI.getHandler().addServerConfiguration(configuration); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/UseRemoteConfigurationUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/UseRemoteConfigurationUIAction.java index 954e73e..ee6a0f0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/UseRemoteConfigurationUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/UseRemoteConfigurationUIAction.java @@ -1,6 +1,6 @@ package fr.ird.observe.application.swing.ui.actions.storage; -import fr.ird.observe.application.swing.configuration.RemoteDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; import fr.ird.observe.application.swing.db.constants.ConnexionStatus; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/UseServerConfigurationUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/UseServerConfigurationUIAction.java index ac29458..d07dcda 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/UseServerConfigurationUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/storage/UseServerConfigurationUIAction.java @@ -1,6 +1,6 @@ package fr.ird.observe.application.swing.ui.actions.storage; -import fr.ird.observe.application.swing.configuration.ServerDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; import fr.ird.observe.application.swing.db.constants.ConnexionStatus; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUI.jaxx new file mode 100644 index 0000000..a6209d0 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUI.jaxx @@ -0,0 +1,139 @@ +<JPanel layout="{new BorderLayout()}"> + + <import> + fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration + fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration + + jaxx.runtime.swing.editor.bean.BeanComboBox + + </import> + + <RemotePresetsUIModel id="model" initializer="getContextValue(RemotePresetsUIModel.class)"/> + + <JTabbedPane id='tabs' constraints='BorderLayout.CENTER'> + <tab id='remoteTab' title="observe.storage.remote.presets.title"> + <JPanel id="remotePanel" layout="{new BorderLayout()}"> + <BeanComboBox id='remoteConfigurations' constructorParams='this' genericType='RemoteDataSourceConfiguration' + constraints='BorderLayout.NORTH'/> + <JLabel id="noRemoteSelected" constraints='BorderLayout.CENTER'/> + <Table id="remoteForm" constraints='BorderLayout.SOUTH' fill="both"> + <row> + <cell anchor='west'> + <JLabel text='observe.storage.remote.name'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="remoteName" onKeyReleased="model.setRemoteModified(true);"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel text='observe.storage.remote.url'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="remoteUrl" onKeyReleased="model.setRemoteModified(true);"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel text='observe.storage.remote.login'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="remoteLogin" onKeyReleased="model.setRemoteModified(true);"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel text='observe.storage.remote.password'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="remotePassword" onKeyReleased="model.setRemoteModified(true);"/> + </cell> + </row> + <row> + <cell columns='2'> + <JCheckBox id="remoteUseSsl" onActionPerformed="model.setRemoteModified(true);"/> + </cell> + </row> + + <!-- tester la connexion --> + <row> + <cell columns='2'> + <JPanel layout="{new GridLayout(1, 0)}"> + <JButton id="saveRemoteAction" onActionPerformed='handler.saveRemote()'/> + <JButton id="deleteRemoteAction" onActionPerformed='handler.deleteRemote()'/> + <JButton id="testRemoteAction" onActionPerformed='handler.testRemote()'/> + </JPanel> + </cell> + </row> + </Table> + </JPanel> + </tab> + <tab id='serverTab' title="observe.storage.server.presets.title"> + + <JPanel id="serverPanel" layout="{new BorderLayout()}"> + <BeanComboBox id='serverConfigurations' constructorParams='this' genericType='ServerDataSourceConfiguration' + constraints='BorderLayout.NORTH'/> + <JLabel id="noServerSelected" constraints='BorderLayout.CENTER'/> + + <Table id="serverForm" constraints='BorderLayout.SOUTH' fill="both"> + <row> + <cell anchor='west'> + <JLabel text='observe.storage.remote.name'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="serverName" onKeyReleased="model.setServerModified(true);"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel text='observe.storage.remote.url'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="serverUrl" onKeyReleased="model.setServerModified(true);"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel text='observe.storage.remote.login'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="serverLogin" onKeyReleased="model.setServerModified(true);"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel text='observe.storage.remote.password'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="serverPassword" onKeyReleased="model.setServerModified(true);"/> + </cell> + </row> + <row> + <cell anchor='west'> + <JLabel id="serverDataBaseLabel" text='observe.storage.server.dataBase'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="serverDataBase" onKeyReleased="model.setServerModified(true);"/> + </cell> + </row> + + <!-- tester la connexion --> + <row> + <cell columns='2'> + <JPanel layout="{new GridLayout(1, 0)}"> + <JButton id="saveServerAction" onActionPerformed='handler.saveServer()'/> + <JButton id="deleteServerAction" onActionPerformed='handler.deleteServer()'/> + <JButton id="testServerAction" onActionPerformed='handler.testServer()'/> + </JPanel> + </cell> + </row> + </Table> + </JPanel> + </tab> + </JTabbedPane> + + <JPanel constraints='BorderLayout.SOUTH' layout="{new GridLayout(1, 0)}"> + <JButton id="quitAction" onActionPerformed='handler.quit()'/> + </JPanel> + +</JPanel> \ No newline at end of file diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUI.jcss new file mode 100644 index 0000000..a7a9f58 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUI.jcss @@ -0,0 +1,115 @@ +#remoteConfigurations { + selectedItem: {model.getRemoteDataSourceConfiguration()}; +} + +#noRemoteSelected { + visible: true; + text:"observe.storage.presets.no.selected"; + horizontalAlignment: center; +} + +#remoteForm { + visible: false; +} + +#remoteName { + text:{SwingUtil.getStringValue(model.getRemoteDataSourceConfiguration().getName())}; +} + +#remoteUrl { + text:{SwingUtil.getStringValue(model.getRemoteDataSourceConfiguration().getUrl())}; +} + +#remoteLogin { + text:{SwingUtil.getStringValue(model.getRemoteDataSourceConfiguration().getLogin())}; +} + +#remotePassword { + text:{SwingUtil.getStringValue(model.getRemoteDataSourceConfiguration().getPassword())}; +} + +#remoteUseSsl { + text:"observe.storage.remote.useSll"; + selected:{model.getRemoteDataSourceConfiguration().isUseSsl()}; +} + +#serverConfigurations { + selectedItem: {model.getServerDataSourceConfiguration()}; +} + +#noServerSelected { + visible: true; + text:"observe.storage.presets.no.selected"; + horizontalAlignment: center; +} + +#serverForm { + visible: false; +} + +#serverName { + text:{SwingUtil.getStringValue(model.getServerDataSourceConfiguration().getName())}; +} + +#serverUrl { + text:{SwingUtil.getStringValue(model.getServerDataSourceConfiguration().getUrl())}; +} + +#serverLogin { + text:{SwingUtil.getStringValue(model.getServerDataSourceConfiguration().getLogin())}; +} + +#serverPassword { + text:{SwingUtil.getStringValue(model.getServerDataSourceConfiguration().getPassword())}; +} + +#serverDataBase { + text:{SwingUtil.getStringValue(model.getServerDataSourceConfiguration().getDatabaseName())}; +} + +#saveRemoteAction { + text:"observe.action.save"; + actionIcon:"save"; + mnemonic:S; + enabled:{model.isRemoteModified()}; +} + +#deleteRemoteAction { + text:"observe.action.delete"; + actionIcon:"delete"; + mnemonic:S; +} + +#testRemoteAction { + text:"observe.action.test.remote"; + toolTipText:"observe.action.test.remote.tip"; + actionIcon:"connect_creating"; + mnemonic:V; +} + +#saveServerAction { + text:"observe.action.save"; + actionIcon:"save"; + mnemonic:S; + enabled:{model.isServerModified()}; +} + +#deleteServerAction { + text:"observe.action.delete"; + actionIcon:"delete"; + mnemonic:S; +} + +#testServerAction { + text:"observe.action.test.remote"; + toolTipText:"observe.action.test.remote.tip"; + actionIcon:"connect_creating"; + mnemonic:V; +} + +#quitAction { + text:"observe.action.quit"; + toolTipText:"observe.action.quit.tip"; + actionIcon:"exit"; + mnemonic:Q; +} \ No newline at end of file diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUIHandler.java new file mode 100644 index 0000000..891a06b --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUIHandler.java @@ -0,0 +1,314 @@ +package fr.ird.observe.application.swing.ui.storage.presets; + +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.application.swing.db.ObserveSwingDataSource; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.ObserveUIMode; +import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.services.configuration.ObserveDataSourceInformation; +import fr.ird.observe.services.configuration.rest.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; +import fr.ird.observe.services.security.BadObserveWebUserPasswordException; +import fr.ird.observe.services.security.UnknownObserveWebUserException; +import fr.ird.observe.services.security.UnknownObserveWebUserForDatabaseException; +import fr.ird.observe.services.security.UserLoginNotFoundException; +import fr.ird.observe.services.security.UserPasswordNotFoundException; +import fr.ird.observe.services.service.PingService; +import jaxx.runtime.spi.UIHandler; +import jaxx.runtime.swing.editor.bean.BeanComboBox; +import org.nuiton.decorator.Decorator; +import org.nuiton.decorator.JXPathDecorator; +import org.nuiton.version.Version; + +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import java.awt.BorderLayout; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 20/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class RemotePresetsUIHandler implements UIHandler<RemotePresetsUI> { + + private RemotePresetsUI ui; + + @Override + public void beforeInit(RemotePresetsUI ui) { + this.ui = ui; + RemotePresetsUIModel model = new RemotePresetsUIModel(); + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); + List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(Arrays.asList(config.getServerDataSourceConfigurations())); + model.setServerDataSourceConfigurations(serverDataSourceConfigurations); + List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(config.getRemoteDataSourceConfigurations())); + model.setRemoteDataSourceConfigurations(remoteDataSourceConfigurations); + ui.setContextValue(model); + } + + @Override + public void afterInit(RemotePresetsUI ui) { + + Decorator<RemoteDataSourceConfiguration> remoteDecorator = ObserveSwingApplicationContext.get().getDecoratorService().getDecoratorByType(RemoteDataSourceConfiguration.class); + ui.getRemoteConfigurations().init((JXPathDecorator<RemoteDataSourceConfiguration>) remoteDecorator, ui.getModel().getRemoteDataSourceConfigurations()); + + Decorator<ServerDataSourceConfiguration> serverDecorator = ObserveSwingApplicationContext.get().getDecoratorService().getDecoratorByType(ServerDataSourceConfiguration.class); + ui.getServerConfigurations().init((JXPathDecorator<ServerDataSourceConfiguration>) serverDecorator, ui.getModel().getServerDataSourceConfigurations()); + + ui.getModel().addPropertyChangeListener("remoteDataSourceConfigurations", evt -> ui.getRemoteConfigurations().setData((List<RemoteDataSourceConfiguration>) evt.getNewValue())); + ui.getModel().addPropertyChangeListener("serverDataSourceConfigurations", evt -> ui.getServerConfigurations().setData((List<ServerDataSourceConfiguration>) evt.getNewValue())); + + ui.getServerConfigurations().addPropertyChangeListener(BeanComboBox.PROPERTY_SELECTED_ITEM, evt -> { + + ServerDataSourceConfiguration oldValue = (ServerDataSourceConfiguration) evt.getOldValue(); + ui.getModel().setServerDataSourceConfiguration((ServerDataSourceConfiguration) evt.getNewValue()); + + if (ui.getModel().getServerDataSourceConfiguration() == null) { + ui.getServerPanel().remove(ui.getServerForm()); + ui.getServerPanel().add(ui.getNoServerSelected(), BorderLayout.CENTER); + } else { + if (oldValue == null) { + ui.getServerForm().setVisible(true); + ui.getServerPanel().remove(ui.getNoServerSelected()); + ui.getServerPanel().add(ui.getServerForm(), BorderLayout.CENTER); + } + ui.getModel().setServerModified(false); + } + SwingUtilities.invokeLater(ui::repaint); + }); + ui.getRemoteConfigurations().addPropertyChangeListener(BeanComboBox.PROPERTY_SELECTED_ITEM, evt -> { + + RemoteDataSourceConfiguration oldValue = (RemoteDataSourceConfiguration) evt.getOldValue(); + ui.getModel().setRemoteDataSourceConfiguration((RemoteDataSourceConfiguration) evt.getNewValue()); + + if (ui.getModel().getRemoteDataSourceConfiguration() == null) { + ui.getRemotePanel().remove(ui.getRemoteForm()); + ui.getRemotePanel().add(ui.getNoRemoteSelected(), BorderLayout.CENTER); + } else { + if (oldValue == null) { + ui.getRemoteForm().setVisible(true); + ui.getRemotePanel().remove(ui.getNoRemoteSelected()); + ui.getRemotePanel().add(ui.getRemoteForm(), BorderLayout.CENTER); + } + ui.getModel().setRemoteModified(false); + } + SwingUtilities.invokeLater(ui::repaint); + }); + } + + public void testRemote() { + + ObserveDataSourceConfigurationTopiaPG config = new ObserveDataSourceConfigurationTopiaPG(); + config.setJdbcUrl(ui.getRemoteUrl().getText().trim()); + config.setUsername(ui.getRemoteLogin().getText().trim()); + config.setPassword(ui.getRemotePassword().getText().trim().toCharArray()); + config.setUseSsl(ui.getRemoteUseSsl().isSelected()); + + String connexionStatusError = null; + + Version modelVersion = ObserveSwingApplicationContext.get().getConfig().getModelVersion(); + ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(config); + try { + + ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(); + + Version versionDataSource = dataSourceInformation.getVersion(); + + // en mise a jour de la base on ne test pas la version + if (!modelVersion.equals(versionDataSource)) { + + connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, modelVersion); + } + + } catch (UnknownObserveWebUserException e) { + connexionStatusError = t("observe.storage.error.rest.user.unknown", e.getUserLogin()); + } catch (BadObserveWebUserPasswordException e) { + connexionStatusError = t("observe.storage.error.rest.password.bad", e.getUserLogin()); + } catch (UnknownObserveWebUserForDatabaseException e) { + connexionStatusError = t("observe.storage.error.rest.database.unknownForUser", e.getDatabaseName(), e.getRole()); + } catch (UserLoginNotFoundException e) { + connexionStatusError = t("observe.storage.error.rest.user.required"); + } catch (UserPasswordNotFoundException e) { + connexionStatusError = t("observe.storage.error.rest.pasword.required"); + } catch (Exception e) { + connexionStatusError = e.getMessage(); + if (connexionStatusError == null || connexionStatusError.isEmpty()) { + connexionStatusError = e.getClass().getName(); + } + } finally { + if (dataSource.isOpen()) { + dataSource.close(); + } + } + + if (connexionStatusError == null) { + UIHelper.displayInfo("Test de connexion", "Le connexion a été établie avec succès."); + } else { + UIHelper.displayWarning("Test de connexion", "Le test de connexion a échoué :\n" + connexionStatusError); + } + } + + public void testServer() { + + String connexionStatusError = null; + ObserveDataSourceConfigurationRest config = new ObserveDataSourceConfigurationRest(); + String url = ui.getServerUrl().getText().trim(); + try { + config.setServerUrl(new URL(url)); + } catch (MalformedURLException e) { + connexionStatusError = t("observe.storage.error.badUrl", url); + } + config.setLogin(ui.getServerLogin().getText().trim()); + config.setPassword(ui.getServerPassword().getText().trim().toCharArray()); + String databaseName = ui.getServerDataBase().getText().trim(); + config.setOptionalDatabaseName(databaseName.isEmpty() ? null : databaseName); + + Version modelVersion = ObserveSwingApplicationContext.get().getConfig().getModelVersion(); + ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(config); + try { + + PingService pingService = dataSource.newPingService(); + + Version modelServerVersion = pingService.ping(); + + if (!modelVersion.equals(modelServerVersion)) { + + connexionStatusError = t("observe.storage.error.serverVersionMismatch", modelServerVersion, modelVersion); + + } + + if (connexionStatusError == null) { + + ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(); + + Version versionDataSource = dataSourceInformation.getVersion(); + + // en mise a jour de la base on ne test pas la version + if (!modelVersion.equals(versionDataSource)) { + + connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, modelVersion); + } + } + + } catch (UnknownObserveWebUserException e) { + connexionStatusError = t("observe.storage.error.rest.user.unknown", e.getUserLogin()); + } catch (BadObserveWebUserPasswordException e) { + connexionStatusError = t("observe.storage.error.rest.password.bad", e.getUserLogin()); + } catch (UnknownObserveWebUserForDatabaseException e) { + connexionStatusError = t("observe.storage.error.rest.database.unknownForUser", e.getDatabaseName(), e.getRole()); + } catch (UserLoginNotFoundException e) { + connexionStatusError = t("observe.storage.error.rest.user.required"); + } catch (UserPasswordNotFoundException e) { + connexionStatusError = t("observe.storage.error.rest.pasword.required"); + } catch (Exception e) { + connexionStatusError = e.getMessage(); + if (connexionStatusError == null || connexionStatusError.isEmpty()) { + connexionStatusError = e.getClass().getName(); + } + } finally { + if (dataSource.isOpen()) { + dataSource.close(); + } + } + + if (connexionStatusError == null) { + UIHelper.displayInfo("Test de connexion", "Le connexion a été établie avec succès."); + } else { + UIHelper.displayWarning("Test de connexion", "Le test de connexion a échoué :\n" + connexionStatusError); + } + } + + public void saveRemote() { + + RemoteDataSourceConfiguration remoteDataSourceConfiguration = ui.getModel().getRemoteDataSourceConfiguration(); + + remoteDataSourceConfiguration.setName(ui.getRemoteName().getText().trim()); + remoteDataSourceConfiguration.setUrl(ui.getRemoteUrl().getText().trim()); + remoteDataSourceConfiguration.setLogin(ui.getRemoteLogin().getText().trim()); + remoteDataSourceConfiguration.setPassword(ui.getRemotePassword().getText().trim()); + remoteDataSourceConfiguration.setUseSsl(ui.getRemoteUseSsl().isSelected()); + + ObserveSwingApplicationContext.get().getConfig().updateRemoteDataSourceConfiguration(remoteDataSourceConfiguration); + + ui.getModel().setRemoteDataSourceConfiguration(null); + ui.getModel().setRemoteDataSourceConfiguration(remoteDataSourceConfiguration); + ui.getModel().setRemoteModified(false); + + } + + public void deleteRemote() { + + int response = UIHelper.askUser(t("observe.storage.presets.delete.title"), + t("observe.storage.presets.delete.message"), + JOptionPane.QUESTION_MESSAGE, + new Object[]{t("observe.action.delete"), t("observe.action.cancel")}, + 0); + boolean delete = response == 0; + + if (delete) { + RemoteDataSourceConfiguration remoteDataSourceConfiguration = ui.getModel().getRemoteDataSourceConfiguration(); + List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(ui.getModel().getRemoteDataSourceConfigurations()); + remoteDataSourceConfigurations.remove(remoteDataSourceConfiguration); + ui.getModel().setRemoteDataSourceConfigurations(remoteDataSourceConfigurations); + ObserveSwingApplicationContext.get().getConfig().removeRemoteDataSourceConfiguration(remoteDataSourceConfiguration); + ui.getModel().setRemoteDataSourceConfiguration(null); + } + } + + public void saveServer() { + + ServerDataSourceConfiguration serverDataSourceConfiguration = ui.getModel().getServerDataSourceConfiguration(); + + serverDataSourceConfiguration.setName(ui.getServerName().getText().trim()); + serverDataSourceConfiguration.setUrl(ui.getServerUrl().getText().trim()); + serverDataSourceConfiguration.setLogin(ui.getServerLogin().getText().trim()); + serverDataSourceConfiguration.setPassword(ui.getServerPassword().getText().trim()); + String databaseName = ui.getServerDataBase().getText().trim(); + serverDataSourceConfiguration.setDatabaseName(databaseName.isEmpty() ? null : databaseName); + + ObserveSwingApplicationContext.get().getConfig().updateServerDataSourceConfiguration(serverDataSourceConfiguration); + + ui.getModel().setServerDataSourceConfiguration(null); + ui.getModel().setServerDataSourceConfiguration(serverDataSourceConfiguration); + ui.getModel().setServerModified(false); + + } + + public void deleteServer() { + + int response = UIHelper.askUser(t("observe.storage.presets.delete.title"), + t("observe.storage.presets.delete.message"), + JOptionPane.QUESTION_MESSAGE, + new Object[]{t("observe.action.delete"), t("observe.action.cancel")}, + 0 + ); + boolean delete = response == 0; + + if (delete) { + ServerDataSourceConfiguration serverDataSourceConfiguration = ui.getModel().getServerDataSourceConfiguration(); + List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(ui.getModel().getServerDataSourceConfigurations()); + serverDataSourceConfigurations.remove(serverDataSourceConfiguration); + ui.getModel().setServerDataSourceConfigurations(serverDataSourceConfigurations); + ObserveSwingApplicationContext.get().getConfig().removeServerDataSourceConfiguration(serverDataSourceConfiguration); + ui.getModel().setServerDataSourceConfiguration(null); + } + } + + public void quit() { + + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); + mainUI.getModel().setMode(ObserveUIMode.NO_DB); + mainUI.getDataSourcePresets().removeAll(); + + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUIModel.java new file mode 100644 index 0000000..d5e0ffa --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUIModel.java @@ -0,0 +1,78 @@ +package fr.ird.observe.application.swing.ui.storage.presets; + +import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; +import org.jdesktop.beans.AbstractBean; + +import java.util.List; + +/** + * Created on 20/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class RemotePresetsUIModel extends AbstractBean { + + private List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations; + private RemoteDataSourceConfiguration remoteDataSourceConfiguration; + private ServerDataSourceConfiguration serverDataSourceConfiguration; + private List<ServerDataSourceConfiguration> serverDataSourceConfigurations; + + private boolean remoteModified; + private boolean serverModified; + + public List<RemoteDataSourceConfiguration> getRemoteDataSourceConfigurations() { + return remoteDataSourceConfigurations; + } + + public void setRemoteDataSourceConfigurations(List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations) { + this.remoteDataSourceConfigurations = remoteDataSourceConfigurations; + firePropertyChange("remoteDataSourceConfigurations", null, remoteDataSourceConfigurations); + } + + public List<ServerDataSourceConfiguration> getServerDataSourceConfigurations() { + return serverDataSourceConfigurations; + } + + public void setServerDataSourceConfigurations(List<ServerDataSourceConfiguration> serverDataSourceConfigurations) { + this.serverDataSourceConfigurations = serverDataSourceConfigurations; + firePropertyChange("serverDataSourceConfigurations", null, serverDataSourceConfigurations); + } + + public RemoteDataSourceConfiguration getRemoteDataSourceConfiguration() { + return remoteDataSourceConfiguration; + } + + public void setRemoteDataSourceConfiguration(RemoteDataSourceConfiguration remoteDataSourceConfiguration) { + this.remoteDataSourceConfiguration = remoteDataSourceConfiguration; + firePropertyChange("remoteDataSourceConfiguration", null, remoteDataSourceConfiguration); + } + + public ServerDataSourceConfiguration getServerDataSourceConfiguration() { + return serverDataSourceConfiguration; + } + + public void setServerDataSourceConfiguration(ServerDataSourceConfiguration serverDataSourceConfiguration) { + this.serverDataSourceConfiguration = serverDataSourceConfiguration; + firePropertyChange("serverDataSourceConfiguration", null, serverDataSourceConfiguration); + } + + public boolean isRemoteModified() { + return remoteModified; + } + + public void setRemoteModified(boolean remoteModified) { + this.remoteModified = remoteModified; + firePropertyChange("remoteModified", null, remoteModified); + } + + public boolean isServerModified() { + return serverModified; + } + + public void setServerModified(boolean serverModified) { + this.serverModified = serverModified; + firePropertyChange("serverModified", null, serverModified); + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java index 84cc380..f5a53ec 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java @@ -24,8 +24,8 @@ package fr.ird.observe.application.swing.ui.storage.tabs; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ObserveTextGenerator; -import fr.ird.observe.application.swing.configuration.RemoteDataSourceConfiguration; -import fr.ird.observe.application.swing.configuration.ServerDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.RemoteDataSourceConfiguration; +import fr.ird.observe.services.dto.presets.ServerDataSourceConfiguration; import fr.ird.observe.application.swing.configuration.constants.DbMode; import fr.ird.observe.application.swing.db.constants.ConnexionStatus; import fr.ird.observe.application.swing.ui.MnemonicHelper; diff --git a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties index 98d41f7..7fcd4b3 100644 --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -95,6 +95,8 @@ observe.action.modify=Modify observe.action.new.entry=Add observe.action.new.entry.tip=Create a new entry observe.action.open.screen=Opening screen <%1$s> +observe.action.quit=Quit +observe.action.quit.tip=Quit manager observe.action.reload.application=reload application observe.action.reload.storage=Reload storage observe.action.reload.storage.tip=Reload current storage @@ -1658,11 +1660,16 @@ observe.storage.no.remote.storage=No referential data source defined observe.storage.no.server.storage=No referential server defined observe.storage.noImportData.config=< No configuration > observe.storage.noImportReferentiel.config=< No configuration > +observe.storage.presets.delete.message=Confirm to delete configuration +observe.storage.presets.delete.title=Delete configuration +observe.storage.presets.no.selected=< No configuration selected > observe.storage.remote.configuration.name=Configuration name observe.storage.remote.configuration.save.title=Save configuration observe.storage.remote.db=(remote) observe.storage.remote.login=Login +observe.storage.remote.name=Preset name observe.storage.remote.password=Password +observe.storage.remote.presets.title=Remote databases observe.storage.remote.url=Url observe.storage.remote.useSll=Use ssl? observe.storage.remoteConfiguration.presets=Remote configuration presets @@ -1675,6 +1682,7 @@ observe.storage.required.rw.on.data=You don't have sufficient credentials to per observe.storage.security.administrateur=Owner of database observe.storage.server.dataBase=Databases observe.storage.server.db=(remote server) +observe.storage.server.presets.title=Remote servers observe.storage.server.sessionExpire=Server connexion is no more active. You can\n\n\t - Close server connexion, \n\t - Change data source, \n\t - Re-connect to server.\n\n BE WARE \: Local modifications will be lost\! observe.storage.server.sessionExpire.change=Change observe.storage.server.sessionExpire.close=Close diff --git a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties index 9819163..52203f0 100644 --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -95,6 +95,8 @@ observe.action.modify=Modificar observe.action.new.entry=Nuevo observe.action.new.entry.tip=Crear una nueva entrada observe.action.open.screen=Abrir pantalla <%1$s> +observe.action.quit=Quitter \#TODO +observe.action.quit.tip=Quitter le gestionnaire \#TODO observe.action.reload.application=Reinicializar la aplicación observe.action.reload.storage=Recargar la fuente de datos observe.action.reload.storage.tip=Cerrar y reabrir la fuente de datos @@ -1658,11 +1660,16 @@ observe.storage.no.remote.storage=No hay base de referencia definida observe.storage.no.server.storage=No hay servidor de referencia definido observe.storage.noImportData.config=< No hay configuración > observe.storage.noImportReferentiel.config=Sin configuración +observe.storage.presets.delete.message=Confirmer la suppression de la configuration %s \#TODO +observe.storage.presets.delete.title=Supprimer une configuration \#TODO +observe.storage.presets.no.selected=< Aucune configuration sélectionnée > \#TODO observe.storage.remote.configuration.name=nom de la configuration \#TODO observe.storage.remote.configuration.save.title=Enregistrement de la configuration \#TODO observe.storage.remote.db=(remoto) observe.storage.remote.login=Login +observe.storage.remote.name=Name \#TODO observe.storage.remote.password=Contraseña +observe.storage.remote.presets.title=Bases distantes \#TODO observe.storage.remote.url=Url observe.storage.remote.useSll=¿modo ssl? observe.storage.remoteConfiguration.presets=Configuration enregistrées \#TODO @@ -1675,6 +1682,7 @@ observe.storage.required.rw.on.data=No tiene los permisos necesarios para realiz observe.storage.security.administrateur=Propietario de la base observe.storage.server.dataBase=Base de datos observe.storage.server.db=(servidor remoto) +observe.storage.server.presets.title=Serveurs distants \#TODO observe.storage.server.sessionExpire=La conexión con el servidor ya no está activa. Qué quiere hacer ?\n\n\t - Cerrar la conexión con el servidor, \n\t - Cambiar de fuente de datos, \n\t - Se re-connectar con el servidor.\n\n CUIDADO \: Las modificaciones en curso se perderán \! observe.storage.server.sessionExpire.change=Cambiar observe.storage.server.sessionExpire.close=Fermer diff --git a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties index 74d5063..24020c4 100644 --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -95,6 +95,8 @@ observe.action.modify=Modifier observe.action.new.entry=Nouveau observe.action.new.entry.tip=Créer une nouvelle entrée observe.action.open.screen=Ouverture de l'écran <%1$s> +observe.action.quit=Quitter +observe.action.quit.tip=Quitter le gestionnaire observe.action.reload.application=Redémarrer l'application observe.action.reload.storage=Recharger la source de données observe.action.reload.storage.tip=Ferme et réouvre la source de données @@ -1658,11 +1660,16 @@ observe.storage.no.remote.storage=Aucune base de référence définie observe.storage.no.server.storage=Aucun serveur de référence défini observe.storage.noImportData.config=< Pas de configuration > observe.storage.noImportReferentiel.config=< Pas de configuration > +observe.storage.presets.delete.message=Confirmer la suppression de la configuration %s +observe.storage.presets.delete.title=Supprimer une configuration +observe.storage.presets.no.selected=< Aucune configuration sélectionnée > observe.storage.remote.configuration.name=nom de la configuration observe.storage.remote.configuration.save.title=Enregistrement de la configuration observe.storage.remote.db=(distante) observe.storage.remote.login=Utilisateur +observe.storage.remote.name=Nom observe.storage.remote.password=Mot de passe +observe.storage.remote.presets.title=Bases distantes observe.storage.remote.url=Url observe.storage.remote.useSll=mode ssl ? observe.storage.remoteConfiguration.presets=Configurations enregistrées @@ -1675,6 +1682,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.server.dataBase=Base de données observe.storage.server.db=(serveur distant) +observe.storage.server.presets.title=Serveurs distants observe.storage.server.sessionExpire=La connexion avec le serveur n'est plus active. Que voulez-faire ?\n\n\t - Fermer la connexion avec le serveur, \n\t - Changer de source de données, \n\t - Se re-conncter au serveur.\n\n ATTENTION \: Les modifications en cours seront perdu \! observe.storage.server.sessionExpire.change=Changer observe.storage.server.sessionExpire.close=Fermer diff --git a/application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/RemoteDataSourceConfiguration.java b/services-dto/src/main/java/fr/ird/observe/services/dto/presets/RemoteDataSourceConfiguration.java similarity index 62% rename from application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/RemoteDataSourceConfiguration.java rename to services-dto/src/main/java/fr/ird/observe/services/dto/presets/RemoteDataSourceConfiguration.java index 5a3a32d..51c7a5b 100644 --- a/application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/RemoteDataSourceConfiguration.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/presets/RemoteDataSourceConfiguration.java @@ -1,4 +1,7 @@ -package fr.ird.observe.application.swing.configuration; +package fr.ird.observe.services.dto.presets; + +import java.util.Objects; +import java.util.UUID; /** * Created on 18/12/16. @@ -8,12 +11,17 @@ package fr.ird.observe.application.swing.configuration; */ public class RemoteDataSourceConfiguration { + private final String id = UUID.randomUUID().toString(); private String name; private String url; private String login; private String password; private boolean useSsl; + public String getId() { + return id; + } + public String getName() { return name; } @@ -53,4 +61,17 @@ public class RemoteDataSourceConfiguration { public void setUseSsl(boolean useSsl) { this.useSsl = useSsl; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RemoteDataSourceConfiguration that = (RemoteDataSourceConfiguration) o; + return Objects.equals(id, that.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } } diff --git a/application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/ServerDataSourceConfiguration.java b/services-dto/src/main/java/fr/ird/observe/services/dto/presets/ServerDataSourceConfiguration.java similarity index 63% rename from application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/ServerDataSourceConfiguration.java rename to services-dto/src/main/java/fr/ird/observe/services/dto/presets/ServerDataSourceConfiguration.java index 4c588ed..d44286c 100644 --- a/application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration/ServerDataSourceConfiguration.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/presets/ServerDataSourceConfiguration.java @@ -1,4 +1,7 @@ -package fr.ird.observe.application.swing.configuration; +package fr.ird.observe.services.dto.presets; + +import java.util.Objects; +import java.util.UUID; /** * Created on 18/12/16. @@ -8,12 +11,17 @@ package fr.ird.observe.application.swing.configuration; */ public class ServerDataSourceConfiguration { + private final String id = UUID.randomUUID().toString(); private String name; private String url; private String login; private String password; private String databaseName; + public String getId() { + return id; + } + public String getName() { return name; } @@ -53,4 +61,17 @@ public class ServerDataSourceConfiguration { public void setDatabaseName(String databaseName) { this.databaseName = databaseName; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ServerDataSourceConfiguration that = (ServerDataSourceConfiguration) o; + return Objects.equals(id, that.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.