+package org.argeo.eclipse.ui.jcr;\r
+\r
+import javax.jcr.Node;\r
+import javax.jcr.RepositoryException;\r
+\r
+import org.argeo.ArgeoException;\r
+import org.eclipse.jface.viewers.IElementComparer;\r
+\r
+/** Element comparer for JCR node, to be used in JFace viewers. */\r
+public class NodeElementComparer implements IElementComparer {\r
+\r
+ public boolean equals(Object a, Object b) {\r
+ try {\r
+ if ((a instanceof Node) && (b instanceof Node)) {\r
+ Node nodeA = (Node) a;\r
+ Node nodeB = (Node) b;\r
+ return nodeA.getIdentifier().equals(nodeB.getIdentifier());\r
+ } else {\r
+ return a.equals(b);\r
+ }\r
+ } catch (RepositoryException e) {\r
+ throw new ArgeoException("Cannot compare nodes", e);\r
+ }\r
+ }\r
+\r
+ public int hashCode(Object element) {\r
+ try {\r
+ if (element instanceof Node)\r
+ return ((Node) element).getIdentifier().hashCode();\r
+ return element.hashCode();\r
+ } catch (RepositoryException e) {\r
+ throw new ArgeoException("Cannot get hash code", e);\r
+ }\r
+ }\r
+\r
+}\r