Extbase:
[Packages/TYPO3.CMS.git] / typo3 / sysext / extbase / Classes / Persistence / QOM / QueryObjectModelFactoryInterface.php
1 <?php
2 /***************************************************************
3 * Copyright notice
4 *
5 * (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
6 * All rights reserved
7 *
8 * This class is a backport of the corresponding class of FLOW3.
9 * All credits go to the v5 team.
10 *
11 * This script is part of the TYPO3 project. The TYPO3 project is
12 * free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
16 *
17 * The GNU General Public License can be found at
18 * http://www.gnu.org/copyleft/gpl.html.
19 *
20 * This script is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * This copyright notice MUST APPEAR in all copies of the script!
26 ***************************************************************/
27
28 /**
29 * A QueryObjectModelFactory creates instances of the JCR query object model.
30 *
31 * Refer to QueryObjectModelInterface for a description of the query object model.
32 *
33 * @package PHPCR
34 * @subpackage Persistence
35 * @version $Id: QueryObjectModelFactoryInterface.php 2191 2009-05-07 19:49:06Z k-fish $
36 */
37 interface Tx_Extbase_Persistence_QOM_QueryObjectModelFactoryInterface extends Tx_Extbase_Persistence_QOM_QueryObjectModelConstantsInterface {
38
39 /**
40 * Creates a query with one or more selectors.
41 * If source is a selector, that selector is the default selector of the
42 * query. Otherwise the query does not have a default selector.
43 *
44 * If the query is invalid, this method throws an InvalidQueryException.
45 * See the individual QOM factory methods for the validity criteria of each
46 * query element.
47 *
48 * @param mixed $source the Selector or the node-tuple Source; non-null
49 * @param Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint the constraint, or null if none
50 * @param array $orderings zero or more orderings; null is equivalent to a zero-length array
51 * @param array $columns the columns; null is equivalent to a zero-length array
52 * @return Tx_Extbase_Persistence_QOM_QueryObjectModelInterface the query; non-null
53 */
54 public function createQuery(Tx_Extbase_Persistence_QOM_SourceInterface $selectorOrSource, $constraint, array $orderings, array $columns);
55
56 /**
57 * Selects a subset of the nodes in the repository based on node type.
58 *
59 * The query is invalid if $nodeTypeName or $selectorName is not a
60 * syntactically valid JCR name.
61 *
62 * The query is invalid if $selectorName is identical to the name of another
63 * selector in the query.
64 *
65 * If $nodeTypeName is a valid JCR name but not the name of a node type
66 * available in the repository, the query is valid but the selector selects
67 * no nodes.
68 *
69 * @param string $nodeTypeName the name of the required node type; non-null
70 * @param string $selectorName the selector name; non-null
71 * @return Tx_Extbase_Persistence_QOM_SelectorInterface the selector; non-null
72 */
73 public function selector($nodeTypeName, $selectorName = NULL);
74
75 /**
76 * Performs a join between two node-tuple sources.
77 *
78 * The query is invalid if $left is the same source as $right.
79 *
80 * @param Tx_Extbase_Persistence_QOM_SourceInterface $left the left node-tuple source; non-null
81 * @param Tx_Extbase_Persistence_QOM_SourceInterface $right the right node-tuple source; non-null
82 * @param string $joinType one of QueryObjectModelConstants.JCR_JOIN_TYPE_*
83 * @param Tx_Extbase_Persistence_QOM_JoinConditionInterface $join Condition the join condition; non-null
84 * @return Tx_Extbase_Persistence_QOM_JoinInterface the join; non-null
85 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
86 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
87 */
88 public function join(Tx_Extbase_Persistence_QOM_SourceInterface $left, Tx_Extbase_Persistence_QOM_SourceInterface $right, $joinType, Tx_Extbase_Persistence_QOM_JoinConditionInterface $joinCondition);
89
90 /**
91 * Tests whether the value of a property in a first selector is equal to the
92 * value of a property in a second selector.
93 *
94 * The query is invalid if:
95 * * $selector1 is not the name of a selector in the query, or
96 * * $selector2 is not the name of a selector in the query, or
97 * * $selector1 is the same as $selector2, or
98 * * $property1 is not a syntactically valid JCR name, or
99 * * $property2 is not a syntactically valid JCR name, or
100 * * the value of $property1 is not the same property type as the value of
101 * $property2, or
102 * * $property1 is a multi-valued property, or
103 * * $property2 is a multi-valued property, or
104 * * $property1 is a BINARY property, or
105 * * $property2 is a BINARY property.
106 *
107 * @param string $selector1Name the name of the first selector; non-null
108 * @param string $property1Name the property name in the first selector; non-null
109 * @param string $selector2Name the name of the second selector; non-null
110 * @param string $property2Name the property name in the second selector; non-null
111 * @return Tx_Extbase_Persistence_QOM_EquiJoinConditionInterface the constraint; non-null
112 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
113 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
114 */
115 public function equiJoinCondition($selector1Name, $property1Name, $selector2Name, $property2Name);
116
117 /**
118 * Tests whether a first selector's node is the same as a node identified by
119 * relative path from a second selector's node.
120 *
121 * The query is invalid if:
122 * * $selector1 is not the name of a selector in the query, or
123 * * $selector2 is not the name of a selector in the query, or
124 * * $selector1 is the same as $selector2, or
125 * * $selector2Path is not a syntactically valid relative path. Note, however,
126 * that if the path is syntactically valid but does not identify a node
127 * visible to the current session, the query is valid but the constraint
128 * is not satisfied.
129 *
130 * @param string $selector1Name the name of the first selector; non-null
131 * @param string $selector2Name the name of the second selector; non-null
132 * @param string $selector2Path the path relative to the second selector; non-null
133 * @return Tx_Extbase_Persistence_QOM_SameNodeJoinConditionInterface the constraint; non-null
134 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
135 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
136 */
137 public function sameNodeJoinCondition($selector1Name, $selector2Name, $selector2Path = NULL);
138
139 /**
140 * Tests whether a first selector's node is a child of a second selector's node.
141 *
142 * The query is invalid if:
143 * $childSelector is not the name of a selector in the query, or
144 * $parentSelector is not the name of a selector in the query, or
145 * $childSelector is the same as $parentSelector.
146 *
147 * @param string $childSelectorName the name of the child selector; non-null
148 * @param string $parentSelectorName the name of the parent selector; non-null
149 * @return Tx_Extbase_Persistence_QOM_ChildNodeJoinConditionInterface the constraint; non-null
150 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
151 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
152 */
153 public function childNodeJoinCondition($childSelectorName, $parentSelectorName);
154
155 /**
156 * Tests whether a first selector's node is a descendant of a second selector's node.
157 *
158 * The query is invalid if:
159 * $descendantSelector is not the name of a selector in the query, or
160 * $ancestorSelector is not the name of a selector in the query, or
161 * $descendantSelector is the same as $ancestorSelector.
162 *
163 * @param string $descendantSelectorName the name of the descendant selector; non-null
164 * @param string $ancestorSelectorName the name of the ancestor selector; non-null
165 * @return Tx_Extbase_Persistence_QOM_DescendantNodeJoinConditionInterface the constraint; non-null
166 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
167 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
168 */
169 public function descendantNodeJoinCondition($descendantSelectorName, $ancestorSelectorName);
170
171 /**
172 * Performs a logical conjunction of two other constraints.
173 *
174 * @param Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint1 the first constraint; non-null
175 * @param Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint2 the second constraint; non-null
176 * @return Tx_Extbase_Persistence_QOM_AndInterface the And constraint; non-null
177 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
178 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
179 */
180 public function _and(Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint1, Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint2);
181
182 /**
183 * Performs a logical disjunction of two other constraints.
184 *
185 * @param Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint1 the first constraint; non-null
186 * @param Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint2 the second constraint; non-null
187 * @return Tx_Extbase_Persistence_QOM_OrInterface the Or constraint; non-null
188 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
189 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
190 */
191 public function _or(Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint1, Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint2);
192
193 /**
194 * Performs a logical negation of another constraint.
195 *
196 * @param Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint the constraint to be negated; non-null
197 * @return Tx_Extbase_Persistence_QOM_NotInterface the Not constraint; non-null
198 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
199 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
200 */
201 public function not(Tx_Extbase_Persistence_QOM_ConstraintInterface $constraint);
202
203 /**
204 * Filters node-tuples based on the outcome of a binary operation.
205 *
206 * @param Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand1 the first operand; non-null
207 * @param string $operator the operator; one of QueryObjectModelConstants.JCR_OPERATOR_*
208 * @param Tx_Extbase_Persistence_QOM_StaticOperandInterface $operand2 the second operand; non-null
209 * @return Tx_Extbase_Persistence_QOM_ComparisonInterface the constraint; non-null
210 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
211 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
212 */
213 public function comparison(Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand1, $operator, Tx_Extbase_Persistence_QOM_StaticOperandInterface $operand2);
214
215 /**
216 * Tests the existence of a property in the specified or default selector.
217 *
218 * The query is invalid if:
219 *
220 * $propertyName is not a syntactically valid JCR name, or
221 * $selectorName is not the name of a selector in the query.
222 *
223 * @param string $propertyName the property name; non-null
224 * @param string $selectorName the selector name; non-null
225 * @return Tx_Extbase_Persistence_QOM_PropertyExistenceInterface the constraint; non-null
226 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
227 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
228 */
229 public function propertyExistence($propertyName, $selectorName = NULL);
230
231 /**
232 * Performs a full-text search against the specified or default selector.
233 *
234 * The query is invalid if:
235 * $selectorName is not the name of a selector in the query, or
236 * $propertyName is specified but is not a syntactically valid JCR name, or
237 * $fullTextSearchExpression does not conform to the full text search grammar.
238 *
239 * If $propertyName is specified but, for a node-tuple, the selector node
240 * does not have a property named $propertyName, the query is valid but the
241 * constraint is not satisfied.
242 *
243 * @param string $propertyName the property name, or null to search all full-text indexed properties of the node (or node subgraph, in some implementations);
244 * @param string $fullTextSearchExpression the full-text search expression; non-null
245 * @param string $selectorName the selector name; non-null
246 * @return Tx_Extbase_Persistence_QOM_FullTextSearchInterface the constraint; non-null
247 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
248 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
249 */
250 public function fullTextSearch($propertyName, $fullTextSearchExpression, $selectorName = NULL);
251
252 /**
253 * Tests whether a node in the specified or default selector is reachable by
254 * a specified absolute path.
255 *
256 * The query is invalid if:
257 * $selectorName is not the name of a selector in the query, or
258 * $path is not a syntactically valid absolute path. Note,
259 * however, that if the path is syntactically valid but does not identify a
260 * node in the repository (or the node is not visible to this session,
261 * because of access control constraints), the query is valid but the
262 * constraint is not satisfied.
263 *
264 * @param string $selectorName the selector name; non-null
265 * @param string $path an absolute path; non-null
266 * @return Tx_Extbase_Persistence_QOM_SameNodeInterface the constraint; non-null
267 * @throws \F3\PHPCR\Query\InvalidQueryException if the query is invalid
268 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
269 */
270 public function sameNode($path, $selectorName = NULL);
271
272 /**
273 * Tests whether a node in the specified or default selector is a child of a
274 * node reachable by a specified absolute path.
275 *
276 * The query is invalid if:
277 * $selectorName is not the name of a selector in the query, or
278 * $path is not a syntactically valid absolute path. Note,
279 * however, that if the path is syntactically valid but does not identify a
280 * node in the repository (or the node is not visible to this session,
281 * because of access control constraints), the query is valid but the
282 * constraint is not satisfied.
283 *
284 * @param string $path an absolute path; non-null
285 * @param string $selectorName the selector name; non-null
286 * @return Tx_Extbase_Persistence_QOM_ChildNodeInterface the constraint; non-null
287 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
288 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
289 */
290 public function childNode($path, $selectorName = NULL);
291
292 /**
293 * Tests whether a node in the specified or default selector is a descendant
294 * of a node reachable by a specified absolute path.
295 *
296 * The query is invalid if:
297 * $selectorName is not the name of a selector in the query, or
298 * $path is not a syntactically valid absolute path. Note,
299 * however, that if the path is syntactically valid but does not identify a
300 * node in the repository (or the node is not visible to this session,
301 * because of access control constraints), the query is valid but the
302 * constraint is not satisfied.
303 *
304 * @param string $path an absolute path; non-null
305 * @param string $selectorName the selector name; non-null
306 * @return Tx_Extbase_Persistence_QOM_DescendantNodeInterface the constraint; non-null
307 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
308 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
309 */
310 public function descendantNode($path, $selectorName = NULL);
311
312 /**
313 * Evaluates to the value (or values, if multi-valued) of a property in the
314 * specified or default selector.
315 *
316 * The query is invalid if:
317 * $selectorName is not the name of a selector in the query, or
318 * $propertyName is not a syntactically valid JCR name.
319 *
320 * @param string $propertyName the property name; non-null
321 * @param string $selectorName the selector name; non-null
322 * @return Tx_Extbase_Persistence_QOM_PropertyValueInterface the operand; non-null
323 * @throws \F3\PHPCR\Query\InvalidQueryException if the query is invalid
324 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
325 */
326 public function propertyValue($propertyName, $selectorName = NULL);
327
328 /**
329 * Evaluates to the length (or lengths, if multi-valued) of a property.
330 *
331 * @param Tx_Extbase_Persistence_QOM_PropertyValueInterface $propertyValue the property value for which to compute the length; non-null
332 * @return Tx_Extbase_Persistence_QOM_LengthInterface the operand; non-null
333 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
334 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
335 */
336 public function length(Tx_Extbase_Persistence_QOM_PropertyValueInterface $propertyValue);
337
338 /**
339 * Evaluates to a NAME value equal to the prefix-qualified name of a node in
340 * the specified or default selector.
341 *
342 * The query is invalid if $selectorName is not the name of a selector in
343 * the query.
344 *
345 * @param string $selectorName the selector name; non-null
346 * @return Tx_Extbase_Persistence_QOM_NodeNameInterface the operand; non-null
347 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
348 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
349 */
350 public function nodeName($selectorName = NULL);
351
352 /**
353 * Evaluates to a NAME value equal to the local (unprefixed) name of a node in the specified or default selector.
354 *
355 * The query is invalid if $selectorName is not the name of a selector in
356 * the query.
357 *
358 * @param string $selectorName the selector name; non-null
359 * @return Tx_Extbase_Persistence_QOM_NodeLocalNameInterface the operand; non-null
360 * @throws \F3\PHPCR\Query\InvalidQueryException if the query is invalid
361 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
362 */
363 public function nodeLocalName($selectorName = NULL);
364
365 /**
366 * Evaluates to a DOUBLE value equal to the full-text search score of a node in the specified or default selector.
367 *
368 * The query is invalid if $selectorName is not the name of a selector in
369 * the query.
370 *
371 * @param string $selectorName the selector name; non-null
372 * @return Tx_Extbase_Persistence_QOM_FullTextSearchScoreInterface the operand; non-null
373 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
374 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
375 */
376 public function fullTextSearchScore($selectorName = NULL);
377
378 /**
379 * Evaluates to the lower-case string value (or values, if multi-valued) of an operand.
380 *
381 * @param Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand the operand whose value is converted to a lower-case string; non-null
382 * @return Tx_Extbase_Persistence_QOM_LowerCaseInterface the operand; non-null
383 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
384 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
385 */
386 public function lowerCase(Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand);
387
388 /**
389 * Evaluates to the upper-case string value (or values, if multi-valued) of an operand.
390 *
391 * @param Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand the operand whose value is converted to a upper-case string; non-null
392 * @return Tx_Extbase_Persistence_QOM_UpperCaseInterface the operand; non-null
393 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
394 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
395 */
396 public function upperCase(Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand);
397
398 /**
399 * Evaluates to the value of a bind variable.
400 *
401 * The query is invalid if $bindVariableName is not a valid JCR prefix.
402 *
403 * @param string $bindVariableName the bind variable name; non-null
404 * @return Tx_Extbase_Persistence_QOM_BindVariableValueInterface the operand; non-null
405 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
406 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
407 */
408 public function bindVariable($bindVariableName);
409
410 /**
411 * Evaluates to a literal value.
412 *
413 * The query is invalid if no value is bound to $literalValue.
414 *
415 * @param \F3\PHPCR\ValueInterface $literalValue the value
416 * @return \F3\PHPCR\ValueInterface the operand; non-null
417 * @throws \F3\PHPCR\Query\InvalidQueryException if a particular validity test is possible on this method, the implemention chooses to perform that test (and not leave it until later) on createQuery, and the parameters given fail that test
418 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
419 */
420 public function literal(Tx_Extbase_Persistence_ValueInterface $literalValue);
421
422 /**
423 * Orders by the value of the specified operand, in ascending order.
424 *
425 * The query is invalid if $operand does not evaluate to a scalar value.
426 *
427 * @param Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand the operand by which to order; non-null
428 * @return Tx_Extbase_Persistence_QOM_OrderingInterface the ordering
429 * @throws \F3\PHPCR\Query\InvalidQueryException if the query is invalid
430 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
431 */
432 public function ascending(Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand);
433
434 /**
435 * Orders by the value of the specified operand, in descending order.
436 *
437 * The query is invalid if $operand does not evaluate to a scalar value.
438 *
439 * @param Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand the operand by which to order; non-null
440 * @return Tx_Extbase_Persistence_QOM_OrderingInterface the ordering
441 * @throws \F3\PHPCR\Query\InvalidQueryException if the query is invalid
442 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
443 */
444 public function descending(Tx_Extbase_Persistence_QOM_DynamicOperandInterface $operand);
445
446 /**
447 * Identifies a property in the specified or default selector to include in
448 * the tabular view of query results.
449 * The column name is the property name if not given.
450 *
451 * The query is invalid if:
452 * $selectorName is not the name of a selector in the query, or
453 * $propertyName is specified but it is not a syntactically valid JCR name, or
454 * $propertyName is specified but does not evaluate to a scalar value, or
455 * $propertyName is specified but $columnName is omitted, or
456 * $propertyName is omitted but $columnName is specified, or
457 * the columns in the tabular view are not uniquely named, whether those
458 * column names are specified by $columnName (if $propertyName is specified)
459 * or generated as described above (if $propertyName is omitted).
460 *
461 * If $propertyName is specified but, for a node-tuple, the selector node
462 * does not have a property named $propertyName, the query is valid and the
463 * column has null value.
464 *
465 * @param string $propertyName the property name, or null to include a column for each single-value non-residual property of the selector's node type
466 * @param string $columnName the column name; must be null if propertyName is null
467 * @param string $selectorName the selector name; non-null
468 * @return Tx_Extbase_Persistence_QOM_ColumnInterface the column; non-null
469 * @throws \F3\PHPCR\Query\InvalidQueryException if the query has no default selector or is otherwise invalid
470 * @throws Tx_Extbase_Persistence_Exception_RepositoryException if the operation otherwise fails
471 */
472 public function column($propertyName, $columnName = NULL, $selectorName = NULL);
473
474 }
475
476 ?>