This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 93fd18f76d2323d59e5d16d63690ee8e1033b9d2 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 | 42 ++- .../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 | 8 +- .../ird/observe/ui/admin/export/ExportModel.java | 14 +- .../observe/ui/admin/export/ExportUIHandler.java | 16 +- .../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 | 19 +- .../ui/admin/validate/ValidateUIHandler.java | 11 +- .../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 | 124 +++++++- 41 files changed, 1099 insertions(+), 820 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 53b3b0c..1a896aa 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,12 +23,10 @@ package fr.ird.observe.ui; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.configuration.ObserveSwingApplicationConfig; +import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.AbstractObserveDto; -import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUI; @@ -87,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 @@ -225,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(); } @@ -268,11 +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(); // } @@ -320,7 +314,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; @@ -396,13 +390,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"); } @@ -412,8 +408,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"); } @@ -423,8 +419,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 7530e39..60e18bb 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 @@ -30,6 +30,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; @@ -170,9 +173,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); } @@ -339,7 +342,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); @@ -365,16 +368,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); @@ -387,10 +390,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 b0a049f..b523e9b 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,7 +22,7 @@ package fr.ird.observe.ui.admin.consolidate; import fr.ird.observe.ui.DecoratorService; -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; @@ -40,7 +40,9 @@ 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; @@ -135,7 +137,7 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { // ConsolidateDataService service = // ObserveServiceHelper.getConsolidateDataService(); - DataSource source = getStepModel().getSource(); + ObserveSwingDataSource source = getStepModel().getSource(); String txName = "consolidateData"; //FIXME @@ -202,7 +204,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 f4b26e7..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 @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.admin.export; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.business.DecoratorService; +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 554a279..c127444 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,11 +22,12 @@ package fr.ird.observe.ui.admin.gps; import fr.ird.observe.ui.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; @@ -93,7 +94,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 9f44d69..ac3a0eb 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,18 +22,23 @@ package fr.ird.observe.ui.admin.synchronize; import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.business.db.DataSource; +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; @@ -42,8 +47,14 @@ 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; @@ -320,9 +331,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); @@ -330,7 +341,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 790e715..7df22ed 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.ui.DecoratorService; import fr.ird.observe.ObserveServiceHelper; -import fr.ird.observe.business.db.DataSource; +import fr.ird.observe.ui.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; @@ -82,7 +82,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 +360,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 +395,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 952d7ed..c7106cc 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 f7bbabb..12b682b 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.ui.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 9f60ebe..152feaf 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 @@ -122,11 +122,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 index 85c9cf1..731191d 100644 --- 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 @@ -1,16 +1,122 @@ package fr.ird.observe.services.dto.referential; -import com.google.common.base.Predicate; -import fr.ird.observe.services.dto.constants.ReferenceStatus; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.Iterator; -import java.util.List; +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(); + + /** * Logger. */ private static final Log log = LogFactory.getLog(ReferentialDtos.class); @@ -61,4 +167,4 @@ public class ReferentialDtos extends AbstractReferentialDtos { } }; -} //ReferentialDtos +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.