User talk:Oskar Sigvardsson/List of administrators
From Wikipedia, the free encyclopedia
User:NoSeptember asked on the reference desk if he could get his list of admins sorted. I quickly wrote some java code to do just that. I'm planning on updating it every month from his list, if I forget, please remind me :)
Here is the code I used (which is public domain, btw):
import java.io.*; import java.util.Arrays; import java.util.Date; import java.util.Vector; import java.util.Comparator; public class Sorter { /** * @param args */ public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new FileReader("/home/oskar/admins.txt")); Vector admins = new Vector(); String s; while((s = in.readLine())!= null) { if(s.indexOf("admin-abbr")>0) admins.add(new SimpleLine(s)); } Object[] list = admins.toArray(); Arrays.sort(list, new Comparator() { public int compare(Object o1, Object o2) { return ((SimpleLine)o1).getDate().compareTo(((SimpleLine)o2).getDate()); } public boolean equals(Object obj) { return true; } }); PrintStream printer = new PrintStream(new FileOutputStream("/home/oskar/admins-processed.txt")); for(int i = 0; i<list.length; i++) //System.out.println(((SimpleLine)list[i]).getLine()); printer.println(((SimpleLine)list[i]).getLine()); System.out.println("Done!"); System.out.println(list.length + " lines processed"); } } class SimpleLine { String line; Date date; public SimpleLine(String line) { this.line = line; String substring = line.substring(line.indexOf("'''")+3, line.length()); substring = substring.substring(0,substring.indexOf("'''")); boolean loop = false; boolean loop2 = false; do { try { date = new Date(substring); loop = false; } catch(Exception e) { if(loop) { if(!loop2) { substring = substring.substring(0, substring.length()-2); substring += " Jan"; loop2 = true; } else { e.printStackTrace(); System.out.println(line); System.out.println(substring); System.exit(0); } } substring += " 1"; loop = true; } } while(loop); } public String getLine() { return line; } public Date getDate() { return date; } }
Note: this is BAAAAAAD code. Note the enourmous stupidity in using a variable with the name "substring". You get statements like
substring = substring.substring(0, substring.length()-2);
and
substring = substring.substring(0,substring.indexOf(""));
Let that be a lesson to all you kids! I literally whipped it up in a couple of minutes, so therefore it is a little sloppy. Please don't judge my l33t programming skills on this ;). The nested do/while-try/catch-ifs also are an especially filthy way of doing things.
Still, it works and it took no time to do, and that was all I wanted. Oskar 20:18, 15 October 2006 (UTC)