You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by an...@apache.org on 2015/05/14 15:46:24 UTC
svn commit: r1679369 - /db/jdo/trunk/api/src/java/javax/jdo/query/
Author: andyj
Date: Thu May 14 13:46:24 2015
New Revision: 1679369
URL: http://svn.apache.org/r1679369
Log:
JDO-652 Initial snapshot of the expression classes needed to generate a "typed" JDOQL query.
Added:
db/jdo/trunk/api/src/java/javax/jdo/query/
db/jdo/trunk/api/src/java/javax/jdo/query/BooleanExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/ByteExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/CharacterExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/CollectionExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/ComparableExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/DateExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/DateTimeExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/EnumExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/Expression.java
db/jdo/trunk/api/src/java/javax/jdo/query/ListExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/MapExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/NumericExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/ObjectExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/OrderExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/PersistableExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/StringExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/SubqueryExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/TimeExpression.java
db/jdo/trunk/api/src/java/javax/jdo/query/package.html
Added: db/jdo/trunk/api/src/java/javax/jdo/query/BooleanExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/BooleanExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/BooleanExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/BooleanExpression.java Thu May 14 13:46:24 2015
@@ -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 javax.jdo.query;
+
+/**
+ * Representation of a boolean expression.
+ */
+public interface BooleanExpression extends ComparableExpression<Boolean>
+{
+ /**
+ * Method to return the AND of this expression and the other expression.
+ * @param expr The other expression
+ * @return The resultant (boolean) expression
+ */
+ BooleanExpression and(BooleanExpression expr);
+
+ /**
+ * Method to return the OR of this expression and the other expression.
+ * @param expr The other expression
+ * @return The resultant (boolean) expression
+ */
+ BooleanExpression or(BooleanExpression expr);
+
+ /**
+ * Method to negate this expression.
+ * @return The negated expression
+ */
+ BooleanExpression not();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/ByteExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/ByteExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/ByteExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/ByteExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,24 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of a byte expression.
+ */
+public interface ByteExpression extends ComparableExpression<Byte>
+{
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/CharacterExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/CharacterExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/CharacterExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/CharacterExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,35 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of a character expression.
+ */
+public interface CharacterExpression extends ComparableExpression<Character>
+{
+ /**
+ * Method to return a CharacterExpression representing this CharacterExpression in lower case.
+ * @return The lower case expression
+ */
+ CharacterExpression toLowerCase();
+
+ /**
+ * Method to return a CharacterExpression representing this CharacterExpression in upper case.
+ * @return The upper case expression
+ */
+ CharacterExpression toUpperCase();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/CollectionExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/CollectionExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/CollectionExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/CollectionExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,54 @@
+/*
+ * 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 javax.jdo.query;
+
+import java.util.Collection;
+
+/**
+ * Representation of a collection in a query.
+ *
+ * @param <T> Java type being represented here
+ * @param <E> Element type of the collection being represented here
+ */
+public interface CollectionExpression<T extends Collection<E>, E> extends Expression<T>
+{
+ /**
+ * Method returning whether the specified element expression is contained in this collection.
+ * @param expr The element expression
+ * @return Whether it is contained here
+ */
+ BooleanExpression contains(Expression<E> expr);
+
+ /**
+ * Method returning whether the specified element is contained in this collection.
+ * @param elem The element
+ * @return Whether it is contained here
+ */
+ BooleanExpression contains(E elem);
+
+ /**
+ * Method returning whether the collection is empty.
+ * @return Whether it is empty
+ */
+ BooleanExpression isEmpty();
+
+ /**
+ * Method returning an expression for the size of the collection
+ * @return The size
+ */
+ NumericExpression<Integer> size();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/ComparableExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/ComparableExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/ComparableExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/ComparableExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,112 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of an expression for a Java type that implements java.lang.Comparable.
+ * Nore that the methods taking Expression as an argument could have been defined to take
+ * ComparableExpression but that would then have prevented code like
+ * <pre>
+ * NumericExpression param = (NumericExpression)tq.parameter("criticalValue", Double.class);
+ * tq.filter(cand.value.lt(param));
+ * </pre>
+ * and we would have had to cast the parameter to NumericExpression
+ *
+ * @param <T> Java type being represented here
+ */
+public interface ComparableExpression<T> extends Expression<T>
+{
+ /**
+ * Method returning whether this expression is less than the other expression.
+ * @param expr Other expression
+ * @return Whether this is less than the other
+ */
+ BooleanExpression lt(ComparableExpression expr);
+
+ /**
+ * Method returning whether this expression is less than the literal.
+ * @param t literal
+ * @return Whether this is less than the other
+ */
+ BooleanExpression lt(T t);
+
+ /**
+ * Method returning whether this expression is less than or equal the other expression.
+ * @param expr Other expression
+ * @return Whether this is less than or equal the other
+ */
+ BooleanExpression lteq(ComparableExpression expr);
+
+ /**
+ * Method returning whether this expression is less than or equal the literal.
+ * @param t literal
+ * @return Whether this is less than or equal the other
+ */
+ BooleanExpression lteq(T t);
+
+ /**
+ * Method returning whether this expression is greater than the other expression.
+ * @param expr Other expression
+ * @return Whether this is greater than the other
+ */
+ BooleanExpression gt(ComparableExpression expr);
+
+ /**
+ * Method returning whether this expression is greater than the literal.
+ * @param t literal
+ * @return Whether this is greater than the other
+ */
+ BooleanExpression gt(T t);
+
+ /**
+ * Method returning whether this expression is greater than or equal the other expression.
+ * @param expr Other expression
+ * @return Whether this is greater than or equal to the other
+ */
+ BooleanExpression gteq(ComparableExpression expr);
+
+ /**
+ * Method returning whether this expression is greater than or equal the literal.
+ * @param t literal
+ * @return Whether this is greater than or equal to the other
+ */
+ BooleanExpression gteq(T t);
+
+ /**
+ * Method to return a numeric expression representing the aggregated minimum of this expression.
+ * @return Numeric expression for the minimum
+ */
+ NumericExpression min();
+
+ /**
+ * Method to return a numeric expression representing the aggregated maximum of this expression.
+ * @return Numeric expression for the maximum
+ */
+ NumericExpression max();
+
+ /**
+ * Method to return an order expression for this expression in ascending order.
+ * @return The order expression
+ */
+ OrderExpression asc();
+
+ /**
+ * Method to return an order expression for this expression in descending order.
+ * @return The order expression
+ */
+ OrderExpression desc();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/DateExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/DateExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/DateExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/DateExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,41 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of a date in a query.
+ */
+public interface DateExpression extends ComparableExpression<java.sql.Date>
+{
+ /**
+ * Accessor for the year of this date.
+ * @return Expression for the year
+ */
+ NumericExpression<Integer> getYear();
+
+ /**
+ * Accessor for the month of this date.
+ * @return Expression for the month
+ */
+ NumericExpression<Integer> getMonth();
+
+ /**
+ * Accessor for the day (of the month) of this date.
+ * @return Expression for the day of the month
+ */
+ NumericExpression<Integer> getDay();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/DateTimeExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/DateTimeExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/DateTimeExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/DateTimeExpression.java Thu May 14 13:46:24 2015
@@ -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 javax.jdo.query;
+
+/**
+ * Representation of a date-time type in a query.
+ */
+public interface DateTimeExpression extends ComparableExpression<java.util.Date>
+{
+ /**
+ * Accessor for the year of this date-time.
+ * @return Expression for the year
+ */
+ NumericExpression<Integer> getYear();
+
+ /**
+ * Accessor for the month of this date-time.
+ * @return Expression for the month
+ */
+ NumericExpression<Integer> getMonth();
+
+ /**
+ * Accessor for the day (of the month) of this date-time.
+ * @return Expression for the day of the month
+ */
+ NumericExpression<Integer> getDay();
+
+ /**
+ * Accessor for the hour of this date-time.
+ * @return Expression for the hour
+ */
+ NumericExpression<Integer> getHour();
+
+ /**
+ * Accessor for the minute of this date-time.
+ * @return Expression for the minute
+ */
+ NumericExpression<Integer> getMinute();
+
+ /**
+ * Accessor for the second of this date-time.
+ * @return Expression for the second
+ */
+ NumericExpression<Integer> getSecond();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/EnumExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/EnumExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/EnumExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/EnumExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,31 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of an Enum in a query.
+ *
+ * @param <T> Enum type
+ */
+public interface EnumExpression<T> extends ComparableExpression<Enum>
+{
+ /**
+ * Method to return an expression for the ordinal of this enum.
+ * @return Expression for the ordinal of the passed enum
+ */
+ NumericExpression ordinal();
+}
Added: db/jdo/trunk/api/src/java/javax/jdo/query/Expression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/Expression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/Expression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/Expression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,79 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of an expression in a query.
+ *
+ * @param <T> Java type being represented here
+ */
+public interface Expression<T>
+{
+ /**
+ * Method returning whether this expression equals the other expression.
+ * @param expr Other expression
+ * @return Whether they are equal
+ */
+ BooleanExpression eq(Expression expr);
+
+ /**
+ * Method returning whether this expression equals the literal.
+ * @param t Literal
+ * @return Whether they are equal
+ */
+ BooleanExpression eq(T t);
+
+ /**
+ * Method returning whether this expression doesn't equal the other expression.
+ * @param expr Other expression
+ * @return Whether they are not equal
+ */
+ BooleanExpression ne(Expression expr);
+
+ /**
+ * Method returning whether this expression doesn't equal the literal.
+ * @param t literal
+ * @return Whether they are not equal
+ */
+ BooleanExpression ne(T t);
+
+ /**
+ * Method to return a numeric expression representing the aggregated count of this expression.
+ * @return Numeric expression for the count
+ */
+ NumericExpression<Long> count();
+
+ /**
+ * Method to return a numeric expression representing the aggregated (distinct) count of this expression.
+ * @return Numeric expression for the distinct count
+ */
+ NumericExpression<Long> countDistinct();
+
+ /**
+ * Return an expression for whether this expression is an instanceof the supplied class.
+ * @param cls Class to check against
+ * @return Whether it is an instanceof
+ */
+ BooleanExpression instanceOf(Class cls);
+
+ /**
+ * Return an expression where this expression is cast to the specified type.
+ * @param cls Class to cast to
+ * @return The cast expression
+ */
+ Expression cast(Class cls);
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/ListExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/ListExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/ListExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/ListExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,42 @@
+/*
+ * 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 javax.jdo.query;
+
+import java.util.List;
+
+/**
+ * Representation of a List in a query.
+ *
+ * @param <T> Java type being represented here
+ * @param <E> Element type of the List being represented here
+ */
+public interface ListExpression<T extends List<E>, E> extends CollectionExpression<T, E>
+{
+ /**
+ * Method returning the element at this position in the List.
+ * @param posExpr The position expression
+ * @return The element at this position in the List
+ */
+ Expression<E> get(NumericExpression<Integer> posExpr);
+
+ /**
+ * Method returning the element at this position in the List.
+ * @param pos The position
+ * @return The element at this position in the List
+ */
+ Expression<E> get(int pos);
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/MapExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/MapExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/MapExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/MapExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,83 @@
+/*
+ * 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 javax.jdo.query;
+
+import java.util.Map;
+
+/**
+ * Representation of a map in a query.
+ *
+ * @param <T> Java type being represented here
+ * @param <K> Key type of the map being represented here
+ * @param <V> Value type of the map being represented here
+ */
+public interface MapExpression<T extends Map<K, V>, K, V> extends Expression<T>
+{
+ /**
+ * Method returning whether the specified key expression is contained in this map.
+ * @param expr The key expression
+ * @return Whether it is contained here
+ */
+ BooleanExpression containsKey(Expression<K> expr);
+
+ /**
+ * Method returning whether the specified key is contained in this map.
+ * @param key The key
+ * @return Whether it is contained here
+ */
+ BooleanExpression containsKey(K key);
+
+ /**
+ * Method returning whether the specified value expression is contained in this map.
+ * @param expr The value expression
+ * @return Whether it is contained here
+ */
+ BooleanExpression containsValue(Expression<V> expr);
+
+ /**
+ * Method returning whether the specified value is contained in this map.
+ * @param value The value
+ * @return Whether it is contained here
+ */
+ BooleanExpression containsValue(V value);
+
+ /**
+ * Method returning whether the specified entry expression is contained in this map.
+ * @param expr The entry expression
+ * @return Whether it is contained here
+ */
+ BooleanExpression containsEntry(Expression<Map.Entry<K, V>> expr);
+
+ /**
+ * Method returning whether the specified entry is contained in this map.
+ * @param entry The entry expression
+ * @return Whether it is contained here
+ */
+ BooleanExpression containsEntry(Map.Entry<K, V> entry);
+
+ /**
+ * Method returning whether the map is empty.
+ * @return Whether it is empty
+ */
+ BooleanExpression isEmpty();
+
+ /**
+ * Method returning an expression for the size of the map
+ * @return The size
+ */
+ NumericExpression<Integer> size();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/NumericExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/NumericExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/NumericExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/NumericExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,179 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of a numeric expression.
+ *
+ * @param <T> Number type
+ */
+public interface NumericExpression<T> extends ComparableExpression<Number>
+{
+ /**
+ * Method to return an expression for this expression added to the passed expression.
+ * @param expr The other expression
+ * @return The summation
+ */
+ NumericExpression add(Expression expr);
+
+ /**
+ * Method to return an expression for this expression added to the passed number.
+ * @param num Number to add
+ * @return The summation
+ */
+ NumericExpression add(Number num);
+
+ /**
+ * Method to return an expression for this expression subtracting the passed expression.
+ * @param expr The other expression
+ * @return The difference
+ */
+ NumericExpression sub(Expression expr);
+
+ /**
+ * Method to return an expression for this expression subtracting the passed number.
+ * @param num Number to subtract
+ * @return The difference
+ */
+ NumericExpression sub(Number num);
+
+ /**
+ * Method to return an expression for this expression multiplied by the passed expression.
+ * @param expr The other expression
+ * @return The multiplication
+ */
+ NumericExpression mul(Expression expr);
+
+ /**
+ * Method to return an expression for this expression multiplied by the passed number.
+ * @param num Number
+ * @return The multiplication
+ */
+ NumericExpression mul(Number num);
+
+ /**
+ * Method to return an expression for this expression divided by the passed expression.
+ * @param expr The other expression
+ * @return The division
+ */
+ NumericExpression div(Expression expr);
+
+ /**
+ * Method to return an expression for this expression divided by the passed number.
+ * @param num Number to divide by
+ * @return The division
+ */
+ NumericExpression div(Number num);
+
+ /**
+ * Method to return an expression for this expression modulus the passed expression (<pre>a % b</pre>).
+ * @param expr The other expression
+ * @return The modulus
+ */
+ NumericExpression mod(Expression expr);
+
+ /**
+ * Method to return an expression for this expression modulus the passed number.
+ * @param num Number
+ * @return The modulus
+ */
+ NumericExpression mod(Number num);
+
+ /**
+ * Method to return a numeric expression representing the aggregated average of this expression.
+ * @return Numeric expression for the average
+ */
+ NumericExpression avg();
+
+ /**
+ * Method to return a numeric expression representing the aggregated sum of this expression.
+ * @return Numeric expression for the sum
+ */
+ NumericExpression sum();
+
+ /**
+ * Method to return the absolute value expression of this expression.
+ * @return The absolute value expression
+ */
+ NumericExpression abs();
+
+ /**
+ * Method to return the square-root value expression of this expression.
+ * @return The square-root value expression
+ */
+ NumericExpression sqrt();
+
+ /**
+ * Method to return the arc cosine value expression of this expression.
+ * @return The arc cosine value expression
+ */
+ NumericExpression acos();
+
+ /**
+ * Method to return the arc sine value expression of this expression.
+ * @return The arc sine value expression
+ */
+ NumericExpression asin();
+
+ /**
+ * Method to return the arc tangent value expression of this expression.
+ * @return The arc tangent value expression
+ */
+ NumericExpression atan();
+
+ /**
+ * Method to return the sine value expression of this expression.
+ * @return The sine value expression
+ */
+ NumericExpression sin();
+
+ /**
+ * Method to return the cosine value expression of this expression.
+ * @return The cosine value expression
+ */
+ NumericExpression cos();
+
+ /**
+ * Method to return the tangent value expression of this expression.
+ * @return The tangent value expression
+ */
+ NumericExpression tan();
+
+ /**
+ * Method to return the exponential value expression of this expression.
+ * @return The exponential value expression
+ */
+ NumericExpression exp();
+
+ /**
+ * Method to return the logarithm value expression of this expression.
+ * @return The logarithm value expression
+ */
+ NumericExpression log();
+
+ /**
+ * Method to return the ceiling value expression of this expression.
+ * @return The ceiling value expression
+ */
+ NumericExpression ceil();
+
+ /**
+ * Method to return the floor value expression of this expression.
+ * @return The floor value expression
+ */
+ NumericExpression floor();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/ObjectExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/ObjectExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/ObjectExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/ObjectExpression.java Thu May 14 13:46:24 2015
@@ -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 javax.jdo.query;
+
+/**
+ * Representation of an Object as an expression.
+ * This handles all remaining Java types not handled by String, Numeric, Enum, Boolean, Collection, Map, etc.
+ *
+ * @param <T> Java type
+ */
+public interface ObjectExpression<T> extends Expression<T>
+{
+
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/OrderExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/OrderExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/OrderExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/OrderExpression.java Thu May 14 13:46:24 2015
@@ -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 javax.jdo.query;
+
+/**
+ * Expression representing the ordering using an expression and a direction.
+ *
+ * @param <T> Java type of the expression being represented here
+ */
+public interface OrderExpression<T>
+{
+ public enum OrderDirection
+ {
+ ASC,
+ DESC
+ }
+
+ /**
+ * Accessor for the direction of the ordering with this expression.
+ * @return The direction
+ */
+ OrderDirection getDirection();
+
+ /**
+ * Accessor for the expression being used for ordering.
+ * @return Ordering expression
+ */
+ Expression<T> getExpression();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/PersistableExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/PersistableExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/PersistableExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/PersistableExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,37 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Expression representing a persistable object in a query (e.g alias.persistableField).
+ *
+ * @param <T> (Persistable) Java type being represented here
+ */
+public interface PersistableExpression<T> extends Expression<T>
+{
+ /**
+ * Method to return an expression for the (JDO) identity of this persistable object.
+ * @return The identity expression
+ */
+ Expression jdoObjectId();
+
+ /**
+ * Method to return an expression for the (JDO) version of this persistable object.
+ * @return The version expression
+ */
+ Expression jdoVersion();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/StringExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/StringExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/StringExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/StringExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,188 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of a string in a query.
+ */
+public interface StringExpression extends ComparableExpression<String>
+{
+ /**
+ * Method to return an expression for this expression added to the passed expression (String concatenation).
+ * @param expr The other expression
+ * @return The summation
+ */
+ StringExpression add(Expression expr);
+
+ /**
+ * Method to return an expression for the character at a position of this string expression.
+ * @param pos The position
+ * @return Expression for the character
+ */
+ CharacterExpression charAt(int pos);
+
+ /**
+ * Method to return an expression for the character at a position of this string expression.
+ * @param pos The position
+ * @return Expression for the character
+ */
+ CharacterExpression charAt(NumericExpression<Integer> pos);
+
+ /**
+ * Method returning an expression for whether this string expression ends with the passed string expression.
+ * @param expr The expression that it ends with.
+ * @return Whether it ends with the other string
+ */
+ BooleanExpression endsWith(StringExpression expr);
+
+ /**
+ * Method returning an expression for whether this string expression ends with the passed string expression.
+ * @param str The string that it ends with.
+ * @return Whether it ends with the other string
+ */
+ BooleanExpression endsWith(String str);
+
+ /**
+ * Method returning an expression for whether this string expression is equal to (ignoring case) the
+ * passed string expression.
+ * @param expr The expression
+ * @return Whether they are equal
+ */
+ BooleanExpression equalsIgnoreCase(StringExpression expr);
+
+ /**
+ * Method returning an expression for whether this string expression is equal to (ignoring case) the
+ * passed string.
+ * @param str The string
+ * @return Whether they are equal
+ */
+ BooleanExpression equalsIgnoreCase(String str);
+
+ /**
+ * Method to return an expression for the position of the passed string in this string.
+ * @param expr The other string
+ * @return Expression for the position of the passed string
+ */
+ NumericExpression<Integer> indexOf(StringExpression expr);
+
+ /**
+ * Method to return an expression for the position of the passed string in this string.
+ * @param str The other string
+ * @return Expression for the position of the passed string
+ */
+ NumericExpression<Integer> indexOf(String str);
+
+ /**
+ * Method to return an expression for the position of the passed string in this string after a position.
+ * @param expr The other string
+ * @param pos Start point of the search
+ * @return Expression for the position of the passed string
+ */
+ NumericExpression<Integer> indexOf(StringExpression expr, NumericExpression<Integer> pos);
+
+ /**
+ * Method to return an expression for the position of the passed string in this string after a position.
+ * @param str The other string
+ * @param pos Start point of the search
+ * @return Expression for the position of the passed string
+ */
+ NumericExpression<Integer> indexOf(String str, NumericExpression<Integer> pos);
+
+ /**
+ * Method to return an expression for the position of the passed string in this string after a position.
+ * @param str The other string
+ * @param pos Start point of the search
+ * @return Expression for the position of the passed string
+ */
+ NumericExpression<Integer> indexOf(String str, int pos);
+
+ /**
+ * Method to return an expression for the position of the passed string in this string after a position.
+ * @param expr The other string
+ * @param pos Start point of the search
+ * @return Expression for the position of the passed string
+ */
+ NumericExpression<Integer> indexOf(StringExpression expr, int pos);
+
+ /**
+ * Method returning a expression for the length of this string.
+ * @return Expression for the length
+ */
+ NumericExpression<Integer> length();
+
+ /**
+ * Method returning an expression for whether this string expression starts with the passed string expression.
+ * @param expr The expression that it starts with.
+ * @return Whether it starts with the other string
+ */
+ BooleanExpression startsWith(StringExpression expr);
+
+ /**
+ * Method returning an expression for whether this string expression starts with the passed string.
+ * @param str The string that it starts with.
+ * @return Whether it starts with the other string
+ */
+ BooleanExpression startsWith(String str);
+
+ /**
+ * Method to return an expression for the substring of this string expression.
+ * @param pos The position of the start point of the substring
+ * @return Expression for the substring
+ */
+ StringExpression substring(NumericExpression<Integer> pos);
+
+ /**
+ * Method to return an expression for the substring of this string expression.
+ * @param pos The position of the start point of the substring
+ * @return Expression for the substring
+ */
+ StringExpression substring(int pos);
+
+ /**
+ * Method to return an expression for the substring of this string expression.
+ * @param startPos The position of the start point of the substring (inclusive, origin 0)
+ * @param endPos The position of the end point of the substring (exclusive, origin 0)
+ * @return Expression for the substring
+ */
+ StringExpression substring(NumericExpression<Integer> startPos, NumericExpression<Integer> endPos);
+
+ /**
+ * Method to return an expression for the substring of this string expression.
+ * @param startPos The position of the start point of the substring (inclusive, origin 0)
+ * @param endPos The position of the end point of the substring (exclusive, origin 0)
+ * @return Expression for the substring
+ */
+ StringExpression substring(int startPos, int endPos);
+
+ /**
+ * Method to return a StringExpression representing this string expression in lower case.
+ * @return The lower case expression
+ */
+ StringExpression toLowerCase();
+
+ /**
+ * Method to return a StringExpression representing this string expression in upper case.
+ * @return The upper case expression
+ */
+ StringExpression toUpperCase();
+
+ /**
+ * Method returning a string expression with whitespace trimmed from start and end.
+ * @return String expression with whitespace trimmed
+ */
+ StringExpression trim();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/SubqueryExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/SubqueryExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/SubqueryExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/SubqueryExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,25 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of a subquery in a query.
+ */
+public interface SubqueryExpression
+{
+
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/TimeExpression.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/TimeExpression.java?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/TimeExpression.java (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/TimeExpression.java Thu May 14 13:46:24 2015
@@ -0,0 +1,41 @@
+/*
+ * 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 javax.jdo.query;
+
+/**
+ * Representation of a time in a query.
+ */
+public interface TimeExpression extends ComparableExpression<java.sql.Time>
+{
+ /**
+ * Accessor for the hour of this time.
+ * @return Expression for the hour
+ */
+ NumericExpression<Integer> getHour();
+
+ /**
+ * Accessor for the minute of this time.
+ * @return Expression for the minute
+ */
+ NumericExpression<Integer> getMinute();
+
+ /**
+ * Accessor for the second of this time.
+ * @return Expression for the second
+ */
+ NumericExpression<Integer> getSecond();
+}
\ No newline at end of file
Added: db/jdo/trunk/api/src/java/javax/jdo/query/package.html
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api/src/java/javax/jdo/query/package.html?rev=1679369&view=auto
==============================================================================
--- db/jdo/trunk/api/src/java/javax/jdo/query/package.html (added)
+++ db/jdo/trunk/api/src/java/javax/jdo/query/package.html Thu May 14 13:46:24 2015
@@ -0,0 +1,20 @@
+<BODY>
+ Package providing expressions for building a typed JDOQL query.
+ Fields/Params/Vars of a persistable type are represented as <i>Expression</i>.
+ All generated "Q" classes extend "PersistableExpression", and provide the fields/properties
+ of the persistable class as Expression types.
+ Fields/Params/Vars of a container type are represented as <i>CollectionExpression</i>, <i>MapExpression</i>.
+ Fields/Params/Vars of other types, or literals are represented by
+ <ul>
+ <li>StringExpression</li>
+ <li>EnumExpression</li>
+ <li>NumericExpression</li>
+ <li>BooleanExpression</li>
+ <li>ByteExpression</li>
+ <li>CharacterExpression</li>
+ <li>DateExpression</li>
+ <li>DateTimeExpression</li>
+ <li>TimeExpression</li>
+ <li>ObjectExpression</li>
+ </ul>
+</BODY>
\ No newline at end of file