This commit is contained in:
Lukas Eder 2020-12-08 17:04:43 +01:00
parent 7b659728fa
commit 2f8d68812c
2 changed files with 163 additions and 74 deletions

View File

@ -15151,6 +15151,114 @@ public class DSL {
return new Repeat(string, count);
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(String string, String search, String replace) {
return new Replace(Tools.field(string), Tools.field(search), Tools.field(replace));
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(String string, String search, Field<String> replace) {
return new Replace(Tools.field(string), Tools.field(search), replace);
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(String string, Field<String> search, String replace) {
return new Replace(Tools.field(string), search, Tools.field(replace));
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(String string, Field<String> search, Field<String> replace) {
return new Replace(Tools.field(string), search, replace);
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> string, String search, String replace) {
return new Replace(string, Tools.field(search), Tools.field(replace));
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> string, String search, Field<String> replace) {
return new Replace(string, Tools.field(search), replace);
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> string, Field<String> search, String replace) {
return new Replace(string, search, Tools.field(replace));
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> string, Field<String> search, Field<String> replace) {
return new Replace(string, search, replace);
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(String string, String search) {
return new Replace(Tools.field(string), Tools.field(search));
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(String string, Field<String> search) {
return new Replace(Tools.field(string), search);
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> string, String search) {
return new Replace(string, Tools.field(search));
}
/**
* The <code>REPLACE</code> function.
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> string, Field<String> search) {
return new Replace(string, search);
}
/**
* The <code>REVERSE</code> function.
*/
@ -15683,56 +15791,6 @@ public class DSL {
return replace;
}
/**
* Get the replace(field, search) function.
*
* @see #replace(Field, Field)
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> field, String search) {
return replace(Tools.nullSafe(field), Tools.field(search));
}
/**
* Get the replace(field, search) function.
* <p>
* This renders the replace or str_replace function where available:
* <code><pre>replace([field], [search]) or
* str_replace([field], [search])</pre></code> ... or emulates it elsewhere
* using the three-argument replace function:
* <code><pre>replace([field], [search], '')</pre></code>
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> field, Field<String> search) {
return new Replace(Tools.nullSafe(field), Tools.nullSafe(search), null);
}
/**
* Get the replace(field, search, replace) function.
*
* @see #replace(Field, Field, Field)
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> field, String search, String replace) {
return replace(Tools.nullSafe(field), Tools.field(search), Tools.field(replace));
}
/**
* Get the replace(field, search, replace) function.
* <p>
* This renders the replace or str_replace function:
* <code><pre>replace([field], [search]) or
* str_replace([field], [search])</pre></code>
*/
@NotNull
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
public static Field<String> replace(Field<String> field, Field<String> search, Field<String> replace) {
return new Replace(Tools.nullSafe(field), Tools.nullSafe(search), Tools.nullSafe(replace));
}
/**
* Get the <code>REGEXP_REPLACE_ALL</code> function.
*/

View File

@ -37,35 +37,64 @@
*/
package org.jooq.impl;
import static org.jooq.impl.DSL.function;
import static org.jooq.impl.DSL.val;
import static org.jooq.impl.Names.N_REPLACE;
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>REPLACE</code> statement.
*/
final class Replace extends AbstractField<String> {
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
final class Replace
extends
AbstractField<String>
{
/**
* Generated UID
*/
private static final long serialVersionUID = -7273879239726265322L;
private final Field<?> field;
private final Field<?> search;
private final Field<?> replace;
private static final long serialVersionUID = 1L;
Replace(Field<?> field, Field<?> search, Field<?> replace) {
super(N_REPLACE, SQLDataType.VARCHAR);
private final Field<String> string;
private final Field<String> search;
private final Field<String> replace;
this.field = field;
this.search = search;
this.replace = replace;
Replace(
Field string,
Field search
) {
super(N_REPLACE, allNotNull(VARCHAR, string, search));
this.string = nullSafeNotNull(string, VARCHAR);
this.search = nullSafeNotNull(search, VARCHAR);
this.replace = null;
}
Replace(
Field string,
Field search,
Field replace
) {
super(N_REPLACE, allNotNull(VARCHAR, string, search, replace));
this.string = nullSafeNotNull(string, VARCHAR);
this.search = nullSafeNotNull(search, VARCHAR);
this.replace = nullSafeNotNull(replace, VARCHAR);
}
// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------
@Override
public final void accept(Context<?> ctx) {
@ -109,19 +138,21 @@ final class Replace extends AbstractField<String> {
case POSTGRES:
case SQLITE:
if (replace == null)
ctx.visit(function("replace", VARCHAR, field, search, val("")));
ctx.visit(function("replace", VARCHAR, string, search, val("")));
else
ctx.visit(function("replace", VARCHAR, field, search, replace));
ctx.visit(function("replace", VARCHAR, string, search, replace));
return;
default:
if (replace == null)
ctx.visit(function("replace", VARCHAR, field, search));
ctx.visit(function("replace", VARCHAR, string, search));
else
ctx.visit(function("replace", VARCHAR, field, search, replace));
ctx.visit(function("replace", VARCHAR, string, search, replace));
return;
}
}
}