diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/mapping/Mappings.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/mapping/Mappings.java | 16 |
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 |