m@0
|
1 /*=============================================================================
|
m@0
|
2 * File: FileList.java
|
m@0
|
3 * Author: Marcus Pearce <m.pearce@gold.ac.uk>
|
m@0
|
4 * Created: <2007-11-30 10:30:38 marcusp>
|
marcus@20
|
5 * Time-stamp: <2012-03-01 09:35:00 marcusp>
|
m@0
|
6 *=============================================================================
|
m@0
|
7 */
|
m@0
|
8
|
m@0
|
9 import java.util.ArrayList;
|
m@0
|
10 import java.util.Iterator;
|
m@0
|
11
|
m@0
|
12 import java.io.*;
|
m@0
|
13
|
m@0
|
14 import java.util.Random;
|
m@0
|
15
|
m@0
|
16 public class FileList {
|
m@0
|
17
|
m@0
|
18 private ArrayList files;
|
m@0
|
19 private ArrayList probes;
|
m@0
|
20 private int numFiles;
|
m@0
|
21 private int currentFileIndex;
|
m@0
|
22
|
m@0
|
23 public int numFiles() { return numFiles; }
|
m@0
|
24 public void setFileIndex(int i) { currentFileIndex = i; }
|
m@0
|
25
|
m@0
|
26 public String currentFile() {
|
m@0
|
27 if (currentFileIndex < numFiles)
|
m@0
|
28 return (String)files.get(currentFileIndex);
|
m@0
|
29 else
|
m@0
|
30 return null;
|
m@0
|
31 }
|
m@0
|
32
|
m@0
|
33 public ArrayList currentProbes() {
|
m@0
|
34 if (currentFileIndex < numFiles)
|
m@0
|
35 return (ArrayList)probes.get(currentFileIndex);
|
m@0
|
36 else
|
m@0
|
37 return null;
|
m@0
|
38 }
|
m@0
|
39
|
m@0
|
40 public void incrementFileIndex() {
|
m@0
|
41 currentFileIndex = currentFileIndex + 1;
|
m@0
|
42 }
|
m@0
|
43
|
m@0
|
44 private void randomise() {
|
m@0
|
45 Random rgen = new Random();
|
m@0
|
46 for (int i = 0; i < numFiles; i++) {
|
m@0
|
47 int randomPosition = rgen.nextInt(numFiles);
|
m@0
|
48 // System.out.println("i = " + i + "; rpos = " + randomPosition +
|
m@0
|
49 // "; files = " + files.size() +
|
m@0
|
50 // "; probes = " + probes.size());
|
m@0
|
51
|
m@0
|
52 String tempFile = (String)files.get(i);
|
m@0
|
53 files.set(i, files.get(randomPosition));
|
m@0
|
54 files.set(randomPosition, tempFile);
|
m@0
|
55
|
m@0
|
56 ArrayList tempProbe = (ArrayList)probes.get(i);
|
m@0
|
57 probes.set(i, probes.get(randomPosition));
|
m@0
|
58 probes.set(randomPosition, tempProbe);
|
m@0
|
59 }
|
m@0
|
60 }
|
m@0
|
61
|
m@0
|
62 private void importFileList(String filename) {
|
m@0
|
63 try {
|
m@0
|
64 LineNumberReader lnr =
|
m@0
|
65 new LineNumberReader(new FileReader(new File(filename)));
|
m@0
|
66 lnr.setLineNumber(1);
|
m@0
|
67 StreamTokenizer stok = new StreamTokenizer(lnr);
|
m@0
|
68 stok.parseNumbers();
|
m@0
|
69 stok.wordChars('_','_');
|
m@0
|
70 stok.wordChars('0','9');
|
m@0
|
71 //stok.wordChars('/','/');
|
m@0
|
72 stok.eolIsSignificant(true);
|
m@0
|
73 stok.nextToken();
|
m@0
|
74 while (stok.ttype != StreamTokenizer.TT_EOF) {
|
m@0
|
75 int lineno = lnr.getLineNumber();
|
m@0
|
76 int i = 0;
|
m@0
|
77 ArrayList iprobes = new ArrayList();
|
m@0
|
78 while (stok.ttype != StreamTokenizer.TT_EOL) {
|
m@0
|
79 int j = 0;
|
m@0
|
80 if (stok.ttype == StreamTokenizer.TT_NUMBER) {
|
m@0
|
81 iprobes.add((int)stok.nval - 1); // zero indexing
|
m@0
|
82 } else if (stok.ttype == StreamTokenizer.TT_WORD) {
|
m@0
|
83 files.add(stok.sval);
|
m@0
|
84 }
|
m@0
|
85 stok.nextToken();
|
m@0
|
86 }
|
m@0
|
87 i++;
|
m@0
|
88 numFiles++;
|
m@0
|
89 probes.add(iprobes);
|
m@0
|
90 stok.nextToken();
|
m@0
|
91 }
|
m@0
|
92 } catch(Exception e) {
|
m@0
|
93 System.out.println("Exception: " + e);
|
m@0
|
94 }
|
m@0
|
95 }
|
m@0
|
96
|
m@0
|
97 public void print() {
|
m@0
|
98 Iterator fi = files.iterator();
|
m@0
|
99 Iterator pi = probes.iterator();
|
m@0
|
100 while (fi.hasNext()) {
|
m@0
|
101 System.out.print((String)fi.next() + ": ");
|
m@0
|
102 ArrayList ip = (ArrayList)pi.next();
|
marcus@20
|
103
|
marcus@20
|
104 for (int i = 0; i < ip.size(); i++) {
|
marcus@20
|
105 int ppos = ((Integer)ip.get(i)).intValue() + 1;
|
marcus@20
|
106 System.out.print(ppos + " ");
|
marcus@20
|
107 }
|
m@0
|
108 System.out.print("\n");
|
m@0
|
109 }
|
m@0
|
110 }
|
m@0
|
111
|
m@0
|
112 public FileList(String filename) {
|
m@0
|
113 files = new ArrayList();
|
m@0
|
114 probes = new ArrayList();
|
m@0
|
115 currentFileIndex = 0;
|
m@0
|
116 this.importFileList(filename);
|
m@0
|
117 this.randomise();
|
m@0
|
118 this.print();
|
m@0
|
119 }
|
m@0
|
120 }
|