From 67acab88c028f8859aa85dac7c60698028b36bdd Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 4 Nov 2011 18:13:51 +0000 Subject: [PATCH] [#894] Move functions from Field to new org.jooq.impl.SQL and make them static - moved window functions --- .../src/org/jooq/test/jOOQAbstractTest.java | 24 ++++-------- jOOQ/src/main/java/org/jooq/Field.java | 37 ------------------- .../java/org/jooq/impl/AbstractField.java | 26 ------------- .../org/jooq/impl/AggregateFunctionImpl.java | 7 +++- .../src/main/java/org/jooq/impl/Function.java | 4 ++ 5 files changed, 18 insertions(+), 80 deletions(-) diff --git a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java index 899607d20f..0c61b6bf7c 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java @@ -6881,23 +6881,15 @@ public abstract class jOOQAbstractTest< // STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), VAR_SAMP() result = create().select(TBook_ID(), - TBook_ID().stddevPopOver() - .partitionByOne(), - TBook_ID().stddevSampOver() - .partitionByOne(), - TBook_ID().varPopOver() - .partitionByOne(), - TBook_ID().varSampOver() - .partitionByOne(), + stddevPop(TBook_ID()).over().partitionByOne(), + stddevSamp(TBook_ID()).over().partitionByOne(), + varPop(TBook_ID()).over().partitionByOne(), + varSamp(TBook_ID()).over().partitionByOne(), - TBook_ID().stddevPopOver() - .partitionBy(TBook_AUTHOR_ID()), - TBook_ID().stddevSampOver() - .partitionBy(TBook_AUTHOR_ID()), - TBook_ID().varPopOver() - .partitionBy(TBook_AUTHOR_ID()), - TBook_ID().varSampOver() - .partitionBy(TBook_AUTHOR_ID())) + stddevPop(TBook_ID()).over().partitionBy(TBook_AUTHOR_ID()), + stddevSamp(TBook_ID()).over().partitionBy(TBook_AUTHOR_ID()), + varPop(TBook_ID()).over().partitionBy(TBook_AUTHOR_ID()), + varSamp(TBook_ID()).over().partitionBy(TBook_AUTHOR_ID())) .from(TBook()) .orderBy(TBook_ID().asc()) .fetch(); diff --git a/jOOQ/src/main/java/org/jooq/Field.java b/jOOQ/src/main/java/org/jooq/Field.java index 4accdfbb02..dfc0a26798 100644 --- a/jOOQ/src/main/java/org/jooq/Field.java +++ b/jOOQ/src/main/java/org/jooq/Field.java @@ -36,7 +36,6 @@ package org.jooq; -import java.math.BigDecimal; import java.util.Collection; import java.util.Map; @@ -562,42 +561,6 @@ public interface Field extends NamedTypeProviderQueryPart, AliasProvider shr(Field value); - // ------------------------------------------------------------------------ - // Analytic (or window) functions created from this field - // ------------------------------------------------------------------------ - - /** - * The stddev_pop(field) over ([analytic clause]) function. - *

- * Window functions are supported in DB2, Postgres, Oracle, SQL Server and - * Sybase. - */ - WindowPartitionByStep stddevPopOver(); - - /** - * The stddev_samp(field) over ([analytic clause]) function. - *

- * Window functions are supported in DB2, Postgres, Oracle, SQL Server and - * Sybase. - */ - WindowPartitionByStep stddevSampOver(); - - /** - * The var_pop(field) over ([analytic clause]) function. - *

- * Window functions are supported in DB2, Postgres, Oracle, SQL Server and - * Sybase. - */ - WindowPartitionByStep varPopOver(); - - /** - * The var_samp(field) over ([analytic clause]) function. - *

- * Window functions are supported in DB2, Postgres, Oracle, SQL Server and - * Sybase. - */ - WindowPartitionByStep varSampOver(); - // ------------------------------------------------------------------------ // String functions created from this field // ------------------------------------------------------------------------ diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractField.java b/jOOQ/src/main/java/org/jooq/impl/AbstractField.java index 5f8a3db973..965184ecf7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractField.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractField.java @@ -45,7 +45,6 @@ import static org.jooq.impl.Factory.trueCondition; import static org.jooq.impl.Factory.val; import static org.jooq.impl.Factory.vals; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -67,7 +66,6 @@ import org.jooq.SQLDialectNotSupportedException; import org.jooq.Select; import org.jooq.SortField; import org.jooq.SortOrder; -import org.jooq.WindowPartitionByStep; abstract class AbstractField extends AbstractNamedTypeProviderQueryPart implements Field { @@ -378,30 +376,6 @@ abstract class AbstractField extends AbstractNamedTypeProviderQueryPart im return new Expression(ExpressionOperator.SHR, this, value); } - // ------------------------------------------------------------------------ - // Window functions created from this field - // ------------------------------------------------------------------------ - - @Override - public final WindowPartitionByStep stddevPopOver() { - return new WindowFunction(Term.STDDEV_POP, SQLDataType.NUMERIC, this); - } - - @Override - public final WindowPartitionByStep stddevSampOver() { - return new WindowFunction(Term.STDDEV_SAMP, SQLDataType.NUMERIC, this); - } - - @Override - public final WindowPartitionByStep varPopOver() { - return new WindowFunction(Term.VAR_POP, SQLDataType.NUMERIC, this); - } - - @Override - public final WindowPartitionByStep varSampOver() { - return new WindowFunction(Term.VAR_SAMP, SQLDataType.NUMERIC, this); - } - // ------------------------------------------------------------------------ // Functions created from this field // ------------------------------------------------------------------------ diff --git a/jOOQ/src/main/java/org/jooq/impl/AggregateFunctionImpl.java b/jOOQ/src/main/java/org/jooq/impl/AggregateFunctionImpl.java index aee6542826..1689b8bcc3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AggregateFunctionImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AggregateFunctionImpl.java @@ -56,6 +56,11 @@ class AggregateFunctionImpl extends Function implements AggregateFunction< @Override public final WindowFunction over() { - return new WindowFunction(getName(), getDataType(), getArguments()); + if (getTerm() != null) { + return new WindowFunction(getTerm(), getDataType(), getArguments()); + } + else { + return new WindowFunction(getName(), getDataType(), getArguments()); + } } } diff --git a/jOOQ/src/main/java/org/jooq/impl/Function.java b/jOOQ/src/main/java/org/jooq/impl/Function.java index cf2597102e..858936cc88 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Function.java +++ b/jOOQ/src/main/java/org/jooq/impl/Function.java @@ -102,6 +102,10 @@ class Function extends AbstractField { } } + final Term getTerm() { + return term; + } + /** * Subclasses may override this method to add an additional prefix in the * function SQL string