]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/BaseRequest2.java
Combination of Simantics-platform related changes and fixes for district
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / adapter / BaseRequest2.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.diagram.adapter;
13
14 import org.simantics.db.request.AsyncRead;
15 import org.simantics.g2d.canvas.ICanvasContext;
16
17 public abstract class BaseRequest2<T, Result> implements AsyncRead<Result> {
18
19     final protected T    data;
20
21     final int            hash;
22
23     final ICanvasContext canvas;
24
25     //String               debug;
26
27     public BaseRequest2(ICanvasContext canvas, T data) {
28         this.canvas = canvas;
29         assert canvas != null;
30         assert data != null;
31         this.data = data;
32         this.hash = data.hashCode() + 31 * canvas.hashCode();
33     }
34
35     @Override
36     public int hashCode() {
37         return hash;
38     }
39
40     public int threadHash() {
41         return hash;
42     }
43     
44     @Override
45     public boolean equals(Object other) {
46         if (this == other)
47             return true;
48         if (other == null || getClass() != other.getClass())
49             return false;
50         BaseRequest2<?, ?> o = (BaseRequest2<?, ?>) other;
51         return data.equals(o.data) && canvas.equals(o.canvas);
52     }
53
54     @Override
55     public int getFlags() {
56         return 0;
57     }
58
59     @Override
60     public String toString() {
61         return getClass().getSimpleName() + "[" + data + " - " + canvas.hashCode() + /*" " + debug +*/ "]";
62     }
63
64 }
65