1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.modeshape.jcr.query.qom;
25
26 import java.util.List;
27 import javax.jcr.query.qom.Column;
28 import javax.jcr.query.qom.Ordering;
29 import org.modeshape.graph.query.model.SetQuery;
30 import org.modeshape.jcr.api.query.qom.Limit;
31 import org.modeshape.jcr.api.query.qom.QueryObjectModelConstants;
32
33
34
35
36 public class JcrSetQuery extends SetQuery implements org.modeshape.jcr.api.query.qom.SetQuery, JcrQueryCommand {
37
38 private static final long serialVersionUID = 1L;
39
40
41
42
43
44
45
46
47
48
49 public JcrSetQuery( JcrQueryCommand left,
50 Operation operation,
51 JcrQueryCommand right,
52 boolean all ) {
53 super(left, operation, right, all);
54 }
55
56
57
58
59
60
61
62
63
64
65
66
67 public JcrSetQuery( JcrQueryCommand left,
68 Operation operation,
69 JcrQueryCommand right,
70 boolean all,
71 List<? extends JcrOrdering> orderings,
72 JcrLimit limit ) {
73 super(left, operation, right, all, orderings, limit != null ? limit : JcrLimit.NONE);
74 }
75
76
77
78
79
80
81 @Override
82 public JcrQueryCommand left() {
83 return (JcrQueryCommand)super.left();
84 }
85
86
87
88
89
90
91 @SuppressWarnings( "unchecked" )
92 @Override
93 public List<? extends JcrColumn> columns() {
94 return (List<? extends JcrColumn>)super.columns();
95 }
96
97
98
99
100
101
102 @SuppressWarnings( "unchecked" )
103 @Override
104 public List<? extends JcrOrdering> orderings() {
105 return (List<? extends JcrOrdering>)super.orderings();
106 }
107
108
109
110
111
112
113 @Override
114 public JcrQueryCommand right() {
115 return (JcrQueryCommand)super.right();
116 }
117
118
119
120
121
122
123 @Override
124 public JcrLimit limits() {
125 return (JcrLimit)super.limits();
126 }
127
128
129
130
131
132
133 @Override
134 public Limit getLimits() {
135 return limits();
136 }
137
138
139
140
141
142
143 @Override
144 public JcrQueryCommand getLeft() {
145 return left();
146 }
147
148
149
150
151
152
153 @Override
154 public JcrQueryCommand getRight() {
155 return right();
156 }
157
158
159
160
161
162
163 @Override
164 public String getOperation() {
165 switch (operation()) {
166 case UNION:
167 return QueryObjectModelConstants.JCR_SET_TYPE_UNION;
168 case INTERSECT:
169 return QueryObjectModelConstants.JCR_SET_TYPE_INTERSECT;
170 case EXCEPT:
171 return QueryObjectModelConstants.JCR_SET_TYPE_EXCEPT;
172 }
173 assert false;
174 return null;
175 }
176
177
178
179
180
181
182 @Override
183 public Column[] getColumns() {
184 List<? extends JcrColumn> columns = columns();
185 return columns.toArray(new Column[columns.size()]);
186 }
187
188
189
190
191
192
193 @Override
194 public Ordering[] getOrderings() {
195 List<? extends JcrOrdering> orderings = orderings();
196 return orderings.toArray(new Ordering[orderings.size()]);
197 }
198
199
200
201
202
203
204 @Override
205 public JcrSetQuery withLimit( int rowLimit ) {
206 if (limits().rowLimit() == rowLimit) return this;
207 return new JcrSetQuery(left(), operation(), right(), isAll(), orderings(), limits().withRowLimit(rowLimit));
208 }
209
210
211
212
213
214
215 @Override
216 public JcrSetQuery withOffset( int offset ) {
217 if (limits().offset() == offset) return this;
218 return new JcrSetQuery(left(), operation(), right(), isAll(), orderings(), limits().withOffset(offset));
219 }
220 }