package es.uniovi.asw.trivial.parser.impl;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import es.uniovi.asw.trivial.model.Pregunta;
import es.uniovi.asw.trivial.model.Respuesta;
import es.uniovi.asw.trivial.parser.Parser;
public class ParserGIFT extends Parser{
private String inputFilePath;
/**
* Constructor de la clase ParserGIFT
* @param inputFilePath Archivo de entrada con formato GIFT
*/
public ParserGIFT(String inputFilePath) {
this.inputFilePath = inputFilePath;
}
/**
* Parsea el archivo pasado por parametro al constructor y devuelve una lista con las preguntas
*/
@Override
public List<Pregunta> parse() {
List<Pregunta> preguntas = new ArrayList<Pregunta>();
try {
BufferedReader br = new BufferedReader(new FileReader(new File(inputFilePath)));
String categoria = "";
String titulo = "";
List<Respuesta> respuestas = new ArrayList<Respuesta>();
while(br.ready()){
String linea = br.readLine();
if(linea.contains("$")){
//Categoria
categoria = linea.split("$")[0].substring(1, linea.length());
}
else if(linea.contains("::")){
//Titulo
titulo = linea.split("::")[1];
respuestas = new ArrayList<Respuesta>();
}
else if(linea.contains("{")){
//Titulo (sin ::)
titulo = linea.split("\\{")[0];
respuestas = new ArrayList<Respuesta>();
}
else if(linea.contains("~")){
//Respuesta incorrecta
Respuesta respuesta = new Respuesta(linea.split("~")[1], false);
respuestas.add(respuesta);
}
else if(linea.contains("=")){
//Respuesta correcta
Respuesta respuesta = new Respuesta(linea.split("=")[1], true);
respuestas.add(respuesta);
}
else if(linea.contains("}")){
//Fin de pregunta
Pregunta pregunta = new Pregunta(titulo, categoria, respuestas);
preguntas.add(pregunta);
}
}
br.close();
} catch (FileNotFoundException e) {
System.err.println(e.getMessage());
} catch (IOException e) {
System.err.println(e.getMessage());
}
return preguntas;
}
}