From 9ce65c5a963b03ee97fe9cb6c5aa65a3c04a80a8 Mon Sep 17 00:00:00 2001 From: yzhou Date: Tue, 21 Apr 2015 10:34:27 +0100 Subject: initial version --- src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java | 92 +++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java (limited to 'src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java') diff --git a/src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java b/src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java new file mode 100644 index 0000000..3e0f320 --- /dev/null +++ b/src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java @@ -0,0 +1,92 @@ +package uk.ac.ox.cs.pagoda.query; + +import java.util.Iterator; +import java.util.Set; + +public class AnswerTuplesImp implements AnswerTuples { + + int m_index; + Iterator m_iter; + Set m_answers1, m_answers2; + String[] m_answerVars; + AnswerTuple m_tuple; + + public AnswerTuplesImp(String[] answerVars, Set answers) { + m_answers1 = answers; + m_answers2 = null; + m_answerVars = answerVars; + reset(); + } + + public AnswerTuplesImp(String[] answerVars, Set answers1, Set answers2) { + m_answers1 = answers1; + m_answers2 = answers2; + m_answerVars = answerVars; + reset(); + } + + @Override + public boolean isValid() { + return m_tuple != null; + } + + @Override + public int getArity() { + return m_answerVars.length; + } + + @Override + public void moveNext() { + if (m_iter != null && m_iter.hasNext()) { + m_tuple = m_iter.next(); + return ; + } + else if (m_answers2 != null && m_index == 1){ + ++m_index; + m_iter = m_answers2.iterator(); + if (m_iter.hasNext()) { + m_tuple = m_iter.next(); + return ; + } + } + else + m_tuple = null; + } + + @Override + public void dispose() {} + + @Override + public void reset() { + if (m_answers1 == null || m_answers1.isEmpty()) { + m_index = 2; + m_iter = m_answers2 == null ? null : m_answers2.iterator(); + } + else { + m_index = 1; + m_iter = m_answers1.iterator(); + } + moveNext(); + } + + @Override + public boolean contains(AnswerTuple t) { + return m_answers1.contains(t) || (m_answers2 != null && m_answers2.contains(t)); + } + + @Override + public AnswerTuple getTuple() { + return m_tuple; + } + + @Override + public String[] getAnswerVariables() { + return m_answerVars; + } + + @Override + public void remove() { + m_iter.remove(); + } + +} -- cgit v1.2.3