Author: tchemit Date: 2013-02-11 17:56:38 +0100 (Mon, 11 Feb 2013) New Revision: 396 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/396 Log: fixes #1982: Utilisation d'un cache de persistence Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java 2013-02-11 16:32:28 UTC (rev 395) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java 2013-02-11 16:56:38 UTC (rev 396) @@ -118,6 +118,10 @@ return config.getOptionAsFile(TuttiPersistenceConfigOption.DB_DIRECTORY.getKey()); } + public File getCacheDirectory() { + return config.getOptionAsFile(TuttiPersistenceConfigOption.CACHE_DIRECTORY.getKey()); + } + public File getProtocolDirectory() { return config.getOptionAsFile(TuttiPersistenceConfigOption.PROTOCOL_DIRECTORY.getKey()); } @@ -202,6 +206,7 @@ result.put("hibernate.show_sql", isHibernateShowSql() + ""); result.put("hibernate.format_sql", isHibernateFormatSql() + ""); result.put("hibernate.use_sql_comments", isHibernateUseSqlComment() + ""); + result.put("ehcache.disk.store.dir", getCacheDirectory().getAbsolutePath()); // write result file at destination Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java 2013-02-11 16:32:28 UTC (rev 395) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java 2013-02-11 16:56:38 UTC (rev 396) @@ -48,6 +48,14 @@ true, true), + CACHE_DIRECTORY( + "tutti.persistence.cache.directory", + n_("tutti.option.persistence.cache.directory.description"), + "${tutti.data.directory}/dbcache", + File.class, + true, + true), + PROTOCOL_DIRECTORY( "tutti.persistence.protocol.directory", n_("tutti.option.persistence.protocol.directory.description"), Modified: trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties 2013-02-11 16:32:28 UTC (rev 395) +++ trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties 2013-02-11 16:56:38 UTC (rev 396) @@ -34,8 +34,10 @@ dataSource.jdbc.username=${tutti.persistence.jdbc.username} dataSource.jdbc.password=${tutti.persistence.jdbc.password} dataSource.jdbc.url=${tutti.persistence.jdbc.url} -#dataSource.jdbc.url=jdbc:hsqldb:hsql://localhost/toto +#Cache configuration +ehcache.disk.store.dir=${tutti.persistence.cache.directory} + # Hibernate configuration : hibernate.dialect=${tutti.persistence.hibernate.dialect} hibernate.show_sql=${tutti.persistence.hibernate.showSql} Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-02-11 16:32:28 UTC (rev 395) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-02-11 16:56:38 UTC (rev 396) @@ -87,6 +87,12 @@ return applicationConfig.getOptionAsInt(TuttiServiceConfigOption.INCEPTION_YEAR.getKey()); } + /** @return {@link TuttiServiceConfigOption#BASEDIR} value */ + public File getBasedir() { + File result = applicationConfig.getOptionAsFile(TuttiServiceConfigOption.BASEDIR.getKey()); + return result; + } + /** @return {@link TuttiServiceConfigOption#DATA_DIRECTORY} value */ public File getDataDirectory() { File result = applicationConfig.getOptionAsFile(TuttiServiceConfigOption.DATA_DIRECTORY.getKey()); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-02-11 16:32:28 UTC (rev 395) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-02-11 16:56:38 UTC (rev 396) @@ -40,18 +40,25 @@ */ public enum TuttiServiceConfigOption implements ApplicationConfig.OptionDef { - /** Main directory where to put tutti data (logs, and others...). */ + BASEDIR( + "tutti.basedir", + n_("tutti.option.basedir.description"), + "${user.home}/.tutti", + File.class, + true, + true + ), DATA_DIRECTORY( "tutti.data.directory", n_("tutti.option.data.directory.description"), - "${user.home}/.tutti/data", + "${tutti.basedir}/data", File.class, true, true), TMP_DIRECTORY( "tutti.tmp.directory", n_("tutti.option.tmp.directory.description"), - "${java.io.tmpdir}/tutti", + "${tutti.data.directory}/temp", File.class), CSV_SEPARATOR( "tutti.csv.separator", Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-02-11 16:32:28 UTC (rev 395) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-02-11 16:56:38 UTC (rev 396) @@ -1,3 +1,4 @@ +tutti.option.basedir.description= tutti.option.csv.separator.description=Caractère séparateur pour les import / export de fichier au format csv. tutti.option.data.directory.description=Répertoire de données de l'application. Vous pouvez utiliser l'expression ${tutti.data.directory} pour le référence dans d'autres propriétés de configuration (ex\: ${tutti.data.directory}/tmp). tutti.option.inceptionYear.description=Année de démarrage du projet. Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-02-11 16:32:28 UTC (rev 395) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-02-11 16:56:38 UTC (rev 396) @@ -24,8 +24,10 @@ * #L% */ +import com.google.common.base.Charsets; import fr.ifremer.tutti.service.TuttiServiceTechnicalException; import fr.ifremer.tutti.service.config.TuttiServiceConfig; +import fr.ifremer.tutti.service.config.TuttiServiceConfigOption; import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; @@ -76,6 +78,7 @@ public TuttiApplicationConfig(String file, String... args) { applicationConfig = new ApplicationConfig(); + applicationConfig.setEncoding(Charsets.UTF_8.name()); // get all config providers Set<ApplicationConfigProvider> providers = @@ -92,8 +95,8 @@ Set<String> optionToSkip = ApplicationConfigHelper.getTransientOrFinalOptionKey(providers); - if (log.isInfoEnabled()) { - log.info("Option that won't be saved: " + optionToSkip); + if (log.isDebugEnabled()) { + log.debug("Option that won't be saved: " + optionToSkip); } optionKeyToNotSave = optionToSkip.toArray(new String[optionToSkip.size()]); @@ -108,7 +111,8 @@ } //TODO Review this, this is very dirty to do this... - File tuttiBasedir = getTuttiBasedir(); + File tuttiBasedir = applicationConfig.getOptionAsFile( + TuttiServiceConfigOption.BASEDIR.getKey()); if (tuttiBasedir == null) { tuttiBasedir = new File(""); @@ -125,10 +129,10 @@ if (log.isInfoEnabled()) { log.info("Application basedir: " + tuttiBasedir); } - applicationConfig.setOption(TuttiApplicationConfigOption.TUTTI_APPLICATION_BASEDIR.getKey(), tuttiBasedir.getAbsolutePath()); + applicationConfig.setOption( + TuttiServiceConfigOption.BASEDIR.getKey(), + tuttiBasedir.getAbsolutePath()); - log.info(this + " is initializing..."); - serviceConfig = new TuttiServiceConfig(applicationConfig); } @@ -302,7 +306,7 @@ } public File getTuttiBasedir() { - return applicationConfig.getOptionAsFile(TuttiApplicationConfigOption.TUTTI_APPLICATION_BASEDIR.getKey()); + return serviceConfig.getBasedir(); } public String getUpdateUrl() { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-02-11 16:32:28 UTC (rev 395) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-02-11 16:56:38 UTC (rev 396) @@ -51,19 +51,10 @@ true ), - TUTTI_APPLICATION_BASEDIR( - "tutti.application.basedir", - n_("tutti.option.application.basedir.description"), - null, - File.class, - true, - true - ), - TUTTI_I18N_DIRECTORY( "tutti.i18n.directory", n_("tutti.option.i18n.directory.description"), - "${tutti.application.basedir}/i18n", + "${tutti.basedir}/i18n", File.class ), @@ -78,9 +69,7 @@ "tutti.update.application.url", n_("tutti.option.update.url.description"), "http://appup.forge.codelutin.com/tutti/update-tutti.properties", - String.class, - true, - false + String.class ), UI_CONFIG_FILE(