package ql.semantics; import ql.ast.expression.Expr; import ql.ast.statement.Question; import java.util.*; import java.util.stream.Collectors; /** * Created by Nik on 10-3-15. */ public class CondQuestionTable implements Iterable<Question> { private final List<Question> ids; private final Map<Question, Expr> idToCondition; private final String title; public CondQuestionTable(String title) { this.title = title; this.ids = new ArrayList<>(); this.idToCondition = new HashMap<>(); } public String getTitle() { return this.title; } public void addQuestion(Expr condition, Question question) { this.ids.add(question); this.idToCondition.put(question, condition); } public Expr getCondition(String questionId) { List<Question> qs = this.getQuestionsWithId(questionId); return this.idToCondition.get(qs.get(0)); } public Question getQuestion(String questionId) { List<Question> qs = this.getQuestionsWithId(questionId); return qs.get(0); } @Override public Iterator<Question> iterator() { return this.ids.iterator(); } private List<Question> getQuestionsWithId(String id) { return this.idToCondition.keySet().stream() .filter(q -> q.getId().equals(id)) .collect(Collectors.toList()); } }