Isis-fish-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- 3175 discussions
r4108 - in branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish: map simulator
by echatellier@users.forge.codelutin.com 09 Sep '14
by echatellier@users.forge.codelutin.com 09 Sep '14
09 Sep '14
Author: echatellier
Date: 2014-09-09 15:17:25 +0200 (Tue, 09 Sep 2014)
New Revision: 4108
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4108
Log:
fixes #5646: gestion des resultats n?\195?\169gatifs pour affichage sur la carte
Modified:
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/DefaultScale.java
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/Motif.java
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/Scale.java
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/DefaultScale.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/DefaultScale.java 2014-09-09 10:06:34 UTC (rev 4107)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/DefaultScale.java 2014-09-09 13:17:25 UTC (rev 4108)
@@ -92,15 +92,8 @@
}
public int getValueAsRGB(double value) {
+ System.out.println(value);
return (int) (value / (getMax() / 255.0));
}
- public double getValueAsSqrtScale(double value) {
- double scale = getValueAsScale(value);
- if (scale < 0) {
- return 0;
- }
- return Math.sqrt(scale);
- }
-
} // DefaultScale
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/Motif.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/Motif.java 2014-09-09 10:06:34 UTC (rev 4107)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/Motif.java 2014-09-09 13:17:25 UTC (rev 4108)
@@ -197,8 +197,14 @@
Scale sc, DataMap datamap) {
if (datamap.getValue() != 0) {
int rgb = sc.getValueAsRGB(datamap.getValue());
+
+ // see http://forge.codelutin.com/issues/5646
+ // cela peut se produire en cas de résultat incohérents
+ if (rgb < 0) {
+ rgb = 0;
+ }
+
Color lColor = new Color(255 - rgb, 255 - rgb, 255 - rgb, 255);
-
Color fColor = new Color(255 - rgb, 255 - rgb, 255 - rgb, 255);
OMRect omrect;
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/Scale.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/Scale.java 2014-09-09 10:06:34 UTC (rev 4107)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/map/Scale.java 2014-09-09 13:17:25 UTC (rev 4108)
@@ -48,12 +48,4 @@
public int getValueAsRGB(double value);
- /**
- * Get the corresponding square root value between 0.0 and 1.0.
- *
- * @param value value to get sqrt scale
- * @return sqrt scale
- */
- public double getValueAsSqrtScale(double value);
-
} // Scale
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-09-09 10:06:34 UTC (rev 4107)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-09-09 13:17:25 UTC (rev 4108)
@@ -541,7 +541,7 @@
*
* Default to "info".
*
- * @return simualtor log level
+ * @return simulator log level
*/
public String getSimulLogLevel();
1
0
r4107 - in branches/4.3.0-log4j2: . src/main/java/fr/ifremer/isisfish/simulator/launcher src/main/java/fr/ifremer/isisfish/util src/test/java/fr/ifremer/isisfish/simulator src/test/java/fr/ifremer/isisfish/simulator/launcher src/test/java/fr/ifremer/isisfish/util
by echatellier@users.forge.codelutin.com 09 Sep '14
by echatellier@users.forge.codelutin.com 09 Sep '14
09 Sep '14
Author: echatellier
Date: 2014-09-09 12:06:34 +0200 (Tue, 09 Sep 2014)
New Revision: 4107
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4107
Log:
fixes #568: D?\195?\169pendances non incluses dans la simulation
Modified:
branches/4.3.0-log4j2/pom.xml
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java
branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java
branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java
branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java
Modified: branches/4.3.0-log4j2/pom.xml
===================================================================
--- branches/4.3.0-log4j2/pom.xml 2014-09-01 11:05:03 UTC (rev 4106)
+++ branches/4.3.0-log4j2/pom.xml 2014-09-09 10:06:34 UTC (rev 4107)
@@ -216,10 +216,10 @@
</dependency>
<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.7.7</version>
- <scope>runtime</scope>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.7.7</version>
+ <scope>runtime</scope>
</dependency>
<dependency>
@@ -323,6 +323,12 @@
<artifactId>ssj</artifactId>
<version>2.5</version>
<scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>dsol</groupId>
+ <artifactId>dsol-xml</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<!-- fin ssj pour les calculs stockastiques -->
@@ -342,10 +348,6 @@
<groupId>com.jcraft</groupId>
</exclusion>
<exclusion>
- <artifactId>sqljet</artifactId>
- <groupId>org.tmatesoft.sqljet</groupId>
- </exclusion>
- <exclusion>
<artifactId>platform</artifactId>
<groupId>net.java.dev.jna</groupId>
</exclusion>
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2014-09-01 11:05:03 UTC (rev 4106)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2014-09-09 10:06:34 UTC (rev 4107)
@@ -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
@@ -47,8 +47,9 @@
import java.util.concurrent.Executors;
import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.commons.lang3.time.DurationFormatUtils;
@@ -96,6 +97,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
import fr.ifremer.isisfish.util.CompileHelper;
+import fr.ifremer.isisfish.util.DependencyUtil;
/**
* Cette classe est responsable de conservation de toutes les simulations faites
@@ -193,14 +195,6 @@
log.warn(t("Can't instantiate %s", value), eee);
}
}
-
- // fait un appel au moniteur
- // pour reprendre le monitoring des simulation en cours
- // TODO check this, don't restart monitoring on non ui launch
- // moved to main()
- //if (IsisFish.config.isLaunchUI()) {
- // SimulationMonitor.getInstance().reloadConfig(this);
- //}
}
/**
@@ -403,7 +397,7 @@
}
// on construit le zip de la simulation
- File zip = prepareSimulationZipFile(control, localParameters, null, null, true);
+ File zip = prepareSimulationZipFile(control, localParameters, null, null);
item.setSimulationZip(zip);
if (localParameters.getUseSimulationPlan() && localParameters.isIndependentPlan()) {
@@ -481,7 +475,7 @@
// on construit le zip de la simulation
// in zip, there will be param "without" prescript
- File zip = prepareSimulationZipFile(controlJustForZip, localParameters, xmlDesignPlan, sensitivityScenarios, true);
+ File zip = prepareSimulationZipFile(controlJustForZip, localParameters, xmlDesignPlan, sensitivityScenarios);
// for each simulation, we neeed to launch a specific simulation
// new simulation ids will be id + "_" + x
@@ -715,48 +709,35 @@
* @param param les parametre de la simulation
* @param xmlDesignPlan contenu xml des design plan
* @param sensitivityScenarios used to add some extra files (such as rules)
- * @param compile si vrai la version compile des fichiers Java est aussi
- * mise dans le fichier zip. Cela peut servir pour les simulations locales
- * pour ne pas recompiler pour chaque simulation avec plan de simulation
* @return un zip de simulation pour une simulation pret a être faite
* @throws SimulationException pour tout problème rencontré (IO,Topia...)
*/
protected File prepareSimulationZipFile(SimulationControl control,
- SimulationParameter param, String xmlDesignPlan, SensitivityScenarios sensitivityScenarios, boolean compile)
+ SimulationParameter param, String xmlDesignPlan, SensitivityScenarios sensitivityScenarios)
throws SimulationException {
+
try {
- File tmpDirectory = FileUtil.createTempDirectory(
- "isisfish-simulation-", "-preparation");
- //File regionXML = IsisConfig.getDataBackupFile(tmpDirectory);
- File regionXML = new File(tmpDirectory,
- SimulationStorage.DATA_BACKUP_FILENAME);
+ File tmpDirectory = FileUtil.createTempDirectory("isisfish-simulation-", "-preparation");
// sauvegarde des parametres
Properties prop = param.toProperties();
- //File f = IsisConfig.getSimulationParametersFile(tmpDirectory);
File f = new File(tmpDirectory, SimulationStorage.PARAMETERS_FILENAME);
- FileOutputStream out = null;
- try {
- out = new FileOutputStream(f);
+ try (FileOutputStream out = new FileOutputStream(f)) {
prop.store(out, "Parameters");
- } finally {
- IOUtils.closeQuietly(out);
}
// backup pour toutes les simulations, pour eviter que l'utilisateur
// ne puisse le modifier en meme temps
control.setText(t("isisfish.message.backup.database.progress"));
- RegionStorage region = RegionStorage.getRegion(param
- .getRegionName());
+ File regionBackup = new File(tmpDirectory, SimulationStorage.DATA_BACKUP_FILENAME);
+ RegionStorage region = RegionStorage.getRegion(param.getRegionName());
TopiaContext tc = region.getStorage().beginTransaction();
- tc.backup(regionXML, true);
+ tc.backup(regionBackup, true);
tc.closeContext();
control.setText(t("isisfish.message.backup.database.finished"));
- // copie de toutes regles a utiliser
+ // extract Rules defined in factors
List<Rule> rules = param.getRules();
-
- // FIXME small hack to add rules defined in simulations factors
if (sensitivityScenarios != null) {
for (Scenario sensitivityScenario : sensitivityScenarios.getScenarios()) {
List<Factor> factors = sensitivityScenario.getFactors();
@@ -865,13 +846,6 @@
}
}
- // copie de tous les scripts a utiliser
- // les script officiel prevalent sur les scripts communautés
- FileUtil.copyRecursively(ScriptStorage.getCommunityScriptDirectory(),
- tmpDirectory, ".*\\.java$");
- FileUtil.copyRecursively(ScriptStorage.getScriptDirectory(),
- tmpDirectory, ".*\\.java$");
-
// copie de tous les simulateurs a utiliser
File simulatorFile = new File(SimulatorStorage.getSimulatorDirectory(), param.getSimulatorName());
if (!simulatorFile.isFile()) {
@@ -881,14 +855,10 @@
SimulatorStorage.SIMULATOR_PATH + File.separator
+ param.getSimulatorName()));
- // convert all file to UTF-8
- //convertAllFile(control, tmpDirectory);
-
- if (compile) {
- compileAllFile(control, tmpDirectory);
- }
+ // compile and add dependencies
+ compileAllFile(control, tmpDirectory);
- // Sauvegarde du design plan en XML
+ // sauvegarde du design plan en XML
if (!StringUtils.isEmpty(xmlDesignPlan)) {
File simulationDesignPlanFile = SimulationStorage.getMexicoDesignPlan(tmpDirectory);
FileUtils.writeStringToFile(simulationDesignPlanFile, xmlDesignPlan, "utf-8");
@@ -915,47 +885,6 @@
}
- /*
- * Convertit tous les fichiers du répertoire directory en UTF-8,
- * pour eviter les erreurs d'encodage du la compilation
- * sur un autre systeme ne supportant pas l'encodage courant.
- *
- * @param control le controleur
- * @param directory le répertoire a convertir
- *
- protected void convertAllFile(SimulationControl control, File directory) {
-
- control.setText("Converting file to unicode");
-
- List<File> fileToConvert = new ArrayList<File>();
-
- List<File> tmp = FileUtil.find(new File(directory,
- ExportStorage.EXPORT_PATH), ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory,
- SensitivityExportStorage.SENSITIVITY_EXPORT_PATH), ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory, RuleStorage.RULE_PATH),
- ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- tmp = FileUtil.find(new File(directory,
- SimulationPlanStorage.SIMULATION_PLAN_PATH), ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- tmp = FileUtil.find(
- new File(directory, SimulatorStorage.SIMULATOR_PATH),
- ".*\\.java$", true);
- fileToConvert.addAll(tmp);
-
- //
- // Convertion
- //
- //CompileHelper.convertToUnicode(fileToConvert);
- }*/
-
/**
* Compile les fichiers présent dans le répertoire passé en
* parametre, ce répertoire est hiérarchisé en: rules, exports, simulators
@@ -967,19 +896,21 @@
*
* @param control le controleur
* @param directory le répertoire où compiler
+ * @throws IOException
*/
- protected void compileAllFile(SimulationControl control, File directory) {
+ protected void compileAllFile(SimulationControl control, File directory) throws IOException {
control.setText(t("isisfish.simulation.message.scriptscompilation"));
long currentTime = System.nanoTime();
- //
// Recherche des fichiers a compiler
// On ne prend pas les scripts, car ils sont tous copiés mais pas
// forcément util. Lors de la compilation des autres fichiers, les
// script servant réellement seront automatiquement compilé
- List<File> fileToCompile = new ArrayList<File>();
+ List<File> fileToCompile = new ArrayList<>(); // *.java
+ List<File> fileToInpect = new ArrayList<>(); // *.class
+ Set<String> dependencies = new HashSet<String>(); // packages
String[] modules = {
ExportStorage.EXPORT_PATH,
@@ -990,17 +921,46 @@
SimulationPlanStorage.SIMULATION_PLAN_PATH,
SimulatorStorage.SIMULATOR_PATH
};
-
+
for (String module : modules) {
- List<File> tmp = FileUtil.find(new File(directory, module), ".*\\.java$", true);
+ File moduleDir = new File(directory, module);
+ List<File> tmp = FileUtil.find(moduleDir, ".*\\.java$", true);
fileToCompile.addAll(tmp);
+ for (File srcFile : tmp) {
+ // source
+ fileToCompile.add(srcFile);
+ // class
+ File classFile = new File(srcFile.getAbsolutePath().replaceFirst("\\.java", ".class"));
+ fileToInpect.add(classFile);
+ // package
+ dependencies.add(module + "." + FilenameUtils.getBaseName(srcFile.getName()));
+ }
}
//
// Compilation
//
-
CompileHelper.compile(directory, fileToCompile, directory, null);
+
+ //
+ // Check dependencies
+ //
+ Set<String> allDeps = DependencyUtil.extractDependencies(directory, fileToInpect);
+ Collection<String> missingDeps = CollectionUtils.subtract(allDeps, dependencies);
+ for (String missingDep : missingDeps) {
+ String relativePath = missingDep.replace('.', File.separatorChar) + ".java";
+ // try official first
+ File srcFile = new File(IsisFish.config.getContextDatabaseDirectory(), relativePath);
+ if (!srcFile.isFile()) {
+ // if official file not exists, look for community file
+ srcFile = new File(IsisFish.config.getCommunityDatabaseDirectory(), missingDep.replace('.', File.separatorChar) + ".java");
+ }
+ File destFile = new File(directory, missingDep.replace('.', File.separatorChar) + ".java");
+ FileUtils.copyFile(srcFile, destFile);
+ }
+ // there is no need to compile this dependancies, they have been compiled by first compilation
+ // only add missing java files
+
long time = System.nanoTime() - currentTime;
control.setText(t("isisfish.message.compilation.time",
DurationFormatUtils.formatDuration(time / 1000000, "s'.'S")));
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java 2014-09-01 11:05:03 UTC (rev 4106)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java 2014-09-09 10:06:34 UTC (rev 4107)
@@ -25,8 +25,13 @@
package fr.ifremer.isisfish.util;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
@@ -70,21 +75,56 @@
* Extrait les dépendences d'une class compilé à partir de son bytecode en ne conservant que
* les dependances des scripts utilisateurs.
*
- * @param clazz la classe à analyser
+ * @param rootDirectory
+ * @param files ensemble de fichier à analyzer (fichiers .class)
* @return extract class set
*/
- public static Set<String> extractDependencies(Class<?> clazz) {
- return extractDependencies(clazz, true);
+ public static Set<String> extractDependencies(File rootDirectory, Collection<File> files) {
+ Set<String> deps = new HashSet<String>();
+ Set<File> alreadyDone = new HashSet<File>();
+ recursiveExtractDependencies(rootDirectory, files, alreadyDone, deps);
+ return deps;
}
+ protected static void recursiveExtractDependencies(File rootDirectory, Collection<File> todoClassFiles, Set<File> alreadyDone, Set<String> deps) {
+
+ // extract deps
+ for (File file : todoClassFiles) {
+ alreadyDone.add(file);
+ try (InputStream is = new BufferedInputStream(new FileInputStream(file))) {
+ Set<String> fileDeps = extractDependencies(is);
+ deps.addAll(fileDeps);
+ } catch (IOException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't extract dependencies", ex);
+ }
+ }
+
+ }
+
+ // convert deps to class filTopiaFlywayServicees
+ Collection<File> newClassFiles = new ArrayList<>();
+ for (String dep : deps) {
+ String classRelative = dep.replace('.', File.separatorChar) + ".class";
+ File classFile = new File(rootDirectory, classRelative);
+ if (!alreadyDone.contains(classFile)) {
+ newClassFiles.add(classFile);
+ }
+ }
+
+ // make new recursion if necessary
+ if (!newClassFiles.isEmpty()) {
+ recursiveExtractDependencies(rootDirectory, newClassFiles, alreadyDone, deps);
+ }
+ }
+
/**
* Extrait les dépendences d'une class compilé à partir de son bytecode.
*
* @param clazz la classe à analyser
- * @param onlyUserScript only keep user script types
* @return extract class set
*/
- public static Set<String> extractDependencies(Class<?> clazz, final boolean onlyUserScript) {
+ protected static Set<String> extractDependencies(InputStream clazzStream) {
final Set<String> result = new HashSet<>();
// method body visitor
@@ -92,59 +132,59 @@
@Override
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
- registerDescriptor(result, desc, onlyUserScript);
+ registerDescriptor(result, desc);
return super.visitAnnotation(desc, visible);
}
@Override
public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible) {
- registerDescriptor(result, desc, onlyUserScript);
+ registerDescriptor(result, desc);
return super.visitTypeAnnotation(typeRef, typePath, desc, visible);
}
@Override
public AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible) {
- registerDescriptor(result, desc, onlyUserScript);
+ registerDescriptor(result, desc);
return super.visitParameterAnnotation(parameter, desc, visible);
}
@Override
public void visitTypeInsn(int opcode, String type) {
- registerType(result, type, onlyUserScript);
+ registerType(result, type);
super.visitTypeInsn(opcode, type);
}
@Override
public void visitFieldInsn(int opcode, String owner, String name, String desc) {
- registerType(result, owner, onlyUserScript);
- registerDescriptor(result, desc, onlyUserScript);
+ registerType(result, owner);
+ registerDescriptor(result, desc);
super.visitFieldInsn(opcode, owner, name, desc);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
- registerType(result, owner, onlyUserScript);
- registerDescriptor(result, desc, onlyUserScript);
+ registerType(result, owner);
+ registerDescriptor(result, desc);
super.visitMethodInsn(opcode, owner, name, desc, itf);
}
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof Type) {
- registerType(result, ((Type)cst).getClassName(), onlyUserScript);
+ registerType(result, ((Type)cst).getClassName());
}
super.visitLdcInsn(cst);
}
@Override
public void visitTryCatchBlock(Label start, Label end, Label handler, String type) {
- registerType(result, type, onlyUserScript);
+ registerType(result, type);
super.visitTryCatchBlock(start, end, handler, type);
}
@Override
public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) {
- registerDescriptor(result, desc, onlyUserScript);
+ registerDescriptor(result, desc);
super.visitLocalVariable(name, desc, signature, start, end, index);
}
};
@@ -155,35 +195,35 @@
@Override
public void visit(int version, int access, String name,
String signature, String superName, String[] interfaces) {
- registerType(result, superName, onlyUserScript);
+ registerType(result, superName);
super.visit(version, access, name, signature, superName, interfaces);
}
@Override
public AnnotationVisitor visitAnnotation(String desc,
boolean visible) {
- registerDescriptor(result, desc, onlyUserScript);
+ registerDescriptor(result, desc);
return super.visitAnnotation(desc, visible);
}
@Override
public FieldVisitor visitField(int access, String name,
String desc, String signature, Object value) {
- registerDescriptor(result, desc, onlyUserScript);
+ registerDescriptor(result, desc);
return super.visitField(access, name, desc, signature, value);
}
@Override
public MethodVisitor visitMethod(int access, String name,
String desc, String signature, String[] exceptions) {
- registerDescriptor(result, desc, onlyUserScript);
+ registerDescriptor(result, desc);
return mv;
}
};
- // parse inpu class
- try (InputStream in = clazz.getResourceAsStream("/" + clazz.getName().replace('.', '/') + ".class")) {
- ClassReader classReader = new ClassReader(in);
+ // parse input class
+ try {
+ ClassReader classReader = new ClassReader(clazzStream);
classReader.accept(visitor, 0);
} catch (IOException ex) {
if (log.isErrorEnabled()) {
@@ -199,11 +239,10 @@
*
* @param types types collection
* @param type type to add
- * @param onlyUserScript only keep user script types
*/
- protected static void registerType(Set<String> types, String type, boolean onlyUserScript) {
+ protected static void registerType(Set<String> types, String type) {
//System.out.println("==> " + type);
- if (!onlyUserScript || StringUtils.startsWithAny(type,
+ if (StringUtils.startsWithAny(type,
ExportStorage.EXPORT_PATH,
FormuleStorage.FORMULE_PATH,
ObjectiveStorage.OBJECTIVE_PATH,
@@ -227,25 +266,25 @@
* <li>Lfr/ifremer/isisfish/types/Month;</li>
* <li>[Ljava/lang/String;</li>
* <li>(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;</li>
+ * </ul>
*
* @param types types collection
* @param descriptor descriptor
- * @param onlyUserScript only keep user script types
*/
- protected static void registerDescriptor(Set<String> types, String descriptor, boolean onlyUserScript) {
+ protected static void registerDescriptor(Set<String> types, String descriptor) {
if (descriptor.startsWith("(")) {
int endIndex = descriptor.indexOf(')');
- registerDescriptor(types, descriptor.substring(1, endIndex), onlyUserScript);
- registerDescriptor(types, descriptor.substring(endIndex + 1), onlyUserScript);
+ registerDescriptor(types, descriptor.substring(1, endIndex));
+ registerDescriptor(types, descriptor.substring(endIndex + 1));
} else {
- Pattern pattern = Pattern.compile("\\[*L([^;]+);|\\[[ZBCSIFDJ]|[ZBCSIFDJ]");
+ // full pattern : \\[*L([^;]+);|\\[[ZBCSIFDJ]|[ZBCSIFDJ]
+ // on exclut la fin (les types primitifs) pour ne conserver que la partie interessante
+ // du pattern qui nous concerne
+ Pattern pattern = Pattern.compile("\\[*L([^;]+);");
Matcher matcher = pattern.matcher(descriptor);
while (matcher.find()) {
String match = matcher.group(1);
- // sinon c'est un type primitif
- if (match != null) {
- registerType(types, match, onlyUserScript);
- }
+ registerType(types, match);
}
}
}
Modified: branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java
===================================================================
--- branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java 2014-09-01 11:05:03 UTC (rev 4106)
+++ branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java 2014-09-09 10:06:34 UTC (rev 4107)
@@ -31,9 +31,7 @@
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtilsBean;
-import org.junit.After;
import org.junit.Assert;
-import org.junit.Before;
import org.junit.Test;
import org.nuiton.math.matrix.MatrixFactory;
import org.nuiton.math.matrix.MatrixND;
@@ -55,21 +53,6 @@
*/
public class SimulationPreScriptTest extends AbstractIsisFishTest {
- @Before
- public void setUp() throws Exception {
- // not do it in @BeforeClass
- // test will fail !
- init();
- // very important , other test wil fail with that
- //System.setProperty("hibernate.hbm2ddl.auto", "create");
- }
-
- @After
- public void tearDown() {
- // very important , other test wil fail with that
- //System.clearProperty("hibernate.hbm2ddl.auto");
- }
-
/**
* Test que les chaine represantant des matrices sont correctement
* transformée en MatrixND.
Modified: branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java
===================================================================
--- branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2014-09-01 11:05:03 UTC (rev 4106)
+++ branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2014-09-09 10:06:34 UTC (rev 4107)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2006 - 2011 Ifremer, Code Lutin, Chatellier Eric
+ * Copyright (C) 2006 - 2014 Ifremer, Code Lutin, 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
@@ -25,6 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@@ -34,7 +35,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
-import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.nuiton.math.matrix.MatrixFactory;
@@ -47,6 +47,9 @@
import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.datastore.ScriptStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
import fr.ifremer.isisfish.datastore.StorageException;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.PopulationGroup;
@@ -84,11 +87,61 @@
/** Commons logging log. */
private static Log log = LogFactory.getLog(SimulationServiceTest.class);
- @Before
- public void setUp() throws Exception {
- // not do it in @BeforeClass
- // test will fail !
- AbstractIsisFishTest.init();
+ /**
+ * Lance une simulation simple avec le simulateur par cellule.
+ *
+ * Test is wrong if it take more than 2 min.
+ *
+ * @throws InterruptedException
+ */
+ @Test(timeout=120 * 1000)
+ public void testSimulationEffortByCell() throws InterruptedException {
+
+ SimulationParameter params = new SimulationParameterImpl();
+ // set params region
+ params.setRegionName("DemoRegion");
+ // simulator
+ params.setSimulatorName("SimulatorEffortByCell.java");
+ // set population
+ List<Population> pops = new ArrayList<Population>();
+ Population pop = new PopulationImpl();
+ pop.setName("test population");
+ pop.setPopulationGroup(new ArrayList<PopulationGroup>());
+ pop.setPopulationZone(new ArrayList<Zone>());
+ pops.add(pop);
+ params.setPopulations(pops);
+ // strat
+ List<Strategy> strats = new ArrayList<Strategy>();
+ Strategy strategy = new StrategyImpl();
+ strategy.setName("stratest");
+ strats.add(strategy);
+ params.setStrategies(strats);
+ // number of year
+ params.setNumberOfYear(1);
+
+ // run simulation
+ SimulationService service = SimulationService.getService();
+ SimulatorLauncher launcher = new InProcessSimulatorLauncher();
+ service.addSimulationLauncher(launcher);
+ String simulationId = "effort by cell test number 1";
+ service.submit("effort by cell test number 1", params, launcher, 0);
+
+ // temporise la fin de test , sinon junit tue tous les process
+ do {
+ Thread.sleep(2000);
+ } while (!service.jobs.isEmpty());
+
+ // suite au changement de la compilation, on vérifie que certains fichier java
+ // doivent être automatiquement inclut dans les sources
+ File simDir = SimulationStorage.getSimulationDirectory(simulationId);
+ File simulatorDir = new File(simDir, SimulatorStorage.SIMULATOR_PATH);
+ File scriptDir = new File(simDir, ScriptStorage.SCRIPT_PATH);
+ Assert.assertTrue(new File(simulatorDir, "DefaultSimulator.java").exists());
+ Assert.assertTrue(new File(simulatorDir, "SimulatorEffortByCell.java").exists());
+ Assert.assertTrue(new File(scriptDir, "ResultName.java").exists());
+ Assert.assertTrue(new File(scriptDir, "SiMatrix.java").exists());
+ Assert.assertTrue(new File(scriptDir, "GravityModel.java").exists());
+ Assert.assertTrue(new File(scriptDir, "RuleUtil.java").exists());
}
/**
@@ -180,9 +233,11 @@
* Lance une simulation avec des facteurs de sensibilité.
*
* Test is wrong if it take more than 2 min.
+ *
+ * @throws InterruptedException
*/
@Test(timeout=120 * 1000)
- public void testRunSensivitySimulation() {
+ public void testRunSensivitySimulation() throws InterruptedException {
SimulationParameter params = new SimulationParameterImpl();
// set params region
@@ -216,15 +271,10 @@
sensitivityAnalysis, designPlan);
// temporise la fin de test , sinon junit tue tous les process
- try {
- do {
- Thread.sleep(2000);
- } while (!service.jobs.isEmpty());
- } catch (InterruptedException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't wait wimulation to end", e);
- }
- }
+ do {
+ Thread.sleep(2000);
+ } while (!service.jobs.isEmpty());
+
}
/**
Modified: branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java
===================================================================
--- branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java 2014-09-01 11:05:03 UTC (rev 4106)
+++ branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java 2014-09-09 10:06:34 UTC (rev 4107)
@@ -24,13 +24,18 @@
*/
package fr.ifremer.isisfish.util;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
import java.util.Set;
import org.junit.Assert;
import org.junit.Test;
import fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishException;
+import fr.ifremer.isisfish.datastore.JavaSourceStorage;
import fr.ifremer.isisfish.datastore.RuleStorage;
import fr.ifremer.isisfish.datastore.ScriptStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
@@ -43,18 +48,39 @@
public class DependencyUtilTest extends AbstractIsisFishTest {
/**
+ * Extract dependency for test.
+ *
+ * @param storage storage
+ * @return deps
+ * @throws IsisFishException
+ */
+ protected static Set<String> extractDependencies(JavaSourceStorage storage) throws IsisFishException {
+ String clazzName = storage.getCodeClass().getName();
+ File classFile = new File(IsisFish.config.getCompileDirectory(), clazzName.replace('.', File.separatorChar) + ".class");
+ Set<String> result = DependencyUtil.extractDependencies(IsisFish.config.getCompileDirectory(), Collections.singletonList(classFile));
+ return result;
+ }
+
+ /**
* Récupère une classe parmis les scripts de test et vérifie que les dépendances sont bien
* extraites.
*
* @throws IsisFishException
+ * @throws IOException
*/
@Test
- public void testExtractDependencies1() throws IsisFishException {
- SimulatorStorage simulatorByCell = SimulatorStorage.getSimulator("SimulatorEffortByCell");
- Class<?> clazz = simulatorByCell.getCodeClass();
- Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
- Assert.assertTrue(deps.size() >= 10);
+ public void testExtractDependencies1() throws IsisFishException, IOException {
+ SimulatorStorage script = SimulatorStorage.getSimulator("SimulatorEffortByCell");
+ Set<String> deps = extractDependencies(script);
+ // premier niveau
Assert.assertTrue(deps.contains("simulators.DefaultSimulator"));
+ // deuxieme niveau de dependance
+ Assert.assertTrue(deps.contains("scripts.SiMatrix"));
+ Assert.assertTrue(deps.contains("scripts.GravityModel"));
+ // troisieme niveau
+ Assert.assertTrue(deps.contains("scripts.MinimisationUtil"));
+ Assert.assertTrue(deps.contains("scripts.ObjectiveFunction"));
+ Assert.assertTrue(deps.contains("scripts.ObjectiveFunctionBaranov"));
}
/**
@@ -62,13 +88,12 @@
* extraites.
*
* @throws IsisFishException
+ * @throws IOException
*/
@Test
- public void testExtractDependencies2() throws IsisFishException {
- SimulatorStorage simulator = SimulatorStorage.getSimulator("DefaultSimulator");
- Class<?> clazz = simulator.getCodeClass();
- Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
- Assert.assertTrue(deps.size() >= 35);
+ public void testExtractDependencies2() throws IsisFishException, IOException {
+ SimulatorStorage script = SimulatorStorage.getSimulator("DefaultSimulator");
+ Set<String> deps = extractDependencies(script);
Assert.assertTrue(deps.contains("scripts.GravityModel"));
Assert.assertTrue(deps.contains("scripts.ResultName"));
Assert.assertTrue(deps.contains("scripts.SiMatrix"));
@@ -80,13 +105,12 @@
* extraites.
*
* @throws IsisFishException
+ * @throws IOException
*/
@Test
- public void testExtractDependencies3() throws IsisFishException {
- RuleStorage cantonnement = RuleStorage.getRule("Cantonnement");
- Class<?> clazz = cantonnement.getCodeClass();
- Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
- Assert.assertTrue(deps.size() >= 30);
+ public void testExtractDependencies3() throws IsisFishException, IOException {
+ RuleStorage script = RuleStorage.getRule("Cantonnement");
+ Set<String> deps = extractDependencies(script);
Assert.assertTrue(deps.contains("scripts.ResultName"));
}
@@ -95,13 +119,12 @@
* extraites.
*
* @throws IsisFishException
+ * @throws IOException
*/
@Test
- public void testExtractDependencies4() throws IsisFishException {
+ public void testExtractDependencies4() throws IsisFishException, IOException {
ScriptStorage script = ScriptStorage.getScript("SiMatrix");
- Class<?> clazz = script.getCodeClass();
- Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
- Assert.assertTrue(deps.size() >= 51);
+ Set<String> deps = extractDependencies(script);
Assert.assertTrue(deps.contains("scripts.ObjectiveFunctionBaranov"));
Assert.assertTrue(deps.contains("scripts.ObjectiveFunction"));
Assert.assertTrue(deps.contains("scripts.MinimisationUtil"));
@@ -113,13 +136,12 @@
* extraites.
*
* @throws IsisFishException
+ * @throws IOException
*/
@Test
- public void testExtractDependencies5() throws IsisFishException {
+ public void testExtractDependencies5() throws IsisFishException, IOException {
ScriptStorage script = ScriptStorage.getScript("GravityModel");
- Class<?> clazz = script.getCodeClass();
- Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
- Assert.assertTrue(deps.size() >= 31);
+ Set<String> deps = extractDependencies(script);
Assert.assertTrue(deps.contains("scripts.SiMatrix"));
Assert.assertTrue(deps.contains("scripts.ResultName"));
}
@@ -129,14 +151,12 @@
* extraites.
*
* @throws IsisFishException
+ * @throws IOException
*/
@Test
- public void testExtractDependencies6() throws IsisFishException {
+ public void testExtractDependencies6() throws IsisFishException, IOException {
ScriptStorage script = ScriptStorage.getScript("ObjectiveFunctionBaranov");
- Class<?> clazz = script.getCodeClass();
- Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
- Assert.assertTrue(deps.size() >= 4);
+ Set<String> deps = extractDependencies(script);
Assert.assertTrue(deps.contains("scripts.ObjectiveFunction"));
- Assert.assertTrue(deps.contains("fr.ifremer.isisfish.util.Nocache"));
}
}
1
0
r4106 - branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/ssh
by echatellier@users.forge.codelutin.com 01 Sep '14
by echatellier@users.forge.codelutin.com 01 Sep '14
01 Sep '14
Author: echatellier
Date: 2014-09-01 13:05:03 +0200 (Mon, 01 Sep 2014)
New Revision: 4106
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4106
Log:
Simplify code
Modified:
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/ssh/ProxyCommand.java
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/ssh/ProxyCommand.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/ssh/ProxyCommand.java 2014-09-01 11:04:37 UTC (rev 4105)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/ssh/ProxyCommand.java 2014-09-01 11:05:03 UTC (rev 4106)
@@ -51,7 +51,7 @@
public void connect(SocketFactory socket_factory, String host, int port, int timeout) throws Exception {
String fullCommand = command.replace("%h", host);
- fullCommand = fullCommand.replace("%p", new Integer(port).toString());
+ fullCommand = fullCommand.replace("%p", String.valueOf(port));
p = Runtime.getRuntime().exec(fullCommand);
in = p.getInputStream();
out = p.getOutputStream();
1
0
r4105 - branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/sensitivity
by echatellier@users.forge.codelutin.com 01 Sep '14
by echatellier@users.forge.codelutin.com 01 Sep '14
01 Sep '14
Author: echatellier
Date: 2014-09-01 13:04:37 +0200 (Mon, 01 Sep 2014)
New Revision: 4105
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4105
Log:
Fix invalid cast
Modified:
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2014-08-29 13:39:04 UTC (rev 4104)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2014-09-01 11:04:37 UTC (rev 4105)
@@ -416,7 +416,7 @@
Distribution distribution = domain.getDistribution();
double result = 0;
if (distribution == Distribution.QUNIFPC) {
- Object reference = (Double)domain.getDistributionParameter(Distribution.QUNIFPC.getDistibutionParams()[0].getName());
+ Object reference = domain.getDistributionParameter(Distribution.QUNIFPC.getDistibutionParams()[0].getName());
if (reference instanceof MatrixND) {
result = min ? 0 : 1;
} else {
1
0
r4104 - in branches/4.3.0-log4j2: . src/main/java/fr/ifremer/isisfish/util src/test/java/fr/ifremer/isisfish/util
by echatellier@users.forge.codelutin.com 29 Aug '14
by echatellier@users.forge.codelutin.com 29 Aug '14
29 Aug '14
Author: echatellier
Date: 2014-08-29 15:39:04 +0200 (Fri, 29 Aug 2014)
New Revision: 4104
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4104
Log:
refs #568: D?\195?\169pendances non incluses dans la simulation
Added:
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java
branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java
Modified:
branches/4.3.0-log4j2/pom.xml
Modified: branches/4.3.0-log4j2/pom.xml
===================================================================
--- branches/4.3.0-log4j2/pom.xml 2014-08-29 08:58:39 UTC (rev 4103)
+++ branches/4.3.0-log4j2/pom.xml 2014-08-29 13:39:04 UTC (rev 4104)
@@ -75,6 +75,13 @@
</dependency>
<dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>5.0.3</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-profiling</artifactId>
<version>3.0</version>
@@ -325,6 +332,24 @@
<artifactId>svnkit</artifactId>
<version>1.8.5</version>
<scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>jna</artifactId>
+ <groupId>net.java.dev.jna</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jsch.agentproxy.connector-factory</artifactId>
+ <groupId>com.jcraft</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>sqljet</artifactId>
+ <groupId>org.tmatesoft.sqljet</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>platform</artifactId>
+ <groupId>net.java.dev.jna</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<!-- fin svnkit pour communication subversion -->
@@ -352,13 +377,6 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
-
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <version>1.3</version>
- <scope>test</scope>
- </dependency>
</dependencies>
<!-- ************************************************************* -->
Added: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java (rev 0)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java 2014-08-29 13:39:04 UTC (rev 4104)
@@ -0,0 +1,252 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Ifremer, Code Lutin, 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
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.isisfish.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.objectweb.asm.AnnotationVisitor;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.Label;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Opcodes;
+import org.objectweb.asm.Type;
+import org.objectweb.asm.TypePath;
+
+import fr.ifremer.isisfish.datastore.ExportStorage;
+import fr.ifremer.isisfish.datastore.FormuleStorage;
+import fr.ifremer.isisfish.datastore.ObjectiveStorage;
+import fr.ifremer.isisfish.datastore.OptimizationStorage;
+import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.datastore.ScriptStorage;
+import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage;
+import fr.ifremer.isisfish.datastore.SensitivityExportStorage;
+import fr.ifremer.isisfish.datastore.SimulationPlanStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+
+/**
+ * Class utilitaire chargées d'inspecter le bytecode de certaines classe des scripts utilisateur
+ * d'IsisFish pour en extraire des informations.
+ *
+ * @author Eric Chatellier
+ */
+public class DependencyUtil {
+
+ private static final Log log = LogFactory.getLog(DependencyUtil.class);
+
+ /**
+ * Extrait les dépendences d'une class compilé à partir de son bytecode en ne conservant que
+ * les dependances des scripts utilisateurs.
+ *
+ * @param clazz la classe à analyser
+ * @return extract class set
+ */
+ public static Set<String> extractDependencies(Class<?> clazz) {
+ return extractDependencies(clazz, true);
+ }
+
+ /**
+ * Extrait les dépendences d'une class compilé à partir de son bytecode.
+ *
+ * @param clazz la classe à analyser
+ * @param onlyUserScript only keep user script types
+ * @return extract class set
+ */
+ public static Set<String> extractDependencies(Class<?> clazz, final boolean onlyUserScript) {
+ final Set<String> result = new HashSet<>();
+
+ // method body visitor
+ final MethodVisitor mv = new MethodVisitor(Opcodes.ASM5) {
+
+ @Override
+ public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
+ registerDescriptor(result, desc, onlyUserScript);
+ return super.visitAnnotation(desc, visible);
+ }
+
+ @Override
+ public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible) {
+ registerDescriptor(result, desc, onlyUserScript);
+ return super.visitTypeAnnotation(typeRef, typePath, desc, visible);
+ }
+
+ @Override
+ public AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible) {
+ registerDescriptor(result, desc, onlyUserScript);
+ return super.visitParameterAnnotation(parameter, desc, visible);
+ }
+
+ @Override
+ public void visitTypeInsn(int opcode, String type) {
+ registerType(result, type, onlyUserScript);
+ super.visitTypeInsn(opcode, type);
+ }
+
+ @Override
+ public void visitFieldInsn(int opcode, String owner, String name, String desc) {
+ registerType(result, owner, onlyUserScript);
+ registerDescriptor(result, desc, onlyUserScript);
+ super.visitFieldInsn(opcode, owner, name, desc);
+ }
+
+ @Override
+ public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) {
+ registerType(result, owner, onlyUserScript);
+ registerDescriptor(result, desc, onlyUserScript);
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ @Override
+ public void visitLdcInsn(Object cst) {
+ if (cst instanceof Type) {
+ registerType(result, ((Type)cst).getClassName(), onlyUserScript);
+ }
+ super.visitLdcInsn(cst);
+ }
+
+ @Override
+ public void visitTryCatchBlock(Label start, Label end, Label handler, String type) {
+ registerType(result, type, onlyUserScript);
+ super.visitTryCatchBlock(start, end, handler, type);
+ }
+
+ @Override
+ public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) {
+ registerDescriptor(result, desc, onlyUserScript);
+ super.visitLocalVariable(name, desc, signature, start, end, index);
+ }
+ };
+
+ // class visitor
+ ClassVisitor visitor = new ClassVisitor(Opcodes.ASM5) {
+
+ @Override
+ public void visit(int version, int access, String name,
+ String signature, String superName, String[] interfaces) {
+ registerType(result, superName, onlyUserScript);
+ super.visit(version, access, name, signature, superName, interfaces);
+ }
+
+ @Override
+ public AnnotationVisitor visitAnnotation(String desc,
+ boolean visible) {
+ registerDescriptor(result, desc, onlyUserScript);
+ return super.visitAnnotation(desc, visible);
+ }
+
+ @Override
+ public FieldVisitor visitField(int access, String name,
+ String desc, String signature, Object value) {
+ registerDescriptor(result, desc, onlyUserScript);
+ return super.visitField(access, name, desc, signature, value);
+ }
+
+ @Override
+ public MethodVisitor visitMethod(int access, String name,
+ String desc, String signature, String[] exceptions) {
+ registerDescriptor(result, desc, onlyUserScript);
+ return mv;
+ }
+ };
+
+ // parse inpu class
+ try (InputStream in = clazz.getResourceAsStream("/" + clazz.getName().replace('.', '/') + ".class")) {
+ ClassReader classReader = new ClassReader(in);
+ classReader.accept(visitor, 0);
+ } catch (IOException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't extract dependencies", ex);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Register type if necessary (depends on another user script).
+ *
+ * @param types types collection
+ * @param type type to add
+ * @param onlyUserScript only keep user script types
+ */
+ protected static void registerType(Set<String> types, String type, boolean onlyUserScript) {
+ //System.out.println("==> " + type);
+ if (!onlyUserScript || StringUtils.startsWithAny(type,
+ ExportStorage.EXPORT_PATH,
+ FormuleStorage.FORMULE_PATH,
+ ObjectiveStorage.OBJECTIVE_PATH,
+ OptimizationStorage.OPTIMIZATION_PATH,
+ RuleStorage.RULE_PATH,
+ ScriptStorage.SCRIPT_PATH,
+ SensitivityAnalysisStorage.SENSITIVITY_ANALYSIS_PATH,
+ SensitivityExportStorage.SENSITIVITY_EXPORT_PATH,
+ SimulationPlanStorage.SIMULATION_PLAN_PATH,
+ SimulatorStorage.SIMULATOR_PATH)) {
+ String dotType = type.replace('/', '.');
+ types.add(dotType);
+ }
+ }
+
+ /**
+ * Clean type to extract valid class name.
+ *
+ * Ex:
+ * <ul>
+ * <li>Lfr/ifremer/isisfish/types/Month;</li>
+ * <li>[Ljava/lang/String;</li>
+ * <li>(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;</li>
+ *
+ * @param types types collection
+ * @param descriptor descriptor
+ * @param onlyUserScript only keep user script types
+ */
+ protected static void registerDescriptor(Set<String> types, String descriptor, boolean onlyUserScript) {
+ if (descriptor.startsWith("(")) {
+ int endIndex = descriptor.indexOf(')');
+ registerDescriptor(types, descriptor.substring(1, endIndex), onlyUserScript);
+ registerDescriptor(types, descriptor.substring(endIndex + 1), onlyUserScript);
+ } else {
+ Pattern pattern = Pattern.compile("\\[*L([^;]+);|\\[[ZBCSIFDJ]|[ZBCSIFDJ]");
+ Matcher matcher = pattern.matcher(descriptor);
+ while (matcher.find()) {
+ String match = matcher.group(1);
+ // sinon c'est un type primitif
+ if (match != null) {
+ registerType(types, match, onlyUserScript);
+ }
+ }
+ }
+ }
+}
Property changes on: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/DependencyUtil.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java
===================================================================
--- branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java (rev 0)
+++ branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java 2014-08-29 13:39:04 UTC (rev 4104)
@@ -0,0 +1,142 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Ifremer, Code Lutin, 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
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.util;
+
+import java.util.Set;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.IsisFishException;
+import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.datastore.ScriptStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+
+/**
+ * Test concernant la gestion du bytecode des scripts utilisateur.
+ *
+ * @author Eric Chatellier
+ */
+public class DependencyUtilTest extends AbstractIsisFishTest {
+
+ /**
+ * Récupère une classe parmis les scripts de test et vérifie que les dépendances sont bien
+ * extraites.
+ *
+ * @throws IsisFishException
+ */
+ @Test
+ public void testExtractDependencies1() throws IsisFishException {
+ SimulatorStorage simulatorByCell = SimulatorStorage.getSimulator("SimulatorEffortByCell");
+ Class<?> clazz = simulatorByCell.getCodeClass();
+ Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
+ Assert.assertTrue(deps.size() >= 10);
+ Assert.assertTrue(deps.contains("simulators.DefaultSimulator"));
+ }
+
+ /**
+ * Récupère une classe parmis les scripts de test et vérifie que les dépendances sont bien
+ * extraites.
+ *
+ * @throws IsisFishException
+ */
+ @Test
+ public void testExtractDependencies2() throws IsisFishException {
+ SimulatorStorage simulator = SimulatorStorage.getSimulator("DefaultSimulator");
+ Class<?> clazz = simulator.getCodeClass();
+ Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
+ Assert.assertTrue(deps.size() >= 35);
+ Assert.assertTrue(deps.contains("scripts.GravityModel"));
+ Assert.assertTrue(deps.contains("scripts.ResultName"));
+ Assert.assertTrue(deps.contains("scripts.SiMatrix"));
+
+ }
+
+ /**
+ * Récupère une classe parmis les scripts de test et vérifie que les dépendances sont bien
+ * extraites.
+ *
+ * @throws IsisFishException
+ */
+ @Test
+ public void testExtractDependencies3() throws IsisFishException {
+ RuleStorage cantonnement = RuleStorage.getRule("Cantonnement");
+ Class<?> clazz = cantonnement.getCodeClass();
+ Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
+ Assert.assertTrue(deps.size() >= 30);
+ Assert.assertTrue(deps.contains("scripts.ResultName"));
+ }
+
+ /**
+ * Récupère une classe parmis les scripts de test et vérifie que les dépendances sont bien
+ * extraites.
+ *
+ * @throws IsisFishException
+ */
+ @Test
+ public void testExtractDependencies4() throws IsisFishException {
+ ScriptStorage script = ScriptStorage.getScript("SiMatrix");
+ Class<?> clazz = script.getCodeClass();
+ Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
+ Assert.assertTrue(deps.size() >= 51);
+ Assert.assertTrue(deps.contains("scripts.ObjectiveFunctionBaranov"));
+ Assert.assertTrue(deps.contains("scripts.ObjectiveFunction"));
+ Assert.assertTrue(deps.contains("scripts.MinimisationUtil"));
+ Assert.assertTrue(deps.contains("scripts.ResultName"));
+ }
+
+ /**
+ * Récupère une classe parmis les scripts de test et vérifie que les dépendances sont bien
+ * extraites.
+ *
+ * @throws IsisFishException
+ */
+ @Test
+ public void testExtractDependencies5() throws IsisFishException {
+ ScriptStorage script = ScriptStorage.getScript("GravityModel");
+ Class<?> clazz = script.getCodeClass();
+ Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
+ Assert.assertTrue(deps.size() >= 31);
+ Assert.assertTrue(deps.contains("scripts.SiMatrix"));
+ Assert.assertTrue(deps.contains("scripts.ResultName"));
+ }
+
+ /**
+ * Récupère une classe parmis les scripts de test et vérifie que les dépendances sont bien
+ * extraites.
+ *
+ * @throws IsisFishException
+ */
+ @Test
+ public void testExtractDependencies6() throws IsisFishException {
+ ScriptStorage script = ScriptStorage.getScript("ObjectiveFunctionBaranov");
+ Class<?> clazz = script.getCodeClass();
+ Set<String> deps = DependencyUtil.extractDependencies(clazz, false);
+ Assert.assertTrue(deps.size() >= 4);
+ Assert.assertTrue(deps.contains("scripts.ObjectiveFunction"));
+ Assert.assertTrue(deps.contains("fr.ifremer.isisfish.util.Nocache"));
+ }
+}
Property changes on: branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/util/DependencyUtilTest.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0
r4103 - branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/entity
by echatellier@users.forge.codelutin.com 29 Aug '14
by echatellier@users.forge.codelutin.com 29 Aug '14
29 Aug '14
Author: echatellier
Date: 2014-08-29 10:58:39 +0200 (Fri, 29 Aug 2014)
New Revision: 4103
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4103
Log:
Remove useless hamcrest complicated code
Modified:
branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java
Modified: branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java
===================================================================
--- branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java 2014-08-28 15:52:19 UTC (rev 4102)
+++ branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/entity/TopiaDAOTest.java 2014-08-29 08:58:39 UTC (rev 4103)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 - 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2010 - 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
@@ -26,7 +26,6 @@
import java.io.IOException;
import java.util.List;
-import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import org.junit.Test;
import org.nuiton.topia.TopiaContext;
@@ -84,7 +83,7 @@
population2.setName("thon");
allPopulation = populationDAO.findAll();
Assert.assertEquals(2, allPopulation.size());
- Assert.assertThat(allPopulation, CoreMatchers.hasItem(population2));
+ Assert.assertTrue(allPopulation.contains(population2));
context.rollbackTransaction();
@@ -93,7 +92,7 @@
population3.setName("requin");
allPopulation = populationDAO.findAll();
Assert.assertEquals(2, allPopulation.size());
- Assert.assertThat(allPopulation, CoreMatchers.hasItem(population3));
+ Assert.assertTrue(allPopulation.contains(population3));
context.commitTransaction();
simulation.closeStorage();
1
0
r4102 - in branches/4.3.0-log4j2: . src/main/assembly
by echatellier@users.forge.codelutin.com 28 Aug '14
by echatellier@users.forge.codelutin.com 28 Aug '14
28 Aug '14
Author: echatellier
Date: 2014-08-28 17:52:19 +0200 (Thu, 28 Aug 2014)
New Revision: 4102
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4102
Log:
Fix assembly and default memory
Added:
branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j2.xml
Removed:
branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j.properties
Modified:
branches/4.3.0-log4j2/pom.xml
branches/4.3.0-log4j2/src/main/assembly/bin.xml
branches/4.3.0-log4j2/src/main/assembly/isisfish.bat
branches/4.3.0-log4j2/src/main/assembly/isisfish.sh
Modified: branches/4.3.0-log4j2/pom.xml
===================================================================
--- branches/4.3.0-log4j2/pom.xml 2014-08-28 14:25:25 UTC (rev 4101)
+++ branches/4.3.0-log4j2/pom.xml 2014-08-28 15:52:19 UTC (rev 4102)
@@ -364,7 +364,7 @@
<!-- ************************************************************* -->
<!-- *** Project Information ************************************* -->
<!-- ************************************************************* -->
- <name>IsisFish</name>
+ <name>ISIS-Fish</name>
<description>Simulateur de pecherie complexe.</description>
<inceptionYear>1999</inceptionYear>
Modified: branches/4.3.0-log4j2/src/main/assembly/bin.xml
===================================================================
--- branches/4.3.0-log4j2/src/main/assembly/bin.xml 2014-08-28 14:25:25 UTC (rev 4101)
+++ branches/4.3.0-log4j2/src/main/assembly/bin.xml 2014-08-28 15:52:19 UTC (rev 4102)
@@ -6,7 +6,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 1999 - 2013 Ifremer, CodeLutin, Eric Chatellier
+ Copyright (C) 1999 - 2014 Ifremer, CodeLutin, Eric Chatellier
%%
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@@ -60,7 +60,7 @@
<directory>src/main/assembly</directory>
<outputDirectory />
<includes>
- <include>isisfish-log4j.properties</include>
+ <include>isisfish-log4j.xml</include>
</includes>
</fileSet>
</fileSets>
Deleted: branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j.properties
===================================================================
--- branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j.properties 2014-08-28 14:25:25 UTC (rev 4101)
+++ branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j.properties 2014-08-28 15:52:19 UTC (rev 4102)
@@ -1,45 +0,0 @@
-###
-# #%L
-# IsisFish
-#
-# $Id$
-# $HeadURL$
-# %%
-# Copyright (C) 2011 - 2013 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
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with this program. If not, see
-# <http://www.gnu.org/licenses/gpl-3.0.html>.
-# #L%
-###
-# Global logging configuration
-log4j.rootLogger=ERROR, stdout
-
-# Console output...
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
-
-# Package level
-log4j.logger.fr.ifremer.isisfish=INFO
-log4j.logger.analyseplans=INFO
-log4j.logger.exports=INFO
-log4j.logger.formules=INFO
-log4j.logger.rules=INFO
-log4j.logger.scripts=INFO
-log4j.logger.sensitivity=INFO
-log4j.logger.sensitivityexports=INFO
-log4j.logger.simulators=INFO
-
-# Add your configuration here
-#log4j.logger.org.nuiton.j2r=DEBUG
Added: branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j2.xml
===================================================================
--- branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j2.xml (rev 0)
+++ branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j2.xml 2014-08-28 15:52:19 UTC (rev 4102)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ IsisFish
+ %%
+ Copyright (C) 1999 - 2014 Ifremer, Codelutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+
+<!-- To use this file, add "-Dlog4j.configurationFile=isisfish-log4j2.xml" on command line -->
+<Configuration packages="fr.ifremer.isisfish.logging" strict="true">
+
+ <Filters>
+ <SimulationThresholdFilter onMatch="ACCEPT" onMismatch="NEUTRAL" />
+ </Filters>
+
+ <Appenders>
+
+ <Console name="Console" target="SYSTEM_OUT">
+ <PatternLayout pattern="%5p [%t] (%F:%L) %M - %m%n" />
+ </Console>
+
+ <Routing name="SimulationSpecificAppender">
+ <Routes pattern="$${ctx:simulationId}">
+
+ <!-- This route is chosen if ThreadContext has no value for key simulationId. -->
+ <Route key="${ctx:simulationId}">
+ <Null name="Null" />
+ </Route>
+
+ <!-- This route is chosen if ThreadContext has a value for simulationId
+ The value dynamically determines the name of the log file. -->
+ <Route>
+ <File name="SimulationFileAppender-${ctx:simulationId}" fileName="${ctx:simulationLogFile}">
+ <PatternLayout>
+ <Pattern>%p|%d{ABSOLUTE}|%F|%L|%M|%m%n</Pattern>
+ </PatternLayout>
+ </File>
+ </Route>
+ </Routes>
+ </Routing>
+ </Appenders>
+
+ <Loggers>
+ <Logger name="fr.ifremer.isisfish" level="info"/>
+ <Logger name="org.nuiton" level="warn"/>
+ <Logger name="exports" level="info"/>
+ <Logger name="formules" level="info"/>
+ <Logger name="objectives" level="info"/>
+ <Logger name="optimizations" level="info"/>
+ <Logger name="rules" level="info"/>
+ <Logger name="scripts" level="info"/>
+ <Logger name="sensitivityanalysis" level="info"/>
+ <Logger name="sensitivityexports" level="info"/>
+ <Logger name="simulationplans" level="info"/>
+ <Logger name="simulators" level="info"/>
+
+ <Root level="error">
+ <AppenderRef ref="Console" />
+ <AppenderRef ref="SimulationSpecificAppender" />
+ </Root>
+ </Loggers>
+</Configuration>
\ No newline at end of file
Property changes on: branches/4.3.0-log4j2/src/main/assembly/isisfish-log4j2.xml
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: branches/4.3.0-log4j2/src/main/assembly/isisfish.bat
===================================================================
--- branches/4.3.0-log4j2/src/main/assembly/isisfish.bat 2014-08-28 14:25:25 UTC (rev 4101)
+++ branches/4.3.0-log4j2/src/main/assembly/isisfish.bat 2014-08-28 15:52:19 UTC (rev 4102)
@@ -1,8 +1,8 @@
@echo off
rem Uncomment following 2 lines to easy configure R for ISIS-Fish
-rem SET R_HOME=C:\Program Files\R\R-3.0.0
+rem SET R_HOME=C:\Program Files\R\R-3.1.0
rem SET PATH=%PATH%;%R_HOME%\bin\i386
echo [Script] Isis starting...
-java -Xmx900M -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9 > debug.txt 2>&1
+java -Xmx2048M -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9 > debug.txt 2>&1
Modified: branches/4.3.0-log4j2/src/main/assembly/isisfish.sh
===================================================================
--- branches/4.3.0-log4j2/src/main/assembly/isisfish.sh 2014-08-28 14:25:25 UTC (rev 4101)
+++ branches/4.3.0-log4j2/src/main/assembly/isisfish.sh 2014-08-28 15:52:19 UTC (rev 4102)
@@ -1,5 +1,5 @@
#!/bin/bash
-MEMORY="-Xmx1024M"
+MEMORY="-Xmx2048M"
java $MEMORY -jar ${project.build.finalName}.${project.packaging} $* &> debug.txt
1
0
r4101 - in branches/4.3.0-log4j2: . src/main/assembly src/main/java/fr/ifremer/isisfish src/main/java/fr/ifremer/isisfish/util src/test/java/fr/ifremer/isisfish
by echatellier@users.forge.codelutin.com 28 Aug '14
by echatellier@users.forge.codelutin.com 28 Aug '14
28 Aug '14
Author: echatellier
Date: 2014-08-28 16:25:25 +0200 (Thu, 28 Aug 2014)
New Revision: 4101
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4101
Log:
Use jri installed by R with rJava R package.
Added:
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/RUtil.java
Modified:
branches/4.3.0-log4j2/pom.xml
branches/4.3.0-log4j2/src/main/assembly/isisfish.bat
branches/4.3.0-log4j2/src/main/assembly/isisfish.sh
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisFish.java
branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java
branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java
Modified: branches/4.3.0-log4j2/pom.xml
===================================================================
--- branches/4.3.0-log4j2/pom.xml 2014-08-27 14:00:36 UTC (rev 4100)
+++ branches/4.3.0-log4j2/pom.xml 2014-08-28 14:25:25 UTC (rev 4101)
@@ -66,7 +66,15 @@
<scope>compile</scope>
</dependency>
+ <!-- Temp update for log4j 2 detection -->
<dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging</artifactId>
+ <version>3.2.0.Beta1</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-profiling</artifactId>
<version>3.0</version>
Modified: branches/4.3.0-log4j2/src/main/assembly/isisfish.bat
===================================================================
--- branches/4.3.0-log4j2/src/main/assembly/isisfish.bat 2014-08-27 14:00:36 UTC (rev 4100)
+++ branches/4.3.0-log4j2/src/main/assembly/isisfish.bat 2014-08-28 14:25:25 UTC (rev 4101)
@@ -5,4 +5,4 @@
rem SET PATH=%PATH%;%R_HOME%\bin\i386
echo [Script] Isis starting...
-java -Xmx900M -Djri.load.classpath.libs=true -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9 > debug.txt 2>&1
+java -Xmx900M -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9 > debug.txt 2>&1
Modified: branches/4.3.0-log4j2/src/main/assembly/isisfish.sh
===================================================================
--- branches/4.3.0-log4j2/src/main/assembly/isisfish.sh 2014-08-27 14:00:36 UTC (rev 4100)
+++ branches/4.3.0-log4j2/src/main/assembly/isisfish.sh 2014-08-28 14:25:25 UTC (rev 4101)
@@ -2,4 +2,4 @@
MEMORY="-Xmx1024M"
-java $MEMORY -Djri.load.classpath.libs=true -jar ${project.build.finalName}.${project.packaging} $* &> debug.txt
+java $MEMORY -jar ${project.build.finalName}.${project.packaging} $* &> debug.txt
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 14:00:36 UTC (rev 4100)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/IsisFish.java 2014-08-28 14:25:25 UTC (rev 4101)
@@ -83,6 +83,7 @@
import fr.ifremer.isisfish.ui.util.ErrorHelper;
import fr.ifremer.isisfish.util.IsisCache;
import fr.ifremer.isisfish.util.IsisMatrixSemanticMapper;
+import fr.ifremer.isisfish.util.RUtil;
import fr.ifremer.isisfish.vcs.VCS;
import fr.ifremer.isisfish.vcs.VCSActionEvent;
import fr.ifremer.isisfish.vcs.VCSException;
@@ -120,16 +121,10 @@
}
public static void main(String... args) throws Exception {
-
- // TODO as of 20140720, hibernate fails to detect log4j 2.0, force slf4j
- System.setProperty("org.jboss.logging.provider", "slf4j");
-
+
// permet de faire fonctionner la compilation en webstart
System.setSecurityManager(null);
- // set Rtype in jni mode
- System.setProperty("R.type", "jni");
-
// initialisation de l'application
init(args);
@@ -143,6 +138,9 @@
log.info("PATH: " + System.getenv("PATH"));
}
+ // init R way for isis
+ RUtil.initJri();
+
// action after init
config.doAction(IsisConfig.STEP_AFTER_INIT);
Modified: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java 2014-08-27 14:00:36 UTC (rev 4100)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java 2014-08-28 14:25:25 UTC (rev 4101)
@@ -39,7 +39,6 @@
import java.util.List;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.reflect.MethodUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.FileUtil;
Added: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/RUtil.java
===================================================================
--- branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/RUtil.java (rev 0)
+++ branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/RUtil.java 2014-08-28 14:25:25 UTC (rev 4101)
@@ -0,0 +1,137 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2006 - 2012 Ifremer, Code Lutin, Cédric Pineau, 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
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.isisfish.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Utility class fo R integration with isis fish.
+ *
+ * @author Eric Chatellier
+ */
+public class RUtil {
+
+ private static final Log log = LogFactory.getLog(RUtil.class);
+
+ /**
+ * Try to call "R" process to get location where jri is installed.
+ */
+ public static void initJri() {
+
+ // set Rtype in jni mode
+ System.setProperty("R.type", "jni");
+
+ try {
+ ProcessBuilder pb = new ProcessBuilder("Rscript", "-e", "installed.packages()[which(installed.packages()[,1]=='rJava'),]['LibPath']");
+ Process process = pb.start();
+ int exitValue = process.waitFor();
+
+ if (exitValue == 0) {
+ // normal exit
+ parseRscriptOutput(process.getInputStream());
+ } else {
+ // R trouvé, mais la commande R a échoué
+ InputStream err = process.getErrorStream();
+ if (log.isErrorEnabled()) {
+ log.error("Can't call Rscript : " + IOUtils.toString(err));
+ }
+ }
+ } catch (IOException ex) {
+ // Le processus n'a pas pu être lancé (R non trouvé)
+ if (log.isDebugEnabled()) {
+ log.debug("Can't find R", ex);
+ }
+ } catch (InterruptedException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't find R", ex);
+ }
+ }
+ }
+
+ /**
+ * Parse valid Rscript output to find if rJava is installed and where it is installed.
+ *
+ * @param is process output
+ * @throws IOException
+ */
+ protected static void parseRscriptOutput(InputStream is) throws IOException {
+ List<String> output = IOUtils.readLines(is);
+
+ // 1 lignes = commande OK, mais rJava n'est pas installé
+ // 2 lignes = commande OK et rJava est installé
+ if (output.size() == 1) {
+ //installRJava();
+ } else if (output.size() == 2) {
+ // get install location without ""
+ String location = output.get(1).trim();
+ location = StringUtils.removeStart(location, "\"");
+ location = StringUtils.removeEnd(location, "\"");
+ // build full library path
+ location = location.replace('/', File.separatorChar);
+ location += File.separator + "rJava" + File.separator + "jri";
+ setJavaLibraryPath(location);
+ } else if (log.isErrorEnabled()) {
+ log.error("Can't analyze Rscript output. was: ");
+ for (String line : output) {
+ log.error(line);
+ }
+ }
+ }
+
+ /**
+ * Set runtime java library path.
+ *
+ * http://fahdshariff.blogspot.fr/2011/08/changing-java-library-path-at-runtim…
+ *
+ * @param newValue new value to set
+ */
+ protected static void setJavaLibraryPath(String newValue) {
+ if (log.isInfoEnabled()) {
+ log.info("Adding '" + newValue + "' to java.library.path");
+ }
+ System.setProperty("java.library.path", newValue);
+
+ //set sys_paths to null
+ try {
+ final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
+ sysPathsField.setAccessible(true);
+ sysPathsField.set(null, null);
+ } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Cant' reset ClassLoader#sys_paths value", ex);
+ }
+ }
+ }
+}
Property changes on: branches/4.3.0-log4j2/src/main/java/fr/ifremer/isisfish/util/RUtil.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java
===================================================================
--- branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2014-08-27 14:00:36 UTC (rev 4100)
+++ branches/4.3.0-log4j2/src/test/java/fr/ifremer/isisfish/AbstractIsisFishTest.java 2014-08-28 14:25:25 UTC (rev 4101)
@@ -86,9 +86,6 @@
@BeforeClass
public static void init() throws Exception {
- // TODO as of 20140720, hibernate fails to detect log4j 2.0, force slf4j
- System.setProperty("org.jboss.logging.provider", "slf4j");
-
File mavenTestDir = getTestDirectory();
dirIsisBase = FileUtil.createTempDirectory("isisdbtest", "", mavenTestDir);
1
0
r4100 - in branches/4.3.0-log4j2: . src/main/java/fr/ifremer/isisfish src/main/java/fr/ifremer/isisfish/datastore src/main/java/fr/ifremer/isisfish/vcs src/main/resources src/test/java/fr/ifremer/isisfish/vcs
by echatellier@users.forge.codelutin.com 27 Aug '14
by echatellier@users.forge.codelutin.com 27 Aug '14
27 Aug '14
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);
1
0
Author: echatellier
Date: 2014-08-27 15:06:43 +0200 (Wed, 27 Aug 2014)
New Revision: 4099
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4099
Log:
Update libs
Modified:
branches/4.3.0-log4j2/pom.xml
Modified: branches/4.3.0-log4j2/pom.xml
===================================================================
--- branches/4.3.0-log4j2/pom.xml 2014-08-21 15:44:13 UTC (rev 4098)
+++ branches/4.3.0-log4j2/pom.xml 2014-08-27 13:06:43 UTC (rev 4099)
@@ -20,16 +20,9 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
- <version>3.0-rc-6</version>
+ <version>3.0-rc-7</version>
<scope>compile</scope>
</dependency>
-
- <!-- <dependency>
- <groupId>org.nuiton</groupId>
- <artifactId>nuiton-converter</artifactId>
- <version>1.0</version>
- <scope>compile</scope>
- </dependency> -->
<dependency>
<groupId>org.nuiton</groupId>
@@ -311,7 +304,7 @@
<!-- ssj pour les calculs stockastiques -->
<dependency>
- <groupId>ssj</groupId>
+ <groupId>ca.umontreal.iro</groupId>
<artifactId>ssj</artifactId>
<version>2.5</version>
<scope>runtime</scope>
@@ -343,7 +336,7 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
- <version>17.0</version>
+ <version>18.0</version>
</dependency>
<!-- Tests -->
@@ -492,7 +485,7 @@
<signatureVersion>1.0</signatureVersion>
<!-- Dependencies version -->
- <jaxxVersion>2.10</jaxxVersion>
+ <jaxxVersion>2.11</jaxxVersion>
<eugeneVersion>2.13</eugeneVersion>
<topiaVersion>2.9.2</topiaVersion>
<hibernateVersion>4.3.6.Final</hibernateVersion>
1
0