summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/mapping/Mappings.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/Mappings.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/Mappings.java')
-rw-r--r--src/main/java/cuchaz/enigma/mapping/Mappings.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/mapping/Mappings.java b/src/main/java/cuchaz/enigma/mapping/Mappings.java
index 7061be7..912a57a 100644
--- a/src/main/java/cuchaz/enigma/mapping/Mappings.java
+++ b/src/main/java/cuchaz/enigma/mapping/Mappings.java
@@ -30,6 +30,7 @@ public class Mappings {
30 protected Map<String, ClassMapping> classesByObf; 30 protected Map<String, ClassMapping> classesByObf;
31 protected Map<String, ClassMapping> classesByDeobf; 31 protected Map<String, ClassMapping> classesByDeobf;
32 private final FormatType originMapping; 32 private final FormatType originMapping;
33 private Mappings previousState;
33 34
34 public Mappings() 35 public Mappings()
35 { 36 {
@@ -40,6 +41,7 @@ public class Mappings {
40 this.originMapping = originMapping; 41 this.originMapping = originMapping;
41 this.classesByObf = Maps.newHashMap(); 42 this.classesByObf = Maps.newHashMap();
42 this.classesByDeobf = Maps.newHashMap(); 43 this.classesByDeobf = Maps.newHashMap();
44 this.previousState = null;
43 } 45 }
44 46
45 public Collection<ClassMapping> classes() { 47 public Collection<ClassMapping> classes() {
@@ -204,9 +206,19 @@ public class Mappings {
204 return originMapping; 206 return originMapping;
205 } 207 }
206 208
209 public void savePreviousState()
210 {
211 this.previousState = new Mappings(this.originMapping);
212 this.previousState.classesByDeobf = Maps.newHashMap(this.classesByDeobf);
213 this.previousState.classesByObf = Maps.newHashMap(this.classesByObf);
214 classesByDeobf.values().forEach(ClassMapping::resetDirty);
215 classesByObf.values().forEach(ClassMapping::resetDirty);
216 }
217
207 public void saveEnigmaMappings(File file, boolean isDirectoryFormat) throws IOException 218 public void saveEnigmaMappings(File file, boolean isDirectoryFormat) throws IOException
208 { 219 {
209 new MappingsEnigmaWriter().write(file, this, isDirectoryFormat); 220 new MappingsEnigmaWriter().write(file, this, isDirectoryFormat);
221 this.savePreviousState();
210 } 222 }
211 223
212 public void saveSRGMappings(File file) throws IOException 224 public void saveSRGMappings(File file) throws IOException
@@ -214,6 +226,10 @@ public class Mappings {
214 new MappingsSRGWriter().write(file, this); 226 new MappingsSRGWriter().write(file, this);
215 } 227 }
216 228
229 public Mappings getPreviousState() {
230 return previousState;
231 }
232
217 public enum FormatType 233 public enum FormatType
218 { 234 {
219 ENIGMA_FILE, ENIGMA_DIRECTORY, SRG_FILE 235 ENIGMA_FILE, ENIGMA_DIRECTORY, SRG_FILE