summaryrefslogtreecommitdiff
path: root/enigma/src/main/java
diff options
context:
space:
mode:
authorGravatar NebelNidas2022-10-10 13:25:02 +0200
committerGravatar NebelNidas2023-10-09 11:55:07 +0200
commitcc4154d610adf7aee7816279171a50fe074aa675 (patch)
treea68ff74ab7fc543c7476eb651d3cb59a8633ad76 /enigma/src/main/java
parentAdd Mapping-IO import support; small cleanup (diff)
downloadenigma-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')
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingIoConverter.java24
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java8
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java6
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java4
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsReader.java2
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java2
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;
3import java.util.Deque; 3import java.util.Deque;
4import java.util.LinkedList; 4import java.util.LinkedList;
5import java.util.List; 5import java.util.List;
6import java.util.stream.StreamSupport;
6 7
7import net.fabricmc.mappingio.MappedElementKind; 8import net.fabricmc.mappingio.MappedElementKind;
8import net.fabricmc.mappingio.tree.MemoryMappingTree; 9import net.fabricmc.mappingio.tree.MemoryMappingTree;
@@ -11,6 +12,7 @@ import net.fabricmc.mappingio.tree.MappingTree.FieldMapping;
11import net.fabricmc.mappingio.tree.MappingTree.MethodArgMapping; 12import net.fabricmc.mappingio.tree.MappingTree.MethodArgMapping;
12import net.fabricmc.mappingio.tree.MappingTree.MethodMapping; 13import net.fabricmc.mappingio.tree.MappingTree.MethodMapping;
13 14
15import cuchaz.enigma.ProgressListener;
14import cuchaz.enigma.translation.mapping.EntryMap; 16import cuchaz.enigma.translation.mapping.EntryMap;
15import cuchaz.enigma.translation.mapping.EntryMapping; 17import cuchaz.enigma.translation.mapping.EntryMapping;
16import cuchaz.enigma.translation.mapping.tree.EntryTree; 18import cuchaz.enigma.translation.mapping.tree.EntryTree;
@@ -23,16 +25,23 @@ import cuchaz.enigma.translation.representation.entry.Entry;
23import cuchaz.enigma.translation.representation.entry.FieldEntry; 25import cuchaz.enigma.translation.representation.entry.FieldEntry;
24import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; 26import cuchaz.enigma.translation.representation.entry.LocalVariableEntry;
25import cuchaz.enigma.translation.representation.entry.MethodEntry; 27import cuchaz.enigma.translation.representation.entry.MethodEntry;
28import cuchaz.enigma.utils.I18n;
26 29
27public class MappingIoConverter { 30public 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];