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&lt;Ordering&gt;</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&lt;Ordering&gt;</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(-)
----------------------------------------------------------------------