package nl.uva.softwcons.qls.util; import java.util.HashMap; import java.util.Map; import nl.uva.softwcons.ql.ast.expression.identifier.Identifier; import nl.uva.softwcons.ql.ast.form.Form; import nl.uva.softwcons.ql.ast.form.FormVisitor; import nl.uva.softwcons.ql.ast.statement.ComputedQuestion; import nl.uva.softwcons.ql.ast.statement.Conditional; import nl.uva.softwcons.ql.ast.statement.Question; import nl.uva.softwcons.ql.ast.statement.StatementVisitor; import nl.uva.softwcons.ql.ast.type.Type; public class QuestionTypeCollector implements FormVisitor<Void>, StatementVisitor<Void> { private final Map<Identifier, Type> questionsTypes; public QuestionTypeCollector(final Form form) { questionsTypes = new HashMap<>(); form.accept(this); } public Type get(final Identifier questionId) { return questionsTypes.get(questionId); } @Override public Void visit(final ComputedQuestion question) { questionsTypes.put(question.getId(), question.getType()); return null; } @Override public Void visit(final Question question) { questionsTypes.put(question.getId(), question.getType()); return null; } @Override public Void visit(final Conditional conditional) { conditional.getQuestions().forEach(q -> q.accept(this)); return null; } @Override public Void visit(final Form form) { form.getStatements().forEach(s -> s.accept(this)); return null; } }