diff options
| author | 2022-10-10 13:25:02 +0200 | |
|---|---|---|
| committer | 2023-10-09 11:55:07 +0200 | |
| commit | cc4154d610adf7aee7816279171a50fe074aa675 (patch) | |
| tree | a68ff74ab7fc543c7476eb651d3cb59a8633ad76 /enigma/src/main/java | |
| parent | Add Mapping-IO import support; small cleanup (diff) | |
| download | enigma-fork-cc4154d610adf7aee7816279171a50fe074aa675.tar.gz enigma-fork-cc4154d610adf7aee7816279171a50fe074aa675.tar.xz enigma-fork-cc4154d610adf7aee7816279171a50fe074aa675.zip | |
Add progress listener to Mapping-IO conversion; deduplicate lang files
Diffstat (limited to 'enigma/src/main/java')
6 files changed, 28 insertions, 18 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java index d3fd341..171f252 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java | |||
| @@ -3,6 +3,7 @@ package cuchaz.enigma.translation.mapping.serde; | |||
| 3 | import java.util.Deque; | 3 | import java.util.Deque; |
| 4 | import java.util.LinkedList; | 4 | import java.util.LinkedList; |
| 5 | import java.util.List; | 5 | import java.util.List; |
| 6 | import java.util.stream.StreamSupport; | ||
| 6 | 7 | ||
| 7 | import net.fabricmc.mappingio.MappedElementKind; | 8 | import net.fabricmc.mappingio.MappedElementKind; |
| 8 | import net.fabricmc.mappingio.tree.MemoryMappingTree; | 9 | import net.fabricmc.mappingio.tree.MemoryMappingTree; |
| @@ -11,6 +12,7 @@ import net.fabricmc.mappingio.tree.MappingTree.FieldMapping; | |||
| 11 | import net.fabricmc.mappingio.tree.MappingTree.MethodArgMapping; | 12 | import net.fabricmc.mappingio.tree.MappingTree.MethodArgMapping; |
| 12 | import net.fabricmc.mappingio.tree.MappingTree.MethodMapping; | 13 | import net.fabricmc.mappingio.tree.MappingTree.MethodMapping; |
| 13 | 14 | ||
| 15 | import cuchaz.enigma.ProgressListener; | ||
| 14 | import cuchaz.enigma.translation.mapping.EntryMap; | 16 | import cuchaz.enigma.translation.mapping.EntryMap; |
| 15 | import cuchaz.enigma.translation.mapping.EntryMapping; | 17 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 16 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 18 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| @@ -23,16 +25,23 @@ import cuchaz.enigma.translation.representation.entry.Entry; | |||
| 23 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | 25 | import cuchaz.enigma.translation.representation.entry.FieldEntry; |
| 24 | import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; | 26 | import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; |
| 25 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 27 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 28 | import cuchaz.enigma.utils.I18n; | ||
| 26 | 29 | ||
| 27 | public class MappingIoConverter { | 30 | public class MappingIoConverter { |
| 28 | public static MemoryMappingTree toMappingIo(EntryTree<EntryMapping> mappings) { | 31 | public static MemoryMappingTree toMappingIo(EntryTree<EntryMapping> mappings, ProgressListener progress) { |
| 32 | List<EntryTreeNode<EntryMapping>> classes = StreamSupport.stream(mappings.spliterator(), false) | ||
| 33 | .filter(node -> node.getEntry() instanceof ClassEntry) | ||
| 34 | .toList(); | ||
| 35 | |||
| 36 | progress.init(classes.size(), I18n.translate("progress.mappings.converting.to_mappingio")); | ||
| 37 | int steps = 0; | ||
| 38 | |||
| 29 | MemoryMappingTree mappingTree = new MemoryMappingTree(); | 39 | MemoryMappingTree mappingTree = new MemoryMappingTree(); |
| 30 | mappingTree.visitNamespaces("intermediary", List.of("named")); | 40 | mappingTree.visitNamespaces("intermediary", List.of("named")); |
| 31 | 41 | ||
| 32 | for (EntryTreeNode<EntryMapping> node : mappings) { | 42 | for (EntryTreeNode<EntryMapping> classNode : classes) { |
| 33 | if (node.getEntry() instanceof ClassEntry) { | 43 | progress.step(steps++, classNode.getEntry().getFullName()); |
| 34 | writeClass(node, mappings, mappingTree); | 44 | writeClass(classNode, mappings, mappingTree); |
| 35 | } | ||
| 36 | } | 45 | } |
| 37 | 46 | ||
| 38 | mappingTree.visitEnd(); | 47 | mappingTree.visitEnd(); |
| @@ -131,10 +140,13 @@ public class MappingIoConverter { | |||
| 131 | mappingTree.visitComment(MappedElementKind.METHOD_ARG, methodArgMapping.javadoc()); | 140 | mappingTree.visitComment(MappedElementKind.METHOD_ARG, methodArgMapping.javadoc()); |
| 132 | } | 141 | } |
| 133 | 142 | ||
| 134 | public static EntryTree<EntryMapping> fromMappingIo(MemoryMappingTree mappingTree) { | 143 | public static EntryTree<EntryMapping> fromMappingIo(MemoryMappingTree mappingTree, ProgressListener progress) { |
| 135 | EntryTree<EntryMapping> dstMappingTree = new HashEntryTree<>(); | 144 | EntryTree<EntryMapping> dstMappingTree = new HashEntryTree<>(); |
| 145 | progress.init(mappingTree.getClasses().size(), I18n.translate("progress.mappings.converting.from_mappingio")); | ||
| 146 | int steps = 0; | ||
| 136 | 147 | ||
| 137 | for (ClassMapping classMapping : mappingTree.getClasses()) { | 148 | for (ClassMapping classMapping : mappingTree.getClasses()) { |
| 149 | progress.step(steps++, classMapping.getDstName(0) != null ? classMapping.getDstName(0) : classMapping.getSrcName()); | ||
| 138 | readClass(classMapping, dstMappingTree); | 150 | readClass(classMapping, dstMappingTree); |
| 139 | } | 151 | } |
| 140 | 152 | ||
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java index 5461342..d5570e9 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java | |||
| @@ -40,12 +40,12 @@ public enum EnigmaMappingsReader implements MappingsReader { | |||
| 40 | FILE { | 40 | FILE { |
| 41 | @Override | 41 | @Override |
| 42 | public EntryTree<EntryMapping> read(Path path, ProgressListener progress, MappingSaveParameters saveParameters) throws IOException, MappingParseException { | 42 | public EntryTree<EntryMapping> read(Path path, ProgressListener progress, MappingSaveParameters saveParameters) throws IOException, MappingParseException { |
| 43 | progress.init(1, I18n.translate("progress.mappings.enigma_file.loading")); | 43 | progress.init(1, I18n.translate("progress.mappings.loading_file")); |
| 44 | 44 | ||
| 45 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); | 45 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); |
| 46 | readFile(path, mappings); | 46 | readFile(path, mappings); |
| 47 | 47 | ||
| 48 | progress.step(1, I18n.translate("progress.mappings.enigma_file.done")); | 48 | progress.step(1, I18n.translate("progress.done")); |
| 49 | 49 | ||
| 50 | return mappings; | 50 | return mappings; |
| 51 | } | 51 | } |
| @@ -60,7 +60,7 @@ public enum EnigmaMappingsReader implements MappingsReader { | |||
| 60 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); | 60 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); |
| 61 | List<Path> files = Files.walk(root).filter(f -> !Files.isDirectory(f)).filter(f -> f.toString().endsWith(".mapping")).toList(); | 61 | List<Path> files = Files.walk(root).filter(f -> !Files.isDirectory(f)).filter(f -> f.toString().endsWith(".mapping")).toList(); |
| 62 | 62 | ||
| 63 | progress.init(files.size(), I18n.translate("progress.mappings.enigma_directory.loading")); | 63 | progress.init(files.size(), I18n.translate("progress.mappings.loading_directory")); |
| 64 | int step = 0; | 64 | int step = 0; |
| 65 | 65 | ||
| 66 | for (Path file : files) { | 66 | for (Path file : files) { |
| @@ -102,7 +102,7 @@ public enum EnigmaMappingsReader implements MappingsReader { | |||
| 102 | throw new IllegalArgumentException("No paths to read mappings from"); | 102 | throw new IllegalArgumentException("No paths to read mappings from"); |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | progress.init(paths.length, I18n.translate("progress.mappings.enigma_directory.loading")); | 105 | progress.init(paths.length, I18n.translate("progress.mappings.loading_directory")); |
| 106 | int step = 0; | 106 | int step = 0; |
| 107 | 107 | ||
| 108 | for (Path file : paths) { | 108 | for (Path file : paths) { |
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java index df1af91..73f29a1 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java | |||
| @@ -58,7 +58,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter { | |||
| 58 | public void write(EntryTree<EntryMapping> mappings, MappingDelta<EntryMapping> delta, Path path, ProgressListener progress, MappingSaveParameters saveParameters) { | 58 | public void write(EntryTree<EntryMapping> mappings, MappingDelta<EntryMapping> delta, Path path, ProgressListener progress, MappingSaveParameters saveParameters) { |
| 59 | Collection<ClassEntry> classes = mappings.getRootNodes().filter(entry -> entry.getEntry() instanceof ClassEntry).map(entry -> (ClassEntry) entry.getEntry()).toList(); | 59 | Collection<ClassEntry> classes = mappings.getRootNodes().filter(entry -> entry.getEntry() instanceof ClassEntry).map(entry -> (ClassEntry) entry.getEntry()).toList(); |
| 60 | 60 | ||
| 61 | progress.init(classes.size(), I18n.translate("progress.mappings.enigma_file.writing")); | 61 | progress.init(classes.size(), I18n.translate("progress.mappings.writing")); |
| 62 | 62 | ||
| 63 | int steps = 0; | 63 | int steps = 0; |
| 64 | 64 | ||
| @@ -78,11 +78,9 @@ public enum EnigmaMappingsWriter implements MappingsWriter { | |||
| 78 | Collection<ClassEntry> changedClasses = delta.getChangedRoots().filter(entry -> entry instanceof ClassEntry).map(entry -> (ClassEntry) entry).toList(); | 78 | Collection<ClassEntry> changedClasses = delta.getChangedRoots().filter(entry -> entry instanceof ClassEntry).map(entry -> (ClassEntry) entry).toList(); |
| 79 | 79 | ||
| 80 | applyDeletions(path, changedClasses, mappings, delta.getBaseMappings(), saveParameters.getFileNameFormat()); | 80 | applyDeletions(path, changedClasses, mappings, delta.getBaseMappings(), saveParameters.getFileNameFormat()); |
| 81 | |||
| 82 | changedClasses = changedClasses.stream().filter(entry -> !isClassEmpty(mappings, entry)).collect(Collectors.toList()); | 81 | changedClasses = changedClasses.stream().filter(entry -> !isClassEmpty(mappings, entry)).collect(Collectors.toList()); |
| 83 | 82 | ||
| 84 | progress.init(changedClasses.size(), I18n.translate("progress.mappings.enigma_directory.writing")); | 83 | progress.init(changedClasses.size(), I18n.translate("progress.mappings.writing")); |
| 85 | |||
| 86 | AtomicInteger steps = new AtomicInteger(); | 84 | AtomicInteger steps = new AtomicInteger(); |
| 87 | 85 | ||
| 88 | Translator translator = new MappingTranslator(mappings, VoidEntryResolver.INSTANCE); | 86 | Translator translator = new MappingTranslator(mappings, VoidEntryResolver.INSTANCE); |
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java index 4621efe..5addcad 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java | |||
| @@ -45,7 +45,7 @@ public enum SrgMappingsWriter implements MappingsWriter { | |||
| 45 | List<String> methodLines = new ArrayList<>(); | 45 | List<String> methodLines = new ArrayList<>(); |
| 46 | 46 | ||
| 47 | List<? extends Entry<?>> rootEntries = Lists.newArrayList(mappings).stream().map(EntryTreeNode::getEntry).toList(); | 47 | List<? extends Entry<?>> rootEntries = Lists.newArrayList(mappings).stream().map(EntryTreeNode::getEntry).toList(); |
| 48 | progress.init(rootEntries.size(), I18n.translate("progress.mappings.srg_file.generating")); | 48 | progress.init(rootEntries.size(), I18n.translate("progress.mappings.converting")); |
| 49 | 49 | ||
| 50 | int steps = 0; | 50 | int steps = 0; |
| 51 | 51 | ||
| @@ -54,7 +54,7 @@ public enum SrgMappingsWriter implements MappingsWriter { | |||
| 54 | writeEntry(classLines, fieldLines, methodLines, mappings, entry); | 54 | writeEntry(classLines, fieldLines, methodLines, mappings, entry); |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | progress.init(3, I18n.translate("progress.mappings.srg_file.writing")); | 57 | progress.init(3, I18n.translate("progress.mappings.writing")); |
| 58 | 58 | ||
| 59 | try (PrintWriter writer = new LfPrintWriter(Files.newBufferedWriter(path))) { | 59 | try (PrintWriter writer = new LfPrintWriter(Files.newBufferedWriter(path))) { |
| 60 | progress.step(0, I18n.translate("type.classes")); | 60 | progress.step(0, I18n.translate("type.classes")); |
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsReader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsReader.java index 534a567..1575f46 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsReader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsReader.java | |||
| @@ -35,7 +35,7 @@ public enum TinyMappingsReader implements MappingsReader { | |||
| 35 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); | 35 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); |
| 36 | lines.remove(0); | 36 | lines.remove(0); |
| 37 | 37 | ||
| 38 | progress.init(lines.size(), I18n.translate("progress.mappings.tiny_file.loading")); | 38 | progress.init(lines.size(), I18n.translate("progress.mappings.loading_file")); |
| 39 | 39 | ||
| 40 | for (int lineNumber = 0; lineNumber < lines.size(); lineNumber++) { | 40 | for (int lineNumber = 0; lineNumber < lines.size(); lineNumber++) { |
| 41 | progress.step(lineNumber, ""); | 41 | progress.step(lineNumber, ""); |
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java index eecbc35..28185f5 100644 --- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java | |||
| @@ -46,7 +46,7 @@ public final class TinyV2Reader implements MappingsReader { | |||
| 46 | private EntryTree<EntryMapping> read(Path path, List<String> lines, ProgressListener progress) throws MappingParseException { | 46 | private EntryTree<EntryMapping> read(Path path, List<String> lines, ProgressListener progress) throws MappingParseException { |
| 47 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); | 47 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); |
| 48 | 48 | ||
| 49 | progress.init(lines.size(), "progress.mappings.tiny_v2.loading"); | 49 | progress.init(lines.size(), "progress.mappings.loading_file"); |
| 50 | 50 | ||
| 51 | BitSet state = new BitSet(STATE_SIZE); | 51 | BitSet state = new BitSet(STATE_SIZE); |
| 52 | @SuppressWarnings({"unchecked", "rawtypes"}) MappingPair<? extends Entry<?>, RawEntryMapping>[] holds = new MappingPair[STATE_SIZE]; | 52 | @SuppressWarnings({"unchecked", "rawtypes"}) MappingPair<? extends Entry<?>, RawEntryMapping>[] holds = new MappingPair[STATE_SIZE]; |