]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.common/src/org/simantics/db/common/request/BinaryRead.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / request / BinaryRead.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.db.common.request;\r
13 \r
14 \r
15 \r
16 abstract public class BinaryRead<P1, P2, R> extends GenericReadBase<P1, R> {\r
17 \r
18     final protected P1 parameter;\r
19     final protected P2 parameter2;\r
20     \r
21     private int hashCode;\r
22 \r
23     @Override\r
24     public int hashCode() {\r
25         if(hashCode == 0) {\r
26                 final int h1 = parameter != null ? parameter.hashCode() : 0;\r
27                 final int h2 = parameter2 != null ? parameter2.hashCode() : 0;\r
28                 hashCode = getClass().hashCode() + 31*(h1 + 31 * h2);\r
29         }\r
30         return hashCode;\r
31     }\r
32 \r
33     @Override\r
34     public boolean equals(Object object) {\r
35         if (this == object)\r
36             return true;\r
37         else if (object == null)\r
38             return false;\r
39         else if (getClass() != object.getClass())\r
40             return false;\r
41         BinaryRead<?, ?, ?> r = (BinaryRead<?, ?, ?>) object;\r
42         \r
43         if(hashCode() != r.hashCode()) return false;\r
44         \r
45         if(parameter != null) {\r
46             if(!parameter.equals(r.parameter)) return false;\r
47         } else if(r.parameter != null) return false;\r
48         if(parameter2 != null) {\r
49             if(!parameter2.equals(r.parameter2)) return false;\r
50         } else if(r.parameter2 != null) return false;\r
51         return true;\r
52         \r
53     }\r
54 \r
55     public BinaryRead(P1 parameter1, P2 parameter2) {\r
56         this.parameter = parameter1;\r
57         this.parameter2 = parameter2;\r
58     }\r
59 \r
60     @Override\r
61     public String toString() {\r
62         return getClass().getSimpleName() + "$" + parameter + "$" + parameter2; \r
63     }\r
64     \r
65 }\r