package edu.usc.enl.dynamicmeasurement.data;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 2/14/13
* Time: 10:15 AM <br/>
* The trace reader that can read multiple trace files.
* It is like concatenating those trace files
*/
public class MultiFileTraceReader implements PacketLoader.TraceReader {
private final String[] files;
private int currentFileIndex = 0;
private BufferedReader currentReader;
public MultiFileTraceReader(String[] files) throws FileNotFoundException {
this.files = files;
if (files.length > 0) {
currentFileIndex = 0;
currentReader = new BufferedReader(new FileReader(files[0]));
}
}
@Override
public void close() throws IOException {
if (currentReader != null) {
currentReader.close();
}
}
@Override
public String readLine() throws IOException {
if (currentReader == null) {
return null;
}
String out = currentReader.readLine();
if (out != null) {
return out;
}
//check next file
if (currentFileIndex < files.length - 1) {
currentFileIndex++;
currentReader.close();
currentReader = new BufferedReader(new FileReader(files[currentFileIndex]));
return readLine();
}
return null;
}
public String[] getFiles() {
return files;
}
}