From 5540c815de36e316d0749ce2163f12c61895b327 Mon Sep 17 00:00:00 2001
From: asiekierka
Date: Wed, 17 Aug 2016 18:35:12 +0200
Subject: Revert "Removed unused methods"
This reverts commit 1742190f784d0d62e7cc869eebafdfe1927e448f.
---
.../java/cuchaz/enigma/convert/FieldMatches.java | 151 +++++++++++++++++++++
1 file changed, 151 insertions(+)
create mode 100644 src/main/java/cuchaz/enigma/convert/FieldMatches.java
(limited to 'src/main/java/cuchaz/enigma/convert/FieldMatches.java')
diff --git a/src/main/java/cuchaz/enigma/convert/FieldMatches.java b/src/main/java/cuchaz/enigma/convert/FieldMatches.java
new file mode 100644
index 0000000..0899cd2
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/convert/FieldMatches.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * 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.*;
+
+import java.util.Collection;
+import java.util.Set;
+
+import cuchaz.enigma.mapping.ClassEntry;
+import cuchaz.enigma.mapping.FieldEntry;
+
+
+public class FieldMatches {
+
+ private BiMap m_matches;
+ private Multimap m_matchedSourceFields;
+ private Multimap m_unmatchedSourceFields;
+ private Multimap m_unmatchedDestFields;
+ private Multimap m_unmatchableSourceFields;
+
+ public FieldMatches() {
+ m_matches = HashBiMap.create();
+ m_matchedSourceFields = HashMultimap.create();
+ m_unmatchedSourceFields = HashMultimap.create();
+ m_unmatchedDestFields = HashMultimap.create();
+ m_unmatchableSourceFields = HashMultimap.create();
+ }
+
+ public void addMatch(FieldEntry srcField, FieldEntry destField) {
+ boolean wasAdded = m_matches.put(srcField, destField) == null;
+ assert (wasAdded);
+ wasAdded = m_matchedSourceFields.put(srcField.getClassEntry(), srcField);
+ assert (wasAdded);
+ }
+
+ public void addUnmatchedSourceField(FieldEntry fieldEntry) {
+ boolean wasAdded = m_unmatchedSourceFields.put(fieldEntry.getClassEntry(), fieldEntry);
+ assert (wasAdded);
+ }
+
+ public void addUnmatchedSourceFields(Iterable fieldEntries) {
+ for (FieldEntry fieldEntry : fieldEntries) {
+ addUnmatchedSourceField(fieldEntry);
+ }
+ }
+
+ public void addUnmatchedDestField(FieldEntry fieldEntry) {
+ boolean wasAdded = m_unmatchedDestFields.put(fieldEntry.getClassEntry(), fieldEntry);
+ assert (wasAdded);
+ }
+
+ public void addUnmatchedDestFields(Iterable fieldEntries) {
+ for (FieldEntry fieldEntry : fieldEntries) {
+ addUnmatchedDestField(fieldEntry);
+ }
+ }
+
+ public void addUnmatchableSourceField(FieldEntry sourceField) {
+ boolean wasAdded = m_unmatchableSourceFields.put(sourceField.getClassEntry(), sourceField);
+ assert (wasAdded);
+ }
+
+ public Set getSourceClassesWithUnmatchedFields() {
+ return m_unmatchedSourceFields.keySet();
+ }
+
+ public Collection getSourceClassesWithoutUnmatchedFields() {
+ Set out = Sets.newHashSet();
+ out.addAll(m_matchedSourceFields.keySet());
+ out.removeAll(m_unmatchedSourceFields.keySet());
+ return out;
+ }
+
+ public Collection getUnmatchedSourceFields() {
+ return m_unmatchedSourceFields.values();
+ }
+
+ public Collection getUnmatchedSourceFields(ClassEntry sourceClass) {
+ return m_unmatchedSourceFields.get(sourceClass);
+ }
+
+ public Collection getUnmatchedDestFields() {
+ return m_unmatchedDestFields.values();
+ }
+
+ public Collection getUnmatchedDestFields(ClassEntry destClass) {
+ return m_unmatchedDestFields.get(destClass);
+ }
+
+ public Collection getUnmatchableSourceFields() {
+ return m_unmatchableSourceFields.values();
+ }
+
+ public boolean hasSource(FieldEntry fieldEntry) {
+ return m_matches.containsKey(fieldEntry) || m_unmatchedSourceFields.containsValue(fieldEntry);
+ }
+
+ public boolean hasDest(FieldEntry fieldEntry) {
+ return m_matches.containsValue(fieldEntry) || m_unmatchedDestFields.containsValue(fieldEntry);
+ }
+
+ public BiMap matches() {
+ return m_matches;
+ }
+
+ public boolean isMatchedSourceField(FieldEntry sourceField) {
+ return m_matches.containsKey(sourceField);
+ }
+
+ public boolean isMatchedDestField(FieldEntry destField) {
+ return m_matches.containsValue(destField);
+ }
+
+ public void makeMatch(FieldEntry sourceField, FieldEntry destField) {
+ boolean wasRemoved = m_unmatchedSourceFields.remove(sourceField.getClassEntry(), sourceField);
+ assert (wasRemoved);
+ wasRemoved = m_unmatchedDestFields.remove(destField.getClassEntry(), destField);
+ assert (wasRemoved);
+ addMatch(sourceField, destField);
+ }
+
+ public boolean isMatched(FieldEntry sourceField, FieldEntry destField) {
+ FieldEntry match = m_matches.get(sourceField);
+ return match != null && match.equals(destField);
+ }
+
+ public void unmakeMatch(FieldEntry sourceField, FieldEntry destField) {
+ boolean wasRemoved = m_matches.remove(sourceField) != null;
+ assert (wasRemoved);
+ wasRemoved = m_matchedSourceFields.remove(sourceField.getClassEntry(), sourceField);
+ assert (wasRemoved);
+ addUnmatchedSourceField(sourceField);
+ addUnmatchedDestField(destField);
+ }
+
+ public void makeSourceUnmatchable(FieldEntry sourceField) {
+ assert (!isMatchedSourceField(sourceField));
+ boolean wasRemoved = m_unmatchedSourceFields.remove(sourceField.getClassEntry(), sourceField);
+ assert (wasRemoved);
+ addUnmatchableSourceField(sourceField);
+ }
+}
--
cgit v1.2.3