aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java
diff options
context:
space:
mode:
authoryzhou <yujiao.zhou@gmail.com>2015-04-21 10:34:27 +0100
committeryzhou <yujiao.zhou@gmail.com>2015-04-21 10:34:27 +0100
commit9ce65c5a963b03ee97fe9cb6c5aa65a3c04a80a8 (patch)
tree47511c0fb89dccff0db4b5990522e04f294d795b /src/uk/ac/ox/cs/pagoda/query/AnswerTuplesImp.java
parentb1ac207612ee8b045244253fb94b866104bc34f2 (diff)
downloadACQuA-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.java92
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 @@
1package uk.ac.ox.cs.pagoda.query;
2
3import java.util.Iterator;
4import java.util.Set;
5
6public 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}