view FileList.java @ 47:be66ee2fe9fe

Added abstract class EndBlockPanel to deliver end of block messages (e.g. end of practice block). Added and implemented EndTestPanel which gives "thank you for participating" etc message at end of test.
author Carl Bussey <c.bussey@se10.qmul.ac.uk>
date Thu, 13 Jun 2013 18:33:34 +0100
parents f0cd8f32e8c8
children
line wrap: on
line source
/*=============================================================================
 * File:       FileList.java
 * Author:     Marcus Pearce <m.pearce@gold.ac.uk>
 * Created:    <2007-11-30 10:30:38 marcusp>
 * Time-stamp: <2012-03-01 09:35:00 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();

            for (int i = 0; i < ip.size(); i++) { 
                int ppos = ((Integer)ip.get(i)).intValue() + 1;
                System.out.print(ppos + " ");
            }
            System.out.print("\n");
        }
    }

    public FileList(String filename) { 
        files = new ArrayList(); 
        probes = new ArrayList(); 
        currentFileIndex = 0; 
        this.importFileList(filename);
        this.randomise(); 
        this.print(); 
    }
}