branch develop updated (f8c4707 -> 433387f)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from f8c4707 Rendre le dialogue de désactivation plus explicite (fixes #8879) (report version 6) new 433387f Ajout écran de gestion des connexions (Refs #8555) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: 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) Summary of changes: .../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(-) create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ShowDataSourcePresetsAction.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUI.jaxx create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUI.jcss create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUIHandler.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/presets/RemotePresetsUIModel.java rename {application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration => services-dto/src/main/java/fr/ird/observe/services/dto/presets}/RemoteDataSourceConfiguration.java (62%) rename {application-swing-configuration/src/main/java/fr/ird/observe/application/swing/configuration => services-dto/src/main/java/fr/ird/observe/services/dto/presets}/ServerDataSourceConfiguration.java (63%) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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>.
participants (1)
-
codelutin.com scm