--- /dev/null
+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