You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/08/02 09:16:55 UTC
[1/7] cayenne git commit: Changed SybaseAdapter to allow identity
(generated) columns
Repository: cayenne
Updated Branches:
refs/heads/master f4866e589 -> 78b0a653b
Changed SybaseAdapter to allow identity (generated) columns
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/ba6d053f
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/ba6d053f
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/ba6d053f
Branch: refs/heads/master
Commit: ba6d053fe8f042568bdba1af40d44876e7008041
Parents: f4866e5
Author: Lon Varscsak <lo...@gmail.com>
Authored: Tue Aug 1 13:06:51 2017 -0700
Committer: Lon Varscsak <lo...@gmail.com>
Committed: Tue Aug 1 13:06:51 2017 -0700
----------------------------------------------------------------------
.../org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java | 7 ++-----
.../java/org/apache/cayenne/dba/sybase/SybaseAdapter.java | 2 ++
2 files changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ba6d053f/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java
index 1a32cf4..8ac5014 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.dba.sqlserver;
+import java.util.List;
+
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.translator.select.QualifierTranslator;
import org.apache.cayenne.access.translator.select.QueryAssembler;
@@ -37,8 +39,6 @@ import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.resource.ResourceLocator;
-import java.util.List;
-
/**
* <p>
* Cayenne DbAdapter implementation for <a
@@ -88,9 +88,6 @@ public class SQLServerAdapter extends SybaseAdapter {
@Inject ValueObjectTypeRegistry valueObjectTypeRegistry) {
super(runtimeProperties, defaultExtendedTypes, userExtendedTypes, extendedTypeFactories, resourceLocator, valueObjectTypeRegistry);
- // TODO: i wonder if Sybase supports generated keys...
- // in this case we need to move this to the super.
- this.setSupportsGeneratedKeys(true);
this.setSupportsBatchUpdates(true);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ba6d053f/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
index 891995e..93c7554 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
@@ -61,6 +61,8 @@ public class SybaseAdapter extends JdbcAdapter {
@Inject(Constants.SERVER_RESOURCE_LOCATOR) ResourceLocator resourceLocator,
@Inject ValueObjectTypeRegistry valueObjectTypeRegistry) {
super(runtimeProperties, defaultExtendedTypes, userExtendedTypes, extendedTypeFactories, resourceLocator, valueObjectTypeRegistry);
+
+ this.setSupportsGeneratedKeys(true);
}
@Override
[7/7] cayenne git commit: Cleanup javadoc
Posted by nt...@apache.org.
Cleanup javadoc
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/78b0a653
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/78b0a653
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/78b0a653
Branch: refs/heads/master
Commit: 78b0a653bf42d9ba6bbe8287a1a995285727f6ce
Parents: 5adbd4f
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 2 12:14:29 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 2 12:14:29 2017 +0300
----------------------------------------------------------------------
.../src/main/java/org/apache/cayenne/query/Ordering.java | 7 +++++--
.../src/main/java/org/apache/cayenne/query/Orderings.java | 6 +++---
2 files changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/78b0a653/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java b/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
index 2fa0552..5bd24bc 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
@@ -468,6 +468,7 @@ public class Ordering implements Comparator<Object>, Serializable, XMLSerializab
*
* @param nextOrdering the next Ordering to chain to this
* @return a new Orderings with both Ordering
+ * @since 4.1
*/
public Orderings then(Ordering nextOrdering) {
return new Orderings(this, nextOrdering);
@@ -479,6 +480,7 @@ public class Ordering implements Comparator<Object>, Serializable, XMLSerializab
*
* @param nextOrderings the next Orderings to chain to this
* @return an array of sort orderings
+ * @since 4.1
*/
public Orderings then(Orderings nextOrderings) {
Orderings newOrderings = new Orderings(this);
@@ -488,8 +490,9 @@ public class Ordering implements Comparator<Object>, Serializable, XMLSerializab
/**
* @see Orderings#then(Orderings)
- * @param nextOrderings
- * @return
+ * @param nextOrderings the next Orderings to chain to this
+ * @return an array of sort orderings
+ * @since 4.1
*/
public Orderings then(List<Ordering> nextOrderings) {
Orderings newOrderings = new Orderings(this);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/78b0a653/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java b/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
index 69505b5..0bc35e7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
@@ -11,7 +11,7 @@ import java.util.List;
* <p>Example:</p>
* <pre>Person.COMPANY_NAME.asc().then(Person.FIRST_NAME.desc)</pre>
*
- * @since 4.0
+ * @since 4.1
*/
public class Orderings extends ArrayList<Ordering> {
@@ -63,8 +63,8 @@ public class Orderings extends ArrayList<Ordering> {
/**
* @see Orderings#then(Orderings)
- * @param nextOrderings
- * @return
+ * @param nextOrderings the sort ordering to add
+ * @return this
*/
public Orderings then(List<Ordering> nextOrderings) {
addAll(nextOrderings);
[6/7] cayenne git commit: Move createTableAppendColumn from
SQLServerAdapter up to SybaseAdapter
Posted by nt...@apache.org.
Move createTableAppendColumn from SQLServerAdapter up to SybaseAdapter
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/5adbd4f1
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/5adbd4f1
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/5adbd4f1
Branch: refs/heads/master
Commit: 5adbd4f17430e061da540f4531b070a4417878d3
Parents: 6896b93
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 2 12:13:48 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 2 12:13:48 2017 +0300
----------------------------------------------------------------------
.../cayenne/dba/sqlserver/SQLServerAdapter.java | 17 -----------------
.../apache/cayenne/dba/sybase/SybaseAdapter.java | 18 ++++++++++++++++++
2 files changed, 18 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5adbd4f1/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java
index 8ac5014..6930094 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java
@@ -32,7 +32,6 @@ import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.dba.sybase.SybaseAdapter;
import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
@@ -120,20 +119,4 @@ public class SQLServerAdapter extends SybaseAdapter {
return translator;
}
- /**
- * Overrides super implementation to correctly set up identity columns.
- *
- * @since 1.2
- */
- @Override
- public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column) {
-
- super.createTableAppendColumn(sqlBuffer, column);
-
- if (column.isGenerated()) {
- // current limitation - we don't allow to set identity parameters...
- sqlBuffer.append(" IDENTITY (1, 1)");
- }
- }
-
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5adbd4f1/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
index 93c7554..71fa2d9 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
@@ -44,6 +44,7 @@ import org.apache.cayenne.dba.JdbcAdapter;
import org.apache.cayenne.dba.PkGenerator;
import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.resource.ResourceLocator;
@@ -152,4 +153,21 @@ public class SybaseAdapter extends JdbcAdapter {
super.bindParameter(statement, binding);
}
}
+
+ /**
+ * Overrides super implementation to correctly set up identity columns.
+ *
+ * @since 1.2
+ * @since 4.1 moved from SQLServerAdapter to SybaseAdapter as it supports this too
+ */
+ @Override
+ public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column) {
+
+ super.createTableAppendColumn(sqlBuffer, column);
+
+ if (column.isGenerated()) {
+ // current limitation - we don't allow to set identity parameters...
+ sqlBuffer.append(" IDENTITY (1, 1)");
+ }
+ }
}
[5/7] cayenne git commit: Merge remote-tracking branch
'remotes/parent/pr/236' into asf-master
Posted by nt...@apache.org.
Merge remote-tracking branch 'remotes/parent/pr/236' into asf-master
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/6896b935
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/6896b935
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/6896b935
Branch: refs/heads/master
Commit: 6896b935a93eaf2c75cd5eefe17b3c1990263de2
Parents: ccdaeb8 162bcd3
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 2 11:42:03 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 2 11:42:03 2017 +0300
----------------------------------------------------------------------
.../org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java | 7 ++-----
.../java/org/apache/cayenne/dba/sybase/SybaseAdapter.java | 2 ++
2 files changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
[2/7] cayenne git commit: Added the Orderings class (a subclass of
ArrayList) to support chaning of asc() with then(..) through
Ordering
Posted by nt...@apache.org.
Added the Orderings class (a subclass of ArrayList<Ordering>) to support chaning of asc() with then(..) through Ordering
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/162bcd3d
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/162bcd3d
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/162bcd3d
Branch: refs/heads/master
Commit: 162bcd3d2f83eadd91fdda1e007a838ddc648071
Parents: ba6d053
Author: Lon Varscsak <lo...@gmail.com>
Authored: Tue Aug 1 13:10:58 2017 -0700
Committer: Lon Varscsak <lo...@gmail.com>
Committed: Tue Aug 1 13:10:58 2017 -0700
----------------------------------------------------------------------
.../java/org/apache/cayenne/exp/Property.java | 42 ++++-----
.../java/org/apache/cayenne/query/Ordering.java | 54 +++++++++--
.../org/apache/cayenne/query/Orderings.java | 95 ++++++++++++++++++++
3 files changed, 158 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/162bcd3d/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java
index 437930d..07b63a0 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java
@@ -18,19 +18,20 @@
****************************************************************/
package org.apache.cayenne.exp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.Persistent;
import org.apache.cayenne.exp.parser.ASTPath;
import org.apache.cayenne.query.Ordering;
+import org.apache.cayenne.query.Orderings;
import org.apache.cayenne.query.PrefetchTreeNode;
import org.apache.cayenne.query.SortOrder;
import org.apache.cayenne.reflect.PropertyUtils;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
/**
* <p>
* A property in a {@link org.apache.cayenne.DataObject}.
@@ -91,7 +92,8 @@ public class Property<E> {
* @see Property#create(String, Class)
* @deprecated use factory method Property.create("propertyName", PropertyType.class)
*/
- public Property(final String name) {
+ @Deprecated
+ public Property(final String name) {
this(name, null);
}
@@ -525,11 +527,9 @@ public class Property<E> {
/**
* @return Ascending sort orderings on this property.
*/
- public List<Ordering> ascs() {
- List<Ordering> result = new ArrayList<>(1);
- result.add(asc());
- return result;
- }
+ public Orderings ascs() {
+ return new Orderings(asc());
+ }
/**
* @return Ascending case insensitive sort orderings on this property.
@@ -541,11 +541,9 @@ public class Property<E> {
/**
* @return Ascending case insensitive sort orderings on this property.
*/
- public List<Ordering> ascInsensitives() {
- List<Ordering> result = new ArrayList<>(1);
- result.add(ascInsensitive());
- return result;
- }
+ public Orderings ascInsensitives() {
+ return new Orderings(ascInsensitive());
+ }
/**
* @return Descending sort orderings on this property.
@@ -557,10 +555,8 @@ public class Property<E> {
/**
* @return Descending sort orderings on this property.
*/
- public List<Ordering> descs() {
- List<Ordering> result = new ArrayList<>(1);
- result.add(desc());
- return result;
+ public Orderings descs() {
+ return new Orderings(desc());
}
/**
@@ -573,10 +569,8 @@ public class Property<E> {
/**
* @return Descending case insensitive sort orderings on this property.
*/
- public List<Ordering> descInsensitives() {
- List<Ordering> result = new ArrayList<>(1);
- result.add(descInsensitive());
- return result;
+ public Orderings descInsensitives() {
+ return new Orderings(descInsensitive());
}
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/162bcd3d/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java b/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
index 38d6a2e..2fa0552 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
@@ -19,6 +19,15 @@
package org.apache.cayenne.query;
+import java.io.PrintWriter;
+import java.io.Serializable;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.EmptyConfigurationNodeVisitor;
import org.apache.cayenne.exp.Expression;
@@ -31,15 +40,6 @@ import org.apache.cayenne.util.XMLEncoder;
import org.apache.cayenne.util.XMLSerializable;
import org.apache.commons.collections.ComparatorUtils;
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
/**
* Defines object sorting criteria, used either for in-memory sorting of object
* lists or as a specification for building <em>ORDER BY</em> clause of a
@@ -460,4 +460,40 @@ public class Ordering implements Comparator<Object>, Serializable, XMLSerializab
public SortOrder getSortOrder() {
return sortOrder;
}
+
+
+ /**
+ * Returns Orderings with this Ordering followed by the provided
+ * next Ordering.
+ *
+ * @param nextOrdering the next Ordering to chain to this
+ * @return a new Orderings with both Ordering
+ */
+ public Orderings then(Ordering nextOrdering) {
+ return new Orderings(this, nextOrdering);
+ }
+
+ /**
+ * Returns Orderings with this Ordering followed by the provided
+ * list of next Orderings.
+ *
+ * @param nextOrderings the next Orderings to chain to this
+ * @return an array of sort orderings
+ */
+ public Orderings then(Orderings nextOrderings) {
+ Orderings newOrderings = new Orderings(this);
+
+ return newOrderings.then(nextOrderings);
+ }
+
+ /**
+ * @see Orderings#then(Orderings)
+ * @param nextOrderings
+ * @return
+ */
+ public Orderings then(List<Ordering> nextOrderings) {
+ Orderings newOrderings = new Orderings(this);
+
+ return newOrderings.then(nextOrderings);
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/162bcd3d/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java b/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
new file mode 100644
index 0000000..69505b5
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
@@ -0,0 +1,95 @@
+package org.apache.cayenne.query;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * <p>Orderings is provided so that you can chain Ordering together and then use
+ * the result to pass into methods that require List<Ordering></p>
+ * <p>Example:</p>
+ * <pre>Person.COMPANY_NAME.asc().then(Person.FIRST_NAME.desc)</pre>
+ *
+ * @since 4.0
+ */
+public class Orderings extends ArrayList<Ordering> {
+
+ public Orderings() {
+ super();
+ }
+
+ public Orderings(int initialCapacity) {
+ super(initialCapacity);
+ }
+
+ public Orderings(Collection<? extends Ordering> c) {
+ super(c);
+ }
+
+ public Orderings(Ordering ordering) {
+ super(Arrays.asList(ordering));
+ }
+
+ public Orderings(Ordering... orderings) {
+ super(Arrays.asList(orderings));
+ }
+
+ /**
+ * Adds the given sort ordering to the end of this list and
+ * returns "this" so it can be chained again.
+ *
+ * @param nextOrdering the sort ordering to add
+ * @return this (with nextOrdering appended)
+ */
+ public Orderings then(Ordering nextOrdering) {
+ add(nextOrdering);
+
+ return this;
+ }
+
+ /**
+ * Adds the given sort orderings to the end of this list and returns
+ * "this" so it can be chained again.
+ *
+ * @param nextOrderings the sort ordering to add
+ * @return this (with nextOrderings appended)
+ */
+ public Orderings then(Orderings nextOrderings) {
+ addAll(nextOrderings);
+
+ return this;
+ }
+
+ /**
+ * @see Orderings#then(Orderings)
+ * @param nextOrderings
+ * @return
+ */
+ public Orderings then(List<Ordering> nextOrderings) {
+ addAll(nextOrderings);
+
+ return this;
+ }
+
+ /**
+ * Returns an list sorted with these Orderings.
+ *
+ * @param <T> the type of the list
+ * @param list the list to sort
+ * @return a sorted copy of the list
+ */
+ public <T> List<T> orderedList(List<T> list) {
+ return Ordering.orderedList(list, this);
+ }
+
+ /**
+ * Sorts the given array with these Orderings.
+ *
+ * @param <T> the type of the list
+ * @param list the list to sort
+ */
+ public <T> void orderList(List<T> list) {
+ Ordering.orderList(list, this);
+ }
+}
[3/7] cayenne git commit: Added the Orderings class (a subclass of
ArrayList) to support chaning of asc() with then(..) through
Ordering
Posted by nt...@apache.org.
Added the Orderings class (a subclass of ArrayList<Ordering>) to support chaning of asc() with then(..) through Ordering
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/8ed4db60
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/8ed4db60
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/8ed4db60
Branch: refs/heads/master
Commit: 8ed4db601270680bb1943285a0b970a0965018ef
Parents: f4866e5
Author: Lon Varscsak <lo...@gmail.com>
Authored: Tue Aug 1 13:10:58 2017 -0700
Committer: Lon Varscsak <lo...@gmail.com>
Committed: Tue Aug 1 13:15:46 2017 -0700
----------------------------------------------------------------------
.../java/org/apache/cayenne/exp/Property.java | 42 ++++-----
.../java/org/apache/cayenne/query/Ordering.java | 54 +++++++++--
.../org/apache/cayenne/query/Orderings.java | 95 ++++++++++++++++++++
3 files changed, 158 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8ed4db60/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java
index 437930d..07b63a0 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/Property.java
@@ -18,19 +18,20 @@
****************************************************************/
package org.apache.cayenne.exp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.Persistent;
import org.apache.cayenne.exp.parser.ASTPath;
import org.apache.cayenne.query.Ordering;
+import org.apache.cayenne.query.Orderings;
import org.apache.cayenne.query.PrefetchTreeNode;
import org.apache.cayenne.query.SortOrder;
import org.apache.cayenne.reflect.PropertyUtils;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
/**
* <p>
* A property in a {@link org.apache.cayenne.DataObject}.
@@ -91,7 +92,8 @@ public class Property<E> {
* @see Property#create(String, Class)
* @deprecated use factory method Property.create("propertyName", PropertyType.class)
*/
- public Property(final String name) {
+ @Deprecated
+ public Property(final String name) {
this(name, null);
}
@@ -525,11 +527,9 @@ public class Property<E> {
/**
* @return Ascending sort orderings on this property.
*/
- public List<Ordering> ascs() {
- List<Ordering> result = new ArrayList<>(1);
- result.add(asc());
- return result;
- }
+ public Orderings ascs() {
+ return new Orderings(asc());
+ }
/**
* @return Ascending case insensitive sort orderings on this property.
@@ -541,11 +541,9 @@ public class Property<E> {
/**
* @return Ascending case insensitive sort orderings on this property.
*/
- public List<Ordering> ascInsensitives() {
- List<Ordering> result = new ArrayList<>(1);
- result.add(ascInsensitive());
- return result;
- }
+ public Orderings ascInsensitives() {
+ return new Orderings(ascInsensitive());
+ }
/**
* @return Descending sort orderings on this property.
@@ -557,10 +555,8 @@ public class Property<E> {
/**
* @return Descending sort orderings on this property.
*/
- public List<Ordering> descs() {
- List<Ordering> result = new ArrayList<>(1);
- result.add(desc());
- return result;
+ public Orderings descs() {
+ return new Orderings(desc());
}
/**
@@ -573,10 +569,8 @@ public class Property<E> {
/**
* @return Descending case insensitive sort orderings on this property.
*/
- public List<Ordering> descInsensitives() {
- List<Ordering> result = new ArrayList<>(1);
- result.add(descInsensitive());
- return result;
+ public Orderings descInsensitives() {
+ return new Orderings(descInsensitive());
}
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8ed4db60/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java b/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
index 38d6a2e..2fa0552 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/Ordering.java
@@ -19,6 +19,15 @@
package org.apache.cayenne.query;
+import java.io.PrintWriter;
+import java.io.Serializable;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.configuration.EmptyConfigurationNodeVisitor;
import org.apache.cayenne.exp.Expression;
@@ -31,15 +40,6 @@ import org.apache.cayenne.util.XMLEncoder;
import org.apache.cayenne.util.XMLSerializable;
import org.apache.commons.collections.ComparatorUtils;
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
/**
* Defines object sorting criteria, used either for in-memory sorting of object
* lists or as a specification for building <em>ORDER BY</em> clause of a
@@ -460,4 +460,40 @@ public class Ordering implements Comparator<Object>, Serializable, XMLSerializab
public SortOrder getSortOrder() {
return sortOrder;
}
+
+
+ /**
+ * Returns Orderings with this Ordering followed by the provided
+ * next Ordering.
+ *
+ * @param nextOrdering the next Ordering to chain to this
+ * @return a new Orderings with both Ordering
+ */
+ public Orderings then(Ordering nextOrdering) {
+ return new Orderings(this, nextOrdering);
+ }
+
+ /**
+ * Returns Orderings with this Ordering followed by the provided
+ * list of next Orderings.
+ *
+ * @param nextOrderings the next Orderings to chain to this
+ * @return an array of sort orderings
+ */
+ public Orderings then(Orderings nextOrderings) {
+ Orderings newOrderings = new Orderings(this);
+
+ return newOrderings.then(nextOrderings);
+ }
+
+ /**
+ * @see Orderings#then(Orderings)
+ * @param nextOrderings
+ * @return
+ */
+ public Orderings then(List<Ordering> nextOrderings) {
+ Orderings newOrderings = new Orderings(this);
+
+ return newOrderings.then(nextOrderings);
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8ed4db60/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java b/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
new file mode 100644
index 0000000..69505b5
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/Orderings.java
@@ -0,0 +1,95 @@
+package org.apache.cayenne.query;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * <p>Orderings is provided so that you can chain Ordering together and then use
+ * the result to pass into methods that require List<Ordering></p>
+ * <p>Example:</p>
+ * <pre>Person.COMPANY_NAME.asc().then(Person.FIRST_NAME.desc)</pre>
+ *
+ * @since 4.0
+ */
+public class Orderings extends ArrayList<Ordering> {
+
+ public Orderings() {
+ super();
+ }
+
+ public Orderings(int initialCapacity) {
+ super(initialCapacity);
+ }
+
+ public Orderings(Collection<? extends Ordering> c) {
+ super(c);
+ }
+
+ public Orderings(Ordering ordering) {
+ super(Arrays.asList(ordering));
+ }
+
+ public Orderings(Ordering... orderings) {
+ super(Arrays.asList(orderings));
+ }
+
+ /**
+ * Adds the given sort ordering to the end of this list and
+ * returns "this" so it can be chained again.
+ *
+ * @param nextOrdering the sort ordering to add
+ * @return this (with nextOrdering appended)
+ */
+ public Orderings then(Ordering nextOrdering) {
+ add(nextOrdering);
+
+ return this;
+ }
+
+ /**
+ * Adds the given sort orderings to the end of this list and returns
+ * "this" so it can be chained again.
+ *
+ * @param nextOrderings the sort ordering to add
+ * @return this (with nextOrderings appended)
+ */
+ public Orderings then(Orderings nextOrderings) {
+ addAll(nextOrderings);
+
+ return this;
+ }
+
+ /**
+ * @see Orderings#then(Orderings)
+ * @param nextOrderings
+ * @return
+ */
+ public Orderings then(List<Ordering> nextOrderings) {
+ addAll(nextOrderings);
+
+ return this;
+ }
+
+ /**
+ * Returns an list sorted with these Orderings.
+ *
+ * @param <T> the type of the list
+ * @param list the list to sort
+ * @return a sorted copy of the list
+ */
+ public <T> List<T> orderedList(List<T> list) {
+ return Ordering.orderedList(list, this);
+ }
+
+ /**
+ * Sorts the given array with these Orderings.
+ *
+ * @param <T> the type of the list
+ * @param list the list to sort
+ */
+ public <T> void orderList(List<T> list) {
+ Ordering.orderList(list, this);
+ }
+}
[4/7] cayenne git commit: Merge remote-tracking branch
'remotes/parent/pr/237' into asf-master
Posted by nt...@apache.org.
Merge remote-tracking branch 'remotes/parent/pr/237' into asf-master
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/ccdaeb8b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/ccdaeb8b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/ccdaeb8b
Branch: refs/heads/master
Commit: ccdaeb8bd7dd7491c7ef2df7362d73293d13b6c8
Parents: f4866e5 8ed4db6
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 2 11:41:41 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 2 11:41:41 2017 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/exp/Property.java | 42 ++++-----
.../java/org/apache/cayenne/query/Ordering.java | 54 +++++++++--
.../org/apache/cayenne/query/Orderings.java | 95 ++++++++++++++++++++
3 files changed, 158 insertions(+), 33 deletions(-)
----------------------------------------------------------------------