package nl.uva.se.ql.gui.builders;
import nl.uva.se.ql.ast.statement.Question;
import nl.uva.se.ql.ast.type.BooleanType;
import nl.uva.se.ql.ast.type.DecimalType;
import nl.uva.se.ql.ast.type.IntegerType;
import nl.uva.se.ql.ast.type.StringType;
import nl.uva.se.ql.ast.type.TypeVisitor;
import nl.uva.se.ql.ast.type.UndefinedType;
import nl.uva.se.ql.gui.mediators.Mediator;
import nl.uva.se.ql.gui.widgets.questions.BaseQuestion;
import nl.uva.se.ql.gui.widgets.questions.BooleanQuestion;
import nl.uva.se.ql.gui.widgets.questions.DecimalQuestion;
import nl.uva.se.ql.gui.widgets.questions.IntegerQuestion;
import nl.uva.se.ql.gui.widgets.questions.TextQuestion;
import nl.uva.se.ql.gui.widgets.questions.UndefinedQuestion;
public class QuestionBuilder implements TypeVisitor<BaseQuestion> {
private final Question question;
private final Mediator mediator;
public QuestionBuilder(Question question, Mediator mediator) {
this.question = question;
this.mediator = mediator;
}
@Override
public BooleanQuestion visit(BooleanType booleanType) {
return new BooleanQuestion(this.question, mediator);
}
@Override
public DecimalQuestion visit(DecimalType decimalType) {
return new DecimalQuestion(this.question, mediator);
}
@Override
public IntegerQuestion visit(IntegerType integerType) {
return new IntegerQuestion(this.question, mediator);
}
@Override
public TextQuestion visit(StringType stringType) {
return new TextQuestion(this.question, mediator);
}
@Override
public UndefinedQuestion visit(UndefinedType undefinedType) {
return new UndefinedQuestion(this.question, mediator);
}
}