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=fb80ac3cf5d7076821fd39178fb55eb6fff22962;hpb=dc95cc0fdc36c88e778cdfd52d443d0a0b8d926c;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 fb80ac3cf..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; @@ -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());