summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/mapping/ClassMapping.java
diff options
context:
space:
mode:
authorGravatar Thomas Guillemard2016-10-26 17:34:06 +0200
committerGravatar GitHub2016-10-26 17:34:06 +0200
commite0f001acce44277a1e4eb0ccf79b801aa25ed216 (patch)
tree37577a7ffbc39a3b3a49acec63820fbfce5145f5 /src/main/java/cuchaz/enigma/mapping/ClassMapping.java
parentStarting implementing local variables (#33) (diff)
downloadenigma-fork-e0f001acce44277a1e4eb0ccf79b801aa25ed216.tar.gz
enigma-fork-e0f001acce44277a1e4eb0ccf79b801aa25ed216.tar.xz
enigma-fork-e0f001acce44277a1e4eb0ccf79b801aa25ed216.zip
Rework saving system to improve saving time (Fix #35)
Diffstat (limited to 'src/main/java/cuchaz/enigma/mapping/ClassMapping.java')
-rw-r--r--src/main/java/cuchaz/enigma/mapping/ClassMapping.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/mapping/ClassMapping.java b/src/main/java/cuchaz/enigma/mapping/ClassMapping.java
index 36b35f7..923c8ec 100644
--- a/src/main/java/cuchaz/enigma/mapping/ClassMapping.java
+++ b/src/main/java/cuchaz/enigma/mapping/ClassMapping.java
@@ -22,12 +22,14 @@ public class ClassMapping implements Comparable<ClassMapping> {
22 private String m_obfFullName; 22 private String m_obfFullName;
23 private String m_obfSimpleName; 23 private String m_obfSimpleName;
24 private String m_deobfName; 24 private String m_deobfName;
25 private String m_previousDeobfName;
25 private Map<String, ClassMapping> m_innerClassesByObfSimple; 26 private Map<String, ClassMapping> m_innerClassesByObfSimple;
26 private Map<String, ClassMapping> m_innerClassesByDeobf; 27 private Map<String, ClassMapping> m_innerClassesByDeobf;
27 private Map<String, FieldMapping> m_fieldsByObf; 28 private Map<String, FieldMapping> m_fieldsByObf;
28 private Map<String, FieldMapping> m_fieldsByDeobf; 29 private Map<String, FieldMapping> m_fieldsByDeobf;
29 private Map<String, MethodMapping> m_methodsByObf; 30 private Map<String, MethodMapping> m_methodsByObf;
30 private Map<String, MethodMapping> m_methodsByDeobf; 31 private Map<String, MethodMapping> m_methodsByDeobf;
32 private boolean isDirty;
31 33
32 public ClassMapping(String obfFullName) { 34 public ClassMapping(String obfFullName) {
33 this(obfFullName, null); 35 this(obfFullName, null);
@@ -37,6 +39,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
37 m_obfFullName = obfFullName; 39 m_obfFullName = obfFullName;
38 ClassEntry classEntry = new ClassEntry(obfFullName); 40 ClassEntry classEntry = new ClassEntry(obfFullName);
39 m_obfSimpleName = classEntry.isInnerClass() ? classEntry.getInnermostClassName() : classEntry.getSimpleName(); 41 m_obfSimpleName = classEntry.isInnerClass() ? classEntry.getInnermostClassName() : classEntry.getSimpleName();
42 m_previousDeobfName = null;
40 m_deobfName = NameValidator.validateClassName(deobfName, false); 43 m_deobfName = NameValidator.validateClassName(deobfName, false);
41 m_innerClassesByObfSimple = Maps.newHashMap(); 44 m_innerClassesByObfSimple = Maps.newHashMap();
42 m_innerClassesByDeobf = Maps.newHashMap(); 45 m_innerClassesByDeobf = Maps.newHashMap();
@@ -44,6 +47,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
44 m_fieldsByDeobf = Maps.newHashMap(); 47 m_fieldsByDeobf = Maps.newHashMap();
45 m_methodsByObf = Maps.newHashMap(); 48 m_methodsByObf = Maps.newHashMap();
46 m_methodsByDeobf = Maps.newHashMap(); 49 m_methodsByDeobf = Maps.newHashMap();
50 isDirty = true;
47 } 51 }
48 52
49 public String getObfFullName() { 53 public String getObfFullName() {
@@ -54,12 +58,18 @@ public class ClassMapping implements Comparable<ClassMapping> {
54 return m_obfSimpleName; 58 return m_obfSimpleName;
55 } 59 }
56 60
61 public String getPreviousDeobfName() {
62 return m_previousDeobfName;
63 }
64
57 public String getDeobfName() { 65 public String getDeobfName() {
58 return m_deobfName; 66 return m_deobfName;
59 } 67 }
60 68
61 public void setDeobfName(String val) { 69 public void setDeobfName(String val) {
70 m_previousDeobfName = m_deobfName;
62 m_deobfName = NameValidator.validateClassName(val, false); 71 m_deobfName = NameValidator.validateClassName(val, false);
72 this.isDirty = true;
63 } 73 }
64 74
65 //// INNER CLASSES //////// 75 //// INNER CLASSES ////////
@@ -81,6 +91,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
81 } 91 }
82 m_innerClassesByDeobf.put(classMapping.getDeobfName(), classMapping); 92 m_innerClassesByDeobf.put(classMapping.getDeobfName(), classMapping);
83 } 93 }
94 this.isDirty = true;
84 } 95 }
85 96
86 public void removeInnerClassMapping(ClassMapping classMapping) { 97 public void removeInnerClassMapping(ClassMapping classMapping) {
@@ -90,6 +101,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
90 boolean deobfWasRemoved = m_innerClassesByDeobf.remove(classMapping.getDeobfName()) != null; 101 boolean deobfWasRemoved = m_innerClassesByDeobf.remove(classMapping.getDeobfName()) != null;
91 assert (deobfWasRemoved); 102 assert (deobfWasRemoved);
92 } 103 }
104 this.isDirty = true;
93 } 105 }
94 106
95 public ClassMapping getOrCreateInnerClass(ClassEntry obfInnerClass) { 107 public ClassMapping getOrCreateInnerClass(ClassEntry obfInnerClass) {
@@ -98,6 +110,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
98 classMapping = new ClassMapping(obfInnerClass.getName()); 110 classMapping = new ClassMapping(obfInnerClass.getName());
99 boolean wasAdded = m_innerClassesByObfSimple.put(classMapping.getObfSimpleName(), classMapping) == null; 111 boolean wasAdded = m_innerClassesByObfSimple.put(classMapping.getObfSimpleName(), classMapping) == null;
100 assert (wasAdded); 112 assert (wasAdded);
113 this.isDirty = true;
101 } 114 }
102 return classMapping; 115 return classMapping;
103 } 116 }
@@ -141,6 +154,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
141 boolean wasAdded = m_innerClassesByDeobf.put(deobfName, classMapping) == null; 154 boolean wasAdded = m_innerClassesByDeobf.put(deobfName, classMapping) == null;
142 assert (wasAdded); 155 assert (wasAdded);
143 } 156 }
157 this.isDirty = true;
144 } 158 }
145 159
146 public boolean hasInnerClassByObfSimple(String obfSimpleName) { 160 public boolean hasInnerClassByObfSimple(String obfSimpleName) {
@@ -181,6 +195,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
181 boolean deobfWasAdded = m_fieldsByDeobf.put(deobfKey, fieldMapping) == null; 195 boolean deobfWasAdded = m_fieldsByDeobf.put(deobfKey, fieldMapping) == null;
182 assert (deobfWasAdded); 196 assert (deobfWasAdded);
183 assert (m_fieldsByObf.size() == m_fieldsByDeobf.size()); 197 assert (m_fieldsByObf.size() == m_fieldsByDeobf.size());
198 this.isDirty = true;
184 } 199 }
185 200
186 public void removeFieldMapping(FieldMapping fieldMapping) { 201 public void removeFieldMapping(FieldMapping fieldMapping) {
@@ -190,6 +205,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
190 boolean deobfWasRemoved = m_fieldsByDeobf.remove(getFieldKey(fieldMapping.getDeobfName(), fieldMapping.getObfType())) != null; 205 boolean deobfWasRemoved = m_fieldsByDeobf.remove(getFieldKey(fieldMapping.getDeobfName(), fieldMapping.getObfType())) != null;
191 assert (deobfWasRemoved); 206 assert (deobfWasRemoved);
192 } 207 }
208 this.isDirty = true;
193 } 209 }
194 210
195 public FieldMapping getFieldByObf(String obfName, Type obfType) { 211 public FieldMapping getFieldByObf(String obfName, Type obfType) {
@@ -243,6 +259,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
243 boolean wasAdded = m_fieldsByDeobf.put(getFieldKey(deobfName, obfType), fieldMapping) == null; 259 boolean wasAdded = m_fieldsByDeobf.put(getFieldKey(deobfName, obfType), fieldMapping) == null;
244 assert (wasAdded); 260 assert (wasAdded);
245 } 261 }
262 this.isDirty = true;
246 } 263 }
247 264
248 public void setFieldObfNameAndType(String oldObfName, Type obfType, String newObfName, Type newObfType) { 265 public void setFieldObfNameAndType(String oldObfName, Type obfType, String newObfName, Type newObfType) {
@@ -253,6 +270,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
253 fieldMapping.setObfType(newObfType); 270 fieldMapping.setObfType(newObfType);
254 boolean obfWasAdded = m_fieldsByObf.put(getFieldKey(newObfName, newObfType), fieldMapping) == null; 271 boolean obfWasAdded = m_fieldsByObf.put(getFieldKey(newObfName, newObfType), fieldMapping) == null;
255 assert(obfWasAdded); 272 assert(obfWasAdded);
273 this.isDirty = true;
256 } 274 }
257 275
258 //// METHODS //////// 276 //// METHODS ////////
@@ -285,6 +303,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
285 boolean deobfWasAdded = m_methodsByDeobf.put(deobfKey, methodMapping) == null; 303 boolean deobfWasAdded = m_methodsByDeobf.put(deobfKey, methodMapping) == null;
286 assert (deobfWasAdded); 304 assert (deobfWasAdded);
287 } 305 }
306 this.isDirty = true;
288 assert (m_methodsByObf.size() >= m_methodsByDeobf.size()); 307 assert (m_methodsByObf.size() >= m_methodsByDeobf.size());
289 } 308 }
290 309
@@ -295,6 +314,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
295 boolean deobfWasRemoved = m_methodsByDeobf.remove(getMethodKey(methodMapping.getDeobfName(), methodMapping.getObfSignature())) != null; 314 boolean deobfWasRemoved = m_methodsByDeobf.remove(getMethodKey(methodMapping.getDeobfName(), methodMapping.getObfSignature())) != null;
296 assert (deobfWasRemoved); 315 assert (deobfWasRemoved);
297 } 316 }
317 this.isDirty = true;
298 } 318 }
299 319
300 public MethodMapping getMethodByObf(String obfName, Signature obfSignature) { 320 public MethodMapping getMethodByObf(String obfName, Signature obfSignature) {
@@ -328,6 +348,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
328 boolean wasAdded = m_methodsByDeobf.put(getMethodKey(deobfName, obfSignature), methodMapping) == null; 348 boolean wasAdded = m_methodsByDeobf.put(getMethodKey(deobfName, obfSignature), methodMapping) == null;
329 assert (wasAdded); 349 assert (wasAdded);
330 } 350 }
351 this.isDirty = true;
331 } 352 }
332 353
333 public void setMethodObfNameAndSignature(String oldObfName, Signature obfSignature, String newObfName, Signature newObfSignature) { 354 public void setMethodObfNameAndSignature(String oldObfName, Signature obfSignature, String newObfName, Signature newObfSignature) {
@@ -338,6 +359,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
338 methodMapping.setObfSignature(newObfSignature); 359 methodMapping.setObfSignature(newObfSignature);
339 boolean obfWasAdded = m_methodsByObf.put(getMethodKey(newObfName, newObfSignature), methodMapping) == null; 360 boolean obfWasAdded = m_methodsByObf.put(getMethodKey(newObfName, newObfSignature), methodMapping) == null;
340 assert(obfWasAdded); 361 assert(obfWasAdded);
362 this.isDirty = true;
341 } 363 }
342 364
343 //// ARGUMENTS //////// 365 //// ARGUMENTS ////////
@@ -349,16 +371,19 @@ public class ClassMapping implements Comparable<ClassMapping> {
349 methodMapping = createMethodMapping(obfMethodName, obfMethodSignature); 371 methodMapping = createMethodMapping(obfMethodName, obfMethodSignature);
350 } 372 }
351 methodMapping.setArgumentName(argumentIndex, argumentName); 373 methodMapping.setArgumentName(argumentIndex, argumentName);
374 this.isDirty = true;
352 } 375 }
353 376
354 public void removeArgumentName(String obfMethodName, Signature obfMethodSignature, int argumentIndex) { 377 public void removeArgumentName(String obfMethodName, Signature obfMethodSignature, int argumentIndex) {
355 m_methodsByObf.get(getMethodKey(obfMethodName, obfMethodSignature)).removeArgumentName(argumentIndex); 378 m_methodsByObf.get(getMethodKey(obfMethodName, obfMethodSignature)).removeArgumentName(argumentIndex);
379 this.isDirty = true;
356 } 380 }
357 381
358 private MethodMapping createMethodMapping(String obfName, Signature obfSignature) { 382 private MethodMapping createMethodMapping(String obfName, Signature obfSignature) {
359 MethodMapping methodMapping = new MethodMapping(obfName, obfSignature); 383 MethodMapping methodMapping = new MethodMapping(obfName, obfSignature);
360 boolean wasAdded = m_methodsByObf.put(getMethodKey(obfName, obfSignature), methodMapping) == null; 384 boolean wasAdded = m_methodsByObf.put(getMethodKey(obfName, obfSignature), methodMapping) == null;
361 assert (wasAdded); 385 assert (wasAdded);
386 this.isDirty = true;
362 return methodMapping; 387 return methodMapping;
363 } 388 }
364 389
@@ -441,6 +466,7 @@ public class ClassMapping implements Comparable<ClassMapping> {
441 m_obfFullName = newObfClassName; 466 m_obfFullName = newObfClassName;
442 return true; 467 return true;
443 } 468 }
469 this.isDirty = true;
444 return false; 470 return false;
445 } 471 }
446 472
@@ -456,4 +482,14 @@ public class ClassMapping implements Comparable<ClassMapping> {
456 public ClassEntry getObfEntry() { 482 public ClassEntry getObfEntry() {
457 return new ClassEntry(m_obfFullName); 483 return new ClassEntry(m_obfFullName);
458 } 484 }
485
486 public boolean isDirty()
487 {
488 return isDirty;
489 }
490
491 public void resetDirty()
492 {
493 this.isDirty = false;
494 }
459} 495}