diff options
| author | yzhou <yujiao.zhou@gmail.com> | 2015-04-21 10:34:27 +0100 |
|---|---|---|
| committer | yzhou <yujiao.zhou@gmail.com> | 2015-04-21 10:34:27 +0100 |
| commit | 9ce65c5a963b03ee97fe9cb6c5aa65a3c04a80a8 (patch) | |
| tree | 47511c0fb89dccff0db4b5990522e04f294d795b /src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java | |
| parent | b1ac207612ee8b045244253fb94b866104bc34f2 (diff) | |
| download | ACQuA-9ce65c5a963b03ee97fe9cb6c5aa65a3c04a80a8.tar.gz ACQuA-9ce65c5a963b03ee97fe9cb6c5aa65a3c04a80a8.zip | |
initial version
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java')
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java | 92 |
1 files changed, 92 insertions, 0 deletions
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 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.query; | ||
| 2 | |||
| 3 | import java.util.Iterator; | ||
| 4 | import java.util.Set; | ||
| 5 | |||
| 6 | public class AnswerTuplesImp implements AnswerTuples { | ||
| 7 | |||
| 8 | int m_index; | ||
| 9 | Iterator<AnswerTuple> m_iter; | ||
| 10 | Set<AnswerTuple> m_answers1, m_answers2; | ||
| 11 | String[] m_answerVars; | ||
| 12 | AnswerTuple m_tuple; | ||
| 13 | |||
| 14 | public AnswerTuplesImp(String[] answerVars, Set<AnswerTuple> answers) { | ||
| 15 | m_answers1 = answers; | ||
| 16 | m_answers2 = null; | ||
| 17 | m_answerVars = answerVars; | ||
| 18 | reset(); | ||
| 19 | } | ||
| 20 | |||
| 21 | public AnswerTuplesImp(String[] answerVars, Set<AnswerTuple> answers1, Set<AnswerTuple> answers2) { | ||
| 22 | m_answers1 = answers1; | ||
| 23 | m_answers2 = answers2; | ||
| 24 | m_answerVars = answerVars; | ||
| 25 | reset(); | ||
| 26 | } | ||
| 27 | |||
| 28 | @Override | ||
| 29 | public boolean isValid() { | ||
| 30 | return m_tuple != null; | ||
| 31 | } | ||
| 32 | |||
| 33 | @Override | ||
| 34 | public int getArity() { | ||
| 35 | return m_answerVars.length; | ||
| 36 | } | ||
| 37 | |||
| 38 | @Override | ||
| 39 | public void moveNext() { | ||
| 40 | if (m_iter != null && m_iter.hasNext()) { | ||
| 41 | m_tuple = m_iter.next(); | ||
| 42 | return ; | ||
| 43 | } | ||
| 44 | else if (m_answers2 != null && m_index == 1){ | ||
| 45 | ++m_index; | ||
| 46 | m_iter = m_answers2.iterator(); | ||
| 47 | if (m_iter.hasNext()) { | ||
| 48 | m_tuple = m_iter.next(); | ||
| 49 | return ; | ||
| 50 | } | ||
| 51 | } | ||
| 52 | else | ||
| 53 | m_tuple = null; | ||
| 54 | } | ||
| 55 | |||
| 56 | @Override | ||
| 57 | public void dispose() {} | ||
| 58 | |||
| 59 | @Override | ||
| 60 | public void reset() { | ||
| 61 | if (m_answers1 == null || m_answers1.isEmpty()) { | ||
| 62 | m_index = 2; | ||
| 63 | m_iter = m_answers2 == null ? null : m_answers2.iterator(); | ||
| 64 | } | ||
| 65 | else { | ||
| 66 | m_index = 1; | ||
| 67 | m_iter = m_answers1.iterator(); | ||
| 68 | } | ||
| 69 | moveNext(); | ||
| 70 | } | ||
| 71 | |||
| 72 | @Override | ||
| 73 | public boolean contains(AnswerTuple t) { | ||
| 74 | return m_answers1.contains(t) || (m_answers2 != null && m_answers2.contains(t)); | ||
| 75 | } | ||
| 76 | |||
| 77 | @Override | ||
| 78 | public AnswerTuple getTuple() { | ||
| 79 | return m_tuple; | ||
| 80 | } | ||
| 81 | |||
| 82 | @Override | ||
| 83 | public String[] getAnswerVariables() { | ||
| 84 | return m_answerVars; | ||
| 85 | } | ||
| 86 | |||
| 87 | @Override | ||
| 88 | public void remove() { | ||
| 89 | m_iter.remove(); | ||
| 90 | } | ||
| 91 | |||
| 92 | } | ||
