This commit is contained in:
Lukas Eder 2020-12-07 23:36:32 +01:00
parent 1a1a9ae728
commit eb2bd7719d
4 changed files with 303 additions and 230 deletions

View File

@ -14935,6 +14935,60 @@ public class DSL {
return new Left(string, length);
}
/**
* The <code>LTRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> ltrim(String string, String characters) {
return new LTrim(Tools.field(string), Tools.field(characters));
}
/**
* The <code>LTRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> ltrim(String string, Field<String> characters) {
return new LTrim(Tools.field(string), characters);
}
/**
* The <code>LTRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> ltrim(Field<String> string, String characters) {
return new LTrim(string, Tools.field(characters));
}
/**
* The <code>LTRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> ltrim(Field<String> string, Field<String> characters) {
return new LTrim(string, characters);
}
/**
* The <code>LTRIM</code> function.
*/
@NotNull
@Support
public static Field<String> ltrim(String string) {
return new LTrim(Tools.field(string));
}
/**
* The <code>LTRIM</code> function.
*/
@NotNull
@Support
public static Field<String> ltrim(Field<String> string) {
return new LTrim(string);
}
/**
* The <code>REPEAT</code> function.
*/
@ -15025,6 +15079,60 @@ public class DSL {
return new Right(string, length);
}
/**
* The <code>RTRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> rtrim(String string, String characters) {
return new RTrim(Tools.field(string), Tools.field(characters));
}
/**
* The <code>RTRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> rtrim(String string, Field<String> characters) {
return new RTrim(Tools.field(string), characters);
}
/**
* The <code>RTRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> rtrim(Field<String> string, String characters) {
return new RTrim(string, Tools.field(characters));
}
/**
* The <code>RTRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> rtrim(Field<String> string, Field<String> characters) {
return new RTrim(string, characters);
}
/**
* The <code>RTRIM</code> function.
*/
@NotNull
@Support
public static Field<String> rtrim(String string) {
return new RTrim(Tools.field(string));
}
/**
* The <code>RTRIM</code> function.
*/
@NotNull
@Support
public static Field<String> rtrim(Field<String> string) {
return new RTrim(string);
}
/**
* The <code>SIGN</code> function.
*/
@ -15151,6 +15259,60 @@ public class DSL {
return new Substring(string, startingPosition);
}
/**
* The <code>TRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> trim(String string, String characters) {
return new Trim(Tools.field(string), Tools.field(characters));
}
/**
* The <code>TRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> trim(String string, Field<String> characters) {
return new Trim(Tools.field(string), characters);
}
/**
* The <code>TRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> trim(Field<String> string, String characters) {
return new Trim(string, Tools.field(characters));
}
/**
* The <code>TRIM</code> function.
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> trim(Field<String> string, Field<String> characters) {
return new Trim(string, characters);
}
/**
* The <code>TRIM</code> function.
*/
@NotNull
@Support
public static Field<String> trim(String string) {
return new Trim(Tools.field(string));
}
/**
* The <code>TRIM</code> function.
*/
@NotNull
@Support
public static Field<String> trim(Field<String> string) {
return new Trim(string);
}
/**
@ -15199,152 +15361,6 @@ public class DSL {
return new Lower(Tools.nullSafe(field));
}
/**
* Get the trim(field) function.
*
* @see #trim(Field)
*/
@NotNull
@Support
public static Field<String> trim(String value) {
return trim(Tools.field(value));
}
/**
* Get the trim(field) function.
* <p>
* This renders the trim function where available:
* <code><pre>trim([field])</pre></code> ... or emulates it elsewhere using
* rtrim and ltrim: <code><pre>ltrim(rtrim([field]))</pre></code>
*/
@NotNull
@Support
public static Field<String> trim(Field<String> field) {
return new Trim(Tools.nullSafe(field));
}
/**
* Get the <code>trim(field, characters)</code> or
* <code>trim(both characters from field)</code> function.
*
* @see #trim(Field, Field)
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> trim(String value, String characters) {
return trim(Tools.field(value), Tools.field(characters));
}
/**
* Get the <code>trim(field, characters)</code> or
* <code>trim(both characters from field)</code> function.
* <p>
* This renders the trim function where available:
* <code><pre>trim([field])</pre></code> ... or emulates it elsewhere using
* rtrim and ltrim: <code><pre>ltrim(rtrim([field]))</pre></code>
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> trim(Field<String> field, Field<String> characters) {
return new Trim(Tools.nullSafe(field), Tools.nullSafe(characters));
}
/**
* Get the rtrim(field) function.
*
* @see #rtrim(Field)
*/
@NotNull
@Support
public static Field<String> rtrim(String value) {
return rtrim(Tools.field(value));
}
/**
* Get the rtrim(field) function.
* <p>
* This renders the rtrim function in all dialects:
* <code><pre>rtrim([field])</pre></code>
*/
@NotNull
@Support
public static Field<String> rtrim(Field<String> field) {
return new RTrim(Tools.nullSafe(field));
}
/**
* Get the <code>rtrim(field, characters)</code> or
* <code>trim(trailing characters from field)</code> function.
*
* @see #rtrim(Field, Field)
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> rtrim(String value, String characters) {
return rtrim(Tools.field(value), Tools.field(characters));
}
/**
* Get the <code>rtrim(field, characters)</code> or
* <code>trim(trailing characters from field)</code> function.
* <p>
* This renders the rtrim function in all dialects:
* <code><pre>rtrim([field])</pre></code>
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> rtrim(Field<String> field, Field<String> characters) {
return new RTrim(Tools.nullSafe(field), Tools.nullSafe(characters));
}
/**
* Get the ltrim(field) function.
*
* @see #ltrim(Field)
*/
@NotNull
@Support
public static Field<String> ltrim(String value) {
return ltrim(Tools.field(value));
}
/**
* Get the ltrim(field) function.
* <p>
* This renders the ltrim function in all dialects:
* <code><pre>ltrim([field])</pre></code>
*/
@NotNull
@Support
public static Field<String> ltrim(Field<String> field) {
return new LTrim(Tools.nullSafe(field));
}
/**
* Get the <code>ltrim(field, characters)</code> or
* <code>trim(leading characters from field)</code> function.
*
* @see #ltrim(Field, Field)
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> ltrim(String value, String characters) {
return ltrim(Tools.field(value), Tools.field(characters));
}
/**
* Get the <code>ltrim(field, characters)</code> or
* <code>trim(leading characters from field)</code> function.
* <p>
* This renders the ltrim function in all dialects:
* <code><pre>ltrim([field])</pre></code>
*/
@NotNull
@Support({ DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> ltrim(Field<String> field, Field<String> characters) {
return new LTrim(Tools.nullSafe(field), Tools.nullSafe(characters));
}
/**
* Get the rpad(field, length) function.
*

View File

@ -37,49 +37,69 @@
*/
package org.jooq.impl;
import static org.jooq.impl.Keywords.K_FROM;
import static org.jooq.impl.Keywords.K_LEADING;
import static org.jooq.impl.Names.N_LTRIM;
import static org.jooq.impl.Names.N_TRIM;
import static org.jooq.impl.SQLDataType.VARCHAR;
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 org.jooq.Context;
import org.jooq.Field;
import org.jooq.*;
import org.jooq.impl.*;
import java.util.*;
/**
* @author Lukas Eder
* The <code>LTRIM</code> statement.
*/
final class LTrim extends AbstractField<String> {
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
final class LTrim
extends
AbstractField<String>
{
/**
* Generated UID
*/
private static final long serialVersionUID = -7273879239726265322L;
private static final long serialVersionUID = 1L;
private final Field<String> argument;
private final Field<String> string;
private final Field<String> characters;
LTrim(Field<String> argument) {
this(argument, null);
LTrim(
Field string
) {
super(N_LTRIM, allNotNull(VARCHAR, string));
this.string = nullSafeNotNull(string, VARCHAR);
this.characters = null;
}
LTrim(Field<String> argument, Field<String> characters) {
super(N_LTRIM, VARCHAR);
LTrim(
Field string,
Field characters
) {
super(N_LTRIM, allNotNull(VARCHAR, string, characters));
this.argument = argument;
this.characters = characters;
this.string = nullSafeNotNull(string, VARCHAR);
this.characters = nullSafeNotNull(characters, VARCHAR);
}
// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------
@Override
public final void accept(Context<?> ctx) {
if (characters == null) {
switch (ctx.family()) {
case FIREBIRD:
ctx.visit(N_TRIM).sql('(').visit(K_LEADING).sql(' ').visit(K_FROM).sql(' ').visit(argument).sql(')');
ctx.visit(N_TRIM).sql('(').visit(K_LEADING).sql(' ').visit(K_FROM).sql(' ').visit(string).sql(')');
break;
default:
ctx.visit(N_LTRIM).sql('(').visit(argument).sql(')');
ctx.visit(N_LTRIM).sql('(').visit(string).sql(')');
break;
}
}
@ -91,13 +111,15 @@ final class LTrim extends AbstractField<String> {
case SQLITE:
ctx.visit(N_LTRIM).sql('(').visit(argument).sql(", ").visit(characters).sql(')');
ctx.visit(N_LTRIM).sql('(').visit(string).sql(", ").visit(characters).sql(')');
break;
default:
ctx.visit(N_TRIM).sql('(').visit(K_LEADING).sql(' ').visit(characters).sql(' ').visit(K_FROM).sql(' ').visit(argument).sql(')');
ctx.visit(N_TRIM).sql('(').visit(K_LEADING).sql(' ').visit(characters).sql(' ').visit(K_FROM).sql(' ').visit(string).sql(')');
break;
}
}
}
}

View File

@ -37,49 +37,69 @@
*/
package org.jooq.impl;
import static org.jooq.impl.Keywords.K_FROM;
import static org.jooq.impl.Keywords.K_TRAILING;
import static org.jooq.impl.Names.N_RTRIM;
import static org.jooq.impl.Names.N_TRIM;
import static org.jooq.impl.SQLDataType.VARCHAR;
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 org.jooq.Context;
import org.jooq.Field;
import org.jooq.*;
import org.jooq.impl.*;
import java.util.*;
/**
* @author Lukas Eder
* The <code>RTRIM</code> statement.
*/
final class RTrim extends AbstractField<String> {
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
final class RTrim
extends
AbstractField<String>
{
/**
* Generated UID
*/
private static final long serialVersionUID = -7273879239726265322L;
private static final long serialVersionUID = 1L;
private final Field<String> argument;
private final Field<String> string;
private final Field<String> characters;
RTrim(Field<String> argument) {
this(argument, null);
RTrim(
Field string
) {
super(N_RTRIM, allNotNull(VARCHAR, string));
this.string = nullSafeNotNull(string, VARCHAR);
this.characters = null;
}
RTrim(Field<String> argument, Field<String> characters) {
super(N_RTRIM, VARCHAR);
RTrim(
Field string,
Field characters
) {
super(N_RTRIM, allNotNull(VARCHAR, string, characters));
this.argument = argument;
this.characters = characters;
this.string = nullSafeNotNull(string, VARCHAR);
this.characters = nullSafeNotNull(characters, VARCHAR);
}
// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------
@Override
public final void accept(Context<?> ctx) {
if (characters == null) {
switch (ctx.family()) {
case FIREBIRD:
ctx.visit(N_TRIM).sql('(').visit(K_TRAILING).sql(' ').visit(K_FROM).sql(' ').visit(argument).sql(')');
ctx.visit(N_TRIM).sql('(').visit(K_TRAILING).sql(' ').visit(K_FROM).sql(' ').visit(string).sql(')');
break;
default:
ctx.visit(N_RTRIM).sql('(').visit(argument).sql(')');
ctx.visit(N_RTRIM).sql('(').visit(string).sql(')');
break;
}
}
@ -91,13 +111,15 @@ final class RTrim extends AbstractField<String> {
case SQLITE:
ctx.visit(N_RTRIM).sql('(').visit(argument).sql(", ").visit(characters).sql(')');
ctx.visit(N_RTRIM).sql('(').visit(string).sql(", ").visit(characters).sql(')');
break;
default:
ctx.visit(N_TRIM).sql('(').visit(K_TRAILING).sql(' ').visit(characters).sql(' ').visit(K_FROM).sql(' ').visit(argument).sql(')');
ctx.visit(N_TRIM).sql('(').visit(K_TRAILING).sql(' ').visit(characters).sql(' ').visit(K_FROM).sql(' ').visit(string).sql(')');
break;
}
}
}
}

View File

@ -37,53 +37,64 @@
*/
package org.jooq.impl;
// ...
// ...
// ...
import static org.jooq.SQLDialect.SQLITE;
// ...
// ...
import static org.jooq.impl.Keywords.K_BOTH;
import static org.jooq.impl.Keywords.K_FROM;
import static org.jooq.impl.Names.N_TRIM;
import static org.jooq.impl.SQLDataType.VARCHAR;
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.Set;
import org.jooq.*;
import org.jooq.impl.*;
import org.jooq.Context;
import org.jooq.Field;
// ...
import org.jooq.SQLDialect;
import java.util.*;
/**
* @author Lukas Eder
* The <code>TRIM</code> statement.
*/
final class Trim extends AbstractField<String> {
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
final class Trim
extends
AbstractField<String>
{
/**
* Generated UID
*/
private static final long serialVersionUID = -7273879239726265322L;
private static final long serialVersionUID = 1L;
private final Field<String> argument;
private final Field<String> string;
private final Field<String> characters;
Trim(Field<String> argument) {
this(argument, null);
Trim(
Field string
) {
super(N_TRIM, allNotNull(VARCHAR, string));
this.string = nullSafeNotNull(string, VARCHAR);
this.characters = null;
}
Trim(Field<String> argument, Field<String> characters) {
super(N_TRIM, VARCHAR);
Trim(
Field string,
Field characters
) {
super(N_TRIM, allNotNull(VARCHAR, string, characters));
this.argument = argument;
this.characters = characters;
this.string = nullSafeNotNull(string, VARCHAR);
this.characters = nullSafeNotNull(characters, VARCHAR);
}
// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------
@Override
public final void accept(Context<?> ctx) {
if (characters == null) {
@ -92,15 +103,17 @@ final class Trim extends AbstractField<String> {
ctx.visit(N_TRIM).sql('(').visit(argument).sql(')');
ctx.visit(N_TRIM).sql('(').visit(string).sql(')');
}
else if (ctx.family() == SQLITE)
ctx.visit(N_TRIM).sql('(').visit(argument).sql(", ").visit(characters).sql(')');
ctx.visit(N_TRIM).sql('(').visit(string).sql(", ").visit(characters).sql(')');
else
ctx.visit(N_TRIM).sql('(').visit(K_BOTH).sql(' ').visit(characters).sql(' ').visit(K_FROM).sql(' ').visit(argument).sql(')');
ctx.visit(N_TRIM).sql('(').visit(K_BOTH).sql(' ').visit(characters).sql(' ').visit(K_FROM).sql(' ').visit(string).sql(')');
}
}