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 2019/08/26 12:35:30 UTC
[cayenne] branch master updated: CAY-2610 Align methods in
ObjectSelect and SQLSelect
This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new be23f59 CAY-2610 Align methods in ObjectSelect and SQLSelect
be23f59 is described below
commit be23f59f5c371d9eef02eb1550d8fe68d970da1e
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Mon Aug 26 15:35:16 2019 +0300
CAY-2610 Align methods in ObjectSelect and SQLSelect
---
.../org/apache/cayenne/query/ColumnSelect.java | 29 +++++++++--------
.../org/apache/cayenne/query/ObjectSelect.java | 15 ++++-----
.../java/org/apache/cayenne/query/SQLSelect.java | 37 +++++++++++-----------
.../java/org/apache/cayenne/query/SQLSelectIT.java | 14 ++++----
4 files changed, 48 insertions(+), 47 deletions(-)
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
index b82c8c8..a102fcd 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
@@ -384,18 +384,19 @@ public class ColumnSelect<T> extends FluentSelect<T> {
* }
* </pre>
*
- * @param firstProperty first property
- * @param otherProperties array of properties to select
+ * @param properties array of properties to select
* @see ColumnSelect#column(BaseProperty)
* @see ColumnSelect#columns(Collection)
*/
@SuppressWarnings("unchecked")
- public ColumnSelect<Object[]> columns(BaseProperty<?> firstProperty, BaseProperty<?>... otherProperties) {
+ public ColumnSelect<Object[]> columns(BaseProperty<?>... properties) {
+ if (properties.length == 0) {
+ throw new IllegalArgumentException("properties must contain at least one element");
+ }
if (columns == null) {
- columns = new ArrayList<>(otherProperties.length + 1);
+ columns = new ArrayList<>(properties.length);
}
- columns.add(firstProperty);
- Collections.addAll(columns, otherProperties);
+ Collections.addAll(columns, properties);
singleColumn = false;
return (ColumnSelect<Object[]>)this;
}
@@ -406,7 +407,7 @@ public class ColumnSelect<T> extends FluentSelect<T> {
* (root entity properties, function call expressions, properties of relationships, etc).</p>
* <p>
* @param properties collection of properties, <b>must</b> contain at least one element
- * @see ColumnSelect#columns(BaseProperty, BaseProperty[])
+ * @see ColumnSelect#columns(BaseProperty[])
*/
@SuppressWarnings("unchecked")
public ColumnSelect<Object[]> columns(Collection<BaseProperty<?>> properties) {
@@ -438,7 +439,7 @@ public class ColumnSelect<T> extends FluentSelect<T> {
}
/**
- * <p>Shortcut for {@link #columns(BaseProperty, BaseProperty[])} columns}(Property.COUNT)</p>
+ * <p>Shortcut for {@link #columns(BaseProperty[])} columns}(Property.COUNT)</p>
*/
public ColumnSelect<Object[]> count() {
return columns(PropertyFactory.COUNT);
@@ -455,7 +456,7 @@ public class ColumnSelect<T> extends FluentSelect<T> {
/**
* <p>Select minimum value of property</p>
- * @see ColumnSelect#columns(BaseProperty, BaseProperty[])
+ * @see ColumnSelect#columns(BaseProperty[])
*/
public ColumnSelect<Object[]> min(ComparableProperty<?> property) {
return columns(property.min());
@@ -463,7 +464,7 @@ public class ColumnSelect<T> extends FluentSelect<T> {
/**
* <p>Select maximum value of property</p>
- * @see ColumnSelect#columns(BaseProperty, BaseProperty[])
+ * @see ColumnSelect#columns(BaseProperty[])
*/
public ColumnSelect<Object[]> max(ComparableProperty<?> property) {
return columns(property.max());
@@ -471,7 +472,7 @@ public class ColumnSelect<T> extends FluentSelect<T> {
/**
* <p>Select average value of property</p>
- * @see ColumnSelect#columns(BaseProperty, BaseProperty[])
+ * @see ColumnSelect#columns(BaseProperty[])
* @deprecated since 4.2 use {@link #avg(NumericProperty)}
*/
@Deprecated
@@ -481,7 +482,7 @@ public class ColumnSelect<T> extends FluentSelect<T> {
/**
* <p>Select average value of property</p>
- * @see ColumnSelect#columns(BaseProperty, BaseProperty[])
+ * @see ColumnSelect#columns(BaseProperty[])
*/
public ColumnSelect<Object[]> avg(NumericProperty<?> property) {
return columns(property.avg());
@@ -489,7 +490,7 @@ public class ColumnSelect<T> extends FluentSelect<T> {
/**
* <p>Select sum of values</p>
- * @see ColumnSelect#columns(BaseProperty, BaseProperty[])
+ * @see ColumnSelect#columns(BaseProperty[])
* @deprecated since 4.2 use {@link #sum(NumericProperty)}
*/
@Deprecated
@@ -499,7 +500,7 @@ public class ColumnSelect<T> extends FluentSelect<T> {
/**
* <p>Select sum of values</p>
- * @see ColumnSelect#columns(BaseProperty, BaseProperty[])
+ * @see ColumnSelect#columns(BaseProperty[])
*/
public <E extends Number> ColumnSelect<Object[]> sum(NumericProperty<E> property) {
return columns(property.sum());
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java
index 1ce27ac..6638d9a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java
@@ -143,11 +143,10 @@ public class ObjectSelect<T> extends FluentSelect<T> {
* Creates a ColumnSelect that will fetch multiple columns of a given {@link ObjEntity}
*
* @param entityType base persistent class that will be used as a root for this query
- * @param firstColumn column to select
- * @param otherColumns columns to select
+ * @param columns columns to select
*/
- public static ColumnSelect<Object[]> columnQuery(Class<?> entityType, BaseProperty<?> firstColumn, BaseProperty<?>... otherColumns) {
- return new ColumnSelect<Object[]>().entityType(entityType).columns(firstColumn, otherColumns);
+ public static ColumnSelect<Object[]> columnQuery(Class<?> entityType, BaseProperty<?>... columns) {
+ return new ColumnSelect<Object[]>().entityType(entityType).columns(columns);
}
protected ObjectSelect() {
@@ -543,15 +542,15 @@ public class ObjectSelect<T> extends FluentSelect<T> {
* @param properties array of properties to select
* @see ObjectSelect#column(BaseProperty)
*/
- public ColumnSelect<Object[]> columns(BaseProperty<?> firstProperty, BaseProperty<?>... properties) {
- return new ColumnSelect<>(this).columns(firstProperty, properties);
+ public ColumnSelect<Object[]> columns(BaseProperty<?>... properties) {
+ return new ColumnSelect<>(this).columns(properties);
}
/**
* <p>Select one specific property.</p>
* <p>Can be any property that can be resolved against root entity type
* (root entity's property, function call expression, property of relationships, etc)</p>
- * <p>If you need several columns use {@link ObjectSelect#columns(BaseProperty, BaseProperty[])} method.</p>
+ * <p>If you need several columns use {@link ObjectSelect#columns(BaseProperty[])} method.</p>
* <p>
* <pre>
* {@code
@@ -562,7 +561,7 @@ public class ObjectSelect<T> extends FluentSelect<T> {
* </pre>
* </p>
* @param property single property to select
- * @see ObjectSelect#columns(BaseProperty, BaseProperty[])
+ * @see ObjectSelect#columns(BaseProperty[])
*/
public <E> ColumnSelect<E> column(BaseProperty<E> property) {
return new ColumnSelect<>(this).column(property);
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
index b2f426f..2102a9f 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
@@ -137,7 +137,7 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
* Creates query that selects scalar value and uses default routing
*
* @since 4.1
- * @deprecated since 4.2. Use {@link #arrayQuery(String)}
+ * @deprecated since 4.2. Use {@link #columnQuery(String)}
*/
@Deprecated
public static SQLSelect<Object[]> scalarQuery(String sql) {
@@ -146,11 +146,11 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
}
/**
- * Creates query that selects scalar value and uses default routing
+ * Creates query that selects scalar values (as Object[]) and uses default routing
*
* @since 4.2
*/
- public static SQLSelect<Object[]> arrayQuery(String sql) {
+ public static SQLSelect<Object[]> columnQuery(String sql) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
return query.useScalar();
}
@@ -159,7 +159,7 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
* Creates query that selects scalar values (as Object[]) and uses routing based on the
* provided DataMap name.
* @since 4.1
- * @deprecated since 4.2. Use {@link #arrayQuery(String, String)}
+ * @deprecated since 4.2. Use {@link #columnQuery(String, String)}
*/
@Deprecated
public static SQLSelect<Object[]> scalarQuery(String sql, String dataMapName) {
@@ -174,7 +174,7 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
*
* @since 4.2
*/
- public static SQLSelect<Object[]> arrayQuery(String sql, String dataMapName) {
+ public static SQLSelect<Object[]> columnQuery(String sql, String dataMapName) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
query.dataMapName = dataMapName;
return query.useScalar();
@@ -184,12 +184,12 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
* Creates query that selects scalar values (as Object[]) and uses default routing
*
* @since 4.1
- * @deprecated since 4.2. Use {@link #arrayQuery(String, Class, Class...)}
+ * @deprecated since 4.2. Use {@link #columnQuery(String, Class...)}
*/
@Deprecated
- public static SQLSelect<Object[]> scalarQuery(String sql, Class<?> firstType, Class<?>... types) {
+ public static SQLSelect<Object[]> scalarQuery(String sql, Class<?>... types) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
- return query.resultColumnsTypes(firstType).resultColumnsTypes(types).useScalar();
+ return query.resultColumnsTypes(types).useScalar();
}
/**
@@ -197,9 +197,9 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
*
* @since 4.2
*/
- public static SQLSelect<Object[]> arrayQuery(String sql, Class<?> firstType, Class<?>... types) {
+ public static SQLSelect<Object[]> columnQuery(String sql, Class<?>... types) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
- return query.resultColumnsTypes(firstType).resultColumnsTypes(types).useScalar();
+ return query.resultColumnsTypes(types).useScalar();
}
/**
@@ -207,16 +207,15 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
* provided DataMap name.
*
* @since 4.1
- * @deprecated since 4.2. Use {@link #arrayQuery(String, String, Class, Class...)}
+ * @deprecated since 4.2. Use {@link #columnQuery(String, String, Class...)}
*/
@Deprecated
public static SQLSelect<Object[]> scalarQuery(String sql,
String dataMapName,
- Class<?> firstType,
Class<?>... types) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
query.dataMapName = dataMapName;
- return query.resultColumnsTypes(firstType).resultColumnsTypes(types).useScalar();
+ return query.resultColumnsTypes(types).useScalar();
}
/**
@@ -225,17 +224,19 @@ public class SQLSelect<T> extends IndirectQuery implements Select<T> {
*
* @since 4.2
*/
- public static SQLSelect<Object[]> arrayQuery(String sql,
- String dataMapName,
- Class<?> firstType,
- Class<?>... types) {
+ public static SQLSelect<Object[]> columnQuery(String sql,
+ String dataMapName,
+ Class<?>... types) {
SQLSelect<Object[]> query = new SQLSelect<>(sql);
query.dataMapName = dataMapName;
- return query.resultColumnsTypes(firstType).resultColumnsTypes(types).useScalar();
+ return query.resultColumnsTypes(types).useScalar();
}
@SuppressWarnings("unchecked")
private <E> SQLSelect<E> resultColumnsTypes(Class<?>... types) {
+ if(types.length == 0) {
+ throw new IllegalArgumentException("Empty types");
+ }
if(resultColumnsTypes == null) {
resultColumnsTypes = new ArrayList<>(types.length);
}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
index 4185bb7..d1484d1 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
@@ -150,7 +150,7 @@ public class SQLSelectIT extends ServerCase {
public void testObjectArrayWithDefaultTypesReturnAndDirectives() throws Exception {
createArtistDataSet();
- List<Object[]> result = SQLSelect.arrayQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT")
+ List<Object[]> result = SQLSelect.columnQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT")
.select(context);
assertEquals(2, result.size());
@@ -164,7 +164,7 @@ public class SQLSelectIT extends ServerCase {
public void testObjectArrayReturnAndDirectives() throws Exception {
createArtistDataSet();
- SQLSelect.arrayQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT",
+ SQLSelect.columnQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT",
Integer.class, String.class).select(context);
}
@@ -172,7 +172,7 @@ public class SQLSelectIT extends ServerCase {
public void testObjectArrayWithOneObjectDefaultTypesReturnAndDirectives() throws Exception {
createArtistDataSet();
- List<Object[]> result = SQLSelect.arrayQuery("SELECT #result('ARTIST_ID' 'java.lang.Long') FROM ARTIST_CT")
+ List<Object[]> result = SQLSelect.columnQuery("SELECT #result('ARTIST_ID' 'java.lang.Long') FROM ARTIST_CT")
.select(context);
assertEquals(2, result.size());
@@ -185,7 +185,7 @@ public class SQLSelectIT extends ServerCase {
public void test_ObjectArrayQueryWithDefaultTypes() throws Exception {
createPaintingsDataSet();
- List<Object[]> result = SQLSelect.arrayQuery("SELECT PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING")
+ List<Object[]> result = SQLSelect.columnQuery("SELECT PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING")
.select(context);
assertEquals(20, result.size());
@@ -196,7 +196,7 @@ public class SQLSelectIT extends ServerCase {
public void test_ObjectQueryWithDefaultType() throws Exception {
createPaintingsDataSet();
- List<Object[]> result = SQLSelect.arrayQuery("SELECT PAINTING_ID FROM PAINTING")
+ List<Object[]> result = SQLSelect.columnQuery("SELECT PAINTING_ID FROM PAINTING")
.select(context);
assertEquals(20, result.size());
assertTrue(result.get(0) instanceof Object[]);
@@ -207,7 +207,7 @@ public class SQLSelectIT extends ServerCase {
public void test_ObjectArrayQueryException() throws Exception {
createPaintingsDataSet();
- SQLSelect<Object[]> query = SQLSelect.arrayQuery("SELECT PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING", Integer.class, String.class);
+ SQLSelect<Object[]> query = SQLSelect.columnQuery("SELECT PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING", Integer.class, String.class);
context.performQuery(query);
}
@@ -225,7 +225,7 @@ public class SQLSelectIT extends ServerCase {
public void testObjectArrayWithCustomType() throws SQLException {
createArtistDataSet();
- List<Object[]> results = SQLSelect.arrayQuery("SELECT * FROM ARTIST_CT",
+ List<Object[]> results = SQLSelect.columnQuery("SELECT * FROM ARTIST_CT",
Integer.class, String.class, LocalDateTime.class).select(context);
assertEquals(2, results.size());