+package org.simantics.scenegraph.profile.common;\r
+\r
+import org.simantics.db.common.utils.Logger;\r
+import org.simantics.db.procedure.Listener;\r
+import org.simantics.scenegraph.profile.Group;\r
+import org.simantics.scenegraph.profile.Observer;\r
+\r
+/**\r
+ * @author Tuukka Lehtonen\r
+ */\r
+public abstract class ObserverGroupValueListener<T> implements Listener<T> {\r
+\r
+ protected ObserverGroupListener listener;\r
+ protected Observer observer;\r
+ protected Group group;\r
+ protected Object data;\r
+\r
+ public ObserverGroupValueListener(ObserverGroupListener listener, Observer observer, Group group, Object data) {\r
+ this.listener = listener;\r
+ this.observer = observer;\r
+ this.group = group;\r
+ this.data = data;\r
+ }\r
+\r
+ @Override\r
+ public void exception(Throwable t) {\r
+ Logger.defaultLogError(t);\r
+ }\r
+\r
+ @Override\r
+ public boolean isDisposed() {\r
+ return listener.isDisposed();\r
+ }\r
+\r
+ @Override\r
+ public int hashCode() {\r
+ return listener.hashCode() + 31 * data.hashCode();\r
+// return observer.hashCode() + 31 * group.hashCode() + 41*data.hashCode();\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object object) {\r
+ if (this == object)\r
+ return true;\r
+ else if (object == null)\r
+ return false;\r
+ else if (getClass() != object.getClass())\r
+ return false;\r
+ ObserverGroupValueListener<?> other = (ObserverGroupValueListener<?>) object;\r
+ return listener.equals(other.listener) && data.equals(other.data);\r
+// return observer.equals(other.observer) && group.equals(other.group) && data.equals(other.data);\r
+ }\r
+\r
+}\r