From 6032f55ede3c1b550cfd83b2f768926c992d9a98 Mon Sep 17 00:00:00 2001 From: Thog Date: Fri, 12 Aug 2016 19:59:54 +0200 Subject: Remoe JSON directory format support and clean up others things --- src/main/java/cuchaz/enigma/mapping/Mappings.java | 2 +- .../cuchaz/enigma/mapping/MappingsJsonReader.java | 120 --------------------- .../cuchaz/enigma/mapping/MappingsJsonWriter.java | 101 ----------------- 3 files changed, 1 insertion(+), 222 deletions(-) delete mode 100644 src/main/java/cuchaz/enigma/mapping/MappingsJsonReader.java delete mode 100644 src/main/java/cuchaz/enigma/mapping/MappingsJsonWriter.java (limited to 'src/main/java/cuchaz/enigma/mapping') diff --git a/src/main/java/cuchaz/enigma/mapping/Mappings.java b/src/main/java/cuchaz/enigma/mapping/Mappings.java index 1f4ca02..538c67e 100644 --- a/src/main/java/cuchaz/enigma/mapping/Mappings.java +++ b/src/main/java/cuchaz/enigma/mapping/Mappings.java @@ -160,6 +160,6 @@ public class Mappings { public enum FormatType { - JSON_DIRECTORY, ENIGMA_FILE, ENIGMA_DIRECTORY, SRG_FILE + ENIGMA_FILE, ENIGMA_DIRECTORY, SRG_FILE } } diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsJsonReader.java b/src/main/java/cuchaz/enigma/mapping/MappingsJsonReader.java deleted file mode 100644 index 8f5bde3..0000000 --- a/src/main/java/cuchaz/enigma/mapping/MappingsJsonReader.java +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Jeff Martin. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser General Public - * License v3.0 which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl.html - *

- * Contributors: - * Jeff Martin - initial API and implementation - ******************************************************************************/ -package cuchaz.enigma.mapping; - -import com.google.common.base.Charsets; -import com.google.common.io.Files; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import java.io.*; - -import cuchaz.enigma.json.JsonClass; -import cuchaz.enigma.throwables.MappingConflict; - -public class MappingsJsonReader { - - public Mappings read(File in) throws IOException { - Mappings mappings = new Mappings(Mappings.FormatType.JSON_DIRECTORY); - readDirectory(mappings, in); - return mappings; - } - - public void readDirectory(Mappings mappings, File in) throws IOException { - File[] fList = in.listFiles(); - if (fList != null) { - for (File file : fList) { - if (file.isFile() && Files.getFileExtension(file.getName()).equalsIgnoreCase("json")) { - readFile(mappings, new BufferedReader(new InputStreamReader(new FileInputStream(file), - Charsets.UTF_8))); - } else if (file.isDirectory()) { - readDirectory(mappings, file.getAbsoluteFile()); - } - } - } - } - - public void readFile(Mappings mappings, BufferedReader in) throws IOException { - StringBuilder buf = new StringBuilder(); - String line; - while ((line = in.readLine()) != null) { - buf.append(line); - } - - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - JsonClass jsonClass = gson.fromJson(buf.toString(), JsonClass.class); - try { - load(null, jsonClass, mappings); - } catch (MappingConflict e) { - e.printStackTrace(); - } - in.close(); - } - - public void load(ClassMapping parent, JsonClass jsonClass, Mappings mappings) throws MappingConflict { - ClassMapping classMapping = readClass(jsonClass.getObf(), jsonClass.getName()); - if (parent != null) { - parent.addInnerClassMapping(classMapping); - } else { - mappings.addClassMapping(classMapping); - } - jsonClass.getField().forEach(jsonField -> classMapping.addFieldMapping(readField(jsonField.getObf(), jsonField.getName(), jsonField.getType()))); - - jsonClass.getConstructors().forEach(jsonConstructor -> { - MethodMapping methodMapping = readMethod(jsonConstructor.isStatics() ? "" : "", null, jsonConstructor.getSignature()); - jsonConstructor.getArgs().forEach(jsonArgument -> { - try { - methodMapping.addArgumentMapping(readArgument(jsonArgument.getIndex(), jsonArgument.getName())); - } catch (MappingConflict e) { - e.printStackTrace(); - } - }); - classMapping.addMethodMapping(methodMapping); - }); - - jsonClass.getMethod().forEach(jsonMethod -> { - MethodMapping methodMapping = readMethod(jsonMethod.getObf(), jsonMethod.getName(), jsonMethod.getSignature()); - jsonMethod.getArgs().forEach(jsonArgument -> { - try { - methodMapping.addArgumentMapping(readArgument(jsonArgument.getIndex(), jsonArgument.getName())); - } catch (MappingConflict e) { - e.printStackTrace(); - } - }); - classMapping.addMethodMapping(methodMapping); - }); - - jsonClass.getInnerClass().forEach(jsonInnerClasses -> { - try { - load(classMapping, jsonInnerClasses, mappings); - } catch (MappingConflict e) { - e.printStackTrace(); - } - }); - } - - private ArgumentMapping readArgument(int index, String name) { - return new ArgumentMapping(index, name); - } - - private ClassMapping readClass(String obf, String deobf) { - return new ClassMapping("none/" + obf, deobf); - } - - /* TEMP */ - protected FieldMapping readField(String obf, String deobf, String sig) { - return new FieldMapping(obf, new Type(sig), deobf); - } - - private MethodMapping readMethod(String obf, String deobf, String sig) { - return new MethodMapping(obf, new Signature(sig), deobf); - } -} diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsJsonWriter.java b/src/main/java/cuchaz/enigma/mapping/MappingsJsonWriter.java deleted file mode 100644 index db95322..0000000 --- a/src/main/java/cuchaz/enigma/mapping/MappingsJsonWriter.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 Jeff Martin. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser General Public - * License v3.0 which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl.html - *

- * Contributors: - * Jeff Martin - initial API and implementation - ******************************************************************************/ -package cuchaz.enigma.mapping; - -import com.google.common.base.Charsets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import java.io.*; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import cuchaz.enigma.json.*; - -public class MappingsJsonWriter { - - public void write(File file, Mappings mappings) throws IOException { - if (!file.isDirectory()) { - return; - } - - String[] entries = file.list(); - for (String s : entries) { - File currentFile = new File(file.getPath(), s); - deleteDirectory(currentFile); - } - - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - for (ClassMapping classMapping : sorted(mappings.classes())) { - if (classMapping.getDeobfName() != null && !classMapping.getDeobfName().equalsIgnoreCase("") && !classMapping.getDeobfName().equalsIgnoreCase("null")) { - JsonClass jsonClass = new JsonClass(classMapping.getObfSimpleName(), classMapping.getDeobfName()); - write(jsonClass, classMapping); - - File f = new File(file, jsonClass.getName() + ".json"); - f.getParentFile().mkdirs(); - f.createNewFile(); - PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(f), Charsets.UTF_8)); - writer.write(gson.toJson(jsonClass)); - writer.close(); - } - } - } - - private void write(JsonClass jsonClass, ClassMapping classMapping) { - for (ClassMapping innerClassMapping : sorted(classMapping.innerClasses())) { - JsonClass innerClass = new JsonClass(classMapping.getObfSimpleName() + "$" + innerClassMapping.getObfSimpleName().replace("nome/", ""), innerClassMapping.getDeobfName()); - write(innerClass, innerClassMapping); - jsonClass.addInnerClass(innerClass); - } - - for (FieldMapping fieldMapping : sorted(classMapping.fields())) { - jsonClass.addField(new JsonField(fieldMapping.getObfName(), fieldMapping.getDeobfName(), fieldMapping.getObfType().toString())); - } - - for (MethodMapping methodMapping : sorted(classMapping.methods())) { - List args = new ArrayList<>(); - for (ArgumentMapping argumentMapping : sorted(methodMapping.arguments())) { - args.add(new JsonArgument(argumentMapping.getIndex(), argumentMapping.getName())); - } - if (methodMapping.getObfName().contains("") || methodMapping.getObfName().contains("")) { - jsonClass.addConstructor(new JsonConstructor(methodMapping.getObfSignature().toString(), args, methodMapping.getObfName().contains(""))); - } else { - jsonClass.addMethod(new JsonMethod(methodMapping.getObfName(), methodMapping.getDeobfName(), methodMapping.getObfSignature().toString(), args)); - } - } - } - - private > List sorted(Iterable classes) { - List out = new ArrayList<>(); - for (T t : classes) { - out.add(t); - } - Collections.sort(out); - return out; - } - - public static boolean deleteDirectory(File directory) { - if (directory.exists()) { - File[] files = directory.listFiles(); - if (null != files) { - for (int i = 0; i < files.length; i++) { - if (files[i].isDirectory()) { - deleteDirectory(files[i]); - } else { - files[i].delete(); - } - } - } - } - return (directory.delete()); - } -} -- cgit v1.2.3