From d0ea8f0e820c81ecb9208dfaedbc612c3ac5200f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 15 Dec 2020 09:52:38 +0100 Subject: [PATCH] [jOOQ/jOOQ#11061] [jOOQ/jOOQ#11070] [jOOQ/jOOQ#11091] XMLFOREST --- jOOQ/src/main/java/org/jooq/impl/DSL.java | 36 +++++----- .../main/java/org/jooq/impl/XMLForest.java | 71 ++++++++++++++----- 2 files changed, 71 insertions(+), 36 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 6b5f92fb51..d4ff2071ff 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -16972,6 +16972,24 @@ public class DSL { return new Xmlcomment(comment); } + /** + * The XMLFOREST function. + */ + @NotNull + @Support({ POSTGRES }) + public static Field xmlforest(Field... fields) { + return new Xmlforest(Arrays.asList(fields)); + } + + /** + * The XMLFOREST function. + */ + @NotNull + @Support({ POSTGRES }) + public static Field xmlforest(Collection> fields) { + return new Xmlforest(fields); + } + /** @@ -20925,24 +20943,6 @@ public class DSL { return new XMLPI(target, content); } - /** - * The XML forest constructor. - */ - @NotNull - @Support({ POSTGRES }) - public static Field xmlforest(Field... fields) { - return xmlforest(asList(fields)); - } - - /** - * The XML forest constructor. - */ - @NotNull - @Support({ POSTGRES }) - public static Field xmlforest(Collection> fields) { - return new XMLForest(fields); - } - /** * The XML aggregate function. */ diff --git a/jOOQ/src/main/java/org/jooq/impl/XMLForest.java b/jOOQ/src/main/java/org/jooq/impl/XMLForest.java index 3fb91c83a2..8020b90534 100644 --- a/jOOQ/src/main/java/org/jooq/impl/XMLForest.java +++ b/jOOQ/src/main/java/org/jooq/impl/XMLForest.java @@ -37,42 +37,77 @@ */ package org.jooq.impl; -import static org.jooq.impl.Names.N_XMLFOREST; -import static org.jooq.impl.Tools.BooleanDataKey.DATA_AS_REQUIRED; +import static org.jooq.impl.DSL.*; +import static org.jooq.impl.Internal.*; +import static org.jooq.impl.Keywords.*; +import static org.jooq.impl.Names.*; +import static org.jooq.impl.SQLDataType.*; +import static org.jooq.impl.Tools.*; +import static org.jooq.impl.Tools.BooleanDataKey.*; +import static org.jooq.SQLDialect.*; -import java.util.Collection; +import org.jooq.*; +import org.jooq.impl.*; +import org.jooq.tools.*; + +import java.util.*; -import org.jooq.Context; -import org.jooq.Field; -import org.jooq.XML; /** - * @author Lukas Eder + * The XMLFOREST statement. */ -final class XMLForest extends AbstractField { +@SuppressWarnings({ "rawtypes", "unused" }) +final class Xmlforest +extends + AbstractField +{ - /** - * Generated UID - */ - private static final long serialVersionUID = 4505809303211506197L; - private final SelectFieldList> args; + private static final long serialVersionUID = 1L; - XMLForest(Collection> args) { - super(N_XMLFOREST, SQLDataType.XML); + private final Collection> fields; - this.args = new SelectFieldList<>(args); + Xmlforest( + Collection> fields + ) { + super(N_XMLFOREST, allNotNull(XML)); + + this.fields = fields; } + // ------------------------------------------------------------------------- + // XXX: QueryPart API + // ------------------------------------------------------------------------- + + + @Override public final void accept(Context ctx) { boolean declareFields = ctx.declareFields(); - Object previous = ctx.data(DATA_AS_REQUIRED, true); + ctx.visit(N_XMLFOREST).sql('(') .declareFields(true) - .visit(args) + .visit(new SelectFieldList<>(fields)) .declareFields(declareFields) .sql(')'); + ctx.data(DATA_AS_REQUIRED, previous); } + + + + // ------------------------------------------------------------------------- + // The Object API + // ------------------------------------------------------------------------- + + @Override + public boolean equals(Object that) { + if (that instanceof Xmlforest) { + return + StringUtils.equals(fields, ((Xmlforest) that).fields) + ; + } + else + return super.equals(that); + } }