diff options
Diffstat (limited to 'src/Java/gtPlusPlus/GenerateDictionaries.java')
-rw-r--r-- | src/Java/gtPlusPlus/GenerateDictionaries.java | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/src/Java/gtPlusPlus/GenerateDictionaries.java b/src/Java/gtPlusPlus/GenerateDictionaries.java deleted file mode 100644 index abdf4f4027..0000000000 --- a/src/Java/gtPlusPlus/GenerateDictionaries.java +++ /dev/null @@ -1,176 +0,0 @@ -package gtPlusPlus; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Random; - -import gtPlusPlus.api.objects.random.XSTR; - -public class GenerateDictionaries { - - public static void main(String[] args) { - - File aMainDictionary = new File("proguard/DictionaryMain.txt"); - File aMethodDict = new File("proguard/method-dict.txt"); - File aClassDict = new File("proguard/class-dict.txt"); - - if (Utils.doesFileExist(aMainDictionary)) { - Utils.log("Found Main Dictionary"); - List<String> aLines = Utils.readLines(aMainDictionary); - - ArrayList<String> aLinesToWriteMethods = new ArrayList<String>(); - ArrayList<String> aLinesToWriteClasses = new ArrayList<String>(); - - if (aLines != null && aLines.size() > 0) { - Utils.log("Main Dictionary has > 0 keywords ("+aLines.size()+")"); - HashSet<Integer> aUsedIndicies = new HashSet<Integer>(); - int aCount = aLines.size() / 5; - - Utils.log("Mapping "+aCount+" to each dict."); - // Map New Method Names - for (int i=0;aLinesToWriteMethods.size()<aCount;i++) { - Integer aIndex = Utils.randInt(0, aLines.size()-1); - if (!aUsedIndicies.contains(aIndex)) { - String aLineAtIndex = aLines.get(aIndex); - if (aLineAtIndex != null && aLineAtIndex.length() > 0) { - aLinesToWriteMethods.add(aLineAtIndex); - aUsedIndicies.add(aIndex); - } - } - if (i >= aCount * 5) { - break; - } - } - - // Map New Class Names - for (int i=0;aLinesToWriteClasses.size()<aCount;i++) { - Integer aIndex = Utils.randInt(0, aLines.size()-1); - if (!aUsedIndicies.contains(aIndex)) { - String aLineAtIndex = aLines.get(aIndex); - if (aLineAtIndex != null && aLineAtIndex.length() > 0) { - aLinesToWriteClasses.add(aLineAtIndex); - aUsedIndicies.add(aIndex); - } - } - if (i >= aCount * 5) { - break; - } - } - } - - // Remove old generated Dicts - if (Utils.doesFileExist(aMethodDict)) { - aMethodDict.delete(); - Utils.log("Removed old Method-Dict"); - } - if (Utils.doesFileExist(aClassDict)) { - aClassDict.delete(); - Utils.log("Removed old Class-Dict"); - } - - // Create new empty dict files - if (!Utils.doesFileExist(aMethodDict)) { - Utils.createFile(aMethodDict); - } - if (!Utils.doesFileExist(aClassDict)) { - Utils.createFile(aClassDict); - } - - Utils.log("Writing new Dictionaries."); - // Write - Utils.appendListToFile(aMethodDict, aLinesToWriteMethods); - Utils.appendListToFile(aClassDict, aLinesToWriteClasses); - - Utils.log("Finished all generation of new Dictionaries."); - - } - - } - - - - private static final class Utils { - - private static final Charset utf8 = StandardCharsets.UTF_8; - private static final Random rand = new XSTR(); - - private static final void log(String s) { - System.out.println("[GTPP-Proguard] "+s); - } - - public static int randInt(final int min, final int max) { - return rand.nextInt((max - min) + 1) + min; - } - - public static boolean doesFileExist(File f) { - if (f != null && f.exists() && !f.isDirectory()) { - return true; - } - return false; - } - - public static File createFile(File aFile) { - boolean blnCreated = false; - log("Trying to use relative path "+aFile.getPath()); - try { - //log("Trying to use path "+aFile.getCanonicalPath()); - //log("Trying to use absolute path "+aFile.getAbsolutePath()); - blnCreated = aFile.createNewFile(); - } catch (IOException ioe) { - log("Error while creating a new empty file :" + ioe); - return null; - } - return blnCreated ? aFile : null; - } - - public static boolean appendListToFile(File file, List<String> content) { - try { - long oldSize; - long newSize; - if (doesFileExist(file)) { - Path p = Paths.get(file.getPath()); - if (p != null && Files.isWritable(p)) { - oldSize = Files.size(p); - try { - Files.write(p, content, utf8, StandardOpenOption.APPEND); - } catch (IOException e) { - e.printStackTrace(); - } - newSize = Files.size(p); - return newSize > oldSize; - } - } - } catch (IOException e) { - } - return false; - } - - /** - * Reads the contents of a file line by line to a List of Strings using the default encoding for the VM. - * The file is always closed. - * - * @param file the file to read, must not be {@code null} - * @return the list of Strings representing each line in the file, never {@code null} - * @throws IOException in case of an I/O error - * @since 1.3 - */ - public static List<String> readLines(File file) { - try { - return org.apache.commons.io.FileUtils.readLines(file, utf8); - } - catch (IOException e) { - return new ArrayList<String>(); - } - } - } - -} |