You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2012/02/23 16:34:29 UTC
svn commit: r1292828 [3/3] - in
/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query:
./ index/ qom/ qom/tree/
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/OrderingImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/OrderingImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/OrderingImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/OrderingImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.query.qom.Ordering;
+
+/**
+ * The implementation of the corresponding JCR interface.
+ */
+public class OrderingImpl extends QOMNode implements Ordering {
+
+ private final DynamicOperandImpl operand;
+ private final Order order;
+
+ public OrderingImpl(DynamicOperandImpl operand, Order order) {
+ this.operand = operand;
+ this.order = order;
+ }
+
+ public DynamicOperandImpl getOperand() {
+ return operand;
+ }
+
+ public String getOrder() {
+ return order.getName();
+ }
+
+ @Override
+ boolean accept(QOMVisitor v) {
+ return v.visit(this);
+ }
+
+ public String toString() {
+ if (order == Order.ASCENDING) {
+ return operand + " ASC";
+ } else {
+ return operand + " DESC";
+ }
+ }
+
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.query.qom.PropertyExistence;
+
+/**
+ * The implementation of the corresponding JCR interface.
+ */
+public class PropertyExistenceImpl extends ConstraintImpl implements PropertyExistence {
+
+ private final String selectorName;
+ private final String propertyName;
+ private SelectorImpl selector;
+
+ public PropertyExistenceImpl(String selectorName, String propertyName) {
+ this.selectorName = selectorName;
+ this.propertyName = propertyName;
+ }
+
+ public String getPropertyName() {
+ return propertyName;
+ }
+
+ public String getSelectorName() {
+ return selectorName;
+ }
+
+ boolean evaluate() {
+ return selector.currentNode().hasProperty(propertyName);
+ }
+
+ @Override
+ boolean accept(QOMVisitor v) {
+ return v.visit(this);
+ }
+
+ public String toString() {
+ // TODO quote property names?
+ return getSelectorName() + '.' + propertyName + " IS NOT NULL";
+ }
+
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.Value;
+import javax.jcr.query.qom.PropertyValue;
+
+/**
+ * The implementation of the corresponding JCR interface.
+ */
+public class PropertyValueImpl extends DynamicOperandImpl implements PropertyValue {
+
+ private final String selectorName;
+ private final String propertyName;
+ private SelectorImpl selector;
+
+ public PropertyValueImpl(String selectorName, String propertyName) {
+ this.selectorName = selectorName;
+ this.propertyName = propertyName;
+ }
+
+ public String getSelectorName() {
+ return selectorName;
+ }
+
+ public String getPropertyName() {
+ return propertyName;
+ }
+
+ @Override
+ boolean accept(QOMVisitor v) {
+ return v.visit(this);
+ }
+
+ public String toString() {
+ // TODO quote property names?
+ return getSelectorName() + '.' + propertyName;
+ }
+
+ @Override
+ Value currentValue() {
+ String value = selector.currentNode().getProperty(propertyName);
+ return query.getValueFactory().createValue(value);
+ }
+
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMNode.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMNode.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMNode.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import org.apache.jackrabbit.query.qom.QueryObjectModelImpl;
+
+
+abstract class QOMNode {
+
+ protected QueryObjectModelImpl query;
+
+ abstract boolean accept(QOMVisitor v);
+
+ protected String protect(Object expression) {
+ String str = expression.toString();
+ if (str.indexOf(' ') >= 0) {
+ return '(' + str + ')';
+ } else {
+ return str;
+ }
+ }
+
+ protected String quotePath(String path) {
+ return '[' + path + ']';
+ }
+
+}
+
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMTreeVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMTreeVisitor.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMTreeVisitor.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMTreeVisitor.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import org.apache.jackrabbit.query.qom.QueryObjectModelImpl;
+
+public abstract class QOMTreeVisitor implements QOMVisitor {
+
+ /**
+ * Calls accept on each of the attached constraints of the AND node.
+ */
+ @Override
+ public boolean visit(AndImpl node) {
+ node.getConstraint1().accept(this);
+ node.getConstraint2().accept(this);
+ return true;
+ }
+
+ /**
+ * Calls accept on the two operands in the comparison node.
+ */
+ @Override
+ public boolean visit(ComparisonImpl node) {
+ node.getOperand1().accept(this);
+ node.getOperand2().accept(this);
+ return true;
+ }
+
+ /**
+ * Calls accept on the static operand in the fulltext search constraint.
+ */
+ @Override
+ public boolean visit(FullTextSearchImpl node) {
+ node.getFullTextSearchExpression().accept(this);
+ return true;
+ }
+
+ /**
+ * Calls accept on the two sources and the join condition in the join node.
+ */
+ @Override
+ public boolean visit(JoinImpl node) {
+ node.getRight().accept(this);
+ node.getLeft().accept(this);
+ node.getJoinCondition().accept(this);
+ return true;
+ }
+
+ /**
+ * Calls accept on the property value in the length node.
+ */
+ @Override
+ public boolean visit(LengthImpl node) {
+ return node.getPropertyValue().accept(this);
+ }
+
+ /**
+ * Calls accept on the dynamic operand in the lower-case node.
+ */
+ @Override
+ public boolean visit(LowerCaseImpl node) {
+ return node.getOperand().accept(this);
+ }
+
+ /**
+ * Calls accept on the constraint in the NOT node.
+ */
+ @Override
+ public boolean visit(NotImpl node) {
+ return node.getConstraint().accept(this);
+ }
+
+ /**
+ * Calls accept on the dynamic operand in the ordering node.
+ */
+ @Override
+ public boolean visit(OrderingImpl node) {
+ return node.getOperand().accept(this);
+ }
+
+ /**
+ * Calls accept on each of the attached constraints of the OR node.
+ */
+ @Override
+ public boolean visit(OrImpl node) {
+ node.getConstraint1().accept(this);
+ node.getConstraint2().accept(this);
+ return true;
+ }
+
+ /**
+ * Calls accept on the following contained QOM nodes:
+ * <ul>
+ * <li>Source</li>
+ * <li>Constraints</li>
+ * <li>Orderings</li>
+ * <li>Columns</li>
+ * </ul>
+ */
+ public boolean visit(QueryObjectModelImpl node) {
+ node.getSource().accept(this);
+ ConstraintImpl constraint = node.getConstraint();
+ if (constraint != null) {
+ constraint.accept(this);
+ }
+ OrderingImpl[] orderings = node.getOrderings();
+ for (OrderingImpl ordering : orderings) {
+ ordering.accept(this);
+ }
+ ColumnImpl[] columns = node.getColumns();
+ for (ColumnImpl column : columns) {
+ column.accept(this);
+ }
+ return true;
+ }
+
+ /**
+ * Calls accept on the dynamic operand in the lower-case node.
+ */
+ @Override
+ public boolean visit(UpperCaseImpl node) {
+ return node.getOperand().accept(this);
+ }
+
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMVisitor.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMVisitor.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/QOMVisitor.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+public interface QOMVisitor {
+
+ boolean visit(AndImpl node);
+
+ boolean visit(BindVariableValueImpl node);
+
+ boolean visit(ChildNodeImpl node);
+
+ boolean visit(ChildNodeJoinConditionImpl node);
+
+ boolean visit(ColumnImpl node);
+
+ boolean visit(ComparisonImpl node);
+
+ boolean visit(DescendantNodeImpl node);
+
+ boolean visit(DescendantNodeJoinConditionImpl node);
+
+ boolean visit(EquiJoinConditionImpl node);
+
+ boolean visit(FullTextSearchImpl node);
+
+ boolean visit(FullTextSearchScoreImpl node);
+
+ boolean visit(JoinImpl node);
+
+ boolean visit(LengthImpl node);
+
+ boolean visit(LiteralImpl node);
+
+ boolean visit(LowerCaseImpl node);
+
+ boolean visit(NodeLocalNameImpl node);
+
+ boolean visit(NodeNameImpl node);
+
+ boolean visit(NotImpl node);
+
+ boolean visit(OrderingImpl node);
+
+ boolean visit(OrImpl node);
+
+ boolean visit(PropertyExistenceImpl node);
+
+ boolean visit(PropertyValueImpl node);
+
+ boolean visit(SameNodeImpl node);
+
+ boolean visit(SameNodeJoinConditionImpl node);
+
+ boolean visit(SelectorImpl node);
+
+ boolean visit(UpperCaseImpl node);
+
+}
\ No newline at end of file
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.query.qom.SameNode;
+
+/**
+ * The implementation of the corresponding JCR interface.
+ */
+public class SameNodeImpl extends ConstraintImpl implements SameNode {
+
+ private final String path;
+ private final String selectorName;
+ private SelectorImpl selector;
+
+ public SameNodeImpl(String selectorName, String path) {
+ this.selectorName = selectorName;
+ this.path = path;
+ }
+
+ public String getSelectorName() {
+ return selectorName;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ boolean evaluate() {
+ return selector.currentNode().getPath().equals(path);
+ }
+
+ @Override
+ boolean accept(QOMVisitor v) {
+ return v.visit(this);
+ }
+
+ public String toString() {
+ return "ISSAMENODE(" + getSelectorName() + ", " + quotePath(path) + ')';
+ }
+
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.query.qom.SameNodeJoinCondition;
+
+/**
+ * The implementation of the corresponding JCR interface.
+ */
+public class SameNodeJoinConditionImpl extends JoinConditionImpl implements SameNodeJoinCondition {
+
+ private final String selector1Name;
+ private final String selector2Name;
+ private final String selector2Path;
+
+ public SameNodeJoinConditionImpl(String selector1Name, String selector2Name,
+ String selector2Path) {
+ this.selector1Name = selector1Name;
+ this.selector2Name = selector2Name;
+ this.selector2Path = selector2Path;
+ }
+
+ public String getSelector1Name() {
+ return selector1Name;
+ }
+
+ public String getSelector2Name() {
+ return selector2Name;
+ }
+
+ public String getSelector2Path() {
+ return selector2Path;
+ }
+
+ @Override
+ boolean accept(QOMVisitor v) {
+ return v.visit(this);
+ }
+
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("ISSAMENODE(");
+ builder.append(getSelector1Name());
+ builder.append(", ");
+ builder.append(getSelector2Name());
+ if (selector2Path != null) {
+ builder.append(", ");
+ builder.append(quotePath(selector2Path));
+ }
+ builder.append(')');
+ return builder.toString();
+ }
+
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.query.qom.Selector;
+import org.apache.jackrabbit.mk.mem.NodeImpl;
+import org.apache.jackrabbit.query.qom.QueryObjectModelImpl;
+
+/**
+ * The implementation of the corresponding JCR interface.
+ */
+public class SelectorImpl extends SourceImpl implements Selector {
+
+ private final String nodeTypeName, selectorName;
+ private NodeImpl currentNode;
+
+ public SelectorImpl(String nodeTypeName, String selectorName) {
+ this.nodeTypeName = nodeTypeName;
+ this.selectorName = selectorName;
+ }
+
+ public String getNodeTypeName() {
+ return nodeTypeName;
+ }
+
+ public String getSelectorName() {
+ return selectorName;
+ }
+
+ @Override
+ boolean accept(QOMVisitor v) {
+ return v.visit(this);
+ }
+
+ public String toString() {
+ // TODO quote nodeTypeName?
+ return nodeTypeName + " AS " + getSelectorName();
+ }
+
+ @Override
+ public void init(QueryObjectModelImpl qom) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public NodeImpl currentNode() {
+ return currentNode;
+ }
+
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SourceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SourceImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SourceImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SourceImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.query.qom.Source;
+import org.apache.jackrabbit.query.qom.QueryObjectModelImpl;
+
+public abstract class SourceImpl extends QOMNode implements Source {
+
+ protected ConstraintImpl queryConstraint;
+ protected JoinConditionImpl joinCondition;
+ protected boolean outerJoin;
+
+ public void setQueryConstraint(ConstraintImpl queryConstraint) {
+ this.queryConstraint = queryConstraint;
+ }
+
+ public void setJoinCondition(JoinConditionImpl joinCondition) {
+ this.joinCondition = joinCondition;
+ }
+
+ public void setOuterJoin(boolean outerJoin) {
+ this.outerJoin = outerJoin;
+ }
+
+ public abstract void init(QueryObjectModelImpl qom);
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/StaticOperandImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/StaticOperandImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/StaticOperandImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/StaticOperandImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.Value;
+import javax.jcr.query.qom.StaticOperand;
+
+public abstract class StaticOperandImpl extends QOMNode implements StaticOperand {
+
+ abstract Value currentValue();
+
+}
Added: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/UpperCaseImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/UpperCaseImpl.java?rev=1292828&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/UpperCaseImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/UpperCaseImpl.java Thu Feb 23 15:34:27 2012
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.query.qom.tree;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.query.qom.UpperCase;
+
+/**
+ * The implementation of the corresponding JCR interface.
+ */
+public class UpperCaseImpl extends DynamicOperandImpl implements UpperCase {
+
+ private final DynamicOperandImpl operand;
+
+ public UpperCaseImpl(DynamicOperandImpl operand) {
+ this.operand = operand;
+ }
+
+ public DynamicOperandImpl getOperand() {
+ return operand;
+ }
+
+ @Override
+ boolean accept(QOMVisitor v) {
+ return v.visit(this);
+ }
+
+ public String toString() {
+ return "UPPER(" + operand + ')';
+ }
+
+ @Override
+ Value currentValue() throws RepositoryException {
+ Value value = operand.currentValue();
+ return query.getValueFactory().createValue(value.getString().toUpperCase());
+ }
+
+}