From 43b68b2935c9080ab202ecd3f959783c5968ce59 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 29 Apr 2021 12:07:14 +0200 Subject: [PATCH] [jOOQ/jOOQ#11812] Pull up Field.as() to SelectField.as() --- jOOQ/src/main/java/org/jooq/Field.java | 42 ----------------- jOOQ/src/main/java/org/jooq/SelectField.java | 46 +++++++++++++++++++ .../main/java/org/jooq/impl/AbstractRow.java | 36 ++++++++++----- 3 files changed, 71 insertions(+), 53 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Field.java b/jOOQ/src/main/java/org/jooq/Field.java index 7b32f2f860..7b5ef95ac8 100644 --- a/jOOQ/src/main/java/org/jooq/Field.java +++ b/jOOQ/src/main/java/org/jooq/Field.java @@ -242,48 +242,6 @@ extends @NotNull Field convertTo(Class toType, Function to); - /** - * Create an alias for this field. - *

- * Note that the case-sensitivity of the returned field depends on - * {@link Settings#getRenderQuotedNames()}. By default, field aliases are - * quoted, and thus case-sensitive in many SQL dialects! - * - * @param alias The alias name - * @return The field alias - */ - @NotNull - @Support - Field as(String alias); - - /** - * Create an alias for this field. - *

- * Note that the case-sensitivity of the returned field depends on - * {@link Settings#getRenderQuotedNames()} and the {@link Name}. By default, - * field aliases are quoted, and thus case-sensitive in many SQL dialects - - * use {@link DSL#unquotedName(String...)} for case-insensitive aliases. - *

- * If the argument {@link Name#getName()} is qualified, then the - * {@link Name#last()} part will be used. - * - * @param alias The alias name - * @return The field alias - */ - @NotNull - @Support - Field as(Name alias); - - /** - * Create an alias for this field based on another field's name. - * - * @param otherField The other field whose name this field is aliased with. - * @return The field alias. - */ - @NotNull - @Support - Field as(Field otherField); - /** * The name of the field. *

diff --git a/jOOQ/src/main/java/org/jooq/SelectField.java b/jOOQ/src/main/java/org/jooq/SelectField.java index c4a4d22cc9..2555fc736a 100644 --- a/jOOQ/src/main/java/org/jooq/SelectField.java +++ b/jOOQ/src/main/java/org/jooq/SelectField.java @@ -37,6 +37,10 @@ */ package org.jooq; +import org.jooq.conf.Settings; +import org.jooq.impl.DSL; + +import org.jetbrains.annotations.NotNull; /** * A QueryPart to be used exclusively in SELECT @@ -48,4 +52,46 @@ package org.jooq; */ public interface SelectField extends SelectFieldOrAsterisk, Named, Typed { + /** + * Create an alias for this field. + *

+ * Note that the case-sensitivity of the returned field depends on + * {@link Settings#getRenderQuotedNames()}. By default, field aliases are + * quoted, and thus case-sensitive in many SQL dialects! + * + * @param alias The alias name + * @return The field alias + */ + @NotNull + @Support + Field as(String alias); + + /** + * Create an alias for this field. + *

+ * Note that the case-sensitivity of the returned field depends on + * {@link Settings#getRenderQuotedNames()} and the {@link Name}. By default, + * field aliases are quoted, and thus case-sensitive in many SQL dialects - + * use {@link DSL#unquotedName(String...)} for case-insensitive aliases. + *

+ * If the argument {@link Name#getName()} is qualified, then the + * {@link Name#last()} part will be used. + * + * @param alias The alias name + * @return The field alias + */ + @NotNull + @Support + Field as(Name alias); + + /** + * Create an alias for this field based on another field's name. + * + * @param otherField The other field whose name this field is aliased with. + * @return The field alias. + */ + @NotNull + @Support + Field as(Field otherField); + } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRow.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRow.java index eb4e56c697..6ad1f6f726 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRow.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRow.java @@ -43,7 +43,6 @@ import static org.jooq.impl.Keywords.K_ROW; import static org.jooq.impl.QueryPartListView.wrap; import java.util.Collection; -import java.util.function.Function; import java.util.stream.Stream; import org.jooq.Binding; @@ -99,52 +98,67 @@ abstract class AbstractRow extends AbstractQueryPart implement } @Override - public Converter getConverter() { + public final Field as(String alias) { + return rf().as(alias); + } + + @Override + public final Field as(Name alias) { + return rf().as(alias); + } + + @Override + public final Field as(Field otherField) { + return rf().as(otherField); + } + + @Override + public final Converter getConverter() { return rf().getConverter(); } @Override - public Binding getBinding() { + public final Binding getBinding() { return rf().getBinding(); } @Override - public Class getType() { + public final Class getType() { return rf().getType(); } @Override - public DataType getDataType() { + public final DataType getDataType() { return rf().getDataType(); } @Override - public DataType getDataType(Configuration configuration) { + public final DataType getDataType(Configuration configuration) { return rf().getDataType(configuration); } @Override - public String getName() { + public final String getName() { return rf().getName(); } @Override - public Name getQualifiedName() { + public final Name getQualifiedName() { return rf().getQualifiedName(); } @Override - public Name getUnqualifiedName() { + public final Name getUnqualifiedName() { return rf().getUnqualifiedName(); } @Override - public String getComment() { + public final String getComment() { return rf().getComment(); } @Override - public Comment getCommentPart() { + public final Comment getCommentPart() { return rf().getCommentPart(); }