branch feature/7528 updated (40a1f67 -> d4fbf01)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7528 in repository observe. See http://git.codelutin.com/observe.git from 40a1f67 lancement de l'application + connexion aux bases H2 et PG (refs #7528 #7529) new d4fbf01 utilisation de la classe ObserveSwingDataSource pour gérer les connection au source de données, (refs #7529) 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 d4fbf011ef3b02c6c98742095cc5b0f19010a215 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 22 08:42:10 2015 +0200 utilisation de la classe ObserveSwingDataSource pour gérer les connection au source de données, (refs #7529) Summary of changes: .../main/java/fr/ird/observe/ObserveRunner.java | 4 - .../observe/ObserveSwingApplicationContext.java | 142 +++------ .../business/report/model/ReportExecute.java | 15 +- .../fr/ird/observe/db/ObserveSwingDataSource.java | 158 ++++++++++ .../main/java/fr/ird/observe/ui/ObserveMainUI.css | 1 + .../fr/ird/observe/ui/ObserveMainUIHandler.java | 39 ++- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 4 +- .../ird/observe/ui/actions/CloseStorageAction.java | 17 +- .../observe/ui/actions/ReloadStorageAction.java | 84 ++---- .../ui/actions/SaveStorageToFileAction.java | 28 +- .../ird/observe/ui/actions/ShowConfigAction.java | 10 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 19 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 10 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 93 +++--- .../ui/admin/consolidate/ConsolidateModel.java | 8 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 9 +- .../ird/observe/ui/admin/export/ExportModel.java | 14 +- .../observe/ui/admin/export/ExportUIHandler.java | 14 +- .../observe/ui/admin/gps/ImportGPSUIHandler.java | 5 +- .../observe/ui/admin/report/ReportUIHandler.java | 23 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 28 +- .../ui/admin/synchronize/SynchronizeModel.java | 20 +- .../ui/admin/synchronize/SynchronizeUIHandler.java | 20 +- .../ui/admin/validate/ValidateUIHandler.java | 16 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 7 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 2 +- .../ui/storage/StorageBackupUILauncher.java | 64 ++-- .../ird/observe/ui/storage/StorageUIHandler.java | 335 +++++++++++++-------- .../fr/ird/observe/ui/storage/StorageUIModel.java | 275 +++++++++-------- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 1 + .../ui/storage/tabs}/DataSelectionModel.java | 255 +++++++--------- .../ird/observe/ui/storage/tabs/SelectDataUI.jaxx | 4 +- .../ui/storage/tabs/StorageTabUIHandler.java | 7 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 17 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 11 +- .../observe-application-swing_en_GB.properties | 2 + .../observe-application-swing_es_ES.properties | 2 + .../observe-application-swing_fr_FR.properties | 2 + .../web/controller/v1/PingServiceController.java | 2 +- .../services/dto/referential/ProgramDtos.java | 30 ++ .../services/dto/referential/ReferentialDtos.java | 120 ++++++++ 41 files changed, 1093 insertions(+), 824 deletions(-) create mode 100644 observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java rename {observe-business/src/main/java/fr/ird/observe/db/model => observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs}/DataSelectionModel.java (60%) create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java create mode 100644 observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7528 in repository observe. See http://git.codelutin.com/observe.git commit d4fbf011ef3b02c6c98742095cc5b0f19010a215 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Sep 22 08:42:10 2015 +0200 utilisation de la classe ObserveSwingDataSource pour gérer les connection au source de données, (refs #7529) --- .../main/java/fr/ird/observe/ObserveRunner.java | 4 - .../observe/ObserveSwingApplicationContext.java | 142 +++------ .../business/report/model/ReportExecute.java | 15 +- .../fr/ird/observe/db/ObserveSwingDataSource.java | 158 ++++++++++ .../main/java/fr/ird/observe/ui/ObserveMainUI.css | 1 + .../fr/ird/observe/ui/ObserveMainUIHandler.java | 39 ++- .../fr/ird/observe/ui/actions/CloseHelpAction.java | 4 +- .../ird/observe/ui/actions/CloseStorageAction.java | 17 +- .../observe/ui/actions/ReloadStorageAction.java | 84 ++---- .../ui/actions/SaveStorageToFileAction.java | 28 +- .../ird/observe/ui/actions/ShowConfigAction.java | 10 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 19 +- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 10 +- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 93 +++--- .../ui/admin/consolidate/ConsolidateModel.java | 8 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 9 +- .../ird/observe/ui/admin/export/ExportModel.java | 14 +- .../observe/ui/admin/export/ExportUIHandler.java | 14 +- .../observe/ui/admin/gps/ImportGPSUIHandler.java | 5 +- .../observe/ui/admin/report/ReportUIHandler.java | 23 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 28 +- .../ui/admin/synchronize/SynchronizeModel.java | 20 +- .../ui/admin/synchronize/SynchronizeUIHandler.java | 20 +- .../ui/admin/validate/ValidateUIHandler.java | 16 +- .../java/fr/ird/observe/ui/content/ContentUI.jaxx | 7 +- .../ird/observe/ui/storage/ObstunaAdminAction.java | 2 +- .../ui/storage/StorageBackupUILauncher.java | 64 ++-- .../ird/observe/ui/storage/StorageUIHandler.java | 335 +++++++++++++-------- .../fr/ird/observe/ui/storage/StorageUIModel.java | 275 +++++++++-------- .../fr/ird/observe/ui/storage/tabs/ConfigUI.css | 1 + .../ui/storage/tabs}/DataSelectionModel.java | 255 +++++++--------- .../ird/observe/ui/storage/tabs/SelectDataUI.jaxx | 4 +- .../ui/storage/tabs/StorageTabUIHandler.java | 7 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 17 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 11 +- .../observe-application-swing_en_GB.properties | 2 + .../observe-application-swing_es_ES.properties | 2 + .../observe-application-swing_fr_FR.properties | 2 + .../web/controller/v1/PingServiceController.java | 2 +- .../services/dto/referential/ProgramDtos.java | 30 ++ .../services/dto/referential/ReferentialDtos.java | 120 ++++++++ 41 files changed, 1093 insertions(+), 824 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java index 3a844fa..0398e30 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveRunner.java @@ -291,7 +291,6 @@ public abstract class ObserveRunner extends ApplicationRunner { context, ObserveSwingApplicationContext.CONFIG_ENTRY_DEF, ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF, - ObserveSwingApplicationContext.SERVICE_MAIN_FACTORY_ENTRY_DEF, ObserveSwingApplicationContext.DECORATOR_SERVICE_ENTRY_DEF ); @@ -639,9 +638,6 @@ public abstract class ObserveRunner extends ApplicationRunner { // add config ObserveSwingApplicationContext.CONFIG_ENTRY_DEF.setContextValue(instance, config); - // add service main factory - instance.getObserveServiceMainFactory(); - // add actions ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF.setContextValue(instance, new ObserveCLAction()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index decdfb3..6f3ab5f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -21,22 +21,20 @@ */ package fr.ird.observe; +import com.google.common.base.Preconditions; import fr.ird.observe.business.BinderService; import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.gps.GPSService; import fr.ird.observe.business.validation.ObserveValidator; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.ObserveServiceInitializer; import fr.ird.observe.services.ObserveServiceMainFactory; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveMainUIHandler; @@ -64,7 +62,6 @@ import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.hibernate.cfg.Environment; import org.nuiton.decorator.Decorator; import javax.swing.ActionMap; @@ -75,6 +72,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; import java.util.Locale; +import java.util.UUID; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -111,13 +109,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { public static final JAXXContextEntryDef<ObserveDataSourceConfigurationMainFactory> DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF = JAXXUtil.newContextEntryDef(ObserveDataSourceConfigurationMainFactory.class); - /** the jaxx context entry to store the data source configuration */ - public static final JAXXContextEntryDef<ObserveDataSourceConfiguration> DATA_SOURCE_CONFIGURATION_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveDataSourceConfiguration.class); - - /** the jaxx context entry to store the data source connexion */ - public static final JAXXContextEntryDef<ObserveDataSourceConnection> DATA_SOURCE_CONNECTION_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveDataSourceConnection.class); /** the jaxx context entry to store the decorator service */ public static final JAXXContextEntryDef<BinderService> BINDER_SERVICE_ENTRY_DEF = @@ -141,8 +132,10 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { JAXXUtil.newContextEntryDef(DataContext.class); /** the jaxx context entry to store the data source (says the ui data source) */ - public static final JAXXContextEntryDef<DataSource> DATA_SOURCE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(DataSource.class); + public static final JAXXContextEntryDef<ObserveSwingDataSource> SWING_DATA_SOURCE_ENTRY_DEF = + JAXXUtil.newContextEntryDef(ObserveSwingDataSource.class); + + public static final JAXXContextEntryDef<ValidationContext> VALIDATION_CONTEXT_ENTRY_DEF = JAXXUtil.newContextEntryDef(ValidationContext.class); @@ -179,18 +172,16 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { return CONFIG_ENTRY_DEF.getContextValue(this); } - - - public final DataSource getDataSource() { - DataSource dataSource = DATA_SOURCE_ENTRY_DEF.getContextValue(this); + public final ObserveSwingDataSource getDataSource() { + ObserveSwingDataSource dataSource = SWING_DATA_SOURCE_ENTRY_DEF.getContextValue(this); return dataSource; } - public final void setDataSource(DataSource source) { + public final void setDataSource(ObserveSwingDataSource source) { if (source == null) { - DATA_SOURCE_ENTRY_DEF.removeContextValue(this); + SWING_DATA_SOURCE_ENTRY_DEF.removeContextValue(this); } else { - DATA_SOURCE_ENTRY_DEF.setContextValue(this, source); + SWING_DATA_SOURCE_ENTRY_DEF.setContextValue(this, source); } } @@ -215,21 +206,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { return decoratorService; } - public final ObserveServiceMainFactory getObserveServiceMainFactory() { - - ObserveServiceMainFactory serviceMainFactory = SERVICE_MAIN_FACTORY_ENTRY_DEF.getContextValue(this); - - if (serviceMainFactory == null) { - - serviceMainFactory = ObserveServiceMainFactory.get(); - - SERVICE_MAIN_FACTORY_ENTRY_DEF.setContextValue(this, serviceMainFactory); - - } - - return serviceMainFactory; - } - public final ObserveDataSourceConfigurationMainFactory getObserveDataSourceConfigurationMainFactory() { ObserveDataSourceConfigurationMainFactory configurationMainFactory = DATA_SOURCE_CONFIGURATION_FACTORY_ENTRY_DEF.getContextValue(this); @@ -245,72 +221,35 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { return configurationMainFactory; } - public final void setObserveDataSourceConfiguration(ObserveDataSourceConfiguration sourceConfiguration) { - DATA_SOURCE_CONFIGURATION_ENTRY_DEF.setContextValue(this, sourceConfiguration); - } - - public final ObserveDataSourceConfiguration getObserveDataSourceConfiguration() { - return DATA_SOURCE_CONFIGURATION_ENTRY_DEF.getContextValue(this); - } - - public final void setObserveDataSourceConnection(ObserveDataSourceConnection connection) { - DATA_SOURCE_CONNECTION_ENTRY_DEF.setContextValue(this, connection); - } - - public final ObserveDataSourceConnection getObserveDataSourceConnection() { - return DATA_SOURCE_CONNECTION_ENTRY_DEF.getContextValue(this); - } - - public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { - - return newService(dataSourceConfiguration, null, serviceType); - } - - public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, ObserveDataSourceConnection dataSourceConnection, Class<S> serviceType) { - - ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(dataSourceConfiguration, dataSourceConnection); - - ObserveServiceMainFactory serviceFactory = getObserveServiceMainFactory(); - - return serviceFactory.newService(observeServiceInitializer, serviceType); - } - - public ObserveServiceInitializer getObserveServiceInitializer() { - - ObserveDataSourceConnection connection = getObserveDataSourceConnection(); - - ObserveDataSourceConfiguration configuration = getObserveDataSourceConfiguration(); - - ObserveServiceInitializer serviceInitializer = getObserveServiceInitializer(configuration, connection); - - return serviceInitializer; - } - - protected ObserveServiceInitializer getObserveServiceInitializer(ObserveDataSourceConfiguration dataSourceConfiguration, ObserveDataSourceConnection dataSourceConnection) { - - Locale locale = getConfig().getLocale(); + public ObserveSwingDataSource createDataSourceH2Temp(String label) { + ObserveDataSourceConfigurationMainFactory configurationMainFactory = getObserveDataSourceConfigurationMainFactory(); File tmpDirectory = getConfig().getTmpDirectory(); - ReferentialLocale referentialLocale = ReferentialLocale.valueOf(locale); - - ObserveDataSourceConfigurationAndConnection configurationAndConnection = new ObserveDataSourceConfigurationAndConnection(dataSourceConfiguration, dataSourceConnection); + File dbDirectory = new File(tmpDirectory, ObserveSwingApplicationConfig.DB_NAME + UUID.randomUUID().toString()); - ObserveServiceInitializer observeServiceInitializer = ObserveServiceInitializer.create( - locale, - referentialLocale, - tmpDirectory, - configurationAndConnection + ObserveDataSourceConfigurationTopiaH2 config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( + label, + dbDirectory, + ObserveSwingApplicationConfig.DB_NAME, + getConfig().getH2Login(), + getConfig().getH2Password(), + false, + false ); - return observeServiceInitializer; + ObserveSwingDataSource result = new ObserveSwingDataSource(config); + + return result; } public <S extends ObserveService> S newService(Class<S> serviceType) { - ObserveServiceMainFactory serviceFactory = getObserveServiceMainFactory(); + ObserveSwingDataSource dataSource = getDataSource(); + + Preconditions.checkNotNull(dataSource, "Aucune source de données configurée"); - S service = serviceFactory.newService(getObserveServiceInitializer(), serviceType); + S service = dataSource.newService(serviceType); return service; } @@ -647,21 +586,16 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { /** * Prepare le storage principal qui servira dans les ui. * - * @param service le service a preparer + * @param dataSource la source de données a preparer */ - public void prepareMainStorage(DataSource service) { - - // le storage principal utilise le cache sur les entites sur - // le referentiel pour mettre a jour de maniere transparent - // les listes de valeuers du référentiel dans les ui - service.getConfig().setUseCache(true); + public void prepareMainStorage(ObserveSwingDataSource dataSource) { // ajout support JMX - if (ObserveServiceHelper.isUseJMX()) { - service.getConfig().getDbConfig().setProperty( - Environment.GENERATE_STATISTICS, - String.valueOf(true)); - } +// if (ObserveServiceHelper.isUseJMX()) { +// service.getConfig().getDbConfig().setProperty( +// Environment.GENERATE_STATISTICS, +// String.valueOf(true)); +// } //FIXME // service.addDataSourceListener(new DataSourceListenerAdapter() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/report/model/ReportExecute.java b/observe-application-swing/src/main/java/fr/ird/observe/business/report/model/ReportExecute.java index 7e416a1..2451881 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/report/model/ReportExecute.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/business/report/model/ReportExecute.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.business.report.model; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.db.ObserveSwingDataSource; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -52,7 +52,7 @@ public class ReportExecute { protected final Map<String, List<?>> repeatVariablesUniverse; /** la source de données qui permet d'exécuter les requêtes hql. */ - protected DataSource source; + protected ObserveSwingDataSource source; public static final String TRIP_ID_VARIABLE = "tripId"; @@ -73,11 +73,11 @@ public class ReportExecute { return repeatVariablesUniverse.get(key); } - public DataSource getSource() { + public ObserveSwingDataSource getSource() { return source; } - public void setSource(DataSource source) { + public void setSource(ObserveSwingDataSource source) { this.source = source; } @@ -279,12 +279,7 @@ public class ReportExecute { // } } - protected boolean checkDataSource(DataSource source) throws IllegalStateException { - if (source.wasClosed()) { - - // la source de donnée a été fermée - return false; - } + protected boolean checkDataSource(ObserveSwingDataSource source) throws IllegalStateException { if (!source.isOpen()) { throw new IllegalStateException("data source is not opened."); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java new file mode 100644 index 0000000..eccfbd7 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java @@ -0,0 +1,158 @@ +package fr.ird.observe.db; + +import com.google.common.base.Preconditions; +import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.services.ObserveService; +import fr.ird.observe.services.ObserveServiceInitializer; +import fr.ird.observe.services.ObserveServiceMainFactory; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; +import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.service.DataSourceService; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.io.File; +import java.util.Locale; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserveSwingDataSource extends AbstractSerializableBean { + + public static final String PROPERTY_OPEN = "open"; + + protected final ObserveDataSourceConfiguration configuration; + + protected ObserveDataSourceConnection connection; + + public ObserveSwingDataSource(ObserveDataSourceConfiguration configuration) { + this.configuration = configuration; + this.connection = null; + } + + public ObserveDataSourceConfiguration getConfiguration() { + return configuration; + } + + public ObserveDataSourceConnection getConnection() { + return connection; + } + + public void open() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + Preconditions.checkState(connection == null, "Connection is alredy open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + connection = dataSourceService.open(configuration); + + firePropertyChange(PROPERTY_OPEN, false, true); + } + + public void create(DataSourceCreateConfigurationDto creatDto) throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + Preconditions.checkState(connection == null, "Connection is alredy open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + connection = dataSourceService.create(configuration, creatDto); + + firePropertyChange(PROPERTY_OPEN, false, true); + } + + public void close() { + + Preconditions.checkState(connection != null, "Connection is not open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + dataSourceService.close(); + + connection = null; + + firePropertyChange(PROPERTY_OPEN, true, false); + } + + public void destroy() { + + Preconditions.checkState(connection != null, "Connection is not open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + dataSourceService.destroy(); + + connection = null; + + firePropertyChange(PROPERTY_OPEN, true, false); + } + + public boolean isOpen() { + return connection != null; + } + + public <S extends ObserveService> S newService(Class<S> serviceType) { + + ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(); + + ObserveServiceMainFactory serviceFactory = ObserveServiceMainFactory.get(); + + S service = serviceFactory.newService(observeServiceInitializer, serviceType); + return service; + } + + protected ObserveServiceInitializer getObserveServiceInitializer() { + + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + + ObserveSwingApplicationConfig config = context.getConfig(); + + Locale locale = config.getLocale(); + + File tmpDirectory = config.getTmpDirectory(); + + ReferentialLocale referentialLocale = ReferentialLocale.valueOf(locale); + + ObserveDataSourceConfigurationAndConnection configurationAndConnection = new ObserveDataSourceConfigurationAndConnection(configuration, connection); + + ObserveServiceInitializer observeServiceInitializer = ObserveServiceInitializer.create( + locale, + referentialLocale, + tmpDirectory, + configurationAndConnection + ); + + return observeServiceInitializer; + } + + + public void checkCanConnect() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + + Preconditions.checkState(connection == null, "Connection is alredy open"); + + DataSourceService dataSourceService = newService(DataSourceService.class); + + dataSourceService.checkCanConnect(configuration); + + } + + public boolean isLocal() { + return configuration instanceof ObserveDataSourceConfigurationTopiaH2; + } + + public boolean isRemote() { + return configuration instanceof ObserveDataSourceConfigurationTopiaPG; + } + + public boolean isServeur() { + return configuration instanceof ObserveDataSourceConfigurationRest; + } + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.css index a328950..736d57e 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUI.css @@ -290,6 +290,7 @@ JSplitPane { icon: {updateStorageSatutIcon(getConfig().isMainStorageOpened())}; _localIcon: {SwingUtil.getUIManagerActionIcon("db-local")}; _remoteIcon: {SwingUtil.getUIManagerActionIcon("db-remote")}; + _serverIcon: {SwingUtil.getUIManagerActionIcon("db-server")}; _noneIcon: {SwingUtil.getUIManagerActionIcon("db-none")}; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java index 18a645c..65d29bc 100755 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/ObserveMainUIHandler.java @@ -23,9 +23,9 @@ package fr.ird.observe.ui; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.DecoratorService; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.content.ContentMode; @@ -85,7 +85,7 @@ public class ObserveMainUIHandler { public void changeNavigationNode(ObserveMainUI ui, TreeSelectionEvent event) { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (source == null || !source.isOpen()) { // no open data source @@ -223,11 +223,12 @@ public class ObserveMainUIHandler { } ObserveTreeHelper treeHelper = new ObserveTreeHelper(); - DataSource source = context.getDataSource(); + ObserveSwingDataSource source = context.getDataSource(); boolean open = context.getDataContext().getEnabled(); if (open) { - treeHelper.createModel(source); + // FIXME + //treeHelper.createModel(source); } else { treeHelper.createEmptyModel(); } @@ -266,10 +267,6 @@ public class ObserveMainUIHandler { public static final String H2_SERVER_URL_PATTERN = "jdbc:h2:%s/%s/obstuna"; - public static DataSource getStorage() { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - return source; - } // protected static DataService getDataService() { // return ObserveContext.get().getDataService(); @@ -318,7 +315,7 @@ public class ObserveMainUIHandler { // scan main ui ObserveMainUI ui = getUI(rootContext); - DataSource mainStorage = rootContext.getDataSource(); + ObserveSwingDataSource mainStorage = rootContext.getDataSource(); ObserveUIMode oldMode = null; String[] ids = null; @@ -394,13 +391,15 @@ public class ObserveMainUIHandler { if (ui.getConfig().isMainStorageOpened()) { - DataSource service = ObserveSwingApplicationContext.get().getDataSource(); - //FIXME -// if (service instanceof H2DataSource) { -// icon = (Icon) ui.storageStatus.getClientProperty("localIcon"); -// } else { + ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSource(); + + if (service.isLocal()) { + icon = (Icon) ui.storageStatus.getClientProperty("localIcon"); + } else if (service.isRemote()){ icon = (Icon) ui.storageStatus.getClientProperty("remoteIcon"); -// } + } else { + icon = (Icon) ui.storageStatus.getClientProperty("serverIcon"); + } } else { icon = (Icon) ui.storageStatus.getClientProperty("noneIcon"); } @@ -410,8 +409,8 @@ public class ObserveMainUIHandler { protected String updateStorageSatutText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - DataSource service = ObserveSwingApplicationContext.get().getDataSource(); - text = service.getShortLabel(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + text = source.getConfiguration().getLabel(); } else { text = t("observe.message.db.none.loaded"); } @@ -421,8 +420,8 @@ public class ObserveMainUIHandler { protected String updateStorageStatutToolTipText(ObserveMainUI ui, boolean isOpened) { String text; if (ui.getConfig().isMainStorageOpened()) { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - text = t("observe.message.loaded.tip", source.getLabel()); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + text = t("observe.message.loaded.tip", source.getConfiguration().getLabel()); } else { text = t("observe.message.db.none.loaded.tip"); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java index 7e8c02d..1c7e5cf 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseHelpAction.java @@ -23,7 +23,7 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUIMode; import jaxx.runtime.SwingUtil; @@ -61,7 +61,7 @@ public class CloseHelpAction extends AbstractAction { if (oldMode == null) { // on regarde si une base est chargee - DataSource mainStorage = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource mainStorage = ObserveSwingApplicationContext.get().getDataSource(); if (mainStorage == null) { oldMode = ObserveUIMode.NO_DB; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java index 504a0f0..3440932 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/CloseStorageAction.java @@ -23,12 +23,9 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -75,18 +72,12 @@ public class CloseStorageAction extends AbstractAction { ui.setBusy(true); try { - DataSource storage = ObserveMainUIHandler.getStorage(); + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); if (log.isDebugEnabled()) { - log.debug(">>> close main storage " + storage); + log.debug(">>> close main storage " + source); } // on doit fermer le storage en cours d'utilisation - storage.doClose(false); - - } catch (DataSourceException ex) { - ErrorDialogUI.showError(ex); - if (log.isErrorEnabled()) { - log.error(ex); - } + source.close(); } finally { ui.setBusy(false); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java index dc5c598..c1ad2ac 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ReloadStorageAction.java @@ -23,12 +23,11 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; @@ -74,7 +73,7 @@ public class ReloadStorageAction extends AbstractAction { boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); - DataSource storage = ObserveMainUIHandler.getStorage(); + ObserveSwingDataSource storage = ObserveSwingApplicationContext.get().getDataSource(); if (canContinue && storage != null) { @@ -84,61 +83,42 @@ public class ReloadStorageAction extends AbstractAction { try { - DataSourceConfig config = storage.getConfig().clone(); + if (log.isDebugEnabled()) { + log.debug(">>> close main storage " + storage); + } + // fermeture du storage courant + storage.close(); + + ObserveSwingApplicationConfig appConfig = ObserveSwingApplicationContext.get().getConfig(); + + if (storage.isLocal()) { + + ObserveDataSourceConfigurationTopiaH2 h2Config = (ObserveDataSourceConfigurationTopiaH2) storage.getConfiguration(); + + h2Config.setCanMigrate(appConfig.isCanMigrateH2()); + } else if (storage.isRemote()) { + ObserveDataSourceConfigurationTopiaPG pgConfig = (ObserveDataSourceConfigurationTopiaPG) storage.getConfiguration(); + pgConfig.setCanMigrate(appConfig.isCanMigrateObstuna()); + } + try { - if (log.isDebugEnabled()) { - log.debug(">>> close main storage " + storage); - } - // fermeture du storage courant - storage.doClose(false); - } catch (DataSourceException e) { + + // on conserve les noeuds a selectionner + ObserveSwingApplicationContext.get().setNodesToReselect(ids); + + // attachement a l'ui + ObserveSwingApplicationContext.get().prepareMainStorage(storage); + + // ouverture du service + storage.open(); + } catch (Exception e) { ErrorDialogUI.showError(e); if (log.isErrorEnabled()) { log.error(e.getMessage(), e); } } - ObserveSwingApplicationConfig appConfig = ObserveSwingApplicationContext.get().getConfig(); - - //FIXME -// if (config instanceof H2DataSourceConfig) { -// -// H2DataSourceConfig h2Config = (H2DataSourceConfig) config; -// h2Config.setCanMigrate(appConfig.isCanMigrateH2()); -// h2Config.detectPolicy(); -// } - - //FIXME -// if (config instanceof PGDataSourceConfig) { -// PGDataSourceConfig pgConfig = (PGDataSourceConfig) config; -// pgConfig.setCanMigrate(appConfig.isCanMigrateObstuna()); -// //TODO Should try to reconnect ? to obtain new credentials ? -//// pgConfig.canConnect(); -//// pgConfig.detectPolicy(); -// } - - //FIXME -// try { -// // creation du service -// storage = -// DataSourceFactory.newService(config, storage.getClass()); -// -// // on conserve les noeuds a selectionner -// ObserveContext.get().setNodesToReselect(ids); -// -// // attachement a l'ui -// ObserveContext.get().prepareMainStorage(storage); -// -// // ouverture du service -// storage.doOpen(); -// } catch (Exception e) { -// ErrorDialogUI.showError(e); -// if (log.isErrorEnabled()) { -// log.error(e.getMessage(), e); -// } -// } - } finally { ui.setBusy(false); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java index 83123cc..b64b062 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/SaveStorageToFileAction.java @@ -23,10 +23,11 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.storage.StorageBackupUILauncher; import jaxx.runtime.SwingUtil; import javax.swing.AbstractAction; @@ -64,13 +65,11 @@ public class SaveStorageToFileAction extends AbstractAction { // on teste que l'utilisateur peut lire-ecrire sur la source de données - DataSource service = ObserveMainUIHandler.getStorage(); + ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSource(); -// boolean local = service.getConfig() instanceof H2DataSourceConfig; + ObserveDataSourceConnection connection = service.getConnection(); + if (!service.isLocal() && !(connection.canReadData() && connection.canWriteData())) { - //FIXME -// if (!local && !(service.canReadData() && service.canWriteData())) { - if (!(service.canReadData() && service.canWriteData())) { UIHelper.askUser( null, t("observe.title.can.not.export.obstuna"), @@ -82,14 +81,13 @@ public class SaveStorageToFileAction extends AbstractAction { return; } - //FIXME -// String title = local ? -// t("observe.title.save.localDB") : -// t("observe.title.save.remoteDB"); -// -// StorageBackupUILauncher launcher = -// new StorageBackupUILauncher(ui, ui, title); -// launcher.start(); + String title = service.isLocal() ? + t("observe.title.save.localDB") : + t("observe.title.save.remoteDB"); + + StorageBackupUILauncher launcher = + new StorageBackupUILauncher(ui, ui, title); + launcher.start(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java index 5bd0238..a176494 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowConfigAction.java @@ -23,11 +23,11 @@ package fr.ird.observe.ui.actions; */ import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; -import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; import fr.ird.observe.business.ObserveTechnicalException; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.configuration.ObserveSwingApplicationConfigOption; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUICallback; @@ -94,7 +94,7 @@ public class ShowConfigAction extends AbstractAction { boolean canContinue = ObserveSwingApplicationContext.get().closeSelectedContentUI(ui); if (canContinue) { - DataSource dataSource = ObserveSwingApplicationContext.get().getDataSource(); + ObserveSwingDataSource dataSource = ObserveSwingApplicationContext.get().getDataSource(); ObserveSwingApplicationConfig config = ui.getConfig(); @@ -114,7 +114,7 @@ public class ShowConfigAction extends AbstractAction { } - protected ObserveConfigUIBuilder buildUI(ObserveSwingApplicationConfig config, DataSource dataSource) throws DataSourceException { + protected ObserveConfigUIBuilder buildUI(ObserveSwingApplicationConfig config, ObserveSwingDataSource dataSource) throws DataSourceException { //FIXME // SpeciesListTableCellEditor editor; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java index ba2a818..0cf0f5f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java @@ -29,6 +29,9 @@ import fr.ird.observe.business.SendMessageAble; import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.gps.GPSService; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.admin.resume.ShowResumeUI; import fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel; @@ -168,9 +171,9 @@ public class AdminTabUIHandler implements SendMessageAble { return gpsService; } - protected DataSource getSource() { + protected ObserveSwingDataSource getSource() { - DataSource source = model.getTmpSource(); + ObserveSwingDataSource source = model.getTmpSource(); if (source == null) { source = model.getSafeLocalSource(false); } @@ -337,7 +340,7 @@ public class AdminTabUIHandler implements SendMessageAble { // } selectionModel.clearSelection(); - DataSource source = tabUI.getModel().getSafeLocalSource(true); + ObserveSwingDataSource source = tabUI.getModel().getSafeLocalSource(true); if (log.isDebugEnabled()) { log.debug("Will treeHelper : " + helper); @@ -363,16 +366,16 @@ public class AdminTabUIHandler implements SendMessageAble { } } - protected DataSource getSource(AdminUIModel model) { + protected ObserveSwingDataSource getSource(AdminUIModel model) { - DataSource source = model.getTmpSource(); + ObserveSwingDataSource source = model.getTmpSource(); if (source == null) { source = model.getSafeLocalSource(false); } return source; } - protected void addStorageServiceLogger(DataSource service) { + protected void addStorageServiceLogger(ObserveSwingDataSource service) { //FIXME // if (!service.containsDataSourceListener(serviceLogger)) { // service.addDataSourceListener(serviceLogger); @@ -385,10 +388,10 @@ public class AdminTabUIHandler implements SendMessageAble { // } } - protected void openSource(DataSource service) throws DataSourceException { + protected void openSource(ObserveSwingDataSource service) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { addStorageServiceLogger(service); if (!service.isOpen()) { - service.doOpen(); + service.open(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java index cc33110..d1143cb 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java @@ -22,8 +22,8 @@ package fr.ird.observe.ui.admin; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.ObserveUIMode; import fr.ird.observe.ui.UIHelper; @@ -254,7 +254,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad mainUI.removeContextValue(model.getClass()); - DataSource source = model.getPreviousSource(); + ObserveSwingDataSource source = model.getPreviousSource(); if (source == null) { @@ -266,7 +266,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad model.doCloseSource(source, false); // on avait une source avant l'opération et aussi une ui - DataSourceConfig sourceConfig = source.getConfig(); + ObserveDataSourceConfiguration sourceConfig = source.getConfiguration(); //FIXME // if (sourceConfig instanceof H2DataSourceConfig) @@ -279,7 +279,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad // on attache la source a l'ui ObserveSwingApplicationContext.get().prepareMainStorage(source); - source.doOpen(); + source.open(); } catch (Exception e) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index cfa086b..af2a398 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -21,14 +21,15 @@ */ package fr.ird.observe.ui.admin; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.report.model.Report; import fr.ird.observe.business.validation.ValidationModelMode; import fr.ird.observe.business.validation.ValidatorsMap; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.ui.admin.export.ExportModel; import fr.ird.observe.ui.admin.gps.ImportGPSModel; @@ -38,6 +39,7 @@ import fr.ird.observe.ui.admin.synchronize.SynchronizeModel; import fr.ird.observe.ui.admin.validate.ValidateModel; import fr.ird.observe.ui.storage.StorageUIHandler; import fr.ird.observe.ui.storage.StorageUIModel; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.swing.wizard.ext.WizardExtModel; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.lang3.StringUtils; @@ -78,16 +80,16 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { private static final Log log = LogFactory.getLog(AdminUIModel.class); /** la source de données en cours d'utilisation par l'application */ - protected DataSource previousSource; + protected ObserveSwingDataSource previousSource; /** la source de données sur laquel on veut travailler */ - protected DataSource localSource; + protected ObserveSwingDataSource localSource; /** la source de données dite central (contenant le référentiel valide) */ - protected DataSource centralSource; + protected ObserveSwingDataSource centralSource; /** la source de données temporaire */ - protected DataSource tmpSource; + protected ObserveSwingDataSource tmpSource; /** la configuration de la base source */ protected StorageUIModel localSourceModel; @@ -98,16 +100,11 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { /** le controleur pour configurer les sources */ protected StorageUIHandler storageHandler; - /** data service pour effectuer des opérations sur les sources */ - //FIXME -// protected DataService dataService; - /** configuration de l'application */ protected ObserveSwingApplicationConfig config; /** selection des donnees a valider */ - //FIXME -// protected DataSelectionModel selectionDataModel; + protected DataSelectionModel selectionDataModel; /** la liste des modes disponibles en entrée */ protected EnumSet<DbMode> availableIncomingModes; @@ -184,7 +181,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // if (log.isDebugEnabled()) { // log.debug("Will refill selectionModel [" + newStep + "] : " + selectModel); // } - DataSource dataSource = getSafeLocalSource(true); + ObserveSwingDataSource dataSource = getSafeLocalSource(true); //FIXME // populateSelectionModel(dataService, dataSource); } @@ -512,7 +509,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // on positionne la source courante de l'application comme service // entrant (on se sert de la configuration de ce service s'il existe // pour la source locale). - DataSource previousSource = ui.getContextValue(DataSource.class); + ObserveSwingDataSource previousSource = ui.getContextValue(ObserveSwingDataSource.class); setPreviousSource(previousSource); startIncomingSourceModel(ui); @@ -528,7 +525,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (log.isDebugEnabled()) { log.debug("Close previous source " + - previousSource.getShortLabel()); + previousSource.getConfiguration().getLabel()); } doCloseSource(previousSource, false); } @@ -662,9 +659,9 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return; } - DataSource previousSource = getPreviousSource(); + ObserveSwingDataSource previousSource = getPreviousSource(); - DataSourceConfig previousSourceConfig = null; + ObserveDataSourceConfiguration previousSourceConfig = null; EnumSet<DbMode> authorizedModes = getIncomingDataSourceMode(); EnumSet<DbMode> modes = EnumSet.noneOf(DbMode.class); @@ -799,30 +796,30 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { super.destroy(); } - public DataSource getPreviousSource() { + public ObserveSwingDataSource getPreviousSource() { return previousSource; } - public void setPreviousSource(DataSource previousSource) { + public void setPreviousSource(ObserveSwingDataSource previousSource) { this.previousSource = previousSource; } - public DataSource getLocalSource() { + public ObserveSwingDataSource getLocalSource() { return localSource; } - public DataSource getCentralSource() { + public ObserveSwingDataSource getCentralSource() { return centralSource; } - public DataSource getTmpSource() { + public ObserveSwingDataSource getTmpSource() { return tmpSource; } - public DataSource getSafeLocalSource(boolean open) { - if (localSource == null || open && localSource.wasClosed()) { + public ObserveSwingDataSource getSafeLocalSource(boolean open) { + if (localSource == null || open && !localSource.isOpen()) { - localSource = createService(getLocalSourceModel()); + localSource = createDataSource(getLocalSourceModel()); } if (open) { @@ -831,10 +828,10 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return localSource; } - public DataSource getSafeCentralSource(boolean open) { - if (centralSource == null || open && centralSource.wasClosed()) { + public ObserveSwingDataSource getSafeCentralSource(boolean open) { + if (centralSource == null || open && !centralSource.isOpen()) { - centralSource = createService(getCentralSourceModel()); + centralSource = createDataSource(getCentralSourceModel()); } if (open) { doOpenSource(centralSource); @@ -842,7 +839,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return centralSource; } - public DataSource getSafeTmpSource(boolean open) { + public ObserveSwingDataSource getSafeTmpSource(boolean open) { if (tmpSource == null) { //FIXME // try { @@ -1030,7 +1027,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } // la base precedente doit etre ouverte - DataSource source = getSafeLocalSource(true); + ObserveSwingDataSource source = getSafeLocalSource(true); // pour valider une base il faut les droits //FIXME @@ -1319,36 +1316,36 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - protected DataSource createService(StorageUIModel model) { + protected ObserveSwingDataSource createDataSource(StorageUIModel model) { - // FIXME -// ObserveDataSourceConfiguration service = storageHandler.newDataSourceConfigurationFromModel( -// model, -// n("observe.storage.label.local") -// ); -// return service; - return null; + ObserveDataSourceConfiguration service = storageHandler.newDataSourceConfigurationFromModel( + model, + n("observe.storage.label.local") + ); + + ObserveSwingDataSource dataSource = new ObserveSwingDataSource(service); + return dataSource; } - protected void doOpenSource(DataSource source) { + protected void doOpenSource(ObserveSwingDataSource source) { if (source != null && !source.isOpen()) { try { - source.doOpen(); - } catch (DataSourceException e) { + source.open(); + } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException e) { throw new IllegalStateException("Could not open " + source, e); } } } - protected void doCloseSource(DataSource source, boolean destroy) { + protected void doCloseSource(ObserveSwingDataSource source, boolean destroy) { - if (source != null && source.isOpen() && !source.wasClosed()) { - try { - source.doClose(destroy); - } catch (DataSourceException e) { - throw new IllegalStateException("Could not close " + source, e); + if (source != null && source.isOpen()) { + if (destroy) { + source.destroy(); + } else { + source.close(); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java index 0a3d831..d98f842 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.consolidate; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.SetSeineDto; @@ -39,7 +39,7 @@ import org.nuiton.decorator.Decorator; public class ConsolidateModel extends AdminActionModel { /** la source de données où effectuer la consolidation des données */ - private DataSource source; + private ObserveSwingDataSource source; private Decorator<ProgramDto> programDecorator; @@ -53,11 +53,11 @@ public class ConsolidateModel extends AdminActionModel { super(AdminStep.CONSOLIDATE); } - public DataSource getSource() { + public ObserveSwingDataSource getSource() { return source; } - public void setSource(DataSource source) { + public void setSource(ObserveSwingDataSource source) { this.source = source; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java index a6988b0..1d102f0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java @@ -22,8 +22,7 @@ package fr.ird.observe.ui.admin.consolidate; import fr.ird.observe.business.DecoratorService; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.SetSeineDto; @@ -41,9 +40,7 @@ import org.nuiton.decorator.Decorator; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.ArrayList; import java.util.Date; -import java.util.List; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.t; @@ -138,7 +135,7 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { // ConsolidateDataService service = // ObserveServiceHelper.getConsolidateDataService(); - DataSource source = getStepModel().getSource(); + ObserveSwingDataSource source = getStepModel().getSource(); String txName = "consolidateData"; //FIXME @@ -205,7 +202,7 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { protected WizardState initDB() throws Exception { // on recupere la source de données - DataSource source = model.getSafeLocalSource(false); + ObserveSwingDataSource source = model.getSafeLocalSource(false); getStepModel().setSource(source); openSource(source); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java index dcce58a..8fa085f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.export; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; @@ -55,9 +55,9 @@ public class ExportModel extends AdminActionModel { protected Decorator<TripLonglineDto> tripLonglineDecorator; - protected DataSource source; + protected ObserveSwingDataSource source; - protected DataSource centralSource; + protected ObserveSwingDataSource centralSource; public ExportModel() { super(AdminStep.EXPORT_DATA); @@ -121,19 +121,19 @@ public class ExportModel extends AdminActionModel { // // } - public DataSource getSource() { + public ObserveSwingDataSource getSource() { return source; } - public void setSource(DataSource source) { + public void setSource(ObserveSwingDataSource source) { this.source = source; } - public DataSource getCentralSource() { + public ObserveSwingDataSource getCentralSource() { return centralSource; } - public void setCentralSource(DataSource centralSource) { + public void setCentralSource(ObserveSwingDataSource centralSource) { this.centralSource = centralSource; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java index 511ee05..2a67b31 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.admin.export; import fr.ird.observe.business.DecoratorService; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; @@ -39,7 +39,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; -import javax.swing.*; +import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -201,17 +201,17 @@ public class ExportUIHandler extends AdminTabUIHandler { stepModel.setTripSeineDecorator(tripSeineDecorator); stepModel.setTripLonglineDecorator(tripLonglineDecorator); - DataSource centralSource = model.getSafeCentralSource(false); + ObserveSwingDataSource centralSource = model.getSafeCentralSource(false); stepModel.setCentralSource(centralSource); - if (!centralSource.canWriteData()) { + if (!centralSource.getConnection().canWriteData()) { // l'utilisateur n'a pas le droit d'écrire sur la base distante sendMessage(t("observe.message.can.not.write.data")); return WizardState.FAILED; } - DataSource source = getSource(); + ObserveSwingDataSource source = getSource(); stepModel.setSource(source); @@ -265,8 +265,8 @@ public class ExportUIHandler extends AdminTabUIHandler { protected void processTrip(ExportModel stepModel, TripEntry tripEntry) throws Exception { - DataSource centralSource = stepModel.getCentralSource(); - DataSource source = stepModel.getSource(); + ObserveSwingDataSource centralSource = stepModel.getCentralSource(); + ObserveSwingDataSource source = stepModel.getSource(); //FIXME diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java index ac33a66..840fe91 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java @@ -22,12 +22,11 @@ package fr.ird.observe.ui.admin.gps; import fr.ird.observe.business.DecoratorService; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.business.gps.GPSPoint; import fr.ird.observe.business.gps.GPSPointInterval; import fr.ird.observe.business.gps.GPSRoute; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.seine.ActivitySeineDto; -import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; @@ -94,7 +93,7 @@ public class ImportGPSUIHandler extends AdminTabUIHandler { */ protected Map<ActivitySeineDto, GPSPoint> data; - protected DataSource source; + protected ObserveSwingDataSource source; protected Decorator<ActivitySeineDto> dActivity; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java index ce32612..6c84080 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java @@ -21,13 +21,14 @@ */ package fr.ird.observe.ui.admin.report; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.report.model.DataMatrix; import fr.ird.observe.business.report.model.Report; import fr.ird.observe.business.report.model.ReportExecute; import fr.ird.observe.business.report.model.ReportVariable; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; @@ -46,9 +47,15 @@ import org.nuiton.decorator.Decorator; import org.nuiton.decorator.JXPathDecorator; import org.nuiton.util.TimeLog; -import javax.swing.*; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JComboBox; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JTable; +import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableCellRenderer; -import java.awt.*; +import java.awt.Component; +import java.awt.Font; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; @@ -487,17 +494,17 @@ public class ReportUIHandler extends AdminTabUIHandler { return null; } - DataSource source = getModel().getSafeLocalSource(false); - if (source.wasClosed()) { + ObserveSwingDataSource source = getModel().getSafeLocalSource(false); + if (!source.isOpen()) { // source de donnée fermée, l'executeur n'est plus disponible return null; } try { openSource(source); - } catch (DataSourceException eee) { + } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException eee) { throw new IllegalStateException( - "Could not open data source " + source.getLabel(), eee); + "Could not open data source " + source.getConfiguration().getLabel(), eee); } ReportExecute execute = stepModel.getReportExecute(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java index e20395e..68944d6 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java @@ -21,27 +21,22 @@ */ package fr.ird.observe.ui.admin.save; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.service.DataSourceDumpProducerService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; import fr.ird.observe.ui.admin.synchronize.SynchronizeModel; -import fr.ird.observe.ui.admin.synchronize.SynchronizeUIHandler; import jaxx.runtime.swing.wizard.ext.WizardState; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.hibernate.jdbc.Work; import java.io.File; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; +import java.io.FileOutputStream; import java.util.Date; import java.util.List; -import java.util.Map; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.t; @@ -60,7 +55,7 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { private static final String UPDATE_VERSION_PATTERN = "UPDATE %1$s SET topiaversion = %2$d WHERE topiaid='%3$s';\n"; - protected DataSource source; + protected ObserveSwingDataSource source; public SaveLocalUIHandler(SaveLocalUI ui) { super(ui); @@ -165,7 +160,14 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { // on effectue une sauvegarde de la base locale File backupFile = stepModel.getBackupFile(); - source.storeDB(backupFile); + DataSourceDumpProducerService dumpService = source.newService(DataSourceDumpProducerService.class); + + byte[] dump = dumpService.getAllDataDump(); + + try (FileOutputStream outputStream = new FileOutputStream(backupFile)) { + IOUtils.write(dump, outputStream); + } + } if (stepModel.containsStepForsave(AdminStep.SYNCHRONIZE)) { @@ -185,14 +187,14 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { SynchronizeModel stepModel = getModel().getSynchronizeReferentielModel(); - DataSource referentielSource = stepModel.getTmpSource(); + ObserveSwingDataSource referentielSource = stepModel.getTmpSource(); if (referentielSource == null) { // pas de base temporaire // on travaille directement sur la base central referentielSource = stepModel.getCentralSource(); } - DataSource targetSource = stepModel.getSource(); + ObserveSwingDataSource targetSource = stepModel.getSource(); //FIXME // DiffState.DiffStateMap diff = stepModel.getDiff(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java index e8ed354..a3eef7d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.admin.synchronize; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.ui.admin.AdminActionModel; import fr.ird.observe.ui.admin.AdminStep; @@ -50,13 +50,13 @@ public class SynchronizeModel extends AdminActionModel { // protected Map<TopiaEntity, Long> versionsToUpdate; /** data source we want to synchronize. */ - protected DataSource source; + protected ObserveSwingDataSource source; /** data source which contains central referentiel. */ - protected DataSource centralSource; + protected ObserveSwingDataSource centralSource; /** temporary source where to make objectOperations. */ - protected DataSource tmpSource; + protected ObserveSwingDataSource tmpSource; public SynchronizeModel() { super(AdminStep.SYNCHRONIZE); @@ -108,27 +108,27 @@ public class SynchronizeModel extends AdminActionModel { // this.versionsToUpdate = versionsToUpdate; // } - public DataSource getSource() { + public ObserveSwingDataSource getSource() { return source; } - public void setSource(DataSource source) { + public void setSource(ObserveSwingDataSource source) { this.source = source; } - public DataSource getCentralSource() { + public ObserveSwingDataSource getCentralSource() { return centralSource; } - public void setCentralSource(DataSource centralSource) { + public void setCentralSource(ObserveSwingDataSource centralSource) { this.centralSource = centralSource; } - public DataSource getTmpSource() { + public ObserveSwingDataSource getTmpSource() { return tmpSource; } - public void setTmpSource(DataSource tmpSource) { + public void setTmpSource(ObserveSwingDataSource tmpSource) { this.tmpSource = tmpSource; } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java index 1fa84f1..abd3c64 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java @@ -22,24 +22,18 @@ package fr.ird.observe.ui.admin.synchronize; import fr.ird.observe.business.DecoratorService; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceException; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.ui.UIHelper; -import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; import fr.ird.observe.ui.admin.AdminTabUIHandler; import fr.ird.observe.ui.admin.AdminUI; -import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.editor.MyDefaultCellEditor; import jaxx.runtime.swing.editor.bean.BeanComboBox; import jaxx.runtime.swing.wizard.ext.WizardState; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; -import org.nuiton.decorator.JXPathDecorator; import javax.swing.DefaultListModel; import javax.swing.JPanel; @@ -48,14 +42,8 @@ import javax.swing.table.DefaultTableCellRenderer; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Collections; import java.util.Date; -import java.util.Iterator; import java.util.List; -import java.util.Map; -import java.util.SortedMap; import java.util.concurrent.Callable; import static org.nuiton.i18n.I18n.n; @@ -332,9 +320,9 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { // on cree les sources de données - DataSource source = model.getSafeLocalSource(false); + ObserveSwingDataSource source = model.getSafeLocalSource(false); getStepModel().setSource(source); - DataSource centralSource = model.getSafeCentralSource(false); + ObserveSwingDataSource centralSource = model.getSafeCentralSource(false); getStepModel().setCentralSource(centralSource); openSource(source); @@ -342,7 +330,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { // construction du différentiel sendMessage(t("observe.message.synchro.build.diff", - centralSource.getLabel())); + centralSource.getConfiguration().getLabel())); //FIXME // DiffState.DiffStateMap diff = diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java index 5ee046b..2f3c4ba 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java @@ -22,13 +22,13 @@ package fr.ird.observe.ui.admin.validate; import com.google.common.base.Charsets; -import fr.ird.observe.business.DecoratorService; import fr.ird.observe.ObserveServiceHelper; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.validation.ValidationContext; import fr.ird.observe.business.validation.ValidationMessageDetector; import fr.ird.observe.business.validation.ValidationModelMode; import fr.ird.observe.business.validation.ValidatorsMap; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import fr.ird.observe.ui.UIHelper; @@ -51,7 +51,10 @@ import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.simple.SimpleBeanValidator; import org.nuiton.validator.bean.simple.SimpleBeanValidatorMessage; -import javax.swing.*; +import javax.swing.ComboBoxModel; +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListModel; +import javax.swing.JCheckBox; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; @@ -82,7 +85,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { /** Logger */ private static final Log log = LogFactory.getLog(ValidateUIHandler.class); - protected DataSource source; + protected ObserveSwingDataSource source; protected Decorator<TripSeineDto> dTrip; @@ -360,7 +363,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { ValidatorsMap validators = validationModel.getValidators(); sendMessage(t("observe.message.validation.use.storage", - source.getLabel())); + source.getConfiguration().getLabel())); sendMessage(t("observe.message.validation.prepare.validators")); @@ -395,9 +398,8 @@ public class ValidateUIHandler extends AdminTabUIHandler { // DataSelectionModel dataModel = model.getSelectionDataModel(); ValidationContext context = ObserveServiceHelper.getValidationContext(); - - context.setDataSource(model.getLocalSource()); //FIXME +// context.setDataSource(model.getLocalSource()); // context.setDataContext(model.getDataService().getDataContext()); //FIXME diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx index 04e5c42..8ea40e3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUI.jaxx @@ -60,12 +60,9 @@ <SwingValidatorMessageTableModel id='errorTableModel' initializer='getContextValue(SwingValidatorMessageTableModel.class)'/> - <!--FIXME--> - <!--<DataService id='dataService'--> - <!--initializer='getContextValue(DataService.class)'/>--> - + <!--FIXME a supprimer a la fin de la migration de service --> <DataSource id='dataSource' - initializer='ObserveSwingApplicationContext.get().getDataSource()'/> + initializer='null'/> <DataContext id='dataContext' javaBean='getContextValue(DataContext.class)'/> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java index 34169aa..d3a23f3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java @@ -27,7 +27,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; import org.nuiton.util.version.Versions; -import java.awt.*; +import java.awt.Window; import static org.nuiton.i18n.I18n.n; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java index 88987e4..c7b144d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageBackupUILauncher.java @@ -22,8 +22,10 @@ package fr.ird.observe.ui.storage; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.DbMode; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.JAXXContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -41,7 +43,9 @@ import java.util.Set; public class StorageBackupUILauncher extends StorageUILauncher { - /** Logger */ + /** + * Logger + */ static private Log log = LogFactory.getLog(StorageBackupUILauncher.class); public StorageBackupUILauncher(JAXXContext context, @@ -55,23 +59,26 @@ public class StorageBackupUILauncher extends StorageUILauncher { super.init(ui); ui.getBACKUP().getDoBackup().setSelected(true); ui.getBACKUP().getDoBackup().setVisible(false); - DataSource source = getStorage(); + + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); StorageUIModel model = ui.getModel(); model.setCanCreateLocalService(false); - //FIXME -// if (source instanceof H2DataSource) { -// model.setCanUseLocalService(true); -// model.setDbMode(DbMode.USE_LOCAL); -// } else { + if (source.isLocal()) { + model.setCanUseLocalService(true); + model.setDbMode(DbMode.USE_LOCAL); + } else if (source.isRemote()) { model.setCanUseRemoteService(true); model.setDbMode(DbMode.USE_REMOTE); -// } + } else if (source.isServeur()) { + model.setCanUseServerService(true); + model.setDbMode(DbMode.USE_SERVER); + } model.setSteps(StorageStep.BACKUP, - StorageStep.SELECT_DATA, - StorageStep.CONFIRM + StorageStep.SELECT_DATA, + StorageStep.CONFIRM ); ui.setTitle(title); try { @@ -92,30 +99,21 @@ public class StorageBackupUILauncher extends StorageUILauncher { protected void doAction(StorageUI ui) { super.doAction(ui); StorageUIHandler handler = getStorageUIHandler(); - DataSource service = getStorage(); + + ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSource(); + StorageUIModel storageModel = ui.getModel(); File backupFile = storageModel.getBackupFile(); - //FIXME -// DataSelectionModel dataModel = storageModel.getSelectDataModel(); - Set<String> marees = null; - //FIXME -// if (dataModel != null && !dataModel.isDataFull()) { -// // on renseigne les marees a exporter uniquement si -// // on en a selectionner, de plus si on a selectionne -// // toutes les marees, on le les passe pas : car c un dump -// // complet de la base. -// marees = dataModel.getSelectedData(); -// } - handler.backupLocalDatabase(service, backupFile, marees); - } - protected DataSource getStorage() { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - return source; + DataSelectionModel dataModel = storageModel.getSelectDataModel(); + Set<IdDto> marees = null; + if (dataModel != null && !dataModel.isDataFull()) { + // on renseigne les marees a exporter uniquement si + // on en a selectionner, de plus si on a selectionne + // toutes les marees, on le les passe pas : car c un dump + // complet de la base. + marees = dataModel.getSelectedData(); + } + handler.backupLocalDatabase(source, backupFile, marees); } - - //FIXME -// protected DataService getDataService() { -// return ObserveContext.get().getDataService(); -// } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index beb5204..171fd3b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -22,26 +22,29 @@ package fr.ird.observe.ui.storage; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import fr.ird.observe.ObserveActionExecutor; import fr.ird.observe.ObserveRunner; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.util.SecurityModel; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.db.constantes.DbMode; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; -import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.IdDtos; import fr.ird.observe.services.service.DataSourceDumpProducerService; -import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.storage.tabs.RolesTableModel; import fr.ird.observe.ui.storage.tabs.SelectDataUI; import fr.ird.observe.ui.storage.tabs.StorageTabUI; @@ -50,6 +53,7 @@ import jaxx.runtime.context.DefaultApplicationContext.AutoLoad; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.wizard.WizardUILancher; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; @@ -352,30 +356,28 @@ public class StorageUIHandler { log.debug(">>> should destroy local db ? " + destroyLocalBase); } - ObserveDataSourceConfiguration sourceConfiguration = observeContext.getObserveDataSourceConfiguration(); - ObserveDataSourceConnection localConnection = observeContext.getObserveDataSourceConnection(); - ObserveDataSourceConfigurationTopiaH2 localConfiguration = null; + ObserveSwingDataSource currentDataSource = observeContext.getDataSource(); - if (sourceConfiguration instanceof ObserveDataSourceConfigurationTopiaH2) { - localConfiguration = (ObserveDataSourceConfigurationTopiaH2) sourceConfiguration; - } - - DataSourceService localDataSourceService = null; + ObserveSwingDataSource localDataSource = null; + if (currentDataSource != null && currentDataSource.isLocal()) { + localDataSource = currentDataSource; + } boolean localDbIsSane = true; if (destroyLocalBase || model.isDoBackup()) { - if (localConfiguration == null) { + if (localDataSource == null) { try { - localConfiguration = config.getDataSourceConfigurationH2(n("observe.storage.label.local")); + ObserveDataSourceConfigurationTopiaH2 localConfiguration = config.getDataSourceConfigurationH2(n("observe.storage.label.local")); // la base ne doit pas etre mise a jour dans ce cas localConfiguration.setCanMigrate(false); // on charge un storage sur la base locale - localDataSourceService = observeContext.newService(localConfiguration, DataSourceService.class); - localConnection = localDataSourceService.open(localConfiguration); + localDataSource = new ObserveSwingDataSource(localConfiguration); + + localDataSource.open(); } catch (Exception e) { // on a pas reussi à ouvrir la base locale // cela ne doit pas empécher de continuer @@ -391,7 +393,7 @@ public class StorageUIHandler { localDbIsSane = false; // pour la suite on fait comme si il n'y a pas de local storage - localDataSourceService = null; + localDataSource = null; } } } @@ -408,10 +410,10 @@ public class StorageUIHandler { // effectue la backup de la base locale existante File f = model.getBackupFile(); if (log.isDebugEnabled()) { - log.debug(">>> do backup with " + localConfiguration + " in " + f); + log.debug(">>> do backup with " + localDataSource + " in " + f); } try { - DataSourceDumpProducerService dumpProducerService = observeContext.newService(localConfiguration, localConnection, DataSourceDumpProducerService.class); + DataSourceDumpProducerService dumpProducerService = localDataSource.newService(DataSourceDumpProducerService.class); backupLocalDatabase(dumpProducerService, f); } catch (Exception e) { ErrorDialogUI.showError(e); @@ -424,7 +426,7 @@ public class StorageUIHandler { if (destroyLocalBase) { if (log.isDebugEnabled()) { - log.debug(">>> destroy local db " + localConfiguration); + log.debug(">>> destroy local db " + localDataSource); } if (!localDbIsSane) { // la base locale n'est pas saine, on va supprimer directement @@ -443,7 +445,7 @@ public class StorageUIHandler { } } else { try { - localDataSourceService.destroy(); + localDataSource.destroy(); } catch (Exception e) { ErrorDialogUI.showError(e); if (log.isErrorEnabled()) { @@ -455,27 +457,26 @@ public class StorageUIHandler { } // suppression du storage precedent - if (sourceConfiguration != null) { + if (currentDataSource != null) { if (log.isDebugEnabled()) { - log.debug(">>> close main storage " + sourceConfiguration); + log.debug(">>> close main storage " + currentDataSource); } // on doit fermer le storage en cours d'utilisation - DataSourceService dataSourceService = observeContext.newService(DataSourceService.class); - dataSourceService.close(); + currentDataSource.close(); } // suppression du storage local - if (localConfiguration != null && localConfiguration != sourceConfiguration) { + if (localDataSource != null && localDataSource != localDataSource) { // ce cas peut arriver lorsque l'on fait juste une backup // sans vouloir supprimer la base locale if (log.isDebugEnabled()) { - log.debug(">>> close local storage " + localConfiguration); + log.debug(">>> close local storage " + localDataSource); } // on doit fermer le storage local ouvert - localDataSourceService.close(); + localDataSource.close(); } - localConfiguration = null; + localDataSource = null; if (log.isDebugEnabled()) { log.debug("Will create new storage..."); @@ -485,17 +486,16 @@ public class StorageUIHandler { try { - sourceConfiguration = newDataSourceConfigurationFromModel(model, t("observe.storage.label.local")); + ObserveDataSourceConfiguration dataSourceConfiguration = newDataSourceConfigurationFromModel(model, t("observe.storage.label.local")); + currentDataSource = new ObserveSwingDataSource(dataSourceConfiguration); // ouverture du nouveau storage - DataSourceService dataSourceService = observeContext.newService(sourceConfiguration, DataSourceService.class); - ObserveDataSourceConnection sourceConnection = dataSourceService.open(sourceConfiguration); + currentDataSource.open(); - observeContext.setObserveDataSourceConfiguration(sourceConfiguration); - observeContext.setObserveDataSourceConnection(sourceConnection); + observeContext.setDataSource(currentDataSource); if (log.isInfoEnabled()) { - log.info(">>> main storage opened " + sourceConfiguration.getLabel()); + log.info(">>> main storage opened " + currentDataSource.getConfiguration().getLabel()); } if (model.isStoreRemoteConfig()) { @@ -516,7 +516,7 @@ public class StorageUIHandler { } } if (log.isInfoEnabled()) { - log.info(">>> create initial dump with " + localConfiguration + + log.info(">>> create initial dump with " + localDataSource + " in " + f); } try { @@ -600,19 +600,22 @@ public class StorageUIHandler { * <p/> * <b>Note:</b> Si ce paramètre vaut {@code null}, on export tout. * - * @param service le service locale qui encapsule la base locale + * @param dataSource la source de donnée qui encapsule la base locale * @param dst le fichier de sauvegarde - * @param marees les marees a exporter (si {@code null} on exporte tout) + * @param trips les marees a exporter (si {@code null} on exporte tout) */ - public void backupLocalDatabase(DataSource service, + public void backupLocalDatabase(ObserveSwingDataSource dataSource, File dst, - Set<String> marees) { - if (marees == null) { + Set<IdDto> trips) { + + DataSourceDumpProducerService dumpService = dataSource.newService(DataSourceDumpProducerService.class); + + + if (trips == null) { if (log.isInfoEnabled()) { log.info("will export all datas."); } - // FIXME - //backupLocalDatabase(service, dst); + backupLocalDatabase(dumpService, dst); return; } if (dst == null) { @@ -620,55 +623,28 @@ public class StorageUIHandler { "file where to backup can not be null"); } if (log.isInfoEnabled()) { - log.info("will export " + marees.size() + " marees to " + dst); + log.info("will export " + trips.size() + " marees to " + dst); } if (log.isDebugEnabled()) { - log.debug(marees); + log.debug(trips); } // on doit dumper la base distante dans une base h2 et en faire // la sauvegarde - ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); - String[] mareeIds = new String[marees.size()]; + ImmutableSet<String> tripIds = ImmutableSet.copyOf(Iterables.transform(trips, IdDtos.getIdFunction())); - int index = 0; - for (String m : marees) { - mareeIds[index++] = m; - } + byte[] dump = dumpService.getDataDump(tripIds); - DataSource tempStorage = null; - try { - //FIXME -// tempStorage = ObserveServiceHelper.newEmptyTempStorage( -// config, -// t("observe.storage.label.backup"), -// "tmpBackup_" + dst.getName() -// ); -// -// tempStorage.doOpen(); -// -// replicationService.replicateReferentiel(service, tempStorage); -// replicationService.replicateData(service, tempStorage, mareeIds); + try (FileOutputStream fileOutputStream = new FileOutputStream(dst)) { - tempStorage.storeDB(dst); + IOUtils.write(dump, fileOutputStream); - } catch (Exception e) { + } catch (IOException e) { ErrorDialogUI.showError(e); if (log.isErrorEnabled()) { log.error(e); } - } finally { - if (tempStorage != null) { - try { - tempStorage.doClose(true); - } catch (DataSourceException e) { - ErrorDialogUI.showError(e); - if (log.isErrorEnabled()) { - log.error(e); - } - } - } } } @@ -700,6 +676,9 @@ public class StorageUIHandler { case USE_REMOTE: computeConnectRemoteReport(selectDataUI, model, sb); break; + case USE_SERVER: + computeConnectServerReport(selectDataUI, model, sb); + break; } } return sb.toString(); @@ -779,9 +758,16 @@ public class StorageUIHandler { case IMPORT_REMOTE_STORAGE: addTag("h3", sb, t("observe.storage.report.action.import.remote.referentiel")); - //FIXME -// addTag("pre", sb, model.getPgConfig().toString()); + + addTag("pre", sb, model.getPgConfig().toString()); break; + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.referentiel")); + + addTag("pre", sb, model.getRestConfig().toString()); + break; + case EMPTY: break; case IMPORT_LOCAL_STORAGE: @@ -800,10 +786,9 @@ public class StorageUIHandler { addTag("h3", sb, t("observe.storage.report.selected.localStorageFile")); addOpenTag("ul", sb); - //FIXME -// addTag("li", sb, -// model.getH2Config().getDataDirectory().getAbsolutePath() -// ); + addTag("li", sb, + model.getH2Config().getDirectory().getAbsolutePath() + ); addCloseTag("ul", sb); computeCanMigrateAction(model, sb); @@ -819,8 +804,8 @@ public class StorageUIHandler { addTag("hr", sb, ""); addTag("h3", sb, t("observe.storage.report.selected.remoteStorage")); - //FIXME -// addTag("pre", sb, model.getPgConfig().toString()); + + addTag("pre", sb, model.getPgConfig().toString()); computeCanMigrateAction(model, sb); } else { @@ -828,8 +813,7 @@ public class StorageUIHandler { addTag("hr", sb, ""); addTag("h3", sb, t("observe.storage.report.selected.remoteStorage")); - //FIXME -// addTag("pre", sb, model.getPgConfig().toString()); + addTag("pre", sb, model.getPgConfig().toString()); if (ObstunaAdminAction.CREATE == action) { @@ -846,9 +830,14 @@ public class StorageUIHandler { case IMPORT_REMOTE_STORAGE: addTag("h3", sb, - t("observe.storage.report.action.import.remote.referentiel")); - //FIXME -// addTag("pre", sb, model.getCentralSourceModel().getPgConfig().toString()); + t("observe.storage.report.action.import.remote.referentiel")); + addTag("pre", sb, model.getCentralSourceModel().getPgConfig().toString()); + break; + + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.referentiel")); + addTag("pre", sb, model.getCentralSourceModel().getRestConfig().toString()); break; } @@ -874,8 +863,13 @@ public class StorageUIHandler { case IMPORT_REMOTE_STORAGE: addTag("h3", sb, t("observe.storage.report.action.import.remote.data")); - //FIXME -// addTag("pre", sb, model.getDataSourceModel().getPgConfig().toString()); + addTag("pre", sb, model.getDataSourceModel().getPgConfig().toString()); + break; + + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.data")); + addTag("pre", sb, model.getDataSourceModel().getRestConfig().toString()); break; } @@ -900,6 +894,106 @@ public class StorageUIHandler { } } + protected void computeConnectServerReport(SelectDataUI tabUI, + StorageUIModel model, + StringBuilder sb) { + + ObstunaAdminAction action = model.getAdminAction(); + if (action == null) { + addTag("h2", sb, t("observe.storage.report.action.connect.remote")); + addTag("hr", sb, ""); + + addTag("h3", sb, t("observe.storage.report.selected.remoteStorage")); + + addTag("pre", sb, model.getRestConfig().toString()); + + computeCanMigrateAction(model, sb); + } else { + addTag("h2", sb, t(action.getLabel())); + addTag("hr", sb, ""); + + addTag("h3", sb, t("observe.storage.report.selected.remoteStorage")); + addTag("pre", sb, model.getRestConfig().toString()); + + if (ObstunaAdminAction.CREATE == action) { + + if (model.isImportReferentiel()) { + switch (model.getReferentielImportMode()) { + + case IMPORT_EXTERNAL_DUMP: + addTag("h3", sb, + t("observe.storage.report.action.referentiel.import.backup")); + addOpenTag("ul", sb); + addTag("li", sb, model.getCentralSourceModel().getDumpFile().getAbsolutePath()); + addCloseTag("ul", sb); + break; + + case IMPORT_REMOTE_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.remote.referentiel")); + addTag("pre", sb, model.getCentralSourceModel().getPgConfig().toString()); + break; + + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.referentiel")); + addTag("pre", sb, model.getCentralSourceModel().getRestConfig().toString()); + break; + } + + } else { + + addTag("h3", sb, + t("observe.storage.report.action.no.referentiel.import")); + + } + + if (model.isImportData()) { + + switch (model.getDataImportMode()) { + + case IMPORT_EXTERNAL_DUMP: + addTag("h3", sb, + t("observe.storage.report.action.data.import.backup")); + addOpenTag("ul", sb); + addTag("li", sb, model.getDataSourceModel().getDumpFile().getAbsolutePath()); + addCloseTag("ul", sb); + break; + + case IMPORT_REMOTE_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.remote.data")); + addTag("pre", sb, model.getDataSourceModel().getPgConfig().toString()); + break; + + case IMPORT_SERVER_STORAGE: + addTag("h3", sb, + t("observe.storage.report.action.import.server.data")); + addTag("pre", sb, model.getDataSourceModel().getRestConfig().toString()); + break; + } + + try { + computeImportDataReport(model, sb); + } catch (DataSourceException e) { + throw new RuntimeException("Could not render data to import", e); + } + + } else { + + addTag("h3", sb, + t("observe.storage.report.action.no.data.import")); + + } + + } else { + computeCanMigrateAction(model, sb); + } + + computeSecurityreport(model, sb); + } + } + protected void computeBackupReport(SelectDataUI stepUI, StorageUIModel model, StringBuilder sb) { @@ -1117,7 +1211,7 @@ public class StorageUIHandler { sb.append("</").append(tag).append('>'); } - public void initSelectData(StorageUI ui, DataSource source, boolean selectAll) { + public void initSelectData(StorageUI ui, ObserveSwingDataSource source, boolean selectAll) { StorageUIModel model = ui.getModel(); @@ -1125,20 +1219,19 @@ public class StorageUIHandler { Preconditions.checkState(source != null, "Can't select data on a null dataSource"); - //FIXME -// DataSelectionModel dataModel = new DataSelectionModel(); -// dataModel.setUseData(true); -// dataModel.setUseOpenData(true); -// dataModel.setUseReferentiel(false); -// -// DataSelectionModel.populate(dataModel, ObserveContext.get().getDataService(), source); -// -// if (selectAll) { -// -// dataModel.addAllSelectedData(); -// -// } -// + DataSelectionModel dataModel = new DataSelectionModel(); + dataModel.setUseData(true); + dataModel.setUseOpenData(true); + dataModel.setUseReferentiel(false); + + DataSelectionModel.populate(dataModel, source); + + if (selectAll) { + + dataModel.addAllSelectedData(); + + } + // positionnement du model de selection de données // dans le model du wizard // model.setSelectDataModel(dataModel); @@ -1174,23 +1267,21 @@ public class StorageUIHandler { try { // Creation de la data source de lecture des données à sélectionner - DataSourceConfig dataSourceConfig = model.toImportDataSourceConfig(); - Preconditions.checkState(dataSourceConfig != null, "Can't select data on a null dataSource"); + ObserveSwingDataSource importDataSource = model.toImportDataSourceConfig(); - //FIXME -// DataSource source = DataSourceFactory.newService(dataSourceConfig); -// -// try { -// -// source.doOpen(); -// -// model.checkImportDbVersion(source); -// -// initSelectData(ui, source, false); -// -// } finally { -// source.doClose(false); -// } + Preconditions.checkState(importDataSource != null, "Can't select data on a null dataSource"); + + try { + + importDataSource.open(); + + model.checkImportDbVersion(importDataSource.getConnection()); + + initSelectData(ui, importDataSource, false); + + } finally { + importDataSource.close(); + } } catch (Exception e) { if (log.isErrorEnabled()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index dfbdd55..2914fc0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -21,13 +21,10 @@ */ package fr.ird.observe.ui.storage; -import com.google.common.collect.Sets; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.business.db.DataSource; -import fr.ird.observe.business.db.DataSourceConfig; -import fr.ird.observe.business.db.DataSourceException; import fr.ird.observe.business.util.SecurityModel; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.db.constantes.DbMode; @@ -38,22 +35,22 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; -import fr.ird.observe.services.dto.ReferenceDto; -import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import jaxx.runtime.JAXXContext; import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.wizard.WizardModel; import jaxx.runtime.swing.wizard.WizardUILancher; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.util.FileUtil; import org.nuiton.util.version.Version; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; @@ -170,7 +167,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { protected boolean canUseServerService = true; /** le modèle de sélection de données (utilisé pour les exports) */ - protected Set<ReferenceDto> selectDataModel; + protected DataSelectionModel selectDataModel; /** le modèle de sécurité (utilisé pour la mise à jour sécurité sur base distante) */ protected SecurityModel securityModel; @@ -229,7 +226,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { StorageStep.BACKUP, StorageStep.CONFIRM ); - selectDataModel = Sets.newHashSet(); + selectDataModel = new DataSelectionModel(); securityModel = new SecurityModel(); connexionStatus = ConnexionStatus.UNTESTED; @@ -264,6 +261,19 @@ public class StorageUIModel extends WizardModel<StorageStep> { EMPTY_PASSWORD, null ); + + PropertyChangeListener clearStatus = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + setConnexionStatus(ConnexionStatus.UNTESTED); + } + }; + + addPropertyChangeListener(REMOTE_URL_ROPERTY_NAME, clearStatus); + addPropertyChangeListener(REMOTE_LOGIN_ROPERTY_NAME, clearStatus); + addPropertyChangeListener(REMOTE_PASSWORD_PROPERTY_NAME, clearStatus); + addPropertyChangeListener(SERVER_DATABASE_PROPERTY_NAME, clearStatus); + addPropertyChangeListener(USE_SSL_PROPERTY_NAME, clearStatus); } /** @@ -406,7 +416,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { * @since 2.0 */ public void initFromPreviousConfig(JAXXContext context, - DataSourceConfig previousConfig) { + ObserveDataSourceConfiguration previousConfig) { if (previousConfig == null) { @@ -685,10 +695,14 @@ public class StorageUIModel extends WizardModel<StorageStep> { return adminAction; } - public Set<ReferenceDto> getSelectDataModel() { + public DataSelectionModel getSelectDataModel() { return selectDataModel; } + public void setSelectDataModel(DataSelectionModel selectDataModel) { + this.selectDataModel = selectDataModel; + } + public CreationMode getReferentielImportMode() { return referentielImportMode; } @@ -879,23 +893,20 @@ public class StorageUIModel extends WizardModel<StorageStep> { } break; case CONFIG: - if (dbMode == DbMode.USE_REMOTE) { -// validate = pgConfig.isValid(); + if (dbMode == DbMode.USE_REMOTE || dbMode == DbMode.USE_SERVER) { + validate = ConnexionStatus.SUCCESS.equals(getConnexionStatus()); //FIXME Il faut savoir si l'utilisateur est le //FIXME propriétaire de la base -// if (validate) { -// if (getAdminAction() != null) { -// -// // il faut des droits rw sur la base distante -// validate = pgConfig.isCanReadReferentiel() && -// pgConfig.isCanWriteReferentiel() && -// pgConfig.isCanWriteData() && -// pgConfig.isCanReadData(); -// } -// } - } else { - //FIXME -// validate = h2Config.isValid(); + if (validate) { + if (getAdminAction() != null) { + + // il faut des droits rw sur la base distante + validate = connection.canReadReferential() && + connection.canWriteReferential() && + connection.canWriteData() && + connection.canReadData(); + } + } } break; case CONFIG_REFERENTIEL: @@ -913,10 +924,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { // external dumb must be filled File dumpFile = centralSourceModel.getDumpFile(); validate = dumpFile != null && - dumpFile.exists() && - dumpFile.getName().endsWith(".sql.gz"); + dumpFile.exists() && + dumpFile.getName().endsWith(".sql.gz"); break; case IMPORT_REMOTE_STORAGE: + case IMPORT_SERVER_STORAGE: // remote db connexion must be valid validate = centralSourceModel.isValid(); @@ -928,10 +940,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } if (validate) { - // must be able to read references - String dbLabel = t("observe.storage.label.reference.import.db"); - //FIXME -// validate = centralSourceModel.toPostgresStorageConfig(dbLabel).isCanReadReferentiel(); + validate = centralSourceModel.getConnection().canReadReferential(); } break; } @@ -953,8 +962,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { // external dumb must be filled File dumpFile = dataSourceModel.getDumpFile(); validate = dumpFile != null && - dumpFile.exists() && - dumpFile.getName().endsWith(".sql.gz"); + dumpFile.exists() && + dumpFile.getName().endsWith(".sql.gz"); break; case IMPORT_REMOTE_STORAGE: // remote db connexion must be valid @@ -964,29 +973,28 @@ public class StorageUIModel extends WizardModel<StorageStep> { // check remote db != remote import db validate = !dataSourceModel.getRemoteUrl().equals(getRemoteUrl()); + } if (validate) { - // must be able to read data - String dbLabel = t("observe.storage.label.data.import.db"); - //FIXME -// validate = dataSourceModel.toPostgresStorageConfig(dbLabel).isCanReadData(); + validate = centralSourceModel.getConnection().canReadData(); + } + break; } break; case BACKUP: validate = !doBackup || - backupFile != null && - !backupFile.exists() && - backupFile.getName().endsWith(".sql.gz"); + backupFile != null && + !backupFile.exists() && + backupFile.getName().endsWith(".sql.gz"); break; case SELECT_DATA: // chemit 20100525 : aucune contrainte dans ce cas - //FIXME -// validate = selectDataModel != null; + validate = !selectDataModel.isEmpty(); break; case ROLES: @@ -1021,13 +1029,12 @@ public class StorageUIModel extends WizardModel<StorageStep> { validate(StorageStep.CONFIG); break; case USE_REMOTE: + case USE_SERVER: result = validate(StorageStep.CONFIG); break; case USE_LOCAL: //TODO A tester... - //FIXME -// result = h2Config.isValid() && -// h2Config.isStorageExists(); + result = h2Config.getDatabaseFile().exists(); break; } } @@ -1183,7 +1190,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (oldValue != dataImportMode) { // reset selected data to import - selectDataModel.clear(); + setSelectDataModel(null); updateUniverse(); } @@ -1511,15 +1518,11 @@ public class StorageUIModel extends WizardModel<StorageStep> { dst.setCanUseLocalService(isCanUseLocalService()); dst.setCanUseRemoteService(isCanUseRemoteService()); dst.setCanUseServerService(isCanUseServerService()); - //FIXME -// pgConfig.copyTo(dst.pgConfig); - //FIXME -// h2Config.copyTo(dst.h2Config); - //FIXME -// dst.setSelectDataModel(getSelectDataModel()); + dst.fromStorageConfig(h2Config); + dst.fromStorageConfig(pgConfig); + dst.fromStorageConfig(restConfig); + dst.setSelectDataModel(getSelectDataModel()); dst.setSecurityModel(getSecurityModel()); - //FIXME -// dst.setPgInstall(getPgInstall()); dst.setAdminAction(getAdminAction()); } @@ -1538,18 +1541,21 @@ public class StorageUIModel extends WizardModel<StorageStep> { */ public boolean testRemote() { - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - DataSourceService dataSourceService = applicationContext.newService(pgConfig, DataSourceService.class); + ObserveSwingDataSource dataSource = new ObserveSwingDataSource(pgConfig); boolean result = false; connexionStatusError = ""; try { - dataSourceService.checkCanConnect(pgConfig); + dataSource.checkCanConnect(); + + dataSource.open(); - ObserveDataSourceConnection dataSourceConnection = dataSourceService.open(pgConfig); + ObserveDataSourceConnection connection = dataSource.getConnection(); - if (dataSourceConnection.getVersion().equals(getModleVersion())) { + Version versionDataSource = connection.getVersion(); + + if (versionDataSource.equals(getModleVersion())) { setConnexionStatus(ConnexionStatus.SUCCESS); @@ -1557,7 +1563,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } else { - connexionStatusError = t("observe.storage.error.dbVersionMismatch", dataSourceConnection.getVersion(), getModleVersion()); + connexionStatusError = t("observe.storage.error.dbVersionMismatch", versionDataSource, getModleVersion()); setConnexionStatus(ConnexionStatus.FAILED); @@ -1574,6 +1580,10 @@ public class StorageUIModel extends WizardModel<StorageStep> { connexionStatusError = e.getMessage(); setConnexionStatus(ConnexionStatus.FAILED); + } finally { + if (dataSource.isOpen()) { + dataSource.close(); + } } return result; @@ -1583,33 +1593,16 @@ public class StorageUIModel extends WizardModel<StorageStep> { return connexionStatusError; } - public boolean isPgConfigVersionMatch() { - //FIXME -// return getModleVersion().equals(pgConfig.getVersion()); - return false; - } - public void setSecurityModel(SecurityModel securityModel) { this.securityModel = securityModel; } -// public void setPgInstall(PGInstall pgInstall) { -// this.pgInstall = pgInstall; -// if (pgInstall != null) { -// this.pgInstall.init(pgConfig, securityModel, false); -// } -// } - public boolean isShowMigrationSql() { - //FIXME -// return pgConfig.isShowMigrationSql(); - return false; + return pgConfig.isShowMigrationSql(); } public boolean isShowMigrationProgression() { - //FIXME -// return pgConfig.isShowMigrationProgression(); - return false; + return pgConfig.isShowMigrationProgression(); } public void setConnexionStatus(ConnexionStatus connexionStatus) { @@ -1618,9 +1611,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { firePgConfigChanged(CONNEXION_STATUS_PROPERTY_NAME, oldValue, connexionStatus); } - public void checkImportDbVersion(DataSource importDatasource) throws DataSourceException { + public void checkImportDbVersion(ObserveDataSourceConnection connection) { - Version importServiceDbVersion = importDatasource.getDbVersion(); + Version importServiceDbVersion = connection.getVersion(); Version currentDbVersion = getModleVersion(); if (importServiceDbVersion.before(currentDbVersion)) { throw new IllegalStateException("Import db version (" + importServiceDbVersion + ") is not compatible with the current database version (" + currentDbVersion + ")"); @@ -1628,9 +1621,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { } - public DataSourceConfig toImportReferentielSourceConfig() { + public DataSourceCreateConfigurationDto toImportReferentielSourceConfig() { - DataSourceConfig importReferenceConfig; + DataSourceCreateConfigurationDto importReferenceConfig; if (isImportReferentiel()) { @@ -1640,29 +1633,44 @@ public class StorageUIModel extends WizardModel<StorageStep> { case IMPORT_EXTERNAL_DUMP: - // import external dump referentiel + importReferenceConfig = new DataSourceCreateConfigurationDto(); + + try (FileInputStream inputStream = new FileInputStream(dumpFile)) { + + byte[] bytes = IOUtils.toByteArray(inputStream); + + importReferenceConfig.setImportDatabase(bytes); - File tempDirectory; - try { - tempDirectory = FileUtil.createTempDirectory("obstunaReferentielImport", ""); } catch (IOException e) { - throw new RuntimeException("Could not create new temporary directory", e); - } -//FIXME -// importReferenceConfig = DataSourceFactory.newH2ConfigFromDump(dbLabel, -// tempDirectory, -// getCentralSourceModel().toH2StorageConfig(dbLabel).getDbDump(), -// "sa", -// new char[]{'s', 'a'}, -// false); + throw new RuntimeException("Could not read dump file", e); + + } break; case IMPORT_REMOTE_STORAGE: // import referentiel from a remote db - //FIXME -// importReferenceConfig = getCentralSourceModel().toPostgresStorageConfig(dbLabel); + ObserveDataSourceConfigurationTopiaPG pgConfig = getCentralSourceModel().toPGStorageConfig(dbLabel); + + pgConfig.setCanMigrate(false); + + importReferenceConfig = new DataSourceCreateConfigurationDto(); + + importReferenceConfig.setImportReferentialDataSourceConfiguration(pgConfig); + + + break; + + case IMPORT_SERVER_STORAGE: + + // import referentiel from a server db + ObserveDataSourceConfigurationRest restConfig = getCentralSourceModel().toRestStorageConfig(dbLabel); + + importReferenceConfig = new DataSourceCreateConfigurationDto(); + + importReferenceConfig.setImportReferentialDataSourceConfiguration(restConfig); + break; @@ -1670,9 +1678,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { throw new IllegalStateException("Can't come here"); } -//FIXME -// importReferenceConfig.setCanMigrate(false); - importReferenceConfig = null; } else { @@ -1685,9 +1690,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { } - public DataSourceConfig toImportDataSourceConfig() { + public ObserveSwingDataSource toImportDataSourceConfig() { - DataSourceConfig dataSourceConfig; + ObserveSwingDataSource importDataSource; if (isImportData()) { @@ -1697,43 +1702,63 @@ public class StorageUIModel extends WizardModel<StorageStep> { case IMPORT_EXTERNAL_DUMP: - File tempDirectory; - try { - tempDirectory = FileUtil.createTempDirectory("obstunaDataImport", ""); - } catch (IOException e) { - throw new RuntimeException("Could not create new temporary directory", e); + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + + importDataSource = context.createDataSourceH2Temp(dbLabel); + + DataSourceCreateConfigurationDto createConfigurationDto = new DataSourceCreateConfigurationDto(); + + try (FileInputStream inputStream = new FileInputStream(dumpFile)) { + + byte[] bytes = IOUtils.toByteArray(inputStream); + + createConfigurationDto.setImportDatabase(bytes); + + importDataSource.create(createConfigurationDto); + + importDataSource.close(); + + } catch (Exception e) { + + throw new RuntimeException("Could not read dump file", e); + } -//FIXME -// dataSourceConfig = DataSourceFactory.newH2ConfigFromDump(dbLabel, -// tempDirectory, -// getDataSourceModel().toH2StorageConfig(dbLabel).getDbDump(), -// "sa", -// new char[]{'s', 'a'}, -// false); break; case IMPORT_REMOTE_STORAGE: -//FIXME -// dataSourceConfig = getDataSourceModel().toPostgresStorageConfig(dbLabel); + + // import referentiel from a remote db + ObserveDataSourceConfigurationTopiaPG pgConfig = getCentralSourceModel().toPGStorageConfig(dbLabel); + + pgConfig.setCanMigrate(false); + + importDataSource = new ObserveSwingDataSource(pgConfig); + + break; + + case IMPORT_SERVER_STORAGE: + + // import referentiel from a server db + ObserveDataSourceConfigurationRest restConfig = getCentralSourceModel().toRestStorageConfig(dbLabel); + + importDataSource = new ObserveSwingDataSource(restConfig); break; default: throw new IllegalStateException("Can't come here"); } - //FIXME -// dataSourceConfig.setCanMigrate(false); - } else { - dataSourceConfig = null; + importDataSource = null; } - //FIXME -// return dataSourceConfig; - return null; + return importDataSource; } + public ObserveDataSourceConnection getConnection() { + return connection; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css index aee7ca0..cfcb07b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/ConfigUI.css @@ -86,6 +86,7 @@ } #remoteUseSsl { + visible: {DbMode.USE_REMOTE.equals(model.getDbMode())}; text:"observe.storage.remote.useSll"; selected:{model.isUseSsl()}; } diff --git a/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java similarity index 60% rename from observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java rename to observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java index 5877ba4..f20ad4f 100644 --- a/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/DataSelectionModel.java @@ -19,36 +19,34 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.db.model; - -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.constants.DataSourceState; -import fr.ird.observe.entities.Entities; -import fr.ird.observe.entities.Trip; -import fr.ird.observe.entities.Trips; -import fr.ird.observe.entities.longline.TripLongline; -import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.entities.referentiel.Programs; -import fr.ird.observe.entities.seine.TripSeine; +package fr.ird.observe.ui.storage.tabs; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.ReferenceSetDto; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramDtos; +import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.ReferentialDtos; +import fr.ird.observe.services.service.ReferentialService; +import fr.ird.observe.services.service.longline.TripLonglineService; +import fr.ird.observe.services.service.seine.TripSeineService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.util.TopiaEntityHelper; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.TreeMap; /** * Un modèle pour représenter la sélection de données. @@ -59,72 +57,54 @@ import java.util.TreeMap; public class DataSelectionModel implements Serializable { public static void populate(DataSelectionModel model, - DataService service, - DataSource source) throws Exception { + ObserveSwingDataSource source) throws Exception { - source.checkState(DataSourceState.OPEN); + Preconditions.checkState(source.isOpen()); - Map<String, List<String>> datas = new HashMap<String, List<String>>(); + Map<ReferenceDto<ProgramDto>, List<IdDto>> datas = Maps.newHashMap(); - List<Program> programs = service.getAllProgramStub(source); - for (Program program : programs) { + ReferentialService referentialService = source.newService(ReferentialService.class); + TripSeineService tripSeineService = source.newService(TripSeineService.class); + TripLonglineService tripLonglineService = source.newService(TripLonglineService.class); - if (Programs.isProgramSeine(program)) { - List<TripSeine> trips = service.getTripSeineStubByProgram(source, program.getTopiaId()); - populate(model, program, trips, datas); - } + ReferenceSetDto<ProgramDto> programSet = referentialService.getReferentialReferenceSet(ProgramDto.class); - if (Programs.isProgramLongline(program)) { - List<TripLongline> trips = service.getTripLonglineStubByProgram(source, program.getTopiaId()); - populate(model, program, trips, datas); - } - } - model.setDatas(datas); - } + for (ReferenceDto<ProgramDto> program : programSet.getReference()) { - protected static <T extends Trip> void populate(DataSelectionModel model, - Program program, - List<T> trips, - Map<String, List<String>> datas) { + List<IdDto> idDtos = Lists.newArrayList(); - model.cacheEntity(program); + if (ProgramDtos.isProgramSeine(program)) { - if (!trips.isEmpty()) { - List<String> tripIds = new ArrayList<String>(); + idDtos.addAll(tripSeineService.getTripSeineByProgram(program.getId())); - if (model.isUseOpenData()) { + } else if (ProgramDtos.isProgramLongline(program)) { - // ajout de toutes les marées ouvertes ou non - for (T trip : trips) { - trip.setProgram(program); - model.cacheEntity(trip); - tripIds.add(trip.getTopiaId()); - } + idDtos.addAll(tripLonglineService.getTripLonglineStubByProgram(program.getId())); - } else { + } - // ajout de toutes les marées non ouvertes - for (T trip : trips) { - trip.setProgram(program); - if (!trip.isOpen()) { - model.cacheEntity(trip); - tripIds.add(trip.getTopiaId()); - } - } + populate(model, program, idDtos, datas); - } + } + model.setDatas(datas); - if (!tripIds.isEmpty()) { + } - datas.put(program.getTopiaId(), tripIds); - if (log.isDebugEnabled()) { - log.debug("Add program " + program.getLabel1() + " with " + tripIds.size() + " trip(s)."); - } + protected static void populate(DataSelectionModel model, + ReferenceDto<ProgramDto> program, + List<IdDto> trips, + Map<ReferenceDto<ProgramDto>, List<IdDto>> datas) { + if (!trips.isEmpty()) { + + datas.put(program, trips); + if (log.isDebugEnabled()) { + log.debug("Add program " + program.getPropertyValue(ProgramDto.PROPERTY_LABEL1) + " with " + trips.size() + " trip(s)."); } + } } @@ -156,25 +136,16 @@ public class DataSelectionModel implements Serializable { protected boolean useReferentiel; /** la liste des programs utilisables (qui ont des marees) */ - protected transient Map<String, List<String>> datas; - - /** - * Le cache des entités chargées pour construire le modèle de sélection. - * - * Ces entités pourront ensuite être injectées dans les noeuds sans avoir à les recharger. - * - * @since 4.0 - */ - protected final Map<String, ? super TopiaEntity> entityCache; + protected transient Map<ReferenceDto<ProgramDto>, List<IdDto>> datas; /** la liste des marees selectionnee */ - protected transient Set<String> selectedData; + protected transient Set<IdDto> selectedData; /** la liste des referentiels possibles */ - protected final Set<Class<?>> referentiel; + protected final Set<Class<? extends ReferentialDto>> referentiel; /** la liste des referentiels selectionnes */ - protected final Set<Class<?>> selectedReferentiel; + protected final Set<Class<? extends ReferentialDto>> selectedReferentiel; /** nb marees */ protected int nbTrips; @@ -190,12 +161,9 @@ public class DataSelectionModel implements Serializable { public DataSelectionModel() { pcs = new PropertyChangeSupport(this); - Class<?>[] classes = TopiaEntityHelper.getContracts(Entities.REFERENCE_ENTITIES); - List<Class<?>> list = Arrays.asList(classes); - referentiel = new HashSet<Class<?>>(list); - selectedReferentiel = new HashSet<Class<?>>(); + referentiel = Sets.newHashSet(ReferentialDtos.REFERENCE_DTOS); + selectedReferentiel = Sets.newHashSet(); nbReferentiels = referentiel.size(); - entityCache = new TreeMap<String, TopiaEntity>(); } public boolean isUseReferentiel() { @@ -224,13 +192,6 @@ public class DataSelectionModel implements Serializable { return true; } - protected void cacheEntity(TopiaEntity entity) { - entityCache.put(entity.getTopiaId(), entity); - } - - public TopiaEntity getEntityCache(String id) { - return (TopiaEntity) entityCache.get(id); - } public boolean isReferentielEmpty() { return selectedReferentiel.isEmpty(); @@ -248,42 +209,41 @@ public class DataSelectionModel implements Serializable { return selectedData != null && selectedData.size() == nbTrips; } - public Set<Class<?>> getSelectedReferentiel() { + public Set<Class<? extends ReferentialDto>> getSelectedReferentiel() { return selectedReferentiel; } - public Map<String, List<String>> getDatas() { + public Map<ReferenceDto<ProgramDto>, List<IdDto>> getDatas() { if (datas == null) { - datas = new HashMap<String, List<String>>(); + datas = Maps.newHashMap(); } return datas; } - public Set<String> getSelectedData() { + public Set<IdDto> getSelectedData() { if (selectedData == null) { - selectedData = new HashSet<String>(); + selectedData = Sets.newHashSet(); } return selectedData; } - public Map<String, List<String>> getSelectedDataByProgram() { + public Map<ReferenceDto<ProgramDto>, List<IdDto>> getSelectedDataByProgram() { if (datas == null || selectedData == null || selectedData.isEmpty()) { return Collections.emptyMap(); } - Map<String, List<String>> result = - new HashMap<String, List<String>>(datas.size()); + Map<ReferenceDto<ProgramDto>, List<IdDto>> result = Maps.newHashMap(); - for (String m : selectedData) { + for (IdDto idDto : selectedData) { // on recherche son program - for (String p : datas.keySet()) { - if (datas.get(p).contains(m)) { - List<String> trips = result.get(p); - if (trips == null) { - trips = new ArrayList<String>(); - result.put(p, trips); + for (ReferenceDto<ProgramDto> p : datas.keySet()) { + if (datas.get(p).contains(idDto)) { + List<IdDto> idDtos = result.get(p); + if (idDtos == null) { + idDtos = Lists.newArrayList(); + result.put(p, idDtos); } - trips.add(m); + idDtos.add(idDto); break; } } @@ -291,38 +251,32 @@ public class DataSelectionModel implements Serializable { return result; } - public boolean isSelectedData(String id) { + public boolean isSelectedData(IdDto idDto) { - if (Trips.isTripId(id)) { + boolean result; - // recherche directe sur les ids de marees - return getSelectedData().contains(id); - } - - if (id.startsWith(Program.class.getName())) { - // on doit verifier que toutes les marees du program sont sélectionnées - List<String> tripIds = datas.get(id); - if (CollectionUtils.isEmpty(tripIds)) { + if (idDto instanceof ReferenceDto) { - // pas de marées - return false; - } + List<IdDto> trips = datas.get(idDto); + result = ! CollectionUtils.isEmpty(trips); - for (String tripId : tripIds) { - if (!isSelectedData(tripId)) { + for (IdDto trip : trips) { + if (!getSelectedData().contains(trip)) { // au moins une marée non sélectionnée - return false; + result = false; } } + } else { + + // recherche directe sur les ids de marees + result = getSelectedData().contains(idDto); - // toutes les marées sont sélectionnée - return true; } // ne devrait pas arrivée - return false; + return result; } @@ -346,7 +300,7 @@ public class DataSelectionModel implements Serializable { firePropertyChange(PROPERTY_USE_OPEN_DATA, useOpenData); } - public void addSelectedReferentiel(Class<?> type) { + public void addSelectedReferentiel(Class<? extends ReferentialDto> type) { checkReferentielType(type); if (log.isDebugEnabled()) { log.debug("Add referentiel type " + type); @@ -381,13 +335,13 @@ public class DataSelectionModel implements Serializable { firePropertyChange(PROPERTY_SELECTED_REFERENTIEL, selectedReferentiel); } - public void setDatas(Map<String, List<String>> datas) { + public void setDatas(Map<ReferenceDto<ProgramDto>, List<IdDto>> datas) { this.datas = datas; // on compte le count de marées totale int nbTrips = 0; if (datas != null) { - for (List<String> marees : datas.values()) { + for (List<IdDto> marees : datas.values()) { nbTrips += marees.size(); } } @@ -400,26 +354,24 @@ public class DataSelectionModel implements Serializable { firePropertyChange(PROPERTY_DATAS, datas); } - public void addSelectedData(String id) { + public void addSelectedData(IdDto idDto) { - if (Trips.isTripId(id)) { + if (idDto instanceof ReferenceDto) { + + // ajout de toutes les marées du program - // ajout d'une marée if (log.isDebugEnabled()) { - log.debug("Add Trip " + id); + log.debug("Add all trips of program " + idDto.getId()); } - getSelectedData().add(id); - } else if (id.startsWith(Program.class.getName())) { - - // ajout de toutes les marées du program + getSelectedData().addAll(datas.get(idDto)); + } else { + // ajout d'une marée if (log.isDebugEnabled()) { - log.debug("Add all trips of program " + id); + log.debug("Add Trip " + idDto.getId()); } - getSelectedData().addAll(datas.get(id)); + getSelectedData().add(idDto); } - - firePropertyChange(PROPERTY_SELECTED_DATA, selectedData); } @@ -427,28 +379,29 @@ public class DataSelectionModel implements Serializable { if (log.isDebugEnabled()) { log.debug("All all data."); } - for (List<String> p : datas.values()) { + for (List<IdDto> p : datas.values()) { getSelectedData().addAll(p); } firePropertyChange(PROPERTY_SELECTED_DATA, selectedData); } - public void removeSelectedData(String id) { - if (Trips.isTripId(id)) { + public void removeSelectedData(IdDto idDto) { - // ajout d'une marée - if (log.isDebugEnabled()) { - log.debug("Remove maree " + id); - } - getSelectedData().remove(id); - } else if (id.startsWith(Program.class.getName())) { + if (idDto instanceof ReferenceDto) { // ajout de toutes les marées du program if (log.isDebugEnabled()) { - log.debug("Remove all marees of program " + id); + log.debug("Remove all marees of program " + idDto); + } + getSelectedData().removeAll(datas.get(idDto)); + } else { + + // ajout d'une marée + if (log.isDebugEnabled()) { + log.debug("Remove maree " + idDto); } - getSelectedData().removeAll(datas.get(id)); + getSelectedData().remove(idDto); } firePropertyChange(PROPERTY_SELECTED_DATA, selectedData); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/SelectDataUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/SelectDataUI.jaxx index 4d88ef5..02679ae 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/SelectDataUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/SelectDataUI.jaxx @@ -27,7 +27,7 @@ <StorageTabUI> <import> - fr.ird.observe.business.db.DataSource + fr.ird.observe.db.ObserveSwingDataSource fr.ird.observe.ui.storage.StorageStep fr.ird.observe.ui.tree.DataSelectionTreeSelectionModel fr.ird.observe.ui.tree.DataSelectionTreeCellRenderer @@ -45,7 +45,7 @@ public void init() { getHandler().initUI(this); } -public void initTree(DataSource dataSource) { +public void initTree(ObserveSwingDataSource dataSource) { getHandler().initTree(this, dataSource); } ]]> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java index 51f0182..b245639 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/tabs/StorageTabUIHandler.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.storage.tabs; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.db.constantes.ConnexionStatus; import fr.ird.observe.db.constantes.CreationMode; import fr.ird.observe.db.constantes.DbMode; @@ -396,12 +396,11 @@ public class StorageTabUIHandler { // ui.getModel().setSslCertificatFile(f); // } - public void initTree(SelectDataUI ui, DataSource source) { + public void initTree(SelectDataUI ui, ObserveSwingDataSource source) { StorageUIModel model = ui.getModel(); if (model.isUseSelectData()) { - //FIXME -// DataSelectionModel dataModel = model.getSelectDataModel(); + DataSelectionModel dataModel = model.getSelectDataModel(); ObserveTreeHelper helper = new ObserveTreeHelper(); JTree tree = ui.selectTree; helper.setUI(tree, false, null); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java index 6cd33fb..a6ddf23 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java @@ -25,7 +25,6 @@ import com.google.common.base.Preconditions; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.DecoratorService; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.OpenableDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; @@ -46,9 +45,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; -import javax.swing.*; +import javax.swing.Icon; +import javax.swing.UIManager; import javax.swing.tree.DefaultTreeModel; -import java.awt.*; +import java.awt.Color; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -109,11 +109,12 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - if (source != null) { - provider = new ObserveDataProvider(source); - setDataProvider(provider); - } + // FIXME +// DataSource source = ObserveSwingApplicationContext.get().getDataSource(); +// if (source != null) { +// provider = new ObserveDataProvider(source); +// setDataProvider(provider); +// } } return provider; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index 40d05e6..51850c4 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -121,11 +121,12 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { protected ObserveDataProvider getDataProvider() { ObserveDataProvider provider = (ObserveDataProvider) super.getDataProvider(); if (provider == null) { - DataSource source = ObserveSwingApplicationContext.get().getDataSource(); - if (source != null) { - provider = new ObserveDataProvider(source); - setDataProvider(provider); - } + // FIXME +// DataSource source = ObserveSwingApplicationContext.get().getDataSource(); +// if (source != null) { +// provider = new ObserveDataProvider(source); +// setDataProvider(provider); +// } } return provider; } diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties index 0c79ab5..aceeef5 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_en_GB.properties @@ -1834,6 +1834,8 @@ observe.storage.report.action.import.backup= observe.storage.report.action.import.internal= observe.storage.report.action.import.remote.data= observe.storage.report.action.import.remote.referentiel= +observe.storage.report.action.import.server.data= +observe.storage.report.action.import.server.referentiel= observe.storage.report.action.migrate= observe.storage.report.action.no.data.import= observe.storage.report.action.no.referentiel.import= diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties index 14f800b..ec010ce 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_es_ES.properties @@ -1836,6 +1836,8 @@ observe.storage.report.action.import.backup=Importar de una copia de seguridad \ observe.storage.report.action.import.internal=Importar de el último referencial \: observe.storage.report.action.import.remote.data= observe.storage.report.action.import.remote.referentiel=Imporatar el referencial de una base remota \: +observe.storage.report.action.import.server.data= +observe.storage.report.action.import.server.referentiel= observe.storage.report.action.migrate=Politica de actualización observe.storage.report.action.no.data.import= observe.storage.report.action.no.referentiel.import=No importar referencial diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index 5e32df1..d85dd79 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -1829,6 +1829,8 @@ observe.storage.report.action.import.backup=Import depuis une sauvegarde \: observe.storage.report.action.import.internal=Import depuis une le dernier référentiel téléchargé \: observe.storage.report.action.import.remote.data=Import de données depuis une base distante \: observe.storage.report.action.import.remote.referentiel=Import du référentiel depuis une base distante \: +observe.storage.report.action.import.server.data= +observe.storage.report.action.import.server.referentiel= observe.storage.report.action.migrate=Politique de mise à jour observe.storage.report.action.no.data.import=Pas d'import de données observe.storage.report.action.no.referentiel.import=Pas d'import de référentiel diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java index db2972e..2d709d1 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/PingServiceController.java @@ -33,7 +33,7 @@ import org.debux.webmotion.server.render.Render; public class PingServiceController extends ObserveWebMotionController { public Render ping() { - return renderContent("ping", "text/plain"); + return renderContent("pong", "text/plain"); } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java new file mode 100644 index 0000000..ce96aa0 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ProgramDtos.java @@ -0,0 +1,30 @@ +package fr.ird.observe.services.dto.referential; + +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.constants.GearType; + +public class ProgramDtos extends AbstractProgramDtos { + + public static boolean isProgramLongLine(ProgramDto programDto) { + return GearType.longline.equals(programDto.getGearType()); + } + + public static boolean isProgramSeine(ProgramDto programDto) { + return GearType.longline.equals(programDto.getGearType()); + } + + public static boolean isProgramLongline(ReferenceDto<ProgramDto> programDtoRef) { + + GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + + return GearType.longline.equals(gearType); + } + + public static boolean isProgramSeine(ReferenceDto<ProgramDto> programDtoRef) { + + GearType gearType = (GearType) programDtoRef.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE); + + return GearType.longline.equals(gearType); + } + +} diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java new file mode 100644 index 0000000..f6a6ca3 --- /dev/null +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/referential/ReferentialDtos.java @@ -0,0 +1,120 @@ +package fr.ird.observe.services.dto.referential; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; +import fr.ird.observe.services.dto.referential.longline.BaitSettingStatusDto; +import fr.ird.observe.services.dto.referential.longline.BaitTypeDto; +import fr.ird.observe.services.dto.referential.longline.CatchFateLonglineDto; +import fr.ird.observe.services.dto.referential.longline.EncounterTypeDto; +import fr.ird.observe.services.dto.referential.longline.HealthnessDto; +import fr.ird.observe.services.dto.referential.longline.HookPositionDto; +import fr.ird.observe.services.dto.referential.longline.HookSizeDto; +import fr.ird.observe.services.dto.referential.longline.HookTypeDto; +import fr.ird.observe.services.dto.referential.longline.ItemHorizontalPositionDto; +import fr.ird.observe.services.dto.referential.longline.ItemVerticalPositionDto; +import fr.ird.observe.services.dto.referential.longline.LightsticksColorDto; +import fr.ird.observe.services.dto.referential.longline.LightsticksTypeDto; +import fr.ird.observe.services.dto.referential.longline.LineTypeDto; +import fr.ird.observe.services.dto.referential.longline.MaturityStatusDto; +import fr.ird.observe.services.dto.referential.longline.MitigationTypeDto; +import fr.ird.observe.services.dto.referential.longline.SensorBrandDto; +import fr.ird.observe.services.dto.referential.longline.SensorDataFormatDto; +import fr.ird.observe.services.dto.referential.longline.SensorTypeDto; +import fr.ird.observe.services.dto.referential.longline.SettingShapeDto; +import fr.ird.observe.services.dto.referential.longline.SizeMeasureTypeDto; +import fr.ird.observe.services.dto.referential.longline.StomacFullnessDto; +import fr.ird.observe.services.dto.referential.longline.TripTypeDto; +import fr.ird.observe.services.dto.referential.longline.VesselActivityLonglineDto; +import fr.ird.observe.services.dto.referential.longline.WeightMeasureTypeDto; +import fr.ird.observe.services.dto.referential.seine.DetectionModeDto; +import fr.ird.observe.services.dto.referential.seine.ObjectFateDto; +import fr.ird.observe.services.dto.referential.seine.ObjectOperationDto; +import fr.ird.observe.services.dto.referential.seine.ObjectTypeDto; +import fr.ird.observe.services.dto.referential.seine.ObservedSystemDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForDiscardDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForNoFishingDto; +import fr.ird.observe.services.dto.referential.seine.ReasonForNullSetDto; +import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; +import fr.ird.observe.services.dto.referential.seine.SpeciesStatusDto; +import fr.ird.observe.services.dto.referential.seine.SurroundingActivityDto; +import fr.ird.observe.services.dto.referential.seine.TransmittingBuoyOperationDto; +import fr.ird.observe.services.dto.referential.seine.TransmittingBuoyTypeDto; +import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; +import fr.ird.observe.services.dto.referential.seine.WeightCategoryDto; +import fr.ird.observe.services.dto.referential.seine.WindDto; + +public class ReferentialDtos extends AbstractReferentialDtos { + + public static final ImmutableSet<Class<? extends ReferentialDto>> REFERENCE_COMMON_DTOS = ImmutableSet.of( + VesselSizeCategoryDto.class, + CountryDto.class, + HarbourDto.class, + VesselTypeDto.class, + VesselDto.class, + SpeciesGroupDto.class, + SpeciesDto.class, + SexDto.class, + FpaZoneDto.class, + SpeciesListDto.class, + PersonDto.class, + OceanDto.class, + OrganismDto.class, + LengthWeightParameterDto.class, + ProgramDto.class, + GearCaracteristicTypeDto.class, + GearCaracteristicDto.class, + GearDto.class); + + public static final ImmutableSet<Class<? extends ReferentialDto>> REFERENCE_SEINE_DTOS = ImmutableSet.<Class<? extends ReferentialDto>>of( + VesselActivitySeineDto.class, + SurroundingActivityDto.class, + ReasonForNullSetDto.class, + ReasonForNoFishingDto.class, + SpeciesFateDto.class, + ObjectFateDto.class, + WeightCategoryDto.class, + DetectionModeDto.class, + TransmittingBuoyOperationDto.class, + ObjectOperationDto.class, + ReasonForDiscardDto.class, + SpeciesStatusDto.class, + ObservedSystemDto.class, + TransmittingBuoyTypeDto.class, + ObjectTypeDto.class, + WindDto.class); + + public static final ImmutableSet<Class<? extends ReferentialDto>> REFERENCE_LONGLINE_DTOS = ImmutableSet.of( + BaitHaulingStatusDto.class, + BaitSettingStatusDto.class, + BaitTypeDto.class, + CatchFateLonglineDto.class, + EncounterTypeDto.class, + HealthnessDto.class, + HookPositionDto.class, + HookSizeDto.class, + HookTypeDto.class, + ItemVerticalPositionDto.class, + ItemHorizontalPositionDto.class, + LightsticksColorDto.class, + LightsticksTypeDto.class, + LineTypeDto.class, + MaturityStatusDto.class, + MitigationTypeDto.class, + SensorBrandDto.class, + SensorDataFormatDto.class, + SensorTypeDto.class, + SettingShapeDto.class, + SizeMeasureTypeDto.class, + StomacFullnessDto.class, + TripTypeDto.class, + VesselActivityLonglineDto.class, + WeightMeasureTypeDto.class); + + public static final ImmutableSet<Class<? extends ReferentialDto>> REFERENCE_DTOS = ImmutableSet.<Class<? extends ReferentialDto>>builder() + .addAll(REFERENCE_COMMON_DTOS) + .addAll(REFERENCE_SEINE_DTOS) + .addAll(REFERENCE_LONGLINE_DTOS) + .build(); + + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm