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)