package edu.parser.QLS; import edu.nodes.QuestionType; import edu.nodes.styles.Style; import edu.parser.QLS.nodes.AbstractNode; import edu.parser.QLS.nodes.QLSIdentifier; import edu.parser.QLS.nodes.Section; import edu.parser.QLS.nodes.Stylesheet; import edu.parser.QLS.nodes.statement.Default; import edu.parser.QLS.nodes.statement.Page; import edu.parser.QLS.nodes.statement.QLSQuestion; import java.util.ArrayList; import java.util.List; /** * Created by Steven Kok on 06/03/2015. */ public class QuestionRetriever implements QLSVisitor { private List<QLSQuestion> questions = new ArrayList<>(); public List<QLSQuestion> retrieveQuestions(Stylesheet stylesheet) { questions.clear(); visit(stylesheet); return questions; } @Override public AbstractNode visit(Stylesheet stylesheet) { stylesheet.getPages() .stream() .forEach(statement -> statement.accept(this)); return stylesheet; } @Override public AbstractNode visit(Page page) { page.getSections() .stream() .forEach(section -> section.accept(this)); return page; } @Override public AbstractNode visit(QLSQuestion question) { questions.add(question); return question; } @Override public AbstractNode visit(QLSIdentifier QLSIdentifier) { return QLSIdentifier; } @Override public AbstractNode visit(Section section) { section.getQuestions() .stream() .forEach(s -> s.accept(this)); return section; } @Override public AbstractNode visit(Default aDefault) { return aDefault; } @Override public AbstractNode visit(QuestionType questionType) { return questionType; } @Override public AbstractNode visit(Style style) { return style; } }