This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See http://git.codelutin.com/echobase.git commit b14ee63cdb3a0acd12f4930b7eb7556b1068829d Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Dec 16 18:59:14 2014 +0100 refs #6271 revue de la configuration et des fichiers à charger au démarrage --- .../echobase/config/EchoBaseConfiguration.java | 45 +++++++++++++----- .../config/EchoBaseConfigurationOption.java | 34 ++++++++------ .../i18n/echobase-domain_en_GB.properties | 7 ++- .../i18n/echobase-domain_fr_FR.properties | 7 ++- .../services/service/spatial/GisService.java | 53 +++++++++++++++++++--- .../echobase/ui/EchoBaseApplicationContext.java | 37 +++------------ 6 files changed, 118 insertions(+), 65 deletions(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java b/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java index 82c5edc..c289920 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java @@ -58,6 +58,10 @@ public class EchoBaseConfiguration { public static final String OPTION_AUTO_LOGIN = "autoLogin"; + public static final String QGIS_DEFAULT_TEMPLATE_NAME = "EchobaseQGisTemplate.qgs"; + + public static final String LIZMAP_DEFAULT_TEMPLATE_NAME = "LizmapTemplate.qgs.cfg"; + /** Delegate application config object containing configuration. */ protected ApplicationConfig applicationConfig; @@ -270,37 +274,54 @@ public class EchoBaseConfiguration { return result; } - public File getQgisTemplate() { + public File getGisTemplatesDirectory() { + File file = applicationConfig.getOptionAsFile( + EchoBaseConfigurationOption.GIS_TEMPLATES_DIRECTORY.key); + Preconditions.checkNotNull(file); + return file; + } + + public File getQgisDefaultTemplateFile() { + File file = new File(getGisTemplatesDirectory(), QGIS_DEFAULT_TEMPLATE_NAME); + return file; + } + + public File getLizmapDefaultTemplateFile() { + File file = new File(getGisTemplatesDirectory(), LIZMAP_DEFAULT_TEMPLATE_NAME); + return file; + } + + public File getQgisTemplateFile() { File file = applicationConfig.getOptionAsFile( - EchoBaseConfigurationOption.QGIS_TEMPLATE.key); + EchoBaseConfigurationOption.QGIS_TEMPLATE_FILE.key); Preconditions.checkNotNull(file); return file; } - public File getQgisResources() { + public File getQgisResourcesDirectory() { File file = applicationConfig.getOptionAsFile( - EchoBaseConfigurationOption.QGIS_RESOURCES.key); + EchoBaseConfigurationOption.QGIS_RESOURCES_DIRECTORY.key); Preconditions.checkNotNull(file); return file; } - public File getLizmapTemplate() { + public File getLizmapTemplateFile() { File file = applicationConfig.getOptionAsFile( - EchoBaseConfigurationOption.LIZMAP_TEMPLATE.key); + EchoBaseConfigurationOption.LIZMAP_TEMPLATE_FILE.key); Preconditions.checkNotNull(file); return file; } - public File getLizmapTarget() { + public File getLizmapProjectsDirectory() { File file = applicationConfig.getOptionAsFile( - EchoBaseConfigurationOption.LIZMAP_TARGET.key); + EchoBaseConfigurationOption.LIZMAP_PROJECTS_DIRECTORY.key); Preconditions.checkNotNull(file); return file; } - public File getLizmapConfig() { + public File getLizmapConfigFile() { File file = applicationConfig.getOptionAsFile( - EchoBaseConfigurationOption.LIZMAP_CONFIG.key); + EchoBaseConfigurationOption.LIZMAP_CONFIG_FILE.key); Preconditions.checkNotNull(file); return file; } @@ -316,8 +337,8 @@ public class EchoBaseConfiguration { return url; } - public String getLizmapRepository() { - String repository = applicationConfig.getOption(EchoBaseConfigurationOption.LIZMAP_REPOSITORY.key); + public String getLizmapRepositoryName() { + String repository = applicationConfig.getOption(EchoBaseConfigurationOption.LIZMAP_REPOSITORY_NAME.key); return repository; } diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfigurationOption.java b/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfigurationOption.java index b416afb..15f7020 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfigurationOption.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfigurationOption.java @@ -91,23 +91,31 @@ public enum EchoBaseConfigurationOption implements ConfigOptionDef { n("echobase.config.documentationUrl.description"), "http://echobase.codelutin.com/v/latest", URL.class), - QGIS_TEMPLATE("echobase.qgis.template.file", + GIS_DIRECTORY("echobase.gis.directory", + n("echobase.config.gis.directory.description"), + "${echobase.data.directory}/gis", + File.class), + GIS_TEMPLATES_DIRECTORY("echobase.gis.templates.directory", + n("echobase.config.gis.templates.directory.description"), + "${echobase.gis.directory}/templates", + File.class), + QGIS_TEMPLATE_FILE("echobase.qgis.template.file", n("echobase.config.qgis.template.file.description"), - "${echobase.data.directory}/lizmap/templates/QgisTemplate.qgs", + "${echobase.gis.templates.directory}/QgisTemplate.qgs", File.class), - QGIS_RESOURCES("echobase.qgis.resources.file", - n("echobase.config.qgis.resources.file.description"), - "${echobase.data.directory}/lizmap/resources/", + QGIS_RESOURCES_DIRECTORY("echobase.qgis.resources.directory", + n("echobase.config.qgis.resources.directory.description"), + "${echobase.gis.directory}/resources/", File.class), - LIZMAP_TEMPLATE("echobase.lizmap.template.file", + LIZMAP_TEMPLATE_FILE("echobase.lizmap.template.file", n("echobase.config.lizmap.template.file.description"), - "${echobase.data.directory}/lizmap/templates/LizmapTemplate.qgs.cfg", + "${echobase.gis.templates.directory}/LizmapTemplate.qgs.cfg", File.class), - LIZMAP_TARGET("echobase.lizmap.target.file", - n("echobase.config.lizmap.target.file.description"), - "${echobase.data.directory}/lizmap/projects", + LIZMAP_PROJECTS_DIRECTORY("echobase.lizmap.projects.directory", + n("echobase.config.lizmap.projects.directory.description"), + "${echobase.gis.directory}/projects", File.class), - LIZMAP_CONFIG("echobase.lizmap.config.file", + LIZMAP_CONFIG_FILE("echobase.lizmap.config.file", n("echobase.config.lizmap.config.file.description"), "/var/www/lizmap-web-client-2.9.4/lizmap/var/config/lizmapConfig.ini.php", File.class), @@ -119,8 +127,8 @@ public enum EchoBaseConfigurationOption implements ConfigOptionDef { n("echobase.config.lizmap.jdbc.url.description"), "jdbc:sqlite:/var/www/lizmap-web-client-2.9.4/lizmap/var/jauth.db", String.class), - LIZMAP_REPOSITORY("echobase.lizmap.repository", - n("echobase.config.lizmap.url.description"), + LIZMAP_REPOSITORY_NAME("echobase.lizmap.repositoryName", + n("echobase.lizmap.repositoryName.description"), "echobase", String.class); diff --git a/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties b/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties index 61a1ca0..d2a5c2a 100644 --- a/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties +++ b/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties @@ -32,17 +32,19 @@ echobase.config.csv.separator.description=Csv separator character echobase.config.data.directory.description=Path to application data echobase.config.documentationUrl.description=Where to find EchoBase online documentation echobase.config.embedded.description=Flag used for embedded application (will create a h2 working db configuration to access database) +echobase.config.gis.directory.description=Directory where to store any files used to display spatial data +echobase.config.gis.templates.directory.description=Directory where to store templates used to display spatial data echobase.config.h2Version.description=H2 jdbc driver version echobase.config.internal.db.directory.description=Directory of the internal database echobase.config.lib.directory.description=Directory where to put internal libraries (jdbc drivers, embedded war) echobase.config.lizmap.config.file.description=Lizmap configuration file echobase.config.lizmap.jdbc.url.description=JDBC URL for lizmap data base -echobase.config.lizmap.target.file.description=Repository directory of Qgis and LizMap files +echobase.config.lizmap.projects.directory.description=Directory where to store generated lizMap projects echobase.config.lizmap.template.file.description=Lizmap configuration file template echobase.config.lizmap.url.description=Lizmap URL echobase.config.log.config.file.description=Log configuration file echobase.config.postgresqlVersion.description=Postgresql driver version -echobase.config.qgis.resources.file.description=Resources directory for Qgis files +echobase.config.qgis.resources.directory.description=Directory where to store any resources used by Qgis projets (such as maps,...) echobase.config.qgis.template.file.description=Qgis file template echobase.config.version.description=Application version echobase.config.war.location.description=Location of the war used to create embedded applications @@ -50,3 +52,4 @@ echobase.configuration.description=EchoBase configuration echobase.error.convertor.noValue=Can not convert a null value echobase.error.float.convertor=a problem occurs while converting value '%s' with float convertor %s for reason %s echobase.error.no.convertor=Can not convert a float from type %s (value to convert\: %s) +echobase.lizmap.repositoryName.description=LizMap repository name diff --git a/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties b/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties index 21ff4e5..b4cf1da 100644 --- a/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties +++ b/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties @@ -32,17 +32,19 @@ echobase.config.csv.separator.description=Caractère séparateur pour les fichie echobase.config.data.directory.description=Répertoire des données de l'application echobase.config.documentationUrl.description=Où trouver la documentation en ligne d'EchoBase echobase.config.embedded.description=Pour créer au démarrage une configuration vers la base h2 embarquée (uniquement pour les applications embarquées) +echobase.config.gis.directory.description=Répertoire où stoquer toutes les données lié à la visualisation spatiale +echobase.config.gis.templates.directory.description=Répertoire des templates utilisées pour visualiser les données spatiales echobase.config.h2Version.description=Version du pilote jdbc H2 echobase.config.internal.db.directory.description=Répertoire de la base interne echobase.config.lib.directory.description=Chemin où sont stockés les libraires internes (drivers + application embarquée) echobase.config.lizmap.config.file.description=Fichier de configuration de lizmap echobase.config.lizmap.jdbc.url.description=URL JDBC de la base lizmap -echobase.config.lizmap.target.file.description=Le répertoire de dépôt des fichiers Qgis et lizmap +echobase.config.lizmap.projects.directory.description=Répertoire de génération des projets lizMap echobase.config.lizmap.template.file.description=Le modièle du fichier de configuration de Lizmap echobase.config.lizmap.url.description=L'URL de Lizmap echobase.config.log.config.file.description=Fichier de configuration des logs echobase.config.postgresqlVersion.description=Version du pilote jdbc Postgresql -echobase.config.qgis.resources.file.description=Répertoire des ressources des fichier Qgis +echobase.config.qgis.resources.directory.description=Répertoire des resources associées à un projet Qgis echobase.config.qgis.template.file.description=Le modèle du fichier Qgis echobase.config.version.description=Version de l'application echobase.config.war.location.description=Chemin d'accèss au war embarqué à utiliser pour créer des applications embarquées @@ -50,3 +52,4 @@ echobase.configuration.description=Configuration d'EchoBase echobase.error.convertor.noValue=Impossible de conertir une valeur nulle echobase.error.float.convertor=Un problème est apparu lors de la convertion en float de '%s' avec le convertisseur %s pour la raison suivante \: %s echobase.error.no.convertor=Impossible de convertir un float à partir de ce type %s (valeur à convertir %s) +echobase.lizmap.repositoryName.description=Nom du dépôt lizMap diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/GisService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/GisService.java index c443147..722fc10 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/GisService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/GisService.java @@ -24,6 +24,7 @@ package fr.ifremer.echobase.services.service.spatial; import com.google.common.base.Charsets; import com.google.common.base.Preconditions; import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.config.EchoBaseConfiguration; import fr.ifremer.echobase.entities.WorkingDbConfiguration; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.io.EchoBaseIOUtil; @@ -34,6 +35,7 @@ import fr.ifremer.echobase.services.service.workingDb.WorkingDbConfigurationServ import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalINIConfiguration; import org.apache.commons.configuration.SubnodeConfiguration; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -44,6 +46,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; +import java.net.URL; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -65,7 +68,11 @@ public class GisService extends EchoBaseServiceSupport { public static final String[] TEMPLATE_MARKUP = {"{{dbname}}", "{{host}}", "{{port}}", "{{userName}}", "{{password}}", "{{voyageName}}", "{{voyageId}}", "{{resourcesPath}}"}; - public static final String START_JDBC_URL = "jdbc:postgresql://"; + private static final String START_JDBC_URL = "jdbc:postgresql://"; + + private static final String GIS_INTERNAL_PATH = "/gis/templates/"; + + private static final String QGIS_RESOURCES = "/lizmap/resources/"; @Inject private WorkingDbConfigurationService workingDbConfigurationService; @@ -73,6 +80,40 @@ public class GisService extends EchoBaseServiceSupport { @Inject private UserDbPersistenceService persistenceService; + public static void copyQgisDefaultTemplateFileIfNecessary(EchoBaseConfiguration configuration) throws IOException { + + if (!configuration.getQgisDefaultTemplateFile().exists()) { + + File defaultTemplateFile = configuration.getQgisDefaultTemplateFile(); + String resourcePath = GisService.GIS_INTERNAL_PATH + defaultTemplateFile.getName(); + EchoBaseIOUtil.copyResource(resourcePath, defaultTemplateFile, false); + + } + + } + + public static void copyLizmapDefaultTemplateFileIfNecessary(EchoBaseConfiguration configuration) throws IOException { + + if (!configuration.getLizmapTemplateFile().exists()) { + + File defaultTemplateFile = configuration.getLizmapDefaultTemplateFile(); + String resourcePath = GisService.GIS_INTERNAL_PATH + defaultTemplateFile.getName(); + EchoBaseIOUtil.copyResource(resourcePath, defaultTemplateFile, false); + + } + + } + + public static void copyQgisResourcesIfNecessary(EchoBaseConfiguration configuration) throws IOException { + + if (!configuration.getQgisResourcesDirectory().exists()) { + URL resourcesUrl = GisService.class.getResource(QGIS_RESOURCES); + File resources = new File(resourcesUrl.getFile()); + FileUtils.copyDirectory(resources, configuration.getQgisResourcesDirectory()); + } + + } + /** * Generate maps files for this database. * @@ -80,7 +121,7 @@ public class GisService extends EchoBaseServiceSupport { */ public void generateMaps(JdbcConfiguration conf) { - File lizmapTarget = getConfiguration().getLizmapTarget(); + File lizmapTarget = getConfiguration().getLizmapProjectsDirectory(); if (!lizmapTarget.isDirectory()) { throw new EchoBaseTechnicalException("Map target (" + lizmapTarget.getAbsolutePath() + ") is not directory"); @@ -116,7 +157,7 @@ public class GisService extends EchoBaseServiceSupport { WorkingDbConfiguration workingDbConfiguration = workingDbConfigurationService.getWorkingDbConfigurationByUrl(conf.getUrl()); - File lizmapConfig = getConfiguration().getLizmapConfig(); + File lizmapConfig = getConfiguration().getLizmapConfigFile(); try { @@ -203,9 +244,9 @@ public class GisService extends EchoBaseServiceSupport { String[] templateValues = getTemplateValues(conf, voyage); - generateMapFile(getConfiguration().getQgisTemplate(), repository, project, templateValues); + generateMapFile(getConfiguration().getQgisTemplateFile(), repository, project, templateValues); - generateMapFile(getConfiguration().getLizmapTemplate(), repository, project, templateValues); + generateMapFile(getConfiguration().getLizmapTemplateFile(), repository, project, templateValues); return project; @@ -299,7 +340,7 @@ public class GisService extends EchoBaseServiceSupport { // voyage id templateValues[6] = voyage.getTopiaId(); // ressourcesPath - templateValues[7] = getConfiguration().getQgisResources().getAbsolutePath(); + templateValues[7] = getConfiguration().getQgisResourcesDirectory().getAbsolutePath(); return templateValues; diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java index a7c4562..bccda44 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java @@ -35,6 +35,7 @@ import fr.ifremer.echobase.entities.EchoBaseInternalTopiaPersistenceContext; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EchoBaseUserPersistenceContext; import fr.ifremer.echobase.entities.EchoBaseUserTopiaApplicationContext; +import fr.ifremer.echobase.io.EchoBaseIOUtil; import fr.ifremer.echobase.persistence.EchoBaseDbMeta; import fr.ifremer.echobase.persistence.EchoBaseEntityHelper; import fr.ifremer.echobase.persistence.EchobaseTopiaApplicationContexts; @@ -42,11 +43,11 @@ import fr.ifremer.echobase.services.DefaultEchoBaseServiceContext; import fr.ifremer.echobase.services.EchoBaseServiceContext; import fr.ifremer.echobase.services.service.UserService; import fr.ifremer.echobase.services.service.embeddedapplication.EmbeddedApplicationService; +import fr.ifremer.echobase.services.service.spatial.GisService; import fr.ifremer.echobase.services.service.workingDb.WorkingDbConfigurationService; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.Converter; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -65,7 +66,6 @@ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; -import java.net.URL; import java.util.List; import java.util.Locale; import java.util.Map; @@ -87,15 +87,6 @@ public class EchoBaseApplicationContext { /** Key to store the single instance of the application context */ private static final String APPLICATION_CONTEXT_PARAMETER = "echobaseApplicationContext"; - public static final String QGIS_TEMPLATE = "/gis/templates/QgisTemplate.qgs"; - - public static final String ECHO_BASE_QGIS_TEMPLATE = "/gis/templates/EchoBaseQgisTemplate.qgs"; - - public static final String LIZMAP_TEMPLATE = "/gis/templates/LizmapTemplate.qgs.cfg"; - - public static final String QGIS_RESOURCES = "/lizmap/resources/"; - - /** Set of all loggued user sessions to be close at shutdown time. */ protected Set<EchoBaseSession> sessions; @@ -232,7 +223,7 @@ public class EchoBaseApplicationContext { throw new TopiaException("Could not extract files (drivers + embedded war)", e); } - File lizmapConfig = getConfiguration().getLizmapConfig(); + File lizmapConfig = getConfiguration().getLizmapConfigFile(); gisSupport = lizmapConfig.exists(); @@ -447,27 +438,13 @@ public class EchoBaseApplicationContext { protected void initGisFiles() { try { - if (!configuration.getQgisTemplate().exists()) { - URL qgisTemplateUrl = EchoBaseApplicationContext.class.getResource(QGIS_TEMPLATE); - File qgisTemplate = new File(qgisTemplateUrl.getFile()); - FileUtils.copyFile(qgisTemplate, configuration.getQgisTemplate()); - } - if (!configuration.getLizmapTemplate().exists()) { - URL lizmapTemplateUrl = EchoBaseApplicationContext.class.getResource(LIZMAP_TEMPLATE); - File lizmapTemplate = new File(lizmapTemplateUrl.getFile()); - FileUtils.copyFile(lizmapTemplate, configuration.getLizmapTemplate()); - } + GisService.copyQgisDefaultTemplateFileIfNecessary(configuration); + GisService.copyQgisResourcesIfNecessary(configuration); + GisService.copyLizmapDefaultTemplateFileIfNecessary(configuration); - if (!configuration.getQgisResources().exists()) { - URL resourcesUrl = EchoBaseApplicationContext.class.getResource(QGIS_RESOURCES); - File resources = new File(resourcesUrl.getFile()); - FileUtils.copyDirectory(resources, configuration.getQgisResources()); - } + EchoBaseIOUtil.forceMkdir(configuration.getLizmapProjectsDirectory()); - if (!configuration.getLizmapTarget().exists()) { - configuration.getLizmapTarget().mkdirs(); - } } catch (IOException e) { throw new EchoBaseTechnicalException("Could not create gis support files", e); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.