summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/convert/ClassMatch.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/convert/ClassMatch.java')
-rw-r--r--src/cuchaz/enigma/convert/ClassMatch.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/convert/ClassMatch.java b/src/cuchaz/enigma/convert/ClassMatch.java
new file mode 100644
index 0000000..9cecf70
--- /dev/null
+++ b/src/cuchaz/enigma/convert/ClassMatch.java
@@ -0,0 +1,72 @@
1package cuchaz.enigma.convert;
2
3import java.util.Collection;
4import java.util.Set;
5
6import com.google.common.collect.Sets;
7
8import cuchaz.enigma.Util;
9import cuchaz.enigma.mapping.ClassEntry;
10
11
12public class ClassMatch {
13
14 public Set<ClassEntry> sourceClasses;
15 public Set<ClassEntry> destClasses;
16
17 public ClassMatch(Collection<ClassEntry> sourceClasses, Collection<ClassEntry> destClasses) {
18 this.sourceClasses = Sets.newHashSet(sourceClasses);
19 this.destClasses = Sets.newHashSet(destClasses);
20 }
21
22 public ClassMatch(ClassEntry sourceClass, ClassEntry destClass) {
23 this.sourceClasses = Sets.newHashSet(sourceClass);
24 this.destClasses = Sets.newHashSet(destClass);
25 }
26
27 public boolean isMatched() {
28 return sourceClasses.size() > 0 && destClasses.size() > 0;
29 }
30
31 public boolean isAmbiguous() {
32 return sourceClasses.size() > 1 || destClasses.size() > 1;
33 }
34
35 public ClassEntry getUniqueSource() {
36 if (sourceClasses.size() != 1) {
37 throw new IllegalStateException("Match has ambiguous source!");
38 }
39 return sourceClasses.iterator().next();
40 }
41
42 public ClassEntry getUniqueDest() {
43 if (destClasses.size() != 1) {
44 throw new IllegalStateException("Match has ambiguous source!");
45 }
46 return destClasses.iterator().next();
47 }
48
49 public Set<ClassEntry> intersectSourceClasses(Set<ClassEntry> classes) {
50 Set<ClassEntry> intersection = Sets.newHashSet(sourceClasses);
51 intersection.retainAll(classes);
52 return intersection;
53 }
54
55 @Override
56 public int hashCode() {
57 return Util.combineHashesOrdered(sourceClasses, destClasses);
58 }
59
60 @Override
61 public boolean equals(Object other) {
62 if (other instanceof ClassMatch) {
63 return equals((ClassMatch)other);
64 }
65 return false;
66 }
67
68 public boolean equals(ClassMatch other) {
69 return this.sourceClasses.equals(other.sourceClasses)
70 && this.destClasses.equals(other.destClasses);
71 }
72}