r634 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config tutti-persistence/src/main/resources tutti-persistence/src/main/resources/i18n tutti-service/src/main/java/fr/ifremer/tutti/service/config tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing
Author: tchemit Date: 2013-03-15 13:34:40 +0100 (Fri, 15 Mar 2013) New Revision: 634 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/634 Log: normalize config options Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/RessourceClassLoader.java 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/i18n/tutti-persistence_en_GB.properties trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/RessourceClassLoader.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/RessourceClassLoader.java 2013-03-15 12:25:00 UTC (rev 633) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/RessourceClassLoader.java 2013-03-15 12:34:40 UTC (rev 634) @@ -28,6 +28,7 @@ import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Lists; +import fr.ifremer.tutti.TuttiIOUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -74,13 +75,13 @@ loader = URLClassLoader.newInstance(EMPTY_URL_ARRAY); } - public void addDirectory(File... directories) throws IOException { + public void addDirectory(File... directories) { for (File directory : directories) { if (!this.directories.contains(directory)) { this.directories.add(directory); // force to create directory - FileUtils.forceMkdir(directory); + TuttiIOUtil.forceMkdir(directory, "could not create directory"); } } loader = null; @@ -100,7 +101,8 @@ public void addSearchInDirectoriesPredicate(Predicate<String> predicate) { Preconditions.checkNotNull(predicate, "search predicate can not be null"); - this.searchInDirectoriesPredicate = Predicates.and(searchInDirectoriesPredicate, predicate); + this.searchInDirectoriesPredicate = + Predicates.and(searchInDirectoriesPredicate, predicate); } public void setSearchInDirectoriesPredicate(Predicate<String> searchInDirectoriesPredicate) { 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-03-15 12:25:00 UTC (rev 633) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfig.java 2013-03-15 12:34:40 UTC (rev 634) @@ -28,8 +28,9 @@ import com.google.common.base.Predicate; import com.google.common.collect.Sets; import com.google.common.io.Files; +import fr.ifremer.tutti.TuttiIOUtil; +import fr.ifremer.tutti.TuttiTechnicalException; import fr.ifremer.tutti.persistence.RessourceClassLoader; -import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -71,11 +72,11 @@ this.config = config; } - public void initConfig(RessourceClassLoader resourceLoader) throws IOException { + public void initConfig(RessourceClassLoader resourceLoader) { - FileUtils.forceMkdir(getDbDirectory()); - FileUtils.forceMkdir(getDbAttachmentDirectory()); - FileUtils.forceMkdir(getProtocolDirectory()); + TuttiIOUtil.forceMkdir(getDbDirectory(), "could not create directory"); + TuttiIOUtil.forceMkdir(getDbAttachmentDirectory(), "could not create directory"); + TuttiIOUtil.forceMkdir(getProtocolDirectory(), "could not create directory"); // add a predicate to search the configuration file from his directory instead of the class-path @@ -97,16 +98,14 @@ // add his directory in path to search resourceLoader.addDirectory(configurationPath.getParentFile()); - // generate configuration file if required - generateDbConfiguration(configurationPath); - // get enumeration file path File enumerationPath = getDbEnumerationPath(); // add his directory in path to search resourceLoader.addDirectory(enumerationPath.getParentFile()); - generateDbEnumerationConfiguration(enumerationPath); + // generate external configuration files if required + generateExternalDbFiles(false); } public File getDbConfigurationPath() { @@ -122,11 +121,11 @@ } public File getCacheDirectory() { - return config.getOptionAsFile(TuttiPersistenceConfigOption.CACHE_DIRECTORY.getKey()); + return config.getOptionAsFile(TuttiPersistenceConfigOption.DB_CACHE_DIRECTORY.getKey()); } public File getProtocolDirectory() { - return config.getOptionAsFile(TuttiPersistenceConfigOption.PROTOCOL_DIRECTORY.getKey()); + return config.getOptionAsFile(TuttiPersistenceConfigOption.DB_PROTOCOL_DIRECTORY.getKey()); } public String getDbName() { @@ -181,10 +180,29 @@ return config; } - public void generateDbConfiguration(File destination) throws IOException { + public void generateExternalDbFiles(boolean force) { - if (!destination.exists()) { + try { + generateDbConfiguration(force); + } catch (IOException e) { + throw new TuttiTechnicalException("Could not generate db configuration file"); + } + + try { + + generateDbEnumerationConfiguration(force); + } catch (IOException e) { + throw new TuttiTechnicalException("Could not generate db enumeration file"); + } + } + + protected void generateDbConfiguration(boolean force) throws IOException { + + File destination = getDbConfigurationPath(); + + if (force || !destination.exists()) { + // load db configuration template (tutti-db.properties) if (log.isInfoEnabled()) { @@ -223,10 +241,12 @@ } } - public void generateDbEnumerationConfiguration(File destination) throws IOException { + protected void generateDbEnumerationConfiguration(boolean force) throws IOException { - if (!destination.exists()) { + File destination = getDbEnumerationPath(); + if (force || !destination.exists()) { + // load enumeration mapping from classpath (enumerations.properties) if (log.isInfoEnabled()) { 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-03-15 12:25:00 UTC (rev 633) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceConfigOption.java 2013-03-15 12:34:40 UTC (rev 634) @@ -55,17 +55,17 @@ true, true), - CACHE_DIRECTORY( - "tutti.persistence.cache.directory", - n_("tutti.config.option.persistence.cache.directory.description"), + DB_CACHE_DIRECTORY( + "tutti.persistence.db.cache.directory", + n_("tutti.config.option.persistence.db.cache.directory.description"), "${tutti.data.directory}/dbcache", File.class, true, true), - PROTOCOL_DIRECTORY( - "tutti.persistence.protocol.directory", - n_("tutti.config.option.persistence.protocol.directory.description"), + DB_PROTOCOL_DIRECTORY( + "tutti.persistence.db.protocol.directory", + n_("tutti.config.option.persistence.db.protocol.directory.description"), "${tutti.data.directory}/protocol", File.class, true, @@ -135,22 +135,22 @@ n_("tutti.config.option.persistence.hibernate.showSql.description"), Boolean.FALSE.toString(), boolean.class, - true, - true), + false, + false), HIBERNATE_USE_SQL_COMMENT( "tutti.persistence.hibernate.useSqlComment", n_("tutti.config.option.persistence.hibernate.useSqlComment.description"), Boolean.FALSE.toString(), boolean.class, - true, - true), + false, + false), HIBERNATE_FORMAT_SQL( "tutti.persistence.hibernate.formatSql", n_("tutti.config.option.persistence.hibernate.formatSql.description"), Boolean.FALSE.toString(), boolean.class, - true, - true); + false, + false); /** Configuration key. */ private final String key; Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties 2013-03-15 12:25:00 UTC (rev 633) +++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties 2013-03-15 12:34:40 UTC (rev 634) @@ -1,9 +1,10 @@ -tutti.config.option.persistence.cache.directory.description= tutti.config.option.persistence.db.attachment.directory.description= +tutti.config.option.persistence.db.cache.directory.description= tutti.config.option.persistence.db.configurationPath.description= tutti.config.option.persistence.db.directory.description= tutti.config.option.persistence.db.enumerationPath.description= tutti.config.option.persistence.db.name.description= +tutti.config.option.persistence.db.protocol.directory.description= tutti.config.option.persistence.hibernate.dialect.description= tutti.config.option.persistence.hibernate.formatSql.description= tutti.config.option.persistence.hibernate.showSql.description= @@ -12,7 +13,6 @@ tutti.config.option.persistence.jdbc.password.description= tutti.config.option.persistence.jdbc.url.description= tutti.config.option.persistence.jdbc.username.description= -tutti.config.option.persistence.protocol.directory.description= tutti.config.persistence= tutti.persistence.batch.validation.horsVracBenthosNotFound= tutti.persistence.batch.validation.horsVracSpeciesNotFound= Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-03-15 12:25:00 UTC (rev 633) +++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-03-15 12:34:40 UTC (rev 634) @@ -1,9 +1,10 @@ -tutti.config.option.persistence.cache.directory.description=Répertoire où sont stoquées les caches de persistence tutti.config.option.persistence.db.attachment.directory.description=Répoertoire où sont stoquées les pièces-jointes +tutti.config.option.persistence.db.cache.directory.description=Répertoire où sont stoquées les caches de persistence tutti.config.option.persistence.db.configurationPath.description=Chemin du fichier de configuration d'Adagio tutti.config.option.persistence.db.directory.description=Répertoire où est la base de données tutti.config.option.persistence.db.enumerationPath.description=Chemin du fichier de correspondance des constantes tutti.config.option.persistence.db.name.description=Nom du fichier de la base de données +tutti.config.option.persistence.db.protocol.directory.description=Répertoire où sont conservés les protocoles tutti.config.option.persistence.hibernate.dialect.description=Le dialect hibernate utilisée pour communiquer avec la base de données tutti.config.option.persistence.hibernate.formatSql.description=Option pour ajouter les commentaires dans les requètes sql générées. tutti.config.option.persistence.hibernate.showSql.description=Option pour afficher ou non les requète sql dans les logs @@ -12,7 +13,6 @@ tutti.config.option.persistence.jdbc.password.description=Mot de passe de l'utilisateur pour se connecter à la base de données tutti.config.option.persistence.jdbc.url.description=URL de connexion à la base de données tutti.config.option.persistence.jdbc.username.description=Login de l'utilisateur pour se connecter à la base de données -tutti.config.option.persistence.protocol.directory.description=Répertoire où sont conservés les protocoles tutti.config.persistence=Configuration de la persistence de Tutti tutti.persistence.batch.validation.horsVracBenthosNotFound=Lot 'Hors Vrac > Benthos' non trouvé ou configuré avec d'autres critères de classement. tutti.persistence.batch.validation.horsVracNotFound=Lot 'Hors Vrac' non trouvé, ou configuré avec d'autres critères de classement. Modified: trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties 2013-03-15 12:25:00 UTC (rev 633) +++ trunk/tutti-persistence/src/main/resources/tutti-db-conf.properties 2013-03-15 12:34:40 UTC (rev 634) @@ -36,7 +36,7 @@ dataSource.jdbc.url=${tutti.persistence.jdbc.url} #Cache configuration -ehcache.disk.store.dir=${tutti.persistence.cache.directory} +ehcache.disk.store.dir=${tutti.persistence.db.cache.directory} # Hibernate configuration : hibernate.dialect=${tutti.persistence.hibernate.dialect} 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-03-15 12:25:00 UTC (rev 633) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-03-15 12:34:40 UTC (rev 634) @@ -59,7 +59,9 @@ "tutti.tmp.directory", n_("tutti.config.option.tmp.directory.description"), "${tutti.data.directory}/temp", - File.class), + File.class, + true, + true), CSV_SEPARATOR( "tutti.csv.separator", n_("tutti.config.option.csv.separator.description"), Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-03-15 12:25:00 UTC (rev 633) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-03-15 12:34:40 UTC (rev 634) @@ -157,39 +157,18 @@ public void updateDone(Map<String, ApplicationInfo> appToUpdate, Map<String, Exception> appUpdateError) { - boolean doRestart = updateDoneJre(appToUpdate, appUpdateError); - + boolean updateJRE = updateDoneJre(appToUpdate, appUpdateError); boolean updateTutti = updateDoneTutti(appToUpdate, appUpdateError); - doRestart |= updateTutti; + boolean updateI18n = updateDoneI18n(appToUpdate, appUpdateError); + boolean updateHelp = updateDoneHelp(appToUpdate, appUpdateError); - doRestart |= updateDoneI18n(appToUpdate, appUpdateError); - doRestart |= updateDoneHelp(appToUpdate, appUpdateError); + boolean doRestart = updateJRE || updateTutti || updateI18n || updateHelp; updateDoneDb(appToUpdate, appUpdateError); if (doRestart) { applicationUpdated = true; - - if (updateTutti) { - - TuttiPersistenceConfig persistenceConfig = - context.getConfig().getServiceConfig().getPersistenceConfig(); - - // must remove the enumeration file at exit - File enumerationPath = persistenceConfig.getDbEnumerationPath(); - TuttiIOUtil.forceDeleteOnExit( - enumerationPath, - "Could not delete enumeration file " + enumerationPath - ); - - //FIXME-check this is necessary: i18n is no more generated ? - // must also remove i18n directory - File i18nDirectory = context.getConfig().getI18nDirectory(); - TuttiIOUtil.forceDeleteOnExit( - i18nDirectory, - "Could not delete i18n directory " + i18nDirectory); - } } } @@ -250,6 +229,30 @@ info.oldVersion, info.newVersion)); } doRestart = true; + + TuttiPersistenceConfig persistenceConfig = + context.getConfig().getServiceConfig().getPersistenceConfig(); + + // must remove the enumeration file at exit + File enumerationPath = persistenceConfig.getDbEnumerationPath(); + TuttiIOUtil.forceDeleteOnExit( + enumerationPath, + "Could not delete enumeration file " + enumerationPath + ); + + // must remove the db conf file at exit + File dbConfPath = persistenceConfig.getDbConfigurationPath(); + TuttiIOUtil.forceDeleteOnExit( + dbConfPath, + "Could not delete db conf file " + dbConfPath + ); + + //FIXME-check this is necessary: i18n is no more generated ? + // must also remove i18n directory + File i18nDirectory = context.getConfig().getI18nDirectory(); + TuttiIOUtil.forceDeleteOnExit( + i18nDirectory, + "Could not delete i18n directory " + i18nDirectory); } } return doRestart; @@ -327,12 +330,8 @@ // before install or update, regenerate db configuration files - TuttiPersistenceConfig persistenceConfig = - context.getConfig().getServiceConfig().getPersistenceConfig(); + TuttiPersistenceConfig persistenceConfig = regenerateDbConf(); - context.showInformationMessage( - "Regénérer les fichiers de configuration de la base"); - persistenceConfig.generateExternalDbFiles(true); if (Version.VZERO.toString().equals(info.oldVersion)) { @@ -349,6 +348,16 @@ } } + protected TuttiPersistenceConfig regenerateDbConf() { + + TuttiPersistenceConfig persistenceConfig = + context.getConfig().getServiceConfig().getPersistenceConfig(); + + context.showInformationMessage( + "Regénérer les fichiers de configuration de la base"); + return persistenceConfig; + } + protected ApplicationInfo getInfo(UpdateType type, Map<String, ApplicationInfo> appToUpdate) { return appToUpdate.get(type.name().toLowerCase());
participants (1)
-
tchemit@users.forge.codelutin.com