X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fwizards%2FRegisterRepoWizard.java;h=fbc7c639d6c549d9ee9306b1894f652f02864662;hb=0d236262a853a1286b317c30d64d4692bc21c7a4;hp=a4369afec8268b00fc64a2dad906144d476e779e;hpb=bd06b3358f8c754765fcb222ac3b2273d0d56c37;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/wizards/RegisterRepoWizard.java b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/wizards/RegisterRepoWizard.java index a4369afec..fbc7c639d 100644 --- a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/wizards/RegisterRepoWizard.java +++ b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/wizards/RegisterRepoWizard.java @@ -19,6 +19,7 @@ import java.net.URI; import java.util.Hashtable; import javax.jcr.Node; +import javax.jcr.NodeIterator; import javax.jcr.Property; import javax.jcr.Repository; import javax.jcr.RepositoryFactory; @@ -26,7 +27,6 @@ import javax.jcr.Session; import javax.jcr.SimpleCredentials; import javax.jcr.nodetype.NodeType; -import org.argeo.ArgeoException; import org.argeo.eclipse.ui.ErrorFeedback; import org.argeo.jcr.ArgeoJcrConstants; import org.argeo.jcr.ArgeoJcrUtils; @@ -75,7 +75,7 @@ public class RegisterRepoWizard extends Wizard { private Button saveInKeyring; // Default values - private final static String DEFAULT_NAME = "Argeo public Repository"; + private final static String DEFAULT_NAME = "Argeo Public Repository"; private final static String DEFAULT_URI = "http://repo.argeo.org/data/pub/java"; private final static String DEFAULT_USER_NAME = "anonymous"; private final static boolean DEFAULT_ANONYMOUS = true; @@ -113,9 +113,26 @@ public class RegisterRepoWizard extends Wizard { Node repos = nodeSession.getNode(reposPath); String repoNodeName = JcrUtils.replaceInvalidChars(name.getText()); if (repos.hasNode(repoNodeName)) - throw new ArgeoException( + throw new SlcException( "There is already a remote repository named " + repoNodeName); + + // check if the same URI has already been registered + NodeIterator ni = repos.getNodes(); + while (ni.hasNext()) { + Node node = ni.nextNode(); + if (node.isNodeType(ArgeoTypes.ARGEO_REMOTE_REPOSITORY) + && node.hasProperty(ArgeoNames.ARGEO_URI) + && node.getProperty(ArgeoNames.ARGEO_URI).getString() + .equals(uri.getText())) + throw new SlcException( + "This URI " + + uri.getText() + + " is already registered, " + + "for the time being, only one instance of a single " + + "repository at a time is implemented."); + } + Node repoNode = repos.addNode(repoNodeName, ArgeoTypes.ARGEO_REMOTE_REPOSITORY); repoNode.setProperty(ArgeoNames.ARGEO_URI, uri.getText());