This is an automated email from the git hooks/post-receive script. New commit to branch feature/8175 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit 6cb33848fb8aca99ccc50c2625f7f77e5504d153 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri May 20 12:08:51 2016 +0200 Mise en place du script de mise à jour au démarrage de l'application (See #8175) --- .../echobase/config/EchoBaseConfiguration.java | 14 ++++++- .../config/EchoBaseConfigurationOption.java | 48 ++++++++++++++-------- .../i18n/echobase-domain_en_GB.properties | 3 ++ .../i18n/echobase-domain_fr_FR.properties | 3 ++ .../echobase/ui/EchoBaseApplicationContext.java | 22 ++++++++++ .../resources/{ => embedded}/update-echobase.sh | 0 6 files changed, 72 insertions(+), 18 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 72d841a..a877f47 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 @@ -182,6 +182,13 @@ public class EchoBaseConfiguration { return file; } + public File getBinDirectory() { + File file = applicationConfig.getOptionAsFile( + EchoBaseConfigurationOption.BIN_DIRECTORY.key); + Preconditions.checkNotNull(file); + return file; + } + public File getTemporaryDirectory() { File file = applicationConfig.getOptionAsFile( EchoBaseConfigurationOption.TEMPORARY_DIRECTORY.key); @@ -196,7 +203,12 @@ public class EchoBaseConfiguration { return file; } - public File getRscriptExecutablePath() { + public File getUpdateExecutablePath() { + File file = applicationConfig.getOptionAsFile( + EchoBaseConfigurationOption.UPDATE_EXECTUABLE_PATH.key); + Preconditions.checkNotNull(file); + return file; + } public File getRscriptExecutablePath() { File file = applicationConfig.getOptionAsFile( EchoBaseConfigurationOption.RSCRIPT_EXECTUABLE_PATH.key); Preconditions.checkNotNull(file); 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 09918fc..a259f9c 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 @@ -36,28 +36,42 @@ import static org.nuiton.i18n.I18n.n; */ public enum EchoBaseConfigurationOption implements ConfigOptionDef { + ECHOBASE_BASE_DIRECTORY("echobase.base.directory", + n("echobase.config.base.directory.description"), + "/var/local/echobase", + File.class), + /** Main directory where to put echobase data (logs, and others...). */ DATA_DIRECTORY("echobase.data.directory", n("echobase.config.data.directory.description"), - "/var/local/echobase/data", + "${echobase.base.directory}/data", File.class), LIBRARY_DIRECTORY("echobase.lib.directory", n("echobase.config.lib.directory.description"), "${echobase.data.directory}/lib", File.class), + BIN_DIRECTORY("echobase.bin.directory", + n("echobase.config.bin.directory.description"), + "${echobase.base.directory}/bin", + File.class), INTERNAL_DB_DIRECTORY( "echobase.internal.db.directory", n("echobase.config.internal.db.directory.description"), "${echobase.data.directory}/internaldb", File.class), TEMPORARY_DIRECTORY("echobase.data.temporary.directory", - n("echobase.config.data.temporary.directory.description"), - "${echobase.data.directory}/temp", - File.class), + n("echobase.config.data.temporary.directory.description"), + "${echobase.data.directory}/temp", + File.class), + UPDATE_EXECTUABLE_PATH( + "echobase.update.executable.path", + n("echobase.config.update.executable.path.description"), + "/usr/bin/Rscript", + File.class), RSCRIPT_EXECTUABLE_PATH( "echobase.Rscript.executable.path", n("echobase.config.Rscript.executable.path.description"), - "/usr/bin/Rscript", + "${echobase.bin.directory}/update_echobase.sh", File.class), EMBEDDED("echobase.embedded", n("echobase.config.embedded.description"), @@ -120,21 +134,21 @@ public enum EchoBaseConfigurationOption implements ConfigOptionDef { "${echobase.gis.directory}/projects", File.class), LIZMAP_APPLICATION_BASEDIR("echobase.lizmap.application.basedir", - n("echobase.config.lizmap.application.basedir.description"), - "/var/www/html/echobase-map", - File.class), + n("echobase.config.lizmap.application.basedir.description"), + "/var/www/html/echobase-map", + File.class), LIZMAP_APPLICATION_CONFIG_FILE("echobase.lizmap.application.config.file", - n("echobase.config.lizmap.application.config.file.description"), - "${echobase.lizmap.application.basedir}/lizmap/var/config/lizmapConfig.ini.php", - File.class), + n("echobase.config.lizmap.application.config.file.description"), + "${echobase.lizmap.application.basedir}/lizmap/var/config/lizmapConfig.ini.php", + File.class), LIZMAP_APPLICATION_MAP_URL("echobase.lizmap.application.map.url", - n("echobase.config.lizmap.application.map.url.description"), - "http://localhost/echobase-map/lizmap/www/index.php/view/map", - String.class), + n("echobase.config.lizmap.application.map.url.description"), + "http://localhost/echobase-map/lizmap/www/index.php/view/map", + String.class), LIZMAP_APPLICATION_JDBC_URL("echobase.lizmap.application.jdbc.url", - n("echobase.config.lizmap.application.jdbc.url.description"), - "jdbc:sqlite:${echobase.lizmap.application.basedir}/lizmap/var/jauth.db", - String.class), + n("echobase.config.lizmap.application.jdbc.url.description"), + "jdbc:sqlite:${echobase.lizmap.application.basedir}/lizmap/var/jauth.db", + String.class), LIZMAP_REPOSITORY_NAME("echobase.lizmap.repositoryName", n("echobase.lizmap.repositoryName.description"), "echobase", 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 0c80451..00f6d96 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 @@ -27,6 +27,8 @@ echobase.common.importType.resultsVoyage.short=R Voyage echobase.common.importType.voyage=Voyage import echobase.common.importType.voyage.short=Complete voyage echobase.config.Rscript.executable.path.description=Location of the R command +echobase.config.base.directory.description=Base directory of EchoBase +echobase.config.bin.directory.description=Binaries directory echobase.config.coser.api.url=Url to request Coser API echobase.config.csv.separator.description=Csv separator character echobase.config.data.directory.description=Path to application data @@ -50,6 +52,7 @@ echobase.config.log.config.file.description=Log configuration file echobase.config.postgresqlVersion.description=Postgresql driver version 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.update.executable.path.description=Path to update script echobase.config.version.description=Application version echobase.config.war.location.description=Location of the war used to create embedded applications echobase.configuration.description=EchoBase configuration 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 6d0debd..ad3b71b 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 @@ -27,6 +27,8 @@ echobase.common.importType.resultsVoyage.short=R Voyage echobase.common.importType.voyage=Import Campagne echobase.common.importType.voyage.short=Campagne complête echobase.config.Rscript.executable.path.description=Chemin vers l'exécutable R +echobase.config.base.directory.description=Chemin d'installation d'EchoBase +echobase.config.bin.directory.description=Chemin du répertoire des scripts de démarrage d'EchoBase echobase.config.coser.api.url=Url pour intérroger le site des indicateurs echobase.config.csv.separator.description=Caractère séparateur pour les fichiers csv echobase.config.data.directory.description=Répertoire des données de l'application @@ -49,6 +51,7 @@ echobase.config.log.config.file.description=Fichier de configuration des logs echobase.config.postgresqlVersion.description=Version du pilote jdbc Postgresql 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.update.executable.path.description=Chemin du script de mise à jour d'EchoBase 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 echobase.configuration.description=Configuration d'EchoBase 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 d58201c..ba07050 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 @@ -219,6 +219,13 @@ public class EchoBaseApplicationContext { // init database (and create minimal admin user if required) initInternalDatabase(serviceContext); + // init bin directory + try { + initBinDirectory(); + } catch (IOException e) { + throw new TopiaException("Could not init bin directory", e); + } + // extract files to library directory if required try { extractFiles(); @@ -447,6 +454,21 @@ public class EchoBaseApplicationContext { } } + protected void initBinDirectory() throws IOException { + + // copy drivers + File binDirectory = configuration.getBinDirectory(); + EchoBaseIOUtil.forceMkdir(binDirectory); + File updateExecutablePath = configuration.getUpdateExecutablePath(); + String updateExecutablePathName = updateExecutablePath.getName(); + // copy it from class-path + if (log.isInfoEnabled()) { + log.info("Copy embedded resource " + updateExecutablePathName + " to directory " + binDirectory); + } + EmbeddedApplicationService.copyEmbeddedBinaryFile(updateExecutablePathName, binDirectory); + + } + protected void initGisFiles() { try { diff --git a/echobase-ui/src/main/resources/update-echobase.sh b/echobase-ui/src/main/resources/embedded/update-echobase.sh similarity index 100% rename from echobase-ui/src/main/resources/update-echobase.sh rename to echobase-ui/src/main/resources/embedded/update-echobase.sh -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.