m@0: /*============================================================================= m@0: * File: FileList.java m@0: * Author: Marcus Pearce m@0: * Created: <2007-11-30 10:30:38 marcusp> marcus@20: * Time-stamp: <2012-03-01 09:35:00 marcusp> m@0: *============================================================================= m@0: */ m@0: m@0: import java.util.ArrayList; m@0: import java.util.Iterator; m@0: m@0: import java.io.*; m@0: m@0: import java.util.Random; m@0: m@0: public class FileList { m@0: m@0: private ArrayList files; m@0: private ArrayList probes; m@0: private int numFiles; m@0: private int currentFileIndex; m@0: m@0: public int numFiles() { return numFiles; } m@0: public void setFileIndex(int i) { currentFileIndex = i; } m@0: m@0: public String currentFile() { m@0: if (currentFileIndex < numFiles) m@0: return (String)files.get(currentFileIndex); m@0: else m@0: return null; m@0: } m@0: m@0: public ArrayList currentProbes() { m@0: if (currentFileIndex < numFiles) m@0: return (ArrayList)probes.get(currentFileIndex); m@0: else m@0: return null; m@0: } m@0: m@0: public void incrementFileIndex() { m@0: currentFileIndex = currentFileIndex + 1; m@0: } m@0: m@0: private void randomise() { m@0: Random rgen = new Random(); m@0: for (int i = 0; i < numFiles; i++) { m@0: int randomPosition = rgen.nextInt(numFiles); m@0: // System.out.println("i = " + i + "; rpos = " + randomPosition + m@0: // "; files = " + files.size() + m@0: // "; probes = " + probes.size()); m@0: m@0: String tempFile = (String)files.get(i); m@0: files.set(i, files.get(randomPosition)); m@0: files.set(randomPosition, tempFile); m@0: m@0: ArrayList tempProbe = (ArrayList)probes.get(i); m@0: probes.set(i, probes.get(randomPosition)); m@0: probes.set(randomPosition, tempProbe); m@0: } m@0: } m@0: m@0: private void importFileList(String filename) { m@0: try { m@0: LineNumberReader lnr = m@0: new LineNumberReader(new FileReader(new File(filename))); m@0: lnr.setLineNumber(1); m@0: StreamTokenizer stok = new StreamTokenizer(lnr); m@0: stok.parseNumbers(); m@0: stok.wordChars('_','_'); m@0: stok.wordChars('0','9'); m@0: //stok.wordChars('/','/'); m@0: stok.eolIsSignificant(true); m@0: stok.nextToken(); m@0: while (stok.ttype != StreamTokenizer.TT_EOF) { m@0: int lineno = lnr.getLineNumber(); m@0: int i = 0; m@0: ArrayList iprobes = new ArrayList(); m@0: while (stok.ttype != StreamTokenizer.TT_EOL) { m@0: int j = 0; m@0: if (stok.ttype == StreamTokenizer.TT_NUMBER) { m@0: iprobes.add((int)stok.nval - 1); // zero indexing m@0: } else if (stok.ttype == StreamTokenizer.TT_WORD) { m@0: files.add(stok.sval); m@0: } m@0: stok.nextToken(); m@0: } m@0: i++; m@0: numFiles++; m@0: probes.add(iprobes); m@0: stok.nextToken(); m@0: } m@0: } catch(Exception e) { m@0: System.out.println("Exception: " + e); m@0: } m@0: } m@0: m@0: public void print() { m@0: Iterator fi = files.iterator(); m@0: Iterator pi = probes.iterator(); m@0: while (fi.hasNext()) { m@0: System.out.print((String)fi.next() + ": "); m@0: ArrayList ip = (ArrayList)pi.next(); marcus@20: marcus@20: for (int i = 0; i < ip.size(); i++) { marcus@20: int ppos = ((Integer)ip.get(i)).intValue() + 1; marcus@20: System.out.print(ppos + " "); marcus@20: } m@0: System.out.print("\n"); m@0: } m@0: } m@0: m@0: public FileList(String filename) { m@0: files = new ArrayList(); m@0: probes = new ArrayList(); m@0: currentFileIndex = 0; m@0: this.importFileList(filename); m@0: this.randomise(); m@0: this.print(); m@0: } m@0: }