]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.graph/src/org/simantics/graph/diff/Statement.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.graph / src / org / simantics / graph / diff / Statement.java
1 package org.simantics.graph.diff;\r
2 \r
3 public class Statement {\r
4         int subject;\r
5         int predicate;\r
6         int inverse;\r
7         int object;\r
8         \r
9         public Statement(int subject, int predicate, int inverse, int object) {\r
10                 this.subject = subject;\r
11                 this.predicate = predicate;\r
12                 this.inverse = inverse;\r
13                 this.object = object;\r
14         }\r
15 \r
16         @Override\r
17         public int hashCode() {\r
18                 final int prime = 31;\r
19                 int result = 1;\r
20                 result = prime * result + inverse;\r
21                 result = prime * result + object;\r
22                 result = prime * result + predicate;\r
23                 result = prime * result + subject;\r
24                 return result;\r
25         }\r
26 \r
27         @Override\r
28         public boolean equals(Object obj) {\r
29                 if (this == obj)\r
30                         return true;\r
31                 if (obj == null)\r
32                         return false;\r
33                 if (getClass() != obj.getClass())\r
34                         return false;\r
35                 Statement other = (Statement) obj;\r
36                 if (inverse != other.inverse)\r
37                         return false;\r
38                 if (object != other.object)\r
39                         return false;\r
40                 if (predicate != other.predicate)\r
41                         return false;\r
42                 if (subject != other.subject)\r
43                         return false;\r
44                 return true;\r
45         }\r
46         \r
47         public Statement map(int[] map) {\r
48                 int mappedSubject = map[subject];\r
49                 if(mappedSubject < 0) return null;\r
50                 int mappedPredicate = map[predicate];\r
51                 if(mappedPredicate < 0) return null;            \r
52                 int mappedInverse;\r
53                 if(inverse < 0)\r
54                         mappedInverse = inverse;\r
55                 else {\r
56                         mappedInverse = map[inverse];\r
57                         if(mappedInverse < 0) return null;\r
58                 }\r
59                 int mappedObject = map[object];\r
60                 if(mappedObject < 0) return null;\r
61                 return new Statement(mappedSubject, mappedPredicate, mappedInverse, mappedObject);\r
62         }\r
63 }\r