/*
* Copyright (c) 2015 Astron Informatikai Kft.
*
*/
package airportsimulation.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
/**
*
* @author tothm
*/
public class CsvParser {
private final Queue<String> fields;
private final Queue<Queue<String>> fieldsByLines;
public CsvParser(InputStream inputStream) throws CsvParserException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "ISO-8859-2"))) {
fields = new LinkedList<>();
fieldsByLines = new LinkedList<>();
String line;
while ((line = reader.readLine()) != null) {
if (line.startsWith("#") || line.isEmpty()) {
continue;
}
String[] splittedLine = line.split(";");
final List<String> splittedList = Arrays.asList(splittedLine);
fields.addAll(splittedList);
Queue<String> fieldsOfLine = new LinkedList<>();
fieldsOfLine.addAll(splittedList);
fieldsByLines.add(fieldsOfLine);
}
} catch (IOException ex) {
throw new CsvParserException("Cannot parse csv due to:\n" + ex);
}
}
public boolean hasNextField() {
return !fields.isEmpty();
}
public String getNextField() {
return fields.poll();
}
public boolean hasNextLine() {
return !fieldsByLines.isEmpty();
}
public void nextLine() {
fieldsByLines.poll();
}
public boolean hasFieldInCurrentLine() {
return !fieldsByLines.element().isEmpty();
}
public String getFieldFromCurrentLine() {
return fieldsByLines.element().poll();
}
}