package es.uniovi.asw.trivial.main;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import es.uniovi.asw.trivial.db.MongoDB;
import es.uniovi.asw.trivial.model.Pregunta;
import es.uniovi.asw.trivial.model.Respuesta;
import es.uniovi.asw.trivial.parser.ParserBuilder;
import es.uniovi.asw.trivial.serializer.JSONSerializer;
public class Extractor {
public static void main(String[] args) {
new Extractor().run(args);
}
public int run(String[] args) {
if (args.length != 3) {
System.out.println("Incorrect number of params");
usage();
return 0;
} else {
System.out.println("Welcome to Trivial Extractor");
String inputFilePath = args[0];
String inputFileFormat = args[1];
String outputFile = args[2];
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
List<Pregunta> preguntas = ParserBuilder.build(inputFilePath,
inputFileFormat).parse();
imprimirPreguntas(preguntas);
String jsonResult = JSONSerializer.getJSON(preguntas);
System.out.println(jsonResult);
crearArchivoJSON(outputFile, jsonResult);
String opcion = "";
System.out
.println("¿Desea hacer la carga de los datos en la base de datos? S/N (Solo escribir S, si se tiene una instancia activa de MongoDB");
try {
opcion = br.readLine();
} catch (IOException e) {
System.out
.println("Se ha producido un error a través de la lectura del teclado");
}
if (opcion.equals("S")) {
MongoDB.insert(outputFile);
System.out.println("Insercción realizada con éxito");
}
}
return -1;
}
public void usage() {
System.out
.println("Usage:\n\t java -jar extractor [INPUT_FILE] [FORMAT_INPUT_FILE] [OUTPUT_FILE] [FORMAT_OUTPUT_FILE]");
System.out.println("\nAdmitted formats:\n\t*GIFT\n\t*XML");
System.out.println("\n*All parameters are required*");
}
private void imprimirPreguntas(List<Pregunta> preguntas) {
for (Pregunta p : preguntas) {
System.out.println(p.getEnunciado());
List<Respuesta> respuestas = p.getRespuestas();
for (int i = 0; i < respuestas.size(); i++)
System.out.println("\t" + respuestas.get(i).getRespuesta());
System.out.println();
}
}
private void crearArchivoJSON(String outputFile, String jsonResult) {
BufferedWriter bw;
try {
bw = new BufferedWriter(new FileWriter(new File(outputFile)));
bw.write(jsonResult);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}