Author: tchemit Date: 2008-05-25 15:41:01 +0000 (Sun, 25 May 2008) New Revision: 678 Modified: trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/VCSConfigFactory.java Log: use a list of RootConfig and not a Map to simplify managment Modified: trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/VCSConfigFactory.java =================================================================== --- trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/VCSConfigFactory.java 2008-05-25 15:40:33 UTC (rev 677) +++ trunk/lutinvcs/core/src/main/java/org/codelutin/vcs/VCSConfigFactory.java 2008-05-25 15:41:01 UTC (rev 678) @@ -47,7 +47,7 @@ static protected VCSConfigFactory instance; /** root configs indexed by their name */ - protected final java.util.Map<String, VCSRootConfig> roots; + protected final List<VCSRootConfig> roots; /** connexion configs indexed by their rootConfig name */ protected final List<VCSConnexionConfig> connexions; @@ -67,7 +67,7 @@ } public List<VCSRootConfig> getRoots() { - return new ArrayList<VCSRootConfig>(roots.values()); + return new ArrayList<VCSRootConfig>(roots); } public List<VCSConnexionConfig> getConnexions() { @@ -75,11 +75,25 @@ } public static VCSRootConfig getRoot(String rootName) { - if (!getInstance().roots.containsKey(rootName)) { - // can not - throw new IllegalStateException("unfound root " + rootName); + + List<VCSRootConfig> configs = getInstance().roots; + for (VCSRootConfig config : configs) { + if (config.getRootName().equals(rootName)) { + return config; + } + } + // can not + throw new IllegalStateException("unfound root " + rootName); + } + + public static boolean containsRoot(String rootName) { + List<VCSRootConfig> configs = getInstance().roots; + for (VCSRootConfig config : configs) { + if (config.getRootName().equals(rootName)) { + return true; + } } - return getInstance().roots.get(rootName); + return false; } public static VCSRootConfig newRoot() { @@ -90,50 +104,44 @@ return config; } - public static VCSRootConfig cloneRoot(String name) { - if (!getInstance().roots.containsKey(name)) { - // can not - throw new IllegalStateException("can not clone root " + name + ", not found"); - } - VCSRootConfig config = getInstance().roots.get(name); + public static VCSRootConfig cloneRoot(String name) { + VCSRootConfig config = getRoot(name); log.info(config); VCSRootConfig result = newRoot(); result.copyFrom(config); - result.setRootName(config.getRootName() + "_2"); - getInstance().roots.put(name, config); + result.setRootName(config.getRootName() +"_"+ getInstance().roots.size()); + getInstance().roots.add(result); return result; } public static void addRoot(VCSRootConfig config) { String name = config.getRootName(); - if (getInstance().roots.containsKey(name)) { + List<VCSRootConfig> configs = getInstance().roots; + for (VCSRootConfig vcsRootConfig : configs) { + if (vcsRootConfig.getRootName().equals(name)) { // can not throw new IllegalStateException("can not create roots " + name + ", already existing "); + } } log.info(config); - getInstance().roots.put(name, config); + getInstance().roots.add(config); } public static void removeRoot(String name) { - if (!getInstance().roots.containsKey(name)) { - // can not - throw new IllegalStateException("can not remove roots " + name + ", not found"); - } + VCSRootConfig config = getRoot(name); log.info(name); - getInstance().roots.remove(name); + getInstance().roots.remove(config); } public static VCSConnexionConfig newConnexion(String rootName, EnumMap<VCSConnexionConfigProperty, Object> props) { - if (!getInstance().roots.containsKey(rootName)) { - // can not - throw new IllegalStateException("unfound root " + rootName); - } + VCSRootConfig rootConfig = getRoot(rootName); + VCSConnexionConfig config = new SimpleVCSConnexionConfig(props); if (props == null || !props.containsKey(VCSConnexionConfigProperty.rootConfig)) { // force to add rootConfig - config.setRootConfig(getInstance().roots.get(rootName)); + config.setRootConfig(rootConfig); } log.info(config); getInstance().connexions.add(config); @@ -141,7 +149,7 @@ } protected VCSConfigFactory() { - roots = new java.util.HashMap<String, VCSRootConfig>(); + roots = new ArrayList<VCSRootConfig>(); connexions = new ArrayList<VCSConnexionConfig>(); } } \ No newline at end of file