]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.mapping/src/org/simantics/interop/mapping/data/ObjectSetIdentifiable.java
refs #3483
[simantics/interop.git] / org.simantics.interop.mapping / src / org / simantics / interop / mapping / data / ObjectSetIdentifiable.java
diff --git a/org.simantics.interop.mapping/src/org/simantics/interop/mapping/data/ObjectSetIdentifiable.java b/org.simantics.interop.mapping/src/org/simantics/interop/mapping/data/ObjectSetIdentifiable.java
new file mode 100644 (file)
index 0000000..2494470
--- /dev/null
@@ -0,0 +1,79 @@
+package org.simantics.interop.mapping.data;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+import java.util.HashSet;\r
+import java.util.Set;\r
+\r
+\r
+public class ObjectSetIdentifiable implements Identifiable {\r
+\r
+       private Set<Object> objs;\r
+       \r
+       public ObjectSetIdentifiable(Object obj) {\r
+               objs = new HashSet<Object>();\r
+               objs.add(obj);\r
+       }\r
+       \r
+       public ObjectSetIdentifiable(Object... obj) {\r
+               this.objs = new HashSet<Object>();\r
+               for (Object r : obj)\r
+                       this.objs.add(r);\r
+       }\r
+       \r
+       public ObjectSetIdentifiable(Collection<Object> obj) {\r
+               this.objs = new HashSet<Object>();\r
+               for (Object r : obj)\r
+                       this.objs.add(r);\r
+       }\r
+       \r
+       public Set<Object> getObjects() {\r
+               return objs;\r
+       }\r
+       \r
+       @SuppressWarnings("unchecked")\r
+       @Override\r
+       public <T> T getAdapter(Class<T> clazz) {\r
+               if (clazz.equals(String.class)) {\r
+                       String s = "";\r
+                       for (Object o : objs)\r
+                               s += o.toString() + " ";\r
+                       return (T)s;\r
+               }\r
+               return null;\r
+       }\r
+       \r
+       @Override\r
+       public int hashCode() {\r
+               return objs.hashCode();\r
+       }\r
+       \r
+       @Override\r
+       public boolean equals(Object arg0) {\r
+               if (arg0 == null)\r
+                       return false;\r
+               if (this.getClass() != arg0.getClass())\r
+                       return false;\r
+               ObjectSetIdentifiable other = (ObjectSetIdentifiable)arg0;\r
+               return objs.equals(other.objs);\r
+       }\r
+       \r
+       @Override\r
+       public Identifiable merge(Identifiable other) {\r
+               if (other instanceof ObjectIdentifiable) {\r
+                       Collection<Object> coll = new ArrayList<Object>();\r
+                       coll.addAll(this.objs);\r
+                       coll.add(((ObjectIdentifiable)other).getObject());\r
+                       ObjectSetIdentifiable i = new ObjectSetIdentifiable(coll);\r
+                       return i;\r
+               } else if (other instanceof ObjectSetIdentifiable) {\r
+                       Collection<Object> coll = new ArrayList<Object>();\r
+                       coll.addAll(this.objs);\r
+                       coll.addAll(((ObjectSetIdentifiable)other).getObjects());\r
+                       ObjectSetIdentifiable i = new ObjectSetIdentifiable(coll);\r
+                       return i;\r
+               }\r
+               return null;\r
+       }\r
+       \r
+}\r