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 2582a8d8dfd778198e1f08209916ff31eef32fc7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Oct 21 16:06:27 2015 +0200 Suppression de ObserveServiceHelper et ObserveApplicationContext --- .../main/java/fr/ird/observe/ObserveRunner.java | 22 +- .../java/fr/ird/observe/ObserveServiceHelper.java | 344 --------------------- .../observe/ObserveSwingApplicationContext.java | 126 +++++++- .../business/ObserveApplicationContext.java | 231 -------------- .../observe/ui/actions/ShowStorageInfoAction.java | 10 +- .../ui/admin/validate/ValidateUIHandler.java | 21 +- .../ird/observe/ui/content/ContentUIHandler.java | 24 +- .../ui/content/open/ContentOpenableUIHandler.java | 7 +- .../ui/content/ref/ContentReferenceUIHandler.java | 10 +- .../ird/observe/ui/storage/StorageUIHandler.java | 4 +- .../ui/storage/tabs/StorageTabUIHandler.java | 8 +- .../fr/ird/observe/ui/tree/DtoNodeSupport.java | 7 +- .../observe/validation/ObserveSwingValidator.java | 5 +- .../validation/ValidationMessageDetector.java | 5 +- ...glineDetailCompositionValidatorServiceTest.java | 12 +- 15 files changed, 192 insertions(+), 644 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 1158503..920f3eb 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 @@ -362,7 +362,7 @@ public abstract class ObserveRunner extends ApplicationRunner { @Override protected void onClose(boolean reload) throws Exception { - if (ObserveServiceHelper.isInit()) { + if (ObserveSwingApplicationContext.isInit()) { if (log.isDebugEnabled()) { log.debug("Will close context..."); @@ -514,7 +514,7 @@ public abstract class ObserveRunner extends ApplicationRunner { } } - boolean hasInitialDb = ObserveServiceHelper.isInitialDbExists(config); + boolean hasInitialDb = config.getInitialDbDump().exists(); config.setInitialDumpExist(hasInitialDb); if (!hasInitialDb) { @@ -628,26 +628,24 @@ public abstract class ObserveRunner extends ApplicationRunner { * @throws IllegalStateException si un contexte applicatif a déja été positionné. */ public ObserveSwingApplicationContext initContext(ObserveSwingApplicationConfig config) throws Exception { - if (ObserveServiceHelper.isInit()) { - throw new IllegalStateException( - "there is an already application context registred."); - } - ObserveSwingApplicationContext instance = new ObserveSwingApplicationContext(); + ObserveSwingApplicationContext.checkIsNotInit(); + + ObserveSwingApplicationContext applicationContext = new ObserveSwingApplicationContext(); // add config - ObserveSwingApplicationContext.CONFIG_ENTRY_DEF.setContextValue(instance, config); + ObserveSwingApplicationContext.CONFIG_ENTRY_DEF.setContextValue(applicationContext, config); // add actions - ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF.setContextValue(instance, new ObserveCLAction()); + ObserveSwingApplicationContext.ACTIONS_ENTRY_DEF.setContextValue(applicationContext, new ObserveCLAction()); // referencement du context applicatif sur le helper de service - ObserveServiceHelper.set(instance); + ObserveSwingApplicationContext.set(applicationContext); // init decorator service - ObserveServiceHelper.getDecoratorService(); + applicationContext.getDecoratorService(); - return instance; + return applicationContext; } protected ObserveMainUI startUI(ObserveSwingApplicationContext context, diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java deleted file mode 100644 index fdee002..0000000 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveServiceHelper.java +++ /dev/null @@ -1,344 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe; - -import fr.ird.observe.business.db.DataContext; -import fr.ird.observe.business.gps.GPSService; -import fr.ird.observe.validation.ValidationContext; -import fr.ird.observe.validation.ValidationService; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; -import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; -import fr.ird.observe.ui.DecoratorService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.io.IOException; - -import static org.nuiton.i18n.I18n.t; - -public class ObserveServiceHelper { - - /** Logger. */ - private static Log log = LogFactory.getLog(ObserveServiceHelper.class); - - /** Le context applicatif. */ - public static ObserveSwingApplicationContext context; - - /** Un drapeau pour savoir quand l'application est en cours de fermeture. */ - protected static boolean closed; - - /** - * Un drapeau pour activer sur les connections le support JMX. - * - * @since 2.2 - */ - private static boolean useJMX; - - /** - * Récupération du contexte applicatif. - * - * @return l'instance partagé du contexte. - * @throws IllegalStateException si le contexte n'a pas été initialisé - */ - public static ObserveSwingApplicationContext get() throws IllegalStateException { - checkInit(); - return context; - } - - /** - * @return {@code true} si le context applicatif a été fermé (et est donc - * passé dans la méthode {@link #close()}, {@code false} autrement. - */ - public static boolean isClosed() { - return closed; - } - - /** @return {@code true} si le context a été initialisé */ - public static boolean isInit() { - return context != null; - } - - public static void set(ObserveSwingApplicationContext context) { - if (isInit()) { - throw new IllegalStateException( - "application context already registred."); - } - ObserveServiceHelper.context = context; - - //FIXME -// AbstractDataSourceMigration.setApplicationConfigSupplier(new Supplier<ApplicationConfig>() { -// @Override -// public ApplicationConfig get() { -// return ObserveServiceHelper.context.getContextValue(ApplicationConfig.class); -// } -// }); - - // application non fermée - closed = false; - } - - public static void close() { - if (log.isDebugEnabled()) { - log.debug("Closing service helper..."); - } - context = null; - - // application fermée - closed = true; - } - - /** - * Pour instancier un nouveau service de réplication. - * - * @return le nouveau service de réplication - */ - //FIXME -// public static ReplicationService newReplicationService() { -// return new ReplicationService(); -// } - - /** - * Pour instancier un nouveau service de validation. - * - * @return le nouveau service de validation - */ - public static ValidationService newValidationService() { - return new ValidationService(); - } - - public static DataContext getDataContext() { - checkInit(); - ObserveSwingApplicationContext context = get(); - DataContext dataContext = context.getDataContext(); - return dataContext; - } - - public static ValidationContext getValidationContext() { - checkInit(); - ObserveSwingApplicationContext context = get(); - ValidationContext dataContext = context.getValidationContext(); - return dataContext; - } - - /** - * Pour instancier un nouveau service GPS. - * - * @return le service GPS partagé - */ - public static GPSService getGPSService() { - checkInit(); - ObserveSwingApplicationContext context = get(); - GPSService service = context.getGPSService(); - return service; - } - - /** - * Pour récupérer le service de consolidation des données. - * - * @return le service de consolidation des données partagé - */ - //FIXME -// public static ConsolidateDataService getConsolidateDataService() { -// checkInit(); -// ObserveApplicationContext context = get(); -// ConsolidateDataService service = context.getConsolidateDataService(); -// return service; -// -// } - - /** - * Pour obtenir l'unique service haut niveau de manipulation des données. - * - * @return le service haut niveau de manipulation des donées. - */ - //FIXME -// public static DataService getDataService() { -// checkInit(); -// ObserveApplicationContext context = get(); -// DataService service = context.getDataService(); -// return service; -// } - - /** - * Pour obtenir l'unique service de décoration. - * - * @return l'instance partagé du service de décoration - */ - public static DecoratorService getDecoratorService() { - checkInit(); - ObserveSwingApplicationContext context = get(); - DecoratorService service = context.getDecoratorService(); - return service; - } - - /** - * Pour obtenir le generateur de text. - * - * @return l'instance partagé du generateur de text - */ - public static ObserveTextGenerator getTextGenerator() { - checkInit(); - ObserveSwingApplicationContext context = get(); - ObserveTextGenerator textGenerator = context.getTextGenerator(); - return textGenerator; - } - - - /** - * Creates a new local temp storage. - * - * @param config the configuration containing the tmp directory to use - * @param label label of storage - * @param prefixName prefix to add directory of local db - * @return the new service NOT opened - * @throws IOException if any pb while configuring the service - */ - //FIXME -// public static DataSource newEmptyTempStorage( -// ObserveSwingApplicationConfig config, -// String label, -// String prefixName) throws IOException { -// String dbfileName = (prefixName == null ? "tmp_" : prefixName + "_") -// + System.nanoTime(); -// -// File dir = new File(config.getTmpDirectory(), dbfileName); -// -// H2DataSourceConfig conf = DataSourceFactory.newH2ConfigEmpty( -// label, -// dir, -// config.getH2Login(), -// config.getH2Password() -// ); -// -// H2DataSource service = DataSourceFactory.newService(conf); -// return service; -// } - - /** - * Creates a new local temp storage. - * - * @param dir the directory to use to store database - * @param label label of storage - * @return the new service NOT opened - * @throws IOException if any pb while configuring the service - */ - //FIXME -// public static DataSource newEmptyTempStorage(File dir, -// String label) throws IOException { -// -// H2DataSourceConfig conf = DataSourceFactory.newH2ConfigEmpty( -// label, -// dir, -// "sa", -// "sa".toCharArray() -// ); -// -// H2DataSource service = DataSourceFactory.newService(conf); -// return service; -// } - - /** - * Construit une source de données sur la base locale de l'application. - * <p/> - * <b>Note:</b> La base locale doit exister, sinon on soulève une - * exeception - * - * @param config la configuration à utiliser - * @return la service de persistance initialisé (mais non ouvert) - * @throws IOException si une erreur d'IO - * @throws IllegalStateException si la base locale n'existe pas - * @see ObserveSwingDataSource - */ - public static ObserveSwingDataSource newLocalStorageService(ObserveSwingApplicationConfig config) throws IllegalStateException { - - ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); - - if (! dataSourceConfigurationH2.getDatabaseFile().exists()) { - throw new IllegalStateException( - "local base must exist, when using this method (" + - dataSourceConfigurationH2.getDirectory() + ')'); - } - - ObserveSwingDataSource dataSource = new ObserveSwingDataSource(dataSourceConfigurationH2); - - return dataSource; - } - - - - /** - * Teste si la base locale existe. - * - * @param config la configuration à tester - * @return {@code true} si la base locale existe, {@code false} sinon. - * @throws IOException si pb d'IO - */ - //FIXME -// public static boolean isLocalStorageExists(ObserveSwingApplicationConfig config) throws IOException { -// -// // build a local storage service config -// H2DataSourceConfig storageConfig = config.toH2StorageConfig( -// n("observe.storage.label.local")); -// storageConfig.init(); -// boolean dbExists = storageConfig.isStorageExists(); -// return dbExists; -// } - - /** - * Teste si le dump depuis la base obstuna a ete cree. - * <p/> - * Ce dump est cree lors de la premiere creation de base locale a partir - * d'une base distante. - * <p/> - * Une fois ce dump crée, on autorise la création de base locale à partir de - * la base embarquée. Ainsi, on force toujours un premier import de - * référentiel depuis une base distante. - * - * @param config la configuration à utiliser - * @return {@code true} si le dump existe, {@code false} sinon. - */ - public static boolean isInitialDbExists(ObserveSwingApplicationConfig config) { - - boolean dbExists = config.getInitialDbDump().exists(); - return dbExists; - } - - /** - * Teste si le context applicatif a bien été initialisé. - * - * @throws IllegalStateException si le context n'a pas été initialisé. - */ - protected static void checkInit() throws IllegalStateException { - if (!isInit()) { - throw new IllegalStateException("no application context initialized."); - } - } - - public static boolean isUseJMX() { - return useJMX; - } - - public static void setUseJMX(boolean useJMX) { - ObserveServiceHelper.useJMX = useJMX; - } -} 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 d16b7b0..415fd96 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 @@ -75,6 +75,7 @@ import javax.swing.ActionMap; import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.Component; +import java.io.Closeable; import java.io.File; import java.util.Arrays; import java.util.List; @@ -95,11 +96,24 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.0 */ -public class ObserveSwingApplicationContext extends DefaultApplicationContext { +public class ObserveSwingApplicationContext extends DefaultApplicationContext implements Closeable { /** Logger */ static private Log log = LogFactory.getLog(ObserveSwingApplicationContext.class); + /** Un drapeau pour savoir quand l'application est en cours de fermeture. */ + protected static boolean closed; + + /** + * //FIXME Rendre cela configurable + * Un drapeau pour activer sur les connections le support JMX. + * + * @since 2.2 + */ + private static boolean useJMX; + + public static ObserveSwingApplicationContext applicationContext; + /** the jaxx context entry to store the config */ public static final JAXXContextEntryDef<ObserveSwingApplicationConfig> CONFIG_ENTRY_DEF = JAXXUtil.newContextEntryDef(ObserveSwingApplicationConfig.class); @@ -197,7 +211,6 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { if (decoratorService == null) { // initialisation du service de décoration - // initialisation ObserveSwingApplicationConfig config = getConfig(); ReferentialLocale loc = ReferentialLocale.FR; if (config != null) { @@ -337,19 +350,19 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { return result; } - /** - * close the application's context. - * - * @throws Exception if any pb while closing - */ - public void close() throws Exception { - if (log.isDebugEnabled()) { - log.debug("closing context " + this); + @Override + public void close() { + if (log.isInfoEnabled()) { + log.info("Closing swing application context " + this); } // fermeture du context de données ObserveSwingDataSource dataSource = getDataSource(); if (getDataSource() != null && dataSource.isOpen()) { + + if (log.isInfoEnabled()) { + log.info("Closing dataSource : "+dataSource.getConnection()); + } dataSource.close(); setDataSource(null); } @@ -357,7 +370,10 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { // fermeture du context principal clear(); - ObserveServiceHelper.close(); + applicationContext = null; + + closed = true; + } @@ -365,6 +381,22 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { // UI instances //------------------------------------------- + public static void set(ObserveSwingApplicationContext context) { + checkIsNotInit(); + applicationContext = context; + + //FIXME +// AbstractDataSourceMigration.setApplicationConfigSupplier(new Supplier<ApplicationConfig>() { +// @Override +// public ApplicationConfig get() { +// return ObserveServiceHelper.context.getContextValue(ApplicationConfig.class); +// } +// }); + + // application non fermée + closed = false; + } + /** * Récupération du contexte applicatif. * @@ -372,11 +404,51 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { * @throws IllegalStateException si le contexte n'a pas été initialisé */ public static ObserveSwingApplicationContext get() throws IllegalStateException { - return ObserveServiceHelper.get(); + checkInit(); + return applicationContext; + } + + /** @return {@code true} si le context a été initialisé */ + public static boolean isInit() { + return applicationContext != null; + } + + /** + * Teste si le context applicatif a bien été initialisé. + * + * @throws IllegalStateException si le context n'a pas été initialisé. + */ + public static void checkIsNotInit() throws IllegalStateException { + if (isInit()) { + throw new IllegalStateException("application context already registred."); + } } + /** + * Teste si le context applicatif a bien été initialisé. + * + * @throws IllegalStateException si le context n'a pas été initialisé. + */ + protected static void checkInit() throws IllegalStateException { + if (!isInit()) { + throw new IllegalStateException("no application context initialized."); + } + } + + public static boolean isUseJMX() { + return useJMX; + } + + public static void setUseJMX(boolean useJMX) { + useJMX = useJMX; + } + + /** + * @return {@code true} si le context applicatif a été fermé (et est donc + * passé dans la méthode {@link #close()}, {@code false} autrement. + */ public static boolean isClosed() { - return ObserveServiceHelper.isClosed(); + return closed; } public ObserveMainUI getObserveMainUI() { @@ -565,7 +637,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { // chargement de la base locale // création de la source de données sur la base locale - ObserveSwingDataSource dataSource = ObserveServiceHelper.newLocalStorageService(getConfig()); + ObserveSwingDataSource dataSource = newLocalStorageService(getConfig()); try { @@ -767,4 +839,30 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { // return on; // } + /** + * Construit une source de données sur la base locale de l'application. + * <p/> + * <b>Note:</b> La base locale doit exister, sinon on soulève une + * exeception + * + * @param config la configuration à utiliser + * @return la service de persistance initialisé (mais non ouvert) + * @throws IllegalStateException si la base locale n'existe pas + * @see ObserveSwingDataSource + */ + public static ObserveSwingDataSource newLocalStorageService(ObserveSwingApplicationConfig config) throws IllegalStateException { + + ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = config.getDataSourceConfigurationH2(t("observe.storage.label.local")); + + if (!dataSourceConfigurationH2.getDatabaseFile().exists()) { + throw new IllegalStateException( + "local base must exist, when using this method (" + + dataSourceConfigurationH2.getDirectory() + ')'); + } + + ObserveSwingDataSource dataSource = new ObserveSwingDataSource(dataSourceConfigurationH2); + + return dataSource; + } + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java deleted file mode 100644 index aa94cdd..0000000 --- a/observe-application-swing/src/main/java/fr/ird/observe/business/ObserveApplicationContext.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * #%L - * ObServe :: Business - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ird.observe.business; - -import fr.ird.observe.validation.ObserveSwingValidator; -import fr.ird.observe.configuration.ObserveSwingApplicationConfig; -import fr.ird.observe.business.db.DataContext; - -import fr.ird.observe.business.gps.GPSService; -import fr.ird.observe.validation.ValidationContext; -import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.constants.ReferentialLocale; -import fr.ird.observe.ui.DecoratorService; -import jaxx.runtime.JAXXUtil; -import jaxx.runtime.context.DefaultApplicationContext; -import jaxx.runtime.context.JAXXContextEntryDef; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.decorator.Decorator; - -import java.util.Locale; - -/** - * Le contexte de l'application. - * <p/> - * On définit ici toutes les entrées du contexte applicatif. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.0 - */ -public class ObserveApplicationContext extends DefaultApplicationContext { - - /** Logger */ - static private Log log = LogFactory.getLog(ObserveApplicationContext.class); - - /** the jaxx context entry to store the config */ - public static final JAXXContextEntryDef<ObserveSwingApplicationConfig> CONFIG_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveSwingApplicationConfig.class); - - /** the jaxx context entry to store the decorator service */ - public static final JAXXContextEntryDef<DecoratorService> DECORATOR_SERVICE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(DecoratorService.class); - - /** the jaxx context entry to store the decorator service */ - public static final JAXXContextEntryDef<BinderService> BINDER_SERVICE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(BinderService.class); - - /** the jaxx context entry to store the gps service */ - public static final JAXXContextEntryDef<GPSService> GPS_SERVICE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(GPSService.class); - - //FIXME -// /** the jaxx context entry to store the consolidate data service */ -// public static final JAXXContextEntryDef<ConsolidateDataService> CONSOLIDATE_DATA_SERVICE_ENTRY_DEF = -// JAXXUtil.newContextEntryDef(ConsolidateDataService.class); - //FIXME -// /** the jaxx context entry to store the data service */ -// public static final JAXXContextEntryDef<DataService> DATA_SERVICE_ENTRY_DEF = -// JAXXUtil.newContextEntryDef(DataService.class); - - /** the jaxx context entry to store the data service */ - public static final JAXXContextEntryDef<DataContext> DATA_CONTEXT_ENTRY_DEF = - JAXXUtil.newContextEntryDef(DataContext.class); - - /** the jaxx context entry to store the data source (says the ui data source) */ - public static final JAXXContextEntryDef<ObserveSwingDataSource> DATA_SOURCE_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ObserveSwingDataSource.class); - - public static final JAXXContextEntryDef<ValidationContext> VALIDATION_CONTEXT_ENTRY_DEF = - JAXXUtil.newContextEntryDef(ValidationContext.class); - - public <O> Decorator<O> getDecorator(Class<O> clazz) { - DecoratorService provider = getDecoratorService(); - Decorator<O> value = provider.getDecoratorByType(clazz); - return value; - } - - public <O> Decorator<O> getDecorator(Class<O> clazz, String name) { - DecoratorService provider = getDecoratorService(); - Decorator<O> value = provider.getDecoratorByType(clazz, name); - return value; - } - - public ObserveSwingApplicationConfig getConfig() { - return CONFIG_ENTRY_DEF.getContextValue(this); - } - - public final ObserveSwingDataSource getDataSource() { - ObserveSwingDataSource dataSource = DATA_SOURCE_ENTRY_DEF.getContextValue(this); - return dataSource; - } - - public final void setDataSource(ObserveSwingDataSource source) { - if (source == null) { - DATA_SOURCE_ENTRY_DEF.removeContextValue(this); - } else { - DATA_SOURCE_ENTRY_DEF.setContextValue(this, source); - } - } - - public final DecoratorService getDecoratorService() { - DecoratorService decoratorService = - DECORATOR_SERVICE_ENTRY_DEF.getContextValue(this); - if (decoratorService == null) { - - // initialisation du service de décoration - // initialisation - ObserveSwingApplicationConfig config = getConfig(); - ReferentialLocale loc = ReferentialLocale.FR; - if (config != null) { - Locale dbLocale = config.getDbLocale(); - if (dbLocale != null) { - loc = ReferentialLocale.valueOf(dbLocale); - } - } - decoratorService = new DecoratorService(loc); - DECORATOR_SERVICE_ENTRY_DEF.setContextValue(this, decoratorService); - } - return decoratorService; - } - - //FIXME -// public final DataService getDataService() { -// DataService dataService = -// DATA_SERVICE_ENTRY_DEF.getContextValue(this); -// if (dataService == null) { -// dataService = new DataService(); -// DATA_SERVICE_ENTRY_DEF.setContextValue(this, dataService); -// } -// return dataService; -// } - - public final BinderService getBinderService() { - BinderService service = BINDER_SERVICE_ENTRY_DEF.getContextValue(this); - if (service == null) { - service = new BinderService(); - BINDER_SERVICE_ENTRY_DEF.setContextValue(this, service); - } - return service; - } - - public final GPSService getGPSService() { - GPSService service = - GPS_SERVICE_ENTRY_DEF.getContextValue(this); - if (service == null) { - service = new GPSService(); - GPS_SERVICE_ENTRY_DEF.setContextValue(this, service); - } - return service; - } - - //FIXME -// public ConsolidateDataService getConsolidateDataService() { -// -// ConsolidateDataService service = -// CONSOLIDATE_DATA_SERVICE_ENTRY_DEF.getContextValue(this); -// if (service == null) { -// service = new ConsolidateDataService(); -// CONSOLIDATE_DATA_SERVICE_ENTRY_DEF.setContextValue(this, service); -// } -// return service; -// } - - public final DataContext getDataContext() { - DataContext result = DATA_CONTEXT_ENTRY_DEF.getContextValue(this); - if (result == null) { - result = new DataContext(); - DATA_CONTEXT_ENTRY_DEF.setContextValue(this, result); - } - return result; - } - - public final ValidationContext getValidationContext() { - ValidationContext result = - VALIDATION_CONTEXT_ENTRY_DEF.getContextValue(this); - if (result == null) { - result = new ValidationContext(); - ObserveSwingValidator.setValidationContext(result); - result.setDataContext(getDataContext()); - VALIDATION_CONTEXT_ENTRY_DEF.setContextValue(this, result); - } - return result; - } - - /** - * close the application's context. - * - * @throws Exception if any pb while closing - */ - public void close() throws Exception { - if (log.isDebugEnabled()) { - log.debug("closing context " + this); - } - - // fermeture du context de données - if (getDataSource() != null) { - setDataSource(null); - } - // FIXME -// getValidationContext().closeDataSource(); - - // fermeture des services de persistances ouverts - //FIXME -// DataSourceFactory.dispose(); - - // fermeture du context principal - clear(); - - //FIXME -// ObserveServiceHelper.close(); - } -} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java index 6b1a5bc..e6fc98a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/actions/ShowStorageInfoAction.java @@ -22,12 +22,12 @@ package fr.ird.observe.ui.actions; * #L% */ -import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ObserveTextGenerator; import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.ui.ObserveMainUI; import jaxx.runtime.SwingUtil; -import fr.ird.observe.ui.*; + import javax.swing.AbstractAction; import javax.swing.JLabel; import javax.swing.JOptionPane; @@ -59,14 +59,16 @@ public class ShowStorageInfoAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveSwingDataSource source; if (ui.getConfig().isMainStorageOpened()) { - source = ObserveSwingApplicationContext.get().getDataSource(); + source = applicationContext.getDataSource(); } else { source = null; } - ObserveTextGenerator textGenerator = ObserveServiceHelper.getTextGenerator(); + ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); String text = textGenerator.getDataSourceInfo(source); JOptionPane.showMessageDialog( ui, 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 1b9657b..f9ca188 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,15 +22,11 @@ package fr.ird.observe.ui.admin.validate; import com.google.common.base.Charsets; -import fr.ird.observe.ObserveServiceHelper; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.validation.ValidationContext; -import fr.ird.observe.validation.ValidationMessageDetector; -import fr.ird.observe.validation.ValidationModelMode; -import fr.ird.observe.validation.ValidatorsMap; +import fr.ird.observe.ObserveSwingApplicationContext; 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.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminTabUI; @@ -40,6 +36,10 @@ import fr.ird.observe.ui.admin.AdminUIModel; import fr.ird.observe.ui.admin.config.ConfigUI; import fr.ird.observe.ui.admin.config.SelectDataUI; import fr.ird.observe.ui.util.ObserveSimpleValidatorMessageTableRenderer; +import fr.ird.observe.validation.ValidationContext; +import fr.ird.observe.validation.ValidationMessageDetector; +import fr.ird.observe.validation.ValidationModelMode; +import fr.ird.observe.validation.ValidatorsMap; import jaxx.runtime.context.JAXXInitialContext; import jaxx.runtime.swing.wizard.ext.WizardState; import jaxx.runtime.validator.swing.SwingValidatorUtil; @@ -51,7 +51,10 @@ import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.simple.SimpleBeanValidator; import org.nuiton.validator.bean.simple.SimpleBeanValidatorMessage; -import javax.swing.*; +import javax.swing.ComboBoxModel; +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListModel; +import javax.swing.JCheckBox; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; @@ -393,8 +396,8 @@ public class ValidateUIHandler extends AdminTabUIHandler { //FIXME // DataSelectionModel dataModel = model.getSelectionDataModel(); - - ValidationContext context = ObserveServiceHelper.getValidationContext(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ValidationContext context = applicationContext.getValidationContext(); //FIXME // context.setDataSource(model.getLocalSource()); // context.setDataContext(model.getDataService().getDataContext()); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java index f5139eb..9d88f06 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java @@ -22,7 +22,6 @@ package fr.ird.observe.ui.content; import fr.ird.observe.ObserveOpenDataManager; -import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.BinderService; import fr.ird.observe.business.ObserveTechnicalException; @@ -39,6 +38,7 @@ import fr.ird.observe.ui.content.ref.ContentReferenceUIHandler; import fr.ird.observe.ui.tree.AbstractObserveTreeCellRenderer; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.validation.ValidationContext; import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.JAXXButtonGroup; @@ -54,8 +54,14 @@ import org.nuiton.decorator.JXPathDecorator; import org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.*; -import java.awt.*; +import javax.swing.AbstractButton; +import javax.swing.ActionMap; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JToolBar; +import javax.swing.UIManager; +import java.awt.Component; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; @@ -330,7 +336,9 @@ public abstract class ContentUIHandler<E extends IdDto> { //FIXME chemit 20100913 : il vaudrait le faire uniquement lors de l'édition // chaque arrive sur un ecran invalide le cache de validation - ObserveServiceHelper.getValidationContext().cleanCache(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ValidationContext context = applicationContext.getValidationContext(); + context.cleanCache(); if (log.isDebugEnabled()) { log.debug("ui " + ui.getClass()); @@ -391,7 +399,9 @@ public abstract class ContentUIHandler<E extends IdDto> { } public void stopEditUI() { - ObserveServiceHelper.getValidationContext().cleanCache(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ValidationContext context = applicationContext.getValidationContext(); + context.cleanCache(); ContentUIModel<E> model = getModel(); @@ -644,7 +654,9 @@ public abstract class ContentUIHandler<E extends IdDto> { protected void prepareValidationContext() { // reset validation cache - ObserveServiceHelper.get().getValidationContext().cleanCache(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ValidationContext context = applicationContext.getValidationContext(); + context.cleanCache(); } protected final ContentMode computeContentMode() { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java index f1f4ad3..ab16916 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.ui.content.open; -import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.constants.DataContextType; import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.IdDto; @@ -31,6 +31,7 @@ import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.validation.ValidationContext; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -287,7 +288,9 @@ public abstract class ContentOpenableUIHandler<E extends IdDto> extends ContentU if (!create) { - TripSeineDto currentTripSeine = ObserveServiceHelper.getValidationContext().getCurrentTripSeine(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ValidationContext context = applicationContext.getValidationContext(); + TripSeineDto currentTripSeine = context.getCurrentTripSeine(); if (currentTripSeine != null && currentTripSeine.isHistoricalData()) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java index 7820f1b..9380259 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java @@ -21,7 +21,6 @@ */ package fr.ird.observe.ui.content.ref; -import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.db.ObserveSwingDataSource; @@ -571,7 +570,10 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content // pass in editing mode (without any modification possible) model.setEditing(true); - ObserveServiceHelper.get().getValidationContext().cleanCache(); + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ValidationContext validationContext = applicationContext.getValidationContext(); + validationContext.cleanCache(); } } @@ -580,8 +582,8 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content super.prepareValidationContext(); BeanListHeader<ReferenceDto> jList = getUi().getListHeader(); List<ReferenceDto> data = jList.getData(); - ValidationContext validationContext = - ObserveServiceHelper.get().getValidationContext(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ValidationContext validationContext = applicationContext.getValidationContext(); if (log.isDebugEnabled()) { log.debug("Set referentiel list [" + getBeanType().getSimpleName() + "] in validation context : " + data.size()); } 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 01e5cbc..60fbf74 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 @@ -26,7 +26,6 @@ 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.ObserveServiceHelper; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ObserveTextGenerator; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; @@ -681,7 +680,8 @@ public class StorageUIHandler { log.debug("Build report from step " + step); } StorageUIModel model = ui.getModel(); - ObserveTextGenerator textGenerator = ObserveServiceHelper.getTextGenerator(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); String report = textGenerator.getDataSourceConnectionReport(model); return report; } 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 3332fbe..c7de3e6 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,7 +21,7 @@ */ package fr.ird.observe.ui.storage.tabs; -import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.ObserveTextGenerator; import fr.ird.observe.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.db.ObserveSwingDataSource; @@ -101,7 +101,8 @@ public class StorageTabUIHandler { public void propertyChange(PropertyChangeEvent evt) { StorageUIModel model = (StorageUIModel) evt.getSource(); - ObserveTextGenerator textGenerator = ObserveServiceHelper.getTextGenerator(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); String txt = textGenerator.getLoadDataSourceResume(model); ui.getResume().setText(txt); } @@ -326,7 +327,8 @@ public class StorageTabUIHandler { } public String updateConnexionStatutText(ConfigUI ui, ConnexionStatus status) { - ObserveTextGenerator textGenerator = ObserveServiceHelper.getTextGenerator(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); String text = textGenerator.getConnexionTestResultMessage(ui.getModel()); return text; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DtoNodeSupport.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DtoNodeSupport.java index a67ab87..e5de607 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DtoNodeSupport.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/DtoNodeSupport.java @@ -22,7 +22,8 @@ package fr.ird.observe.ui.tree; * #L% */ -import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveOpenDataManager; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.OpenableDto; import fr.ird.observe.services.dto.ReferenceDto; @@ -93,7 +94,9 @@ public abstract class DtoNodeSupport<E extends IdDto> extends ObserveNode { } if (OpenableDto.class.isAssignableFrom(entity.getType())) { - open = ObserveServiceHelper.get().getOpenDataManager().isOpen(entity.getId()); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); + open = openDataManager.isOpen(entity.getId()); if (log.isDebugEnabled()) { log.debug("Set open: " + open + " for entity: " + id); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/ObserveSwingValidator.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/ObserveSwingValidator.java index c1fee69..564cddb 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/ObserveSwingValidator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/ObserveSwingValidator.java @@ -23,9 +23,7 @@ package fr.ird.observe.validation; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ValueStack; -import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.ObserveSwingApplicationContext; - import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -111,8 +109,7 @@ public class ObserveSwingValidator<B> extends SwingValidator<B> { if (log.isDebugEnabled()) { log.debug("No validation context registred, try in application context..."); } - ObserveSwingApplicationContext rootContext; - rootContext = ObserveServiceHelper.get(); + ObserveSwingApplicationContext rootContext = ObserveSwingApplicationContext.get(); if (rootContext == null) { throw new IllegalStateException( "pas de context d'application enregistré... utiliser la " + diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationMessageDetector.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationMessageDetector.java index 1f57065..292e673 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationMessageDetector.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationMessageDetector.java @@ -21,7 +21,7 @@ */ package fr.ird.observe.validation; -import fr.ird.observe.ObserveServiceHelper; +import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.business.db.DataContext; import fr.ird.observe.services.dto.IdDto; import org.apache.commons.logging.Log; @@ -72,7 +72,8 @@ public class ValidationMessageDetector implements SimpleBeanValidatorListener { public ValidationContext getContext() { if (context == null) { - context = ObserveServiceHelper.getValidationContext(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + context = applicationContext.getValidationContext(); } return context; } diff --git a/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java b/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java index 818e5f3..36b709d 100644 --- a/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java +++ b/observe-application-swing/src/test/java/fr/ird/observe/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java @@ -22,15 +22,13 @@ package fr.ird.observe.ui.content.impl.longline; * #L% */ -import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.ObserveSwingApplicationContext; -import fr.ird.observe.ui.DecoratorService; -import fr.ird.observe.ObserveServiceHelper; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.longline.BasketDto; import fr.ird.observe.services.dto.longline.BranchlineDto; import fr.ird.observe.services.dto.longline.SectionDto; import fr.ird.observe.services.service.actions.validate.ObserveValidator; +import fr.ird.observe.ui.DecoratorService; import jaxx.runtime.validator.swing.SwingValidatorMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -63,9 +61,13 @@ public class LonglineDetailCompositionValidatorServiceTest { @Before public void setUp() throws Exception { - ObserveServiceHelper.close(); + if (ObserveSwingApplicationContext.isInit()) { + + ObserveSwingApplicationContext.get().close(); + } + ObserveSwingApplicationContext applicationContext = new ObserveSwingApplicationContext(); - ObserveServiceHelper.set(applicationContext); + ObserveSwingApplicationContext.set(applicationContext); DecoratorService decoratorService = new DecoratorService(ReferentialLocale.FR); ObserveValidator<SectionDto> sectionValidator = new ObserveValidator<SectionDto>(SectionDto.class, "n1-update-table", NuitonValidatorScope.values()); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.