package source;
import java.io.File;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import value.Row;
@Component
class FileSourceReader implements SourceReader<Row> {
private static Log log = LogFactory.getLog(FileSourceReader.class);
private Iterator<String> lineIterator;
private List<String> headers;
private String separator;
@Autowired
FileSourceReader(@Value("#{luceneConfig.getSourceFileLocation()}") File sourceFileLocation) throws Exception {
try {
lineIterator = FileUtils.readLines(sourceFileLocation).iterator();
} catch (Exception e) {
log.error("Error in reading file at location:" + sourceFileLocation.getAbsoluteFile(), e);
throw e;
}
String headerLine = lineIterator.next();
headers = Arrays.asList(headerLine.split(";"));
}
@Override
public boolean hasNext() {
return lineIterator.hasNext();
}
@Override
public Row next() {
String line = lineIterator.next();
return new Row(line, headers, separator);
}
@Override
public void remove() {
}
@Override
public void setSeparator(String separator) {
this.separator = separator;
}
}