Author: echatellier Date: 2014-08-27 16:00:36 +0200 (Wed, 27 Aug 2014) New Revision: 4100 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4100 Log: fixes #5688: Extract static version to properties file Added: branches/4.3.0-log4j2/src/main/resources/isis-config-4 Modified: branches/4.3.0-log4j2/pom.xml branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisConfig.java branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisFish.java branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCS.java branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCSNone.java branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java Modified: branches/4.3.0-log4j2/pom.xml =================================================================== --- branches/4.3.0-log4j2/pom.xml 2014-08-27 13:06:43 UTC (rev 4099) +++ branches/4.3.0-log4j2/pom.xml 2014-08-27 14:00:36 UTC (rev 4100) @@ -20,7 +20,7 @@ <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> - <version>3.0-rc-7</version> + <version>3.0-SNAPSHOT</version> <scope>compile</scope> </dependency> @@ -514,6 +514,23 @@ </distributionManagement> <build> + <resources> + <resource> + <directory>src/main/resources</directory> + <includes> + <include>isis-config-4</include> + </includes> + <filtering>true</filtering> + </resource> + <resource> + <directory>src/main/resources</directory> + <excludes> + <exclude>isis-config-4</exclude> + </excludes> + <filtering>false</filtering> + </resource> + </resources> + <pluginManagement> <plugins> <plugin> Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisConfig.java =================================================================== --- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-08-27 13:06:43 UTC (rev 4099) +++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-08-27 14:00:36 UTC (rev 4100) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2002 - 2012 Ifremer, Code Lutin, Benjamin Poussin, Chatellier Eric + * Copyright (C) 2002 - 2014 Ifremer, Code Lutin, Benjamin Poussin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -45,12 +45,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.config.ApplicationConfig; +import org.nuiton.config.ArgumentsParserException; import org.nuiton.config.ConfigOptionDef; -import org.nuiton.converter.ConverterUtil; import org.nuiton.math.matrix.DoubleBigVector; import org.nuiton.math.matrix.DoubleSparseHashVector; import org.nuiton.util.StringUtil; -import org.nuiton.util.Version; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; import fr.ifremer.isisfish.actions.ExportAction; import fr.ifremer.isisfish.actions.ImportAction; @@ -82,6 +83,9 @@ /** Class logger. */ static private Log log = LogFactory.getLog(IsisConfig.class); + /** Numero de version majeure d'isis fish. */ + public static final int ISIS_FISH_MAJOR_VERSION = 4; + /** * Config step after init. * @@ -128,18 +132,10 @@ * migration de donnees demande automatiquement un changement de version * d'application. */ - protected final static Version version = new Version(4, 3, 2, 0); + protected static Version version; + protected static Version databaseVersion; + protected static Version apiVersion; - protected final static Version majorVersion = new Version(version.getNumber(0)); - protected final static Version databaseVersion = new Version( - version.getNumber(0), version.getNumber(1)); - protected final static Version apiVersion = new Version( - version.getNumber(0), version.getNumber(1), version.getNumber(2)); - - public static Version getVersionNumber() { - return version; - } - /** * Le nombre global ex: 3.2.0.0 * @@ -168,9 +164,6 @@ return apiVersion; } - static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2014"; - static final public String CONFIG_FILENAME = "isis-config-" + majorVersion.toString(); - /** separateur de liste */ static final public String SEP = ","; @@ -200,6 +193,26 @@ } } } + + @Override + public ApplicationConfig parse(String... args) throws ArgumentsParserException { + ApplicationConfig config = super.parse(args); + postInitWithVersion(config.getOption("isisfish.version")); + return config; + } + + /** + * Initialize avec des valeurs par defaut des options dans la valeur dépend de la version. + * + * @param fullVersion full version (ex 4.3.1.9) + */ + protected void postInitWithVersion(String fullVersion) { + IsisConfig.version = Versions.valueOf(fullVersion); + IsisConfig.databaseVersion = Versions.extractVersion(IsisConfig.version, 0, 1); + IsisConfig.apiVersion = Versions.extractVersion(IsisConfig.version, 0, 2); + + setDefaultOption(Option.SIMULATOR_SSH_ISIS_HOME.key, "/home3/caparmor/poussin/isis-fish-" + apiVersion.toString()); + } ////////////////////////////////////////////////// // Methode d'acces aux options @@ -1078,8 +1091,8 @@ */ public static enum Option implements ConfigOptionDef { - CONFIG_FILE(CONFIG_FILE_NAME, n("isisfish.config.main.configFileName.description"), CONFIG_FILENAME), - ISIS_HOME_DIRECTORY("isis.home.directory", n("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-fish-" + majorVersion.toString()), + CONFIG_FILE(CONFIG_FILE_NAME, n("isisfish.config.main.configFileName.description"), "isis-config-" + ISIS_FISH_MAJOR_VERSION), + ISIS_HOME_DIRECTORY("isis.home.directory", n("isisfish.config.main.compileDirectory.description"), getUserHome() + File.separator + "isis-fish-" + ISIS_FISH_MAJOR_VERSION), COMPILATION_DIRECTORY("compilation.directory", n("isisfish.config.main.compileDirectory.description"), "${isis.home.directory}" + File.separator + "isis-build"), MONITORING_DIRECTORY("monitoring.directory", n("isisfish.config.main.monitoringDirectory.description"), "${isis.home.directory}" + File.separator + "isis-monitoring"), JAVADOC_DIRECTORY("javadoc.directory", n("isisfish.config.main.javadocDirectory.description"), "${isis.home.directory}" + File.separator + "isis-docs"), @@ -1122,9 +1135,9 @@ /** Serveur accessible par ssh : user home directory */ SIMULATOR_SSH_USER_HOME("simulation.ssh.userhome", n("isisfish.config.main.simulation.ssh.userhome.description"), ""), /** Serveur accessible par ssh : remote data path */ - SIMULATOR_SSH_DATAPATH("simulation.ssh.datapath", n("isisfish.config.main.simulation.ssh.datapath.description"), "isis-fish-" + majorVersion.toString() + "/isis-database"), + SIMULATOR_SSH_DATAPATH("simulation.ssh.datapath", n("isisfish.config.main.simulation.ssh.datapath.description"), "isis-fish-4/isis-database"), /** Serveur accessible par ssh : remote isis home install */ - SIMULATOR_SSH_ISIS_HOME("simulation.ssh.isis.home", n("isisfish.config.main.simulation.ssh.isis.home.description"), "/home3/caparmor/poussin/isis-fish-" + IsisConfig.getApiVersion()), + SIMULATOR_SSH_ISIS_HOME("simulation.ssh.isis.home", n("isisfish.config.main.simulation.ssh.isis.home.description"), null), /** Serveur accessible par ssh : remote tmp path */ SIMULATOR_SSH_TMPPATH("simulation.ssh.tmppath", n("isisfish.config.main.simulation.ssh.tmppath.description"), "isis-tmp"), /** Serveur accessible par SSH : emplacement de Java (full path) */ Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisFish.java =================================================================== --- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisFish.java 2014-08-27 13:06:43 UTC (rev 4099) +++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisFish.java 2014-08-27 14:00:36 UTC (rev 4100) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2005 - 2013 Ifremer, CodeLutin, Chatellier Eric + * Copyright (C) 2005 - 2014 Ifremer, CodeLutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -58,7 +58,7 @@ import org.nuiton.i18n.init.DefaultI18nInitializer; import org.nuiton.math.matrix.MatrixFactory; import org.nuiton.topia.TopiaException; -import org.nuiton.util.Version; +import org.nuiton.util.version.Version; import org.nuiton.widget.SwingSession; import com.bbn.openmap.MapBean; @@ -130,6 +130,9 @@ // set Rtype in jni mode System.setProperty("R.type", "jni"); + // initialisation de l'application + init(args); + // i18n is not inited here if (log.isInfoEnabled()) { log.info("Starting Isis-Fish " + IsisConfig.getVersion() + " with args : " + java.util.Arrays.toString(args)); @@ -140,13 +143,6 @@ log.info("PATH: " + System.getenv("PATH")); } - // initialisation de l'application - init(args); - - if (log.isDebugEnabled()) { - log.debug(t("isisfish.launch.init.done", config.getElapsedTimeAsString())); - } - // action after init config.doAction(IsisConfig.STEP_AFTER_INIT); @@ -181,6 +177,13 @@ } /** + * Initialize isis fish version from properties files. + */ + protected static void initVersion() { + + } + + /** * Start cron service (if enabled). */ protected static void startCronService() { @@ -256,6 +259,10 @@ // after init shutdown hook Runtime.getRuntime().addShutdownHook(new IsisQuitHook()); + + if (log.isDebugEnabled()) { + log.debug(t("isisfish.launch.init.done", config.getElapsedTimeAsString())); + } } /** Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java =================================================================== --- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2014-08-27 13:06:43 UTC (rev 4099) +++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2014-08-27 14:00:36 UTC (rev 4100) @@ -37,7 +37,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ListenerSet; -import org.nuiton.util.Version; +import org.nuiton.util.version.Version; import fr.ifremer.isisfish.IsisConfig; import fr.ifremer.isisfish.IsisFish; Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCS.java =================================================================== --- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCS.java 2014-08-27 13:06:43 UTC (rev 4099) +++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCS.java 2014-08-27 14:00:36 UTC (rev 4100) @@ -30,7 +30,7 @@ import java.util.List; import java.util.Map; -import org.nuiton.util.Version; +import org.nuiton.util.version.Version; /** * Version control system. Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCSNone.java =================================================================== --- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCSNone.java 2014-08-27 13:06:43 UTC (rev 4099) +++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCSNone.java 2014-08-27 14:00:36 UTC (rev 4100) @@ -31,7 +31,7 @@ import java.util.List; import java.util.Map; -import org.nuiton.util.Version; +import org.nuiton.util.version.Version; /** * VCSNone (svn or vcs) must extends this class. This class can be used as dummy Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java =================================================================== --- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2014-08-27 13:06:43 UTC (rev 4099) +++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2014-08-27 14:00:36 UTC (rev 4100) @@ -40,7 +40,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.util.Version; +import org.nuiton.util.version.Version; import org.tmatesoft.svn.core.ISVNDirEntryHandler; import org.tmatesoft.svn.core.ISVNLogEntryHandler; import org.tmatesoft.svn.core.SVNCommitInfo; Added: branches/4.3.0-log4j2/src/main/resources/isis-config-4 =================================================================== --- branches/4.3.0-log4j2/src/main/resources/isis-config-4 (rev 0) +++ branches/4.3.0-log4j2/src/main/resources/isis-config-4 2014-08-27 14:00:36 UTC (rev 4100) @@ -0,0 +1 @@ +isisfish.version=${project.version} Modified: branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java =================================================================== --- branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2014-08-27 13:06:43 UTC (rev 4099) +++ branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2014-08-27 14:00:36 UTC (rev 4100) @@ -37,7 +37,8 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.util.Version; +import org.nuiton.util.version.Version; +import org.nuiton.util.version.Versions; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -326,7 +327,7 @@ vcs.add(Arrays.asList(fileToAdd), "ajout d'un fichier"); // test switchTag - vcs.setTag(new Version(3, 1, 0)); + vcs.setTag(Versions.valueOf("3.1.0")); Assert.assertTrue(vcs.getTag().startsWith("/tags/3.1.0")); Assert.assertEquals(FILECONTENTTAG, FileUtils.readFileToString(version)); Assert.assertTrue(demo.exists()); @@ -890,10 +891,10 @@ log.info("testGetDiff()"); } - Version version = new Version(3, 1, 0); + Version version = Versions.valueOf("3.1.0"); Assert.assertTrue(vcs.isTag(version)); - version = new Version(3, 2, 0); + version = Versions.valueOf("3.2.0"); Assert.assertFalse(vcs.isTag(version)); } @@ -1144,7 +1145,7 @@ } // chechout tags - vcs.checkout(new Version(3, 1, 0), false); + vcs.checkout(Versions.valueOf("3.1.0"), false); // modif on remote repo on tag :) File file = new File(vcs.getLocalRepository(), "scripts" @@ -1173,7 +1174,7 @@ FileUtils.writeStringToFile(file2, "oooooo"); // try to update... - List<File> filesInConflict = vcs.setTag(new Version(3, 1, 0)); + List<File> filesInConflict = vcs.setTag(Versions.valueOf("3.1.0")); Assert.assertNotNull(filesInConflict); Assert.assertEquals(1, filesInConflict.size()); log.debug("Conflicts are : " + filesInConflict);