r3411 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: datastore ui/script util
Author: chatellier Date: 2011-06-16 15:02:46 +0000 (Thu, 16 Jun 2011) New Revision: 3411 Log: Multi VCS may now works Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2011-06-16 12:30:48 UTC (rev 3410) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/AnalysePlanStorage.java 2011-06-16 15:02:46 UTC (rev 3411) @@ -113,8 +113,9 @@ * @return les noms de tous les plans existant en local */ static public List<String> getAnalysePlanNames() { - File dir = getAnalysePlanDirectory(); - return AnalysePlanStorage.getStorageNames(dir); + List<String> result = getStorageNames(getAnalysePlanDirectory()); + result.addAll(getStorageNames(getCommunityAnalysePlanDirectory())); + return result; } /** @@ -133,6 +134,23 @@ } return result; } + + /** + * Retourne le storage pour le plan demandé. + * + * @param name le nom du plan souhaité + * @return Le storage pour le plan + */ + static public AnalysePlanStorage getCommunityAnalysePlan(String name) { + String cacheName = getContextDatabaseCacheKey(name); + AnalysePlanStorage result = plansCache.get(cacheName); + if (result == null) { + result = new AnalysePlanStorage(getCommunityDatabaseDirectory(), + getCommunityAnalysePlanDirectory(), name); + plansCache.put(cacheName, result); + } + return result; + } /** * Retourne une nouvelle instance du plan. Compile le fichier si besoin Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2011-06-16 12:30:48 UTC (rev 3410) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/FormuleStorage.java 2011-06-16 15:02:46 UTC (rev 3411) @@ -260,6 +260,28 @@ } return result; } + + /** + * Retourne le storage pour la regle demandée + * + * @param name le nom de la regle souhaitée + * @param category la categorie de la regle + * @return Le storage pour la regle + */ + static public FormuleStorage getCommunityFormule(String category, String name) { + String key = category + File.separator + name; + FormuleStorage result = formulesCache.get(key); + if (result == null) { + String extension = FileUtil.extension(new File(name), "."); + if (!"".equals(extension)) { + name = name.substring(0, name.length() - (extension.length() + 1)); + } + result = new FormuleStorage(IsisFish.config.getCommunityDatabaseDirectory(), + getCommunityFormuleDirectory(), category, name, extension); + formulesCache.put(key, result); + } + return result; + } /** * creer une nouvelle formule, si la formule existait deja, elle est ecrasé Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2011-06-16 12:30:48 UTC (rev 3410) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RuleStorage.java 2011-06-16 15:02:46 UTC (rev 3411) @@ -116,8 +116,9 @@ * @return all rule names found in local user database */ static public List<String> getRuleNames() { - File dir = getRuleDirectory(); - return RuleStorage.getStorageNames(dir); + List<String> rules = getStorageNames(getRuleDirectory()); + rules.addAll(getStorageNames(getCommunityRuleDirectory())); + return rules; } /** @@ -137,6 +138,22 @@ return result; } + /** + * Retourne le storage pour la regle demandée + * + * @param name le nom de la regle souhaitée + * @return Le storage pour la regle + */ + static public RuleStorage getCommunityRule(String name) { + String cacheName = getContextDatabaseCacheKey(name); + RuleStorage result = rulesCache.get(cacheName); + if (result == null) { + result = new RuleStorage(getCommunityDatabaseDirectory(), + getCommunityRuleDirectory(), name); + rulesCache.put(cacheName, result); + } + return result; + } /** * Retourne une nouvelle instance de la regle. Compile le fichier si besoin @@ -300,7 +317,6 @@ static public List<String> getRemoteRuleNames() { File dir = getRuleDirectory(); return getRemoteStorageNames(dir); - } /** Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java 2011-06-16 12:30:48 UTC (rev 3410) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SensitivityExportStorage.java 2011-06-16 15:02:46 UTC (rev 3411) @@ -111,8 +111,8 @@ /** * Retourne le storage pour l'export demandé. * - * @param name le nom de la regle souhaitée - * @return Le storage pour la regle + * @param name le nom de la export souhaitée + * @return Le storage pour l'export */ public static SensitivityExportStorage getSensitivityExport(String name) { String cacheName = getContextDatabaseCacheKey(name); @@ -126,13 +126,31 @@ } /** + * Retourne le storage pour l'export demandé. + * + * @param name le nom de l'export souhaitée + * @return Le storage pour l'export + */ + public static SensitivityExportStorage getCommunitySensitivityExport(String name) { + String cacheName = getContextDatabaseCacheKey(name); + SensitivityExportStorage result = sensitivityExportsCache.get(cacheName); + if (result == null) { + result = new SensitivityExportStorage(getCommunityDatabaseDirectory(), + getCommunitySensitivityExportDirectory(), name); + sensitivityExportsCache.put(cacheName, result); + } + return result; + } + + /** * Retourne la liste des noms de toutes les régions disponible en local. * * @return la liste des noms de toutes les régions disponible en local */ public static List<String> getSensitivityExportNames() { - File dir = getSensitivityExportDirectory(); - return getStorageNames(dir); + List<String> result = getStorageNames(getSensitivityExportDirectory()); + result.addAll(getStorageNames(getCommunitySensitivityExportDirectory())); + return result; } public static void checkout() throws VCSException { Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2011-06-16 12:30:48 UTC (rev 3410) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2011-06-16 15:02:46 UTC (rev 3411) @@ -131,7 +131,7 @@ SimulatorStorage result = simulatorsCache.get(cacheName); if (result == null) { result = new SimulatorStorage(getCommunityDatabaseDirectory(), - getSimulatorDirectory(), name); + getCommunitySimulatorDirectory(), name); simulatorsCache.put(cacheName, result); } return result; @@ -147,8 +147,8 @@ * @return la liste des noms de toutes les régions disponible en local */ static public List<String> getSimulatorNames() { - File dir = getSimulatorDirectory(); - List<String> result = getStorageNames(dir); + List<String> result = getStorageNames(getSimulatorDirectory()); + result.addAll(getStorageNames(getCommunitySimulatorDirectory())); return result; } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2011-06-16 12:30:48 UTC (rev 3410) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2011-06-16 15:02:46 UTC (rev 3411) @@ -40,8 +40,10 @@ import fr.ifremer.isisfish.IsisConfig; import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.IsisFishDAOHelper; import fr.ifremer.isisfish.vcs.VCS; import fr.ifremer.isisfish.vcs.VCSException; +import fr.ifremer.isisfish.vcs.VCSNone; /** * Classe permettant de géré l'interaction avec le VCS. @@ -105,7 +107,7 @@ * * @return context cache key * - * TODO better place in other storage, but needed for region anad java scrits + * TODO better place in other storage, but needed for region and java scripts */ protected static String getContextDatabaseCacheKey(String key) { String result = getContextDatabaseDirectory().getAbsolutePath() + key; @@ -113,6 +115,38 @@ } /** + * Get VCS instance for storage file. + * + * @return vcs instance + */ + protected VCS getCurrentVCS() { + return getCurrentVCS(getFile()); + } + + /** + * Get VCS instance for given file. + * + * @param file file to get VCS + * @return + */ + protected VCS getCurrentVCS(File file) { + VCS result; + String absolutePath = file.getAbsolutePath(); + if (absolutePath.startsWith(IsisFish.config.getDatabaseDirectory() + File.separator)) { + result = IsisFish.vcs; + } else if (absolutePath.startsWith(IsisFish.config.getCommunityDatabaseDirectory() + File.separator)) { + result = IsisFish.communityVcs; + } else { + result = new VCSNone(file.getParentFile(), "", "", "", null, "", ""); + } + + if (log.isDebugEnabled()) { + log.debug("VCS for file " + getFile() + " is " + result); + } + return result; + } + + /** * Get {@link VCS}. * * @return VCS @@ -263,7 +297,7 @@ if (log.isDebugEnabled()) { log.debug("files to add: " + files); } - getVCS().add(files, msg); + getCurrentVCS().add(files, msg); } /** Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2011-06-16 12:30:48 UTC (rev 3410) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2011-06-16 15:02:46 UTC (rev 3411) @@ -423,13 +423,18 @@ try { switch (mapping) { case Formule: + case CommunityFormule: String fullPath = file.getAbsolutePath(); int lastIndexOf = fullPath.lastIndexOf('/'); // in string .../aaa/bbb/ccc/ddd.java // get ccc String category = fullPath.substring(fullPath.lastIndexOf('/', lastIndexOf - 1) + 1, lastIndexOf); - script = FormuleStorage.getFormule(category, file.getName()); + if (mapping.equals(ScriptMapping.Formule)) { + script = FormuleStorage.getFormule(category, file.getName()); + } else { + script = FormuleStorage.getCommunityFormule(category, file.getName()); + } break; case Rule: script = RuleStorage.getRule(file.getName()); @@ -452,13 +457,14 @@ case SensitivityExport: script = SensitivityExportStorage.getSensitivityExport(file.getName()); break; - case CommunityFormule: - break; case CommunityRule: + script = RuleStorage.getCommunityRule(file.getName()); break; case CommunityAnalysePlan: + script = AnalysePlanStorage.getCommunityAnalysePlan(file.getName()); break; case CommunityExport: + script = RuleStorage.getCommunityRule(file.getName()); break; case CommunityScript: script = ScriptStorage.getCommunityScript(file.getName()); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2011-06-16 12:30:48 UTC (rev 3410) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2011-06-16 15:02:46 UTC (rev 3411) @@ -28,7 +28,6 @@ import static org.nuiton.i18n.I18n._; import java.io.File; -import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Method; import java.net.URL; @@ -94,7 +93,8 @@ } /** - * Load la class demandé + * Load la class demandé. + * * @param fqn le nom complet de la classe a charger * @return la classe souhaité ou null si la class n'est pas trouvée */
participants (1)
-
chatellier@users.labs.libre-entreprise.org