From 4be005617b3b8c3578cca07c5d085d12916f0d1d Mon Sep 17 00:00:00 2001
From: lclc98
Date: Thu, 30 Jun 2016 00:49:21 +1000
Subject: Json format (#2)
* Added new format
* Fixed bug
* Updated Version
---
.../java/cuchaz/enigma/convert/ClassMatch.java | 88 ++++++++++++++++++++++
1 file changed, 88 insertions(+)
create mode 100644 src/main/java/cuchaz/enigma/convert/ClassMatch.java
(limited to 'src/main/java/cuchaz/enigma/convert/ClassMatch.java')
diff --git a/src/main/java/cuchaz/enigma/convert/ClassMatch.java b/src/main/java/cuchaz/enigma/convert/ClassMatch.java
new file mode 100644
index 0000000..f3530ed
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/convert/ClassMatch.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Jeff Martin.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Lesser General Public
+ * License v3.0 which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/lgpl.html
+ *
+ * Contributors:
+ * Jeff Martin - initial API and implementation
+ ******************************************************************************/
+package cuchaz.enigma.convert;
+
+import com.google.common.collect.Sets;
+
+import java.util.Collection;
+import java.util.Set;
+
+import cuchaz.enigma.Util;
+import cuchaz.enigma.mapping.ClassEntry;
+
+
+public class ClassMatch {
+
+ public Set sourceClasses;
+ public Set destClasses;
+
+ public ClassMatch(Collection sourceClasses, Collection destClasses) {
+ this.sourceClasses = Sets.newHashSet(sourceClasses);
+ this.destClasses = Sets.newHashSet(destClasses);
+ }
+
+ public ClassMatch(ClassEntry sourceClass, ClassEntry destClass) {
+ sourceClasses = Sets.newHashSet();
+ if (sourceClass != null) {
+ sourceClasses.add(sourceClass);
+ }
+ destClasses = Sets.newHashSet();
+ if (destClass != null) {
+ destClasses.add(destClass);
+ }
+ }
+
+ public boolean isMatched() {
+ return sourceClasses.size() > 0 && destClasses.size() > 0;
+ }
+
+ public boolean isAmbiguous() {
+ return sourceClasses.size() > 1 || destClasses.size() > 1;
+ }
+
+ public ClassEntry getUniqueSource() {
+ if (sourceClasses.size() != 1) {
+ throw new IllegalStateException("Match has ambiguous source!");
+ }
+ return sourceClasses.iterator().next();
+ }
+
+ public ClassEntry getUniqueDest() {
+ if (destClasses.size() != 1) {
+ throw new IllegalStateException("Match has ambiguous source!");
+ }
+ return destClasses.iterator().next();
+ }
+
+ public Set intersectSourceClasses(Set classes) {
+ Set intersection = Sets.newHashSet(sourceClasses);
+ intersection.retainAll(classes);
+ return intersection;
+ }
+
+ @Override
+ public int hashCode() {
+ return Util.combineHashesOrdered(sourceClasses, destClasses);
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other instanceof ClassMatch) {
+ return equals((ClassMatch) other);
+ }
+ return false;
+ }
+
+ public boolean equals(ClassMatch other) {
+ return this.sourceClasses.equals(other.sourceClasses)
+ && this.destClasses.equals(other.destClasses);
+ }
+}
--
cgit v1.2.3