From e34e49d3064640e01305549413c862ee0a7a79aa Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sat, 14 Dec 2013 10:32:08 -0800 Subject: Change tools/ to a submodule --- tools/Purger.java | 186 ------------------------------------------------------ 1 file changed, 186 deletions(-) delete mode 100644 tools/Purger.java (limited to 'tools/Purger.java') diff --git a/tools/Purger.java b/tools/Purger.java deleted file mode 100644 index 51134383..00000000 --- a/tools/Purger.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Purger (c) 2006 Eugenio Favalli - * License: GPL, v2 or later - */ - -import java.io.*; -import java.text.*; -import java.util.*; - - public class Purger { - - public static void main(String[] args) { - if (args.length != 2) { - System.err.println( - "Usage: java Purger \n" + - " - folder: is the path to account.txt and athena.txt files.\n" + - " - date: accounts created before this date will be purged (dd/mm/yy or yyyy-mm-dd)."); - return; - } - - int accounts = 0; - int characters = 0; - int deletedCharacters = 0; - Set activeAccounts = new HashSet(); - - File folder = new File(args[0]); - // Do some sanity checking - if (!folder.exists()) { - System.err.println("Folder does not exist!"); - return; - } - if (!folder.isDirectory()) { - System.err.println("Folder is not a folder!"); - return; - } - - File oldAccount = new File(folder, "account.txt"); - File oldAthena = new File(folder, "athena.txt"); - File newAccount = new File(folder, "account.txt.new"); - File newAthena = new File(folder, "athena.txt.new"); - - DateFormat dateFormat; - Date purgeDate = null; - - for (String format : new String[] {"dd/MM/yy", "yyyy-MM-dd"}) { - dateFormat = new SimpleDateFormat(format); - - try { - purgeDate = dateFormat.parse(args[1]); - break; - } catch (ParseException e) {} - } - - if (purgeDate == null) { - System.err.println("ERROR: Date format not recognized."); - return; - } - - System.out.printf("Removing accounts unused since %tF\n", purgeDate); - - String line; - - // Remove accounts - try { - FileInputStream fin = new FileInputStream(oldAccount); - BufferedReader input = new BufferedReader( - new InputStreamReader(fin)); - FileOutputStream fout = new FileOutputStream(newAccount); - PrintStream output = new PrintStream(fout); - - while ((line = input.readLine()) != null) { - boolean copy = false; - String[] fields = line.split("\t"); - // Check if we're reading a comment or the last line - if (line.substring(0, 2).equals("//") || fields[1].charAt(0) == '%') { - copy = true; - } - else { - // Server accounts should not be purged - if (fields[4].equals("S")) { - copy = true; - } else { - accounts++; - dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - try { - Date date = dateFormat.parse(fields[3]); - if (date.after(purgeDate)) { - activeAccounts.add(fields[0]); - copy = true; - } - else - { - System.out.println("Removing " + fields[1]); - } - } - catch (ParseException e) { - // Ignore accounts that haven't been used yet - if (fields[3].equals("-")) { - activeAccounts.add(fields[0]); - copy = true; - } - else { - System.err.println("ERROR: Wrong date format in account.txt. (" + accounts + ": " + line + ")"); - System.out.println("Removing " + fields[1]); - } - } - catch (Exception e) { - e.printStackTrace(); - return; - } - } - } - if (copy) { - try { - output.println(line); - } - catch (Exception e) { - System.err.println("ERROR: Unable to write file."); - } - } - } - input.close(); - output.close(); - } - catch (FileNotFoundException e ) { - System.err.println("ERROR: file " + oldAccount.getAbsolutePath() + " not found."); - return; - } - catch (Exception e) { - System.err.println("ERROR: unable to process account.txt"); - e.printStackTrace(); - return; - } - - System.out.println("Removed " + (accounts - activeAccounts.size()) + "/" + accounts + " accounts."); - - // Remove characters - try { - FileInputStream fin = new FileInputStream(oldAthena); - BufferedReader input = new BufferedReader( - new InputStreamReader(fin)); - FileOutputStream fout = new FileOutputStream(newAthena); - PrintStream output = new PrintStream(fout); - - while ((line = input.readLine()) != null) { - boolean copy = false; - String[] fields = line.split("\t"); - // Check if we're reading a comment or the last line - if (line.substring(0, 2).equals("//") - || fields[1].charAt(0) == '%') { - copy = true; - } - else { - characters++; - String id = fields[1].substring(0, fields[1].indexOf(',')); - if (activeAccounts.contains(id)) { - copy = true; - } - else { - deletedCharacters++; - } - } - if (copy) { - output.println(line); - } - } - input.close(); - output.close(); - } - catch (FileNotFoundException e ) { - System.err.println("ERROR: file " + oldAthena.getAbsolutePath() + " not found."); - return; - } - catch (Exception e) { - System.err.println("ERROR: unable to process athena.txt"); - e.printStackTrace(); - return; - } - - System.out.println( - "Removed " + deletedCharacters + "/" - + characters + " characters."); - } - -} - -- cgit v1.2.3-70-g09d2