package nl.uva.sc.encoders.qls.ast; import java.util.ArrayList; import java.util.Collection; import java.util.List; import nl.uva.sc.encoders.ql.ast.TextLocation; public class Page extends AstNode { private final String name; private final List<Section> sections; private final List<DefaultStyle> pageDefaultStyles; public Page(TextLocation textLocation, String name, List<Section> sections, List<DefaultStyle> pageDefaultStyles) { super(textLocation); this.name = name; this.sections = sections; this.pageDefaultStyles = pageDefaultStyles; } public String getName() { return name; } public List<Section> getSections() { return sections; } public Section getSection(String name) { for (Section section : sections) { if (section.getName().equals(name)) { return section; } } return null; } public List<DefaultStyle> getPageDefaultStyles() { return pageDefaultStyles; } public void collectQuestions(Collection<Question> questions) { for (Section section : sections) { section.collectQuestions(questions); } } public boolean containsQuestion(String name) { List<Question> questions = new ArrayList<>(); collectQuestions(questions); return questions.stream().anyMatch(question -> question.getName().equals(name)); } public DefaultStyle getDefaultStyle(String questionName) { for (Section section : sections) { if (section.containsQuestion(questionName)) { return section.getDefaultStyle(questionName); } } return null; } }