package org.fugazi.ql.ast.form.form_data.visitor;
import org.fugazi.ql.ast.form.Form;
import org.fugazi.ql.ast.statement.Question;
import org.fugazi.ql.ast.type.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
public class QuestionsVisitor extends StatementsVisitor {
private List<Question> questions;
private HashMap<String, Type> questionTypes;
public QuestionsVisitor(Form _form) {
super(_form);
this.questions = new ArrayList<>();
this.questionTypes = new HashMap<>();
}
/**
* =======================
* Visitor methods
* =======================
*/
@Override
public Void visitQuestion(Question question) {
this.saveQuestion(question);
this.saveQuestionType(question);
return null;
}
/**
* =======================
* Private data handling functions
* =======================
*/
private void saveQuestion(Question question) {
this.questions.add(question);
}
private void saveQuestionType(Question question) {
String idName = question.getIdName();
Type type = question.getType();
this.questionTypes.put(idName, type);
}
/**
* =======================
* Exposed methods
* =======================
*/
public Iterator<Question> getQuestions() {
if (this.questions.isEmpty()) {
this.visitForm();
}
return this.questions.iterator();
}
public HashMap<String, Type> getQuestionTypes() {
if (this.questionTypes.keySet().isEmpty()) {
this.visitForm();
}
return this.questionTypes;
}
}