Mercurial > hg > mep
diff FileList.java @ 0:4031cbb02f08
Initial import.
Ignore-this: 87317e384f22bde48db996355191fa5f
author | Marcus Pearce <m.pearce@gold.ac.uk> |
---|---|
date | Tue, 18 May 2010 11:37:10 +0100 |
parents | |
children | 85b03f084d63 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FileList.java Tue May 18 11:37:10 2010 +0100 @@ -0,0 +1,118 @@ +/*============================================================================= + * File: FileList.java + * Author: Marcus Pearce <m.pearce@gold.ac.uk> + * Created: <2007-11-30 10:30:38 marcusp> + * Time-stamp: <2010-05-10 11:14:37 marcusp> + *============================================================================= + */ + +import java.util.ArrayList; +import java.util.Iterator; + +import java.io.*; + +import java.util.Random; + +public class FileList { + + private ArrayList files; + private ArrayList probes; + private int numFiles; + private int currentFileIndex; + + public int numFiles() { return numFiles; } + public void setFileIndex(int i) { currentFileIndex = i; } + + public String currentFile() { + if (currentFileIndex < numFiles) + return (String)files.get(currentFileIndex); + else + return null; + } + + public ArrayList currentProbes() { + if (currentFileIndex < numFiles) + return (ArrayList)probes.get(currentFileIndex); + else + return null; + } + + public void incrementFileIndex() { + currentFileIndex = currentFileIndex + 1; + } + + private void randomise() { + Random rgen = new Random(); + for (int i = 0; i < numFiles; i++) { + int randomPosition = rgen.nextInt(numFiles); + // System.out.println("i = " + i + "; rpos = " + randomPosition + + // "; files = " + files.size() + + // "; probes = " + probes.size()); + + String tempFile = (String)files.get(i); + files.set(i, files.get(randomPosition)); + files.set(randomPosition, tempFile); + + ArrayList tempProbe = (ArrayList)probes.get(i); + probes.set(i, probes.get(randomPosition)); + probes.set(randomPosition, tempProbe); + } + } + + private void importFileList(String filename) { + try { + LineNumberReader lnr = + new LineNumberReader(new FileReader(new File(filename))); + lnr.setLineNumber(1); + StreamTokenizer stok = new StreamTokenizer(lnr); + stok.parseNumbers(); + stok.wordChars('_','_'); + stok.wordChars('0','9'); + //stok.wordChars('/','/'); + stok.eolIsSignificant(true); + stok.nextToken(); + while (stok.ttype != StreamTokenizer.TT_EOF) { + int lineno = lnr.getLineNumber(); + int i = 0; + ArrayList iprobes = new ArrayList(); + while (stok.ttype != StreamTokenizer.TT_EOL) { + int j = 0; + if (stok.ttype == StreamTokenizer.TT_NUMBER) { + iprobes.add((int)stok.nval - 1); // zero indexing + } else if (stok.ttype == StreamTokenizer.TT_WORD) { + files.add(stok.sval); + } + stok.nextToken(); + } + i++; + numFiles++; + probes.add(iprobes); + stok.nextToken(); + } + } catch(Exception e) { + System.out.println("Exception: " + e); + } + } + + public void print() { + Iterator fi = files.iterator(); + Iterator pi = probes.iterator(); + while (fi.hasNext()) { + System.out.print((String)fi.next() + ": "); + ArrayList ip = (ArrayList)pi.next(); + Iterator ipi = ip.iterator(); + while (ipi.hasNext()) + System.out.print(ipi.next() + " "); + System.out.print("\n"); + } + } + + public FileList(String filename) { + files = new ArrayList(); + probes = new ArrayList(); + currentFileIndex = 0; + this.importFileList(filename); + this.randomise(); + this.print(); + } +}