]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/editors/ModuleEditorInput.java
Clarify SLC project structure.
[gpl/argeo-slc.git] / cms / org.argeo.slc.client.ui.dist / src / org / argeo / slc / client / ui / dist / editors / ModuleEditorInput.java
diff --git a/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/editors/ModuleEditorInput.java b/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/editors/ModuleEditorInput.java
new file mode 100644 (file)
index 0000000..52d7a20
--- /dev/null
@@ -0,0 +1,103 @@
+package org.argeo.slc.client.ui.dist.editors;
+
+import org.argeo.jcr.JcrUtils;
+import org.argeo.slc.SlcException;
+import org.argeo.slc.SlcNames;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+/** Editor input for a JCR node object in a multi-repository environment */
+public class ModuleEditorInput implements IEditorInput, SlcNames {
+
+       // Define relevant workspace on a given repository
+       private String repoNodePath;
+       private String uri;
+       private String workspaceName;
+       private String modulePath;
+
+       public ModuleEditorInput(String repoNodePath, String uri,
+                       String workspaceName, String artifactPath) {
+               if (workspaceName == null)
+                       throw new SlcException("Workspace name cannot be null");
+               if (uri == null && repoNodePath == null)
+                       throw new SlcException("Define at least one of the 2 "
+                                       + "parameters URI or Repo Node Path");
+               if (artifactPath == null)
+                       throw new SlcException("Module path cannot be null");
+               this.repoNodePath = repoNodePath;
+               this.uri = uri;
+               this.workspaceName = workspaceName;
+               this.modulePath = artifactPath;
+       }
+
+       public String getModulePath() {
+               return modulePath;
+       }
+
+       public String getWorkspaceName() {
+               return workspaceName;
+       }
+
+       public String getRepoNodePath() {
+               return repoNodePath;
+       }
+
+       public String getUri() {
+               return uri;
+       }
+
+       public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
+               return null;
+       }
+
+       public boolean exists() {
+               return true;
+       }
+
+       public ImageDescriptor getImageDescriptor() {
+               return null;
+       }
+
+       // Dummy compulsory methods
+       public String getToolTipText() {
+               return getModulePath();
+       }
+
+       public String getName() {
+               return JcrUtils.lastPathElement(modulePath);
+       }
+
+       public IPersistableElement getPersistable() {
+               return null;
+       }
+
+       /**
+        * equals method based on coordinates
+        */
+       public boolean equals(Object obj) {
+               if (this == obj)
+                       return true;
+               if (obj == null)
+                       return false;
+               if (getClass() != obj.getClass())
+                       return false;
+
+               ModuleEditorInput other = (ModuleEditorInput) obj;
+
+               if (!modulePath.equals(other.getModulePath()))
+                       return false;
+               if (!workspaceName.equals(other.getWorkspaceName()))
+                       return false;
+
+               if (uri == null && other.getUri() != null
+                               || !uri.equals(other.getUri()))
+                       return false;
+
+               if (repoNodePath == null && other.getRepoNodePath() != null
+                               || !repoNodePath.equals(other.getRepoNodePath()))
+                       return false;
+
+               return true;
+       }
+}
\ No newline at end of file