diff --git a/jOOQ/src/main/java/org/jooq/impl/LocalDateAdd.java b/jOOQ/src/main/java/org/jooq/impl/LocalDateAdd.java deleted file mode 100644 index 9a51186def..0000000000 --- a/jOOQ/src/main/java/org/jooq/impl/LocalDateAdd.java +++ /dev/null @@ -1,214 +0,0 @@ -package org.jooq.impl; - -import static org.jooq.impl.DSL.inline; -import static org.jooq.impl.DSL.keyword; - -import java.time.LocalDate; - -import org.jooq.Configuration; -import org.jooq.DatePart; -import org.jooq.Field; -import org.jooq.QueryPart; - -/** - * @author Miguel Gonzalez Sanchez - */ -final class LocalDateAdd extends AbstractFunction { - - /** - * Generated UID - */ - private static final long serialVersionUID = -7700140530346259350L; - - private final Field date; - private final Field interval; - private final DatePart datePart; - - LocalDateAdd(Field date, Field interval, DatePart datePart) { - super("localDateAdd", date.getDataType().getSQLDataType()); - - this.date = date; - this.interval = interval; - this.datePart = datePart; - } - - @SuppressWarnings("incomplete-switch") - @Override - final QueryPart getFunction0(Configuration configuration) { - String keyword = null; - - switch (configuration.family()) { - case CUBRID: - case MARIADB: - case MYSQL: { - switch (datePart) { - case YEAR: - keyword = "year"; - break; - case MONTH: - keyword = "month"; - break; - case DAY: - keyword = "day"; - break; - case HOUR: - keyword = "hour"; - break; - case MINUTE: - keyword = "minute"; - break; - case SECOND: - keyword = "second"; - break; - default: - throwUnsupported(); - } - - return DSL.field("{date_add}({0}, {interval} {1} {2})", getDataType(), date, interval, keyword(keyword)); - } - - case DERBY: - case HSQLDB: { - switch (datePart) { - case YEAR: - keyword = "sql_tsi_year"; - break; - case MONTH: - keyword = "sql_tsi_month"; - break; - case DAY: - keyword = "sql_tsi_day"; - break; - case HOUR: - keyword = "sql_tsi_hour"; - break; - case MINUTE: - keyword = "sql_tsi_minute"; - break; - case SECOND: - keyword = "sql_tsi_second"; - break; - default: - throwUnsupported(); - } - - return DSL.field("{fn {timestampadd}({0}, {1}, {2}) }", getDataType(), keyword(keyword), interval, date); - } - - case FIREBIRD: { - switch (datePart) { - case YEAR: - keyword = "year"; - break; - case MONTH: - keyword = "month"; - break; - case DAY: - keyword = "day"; - break; - case HOUR: - keyword = "hour"; - break; - case MINUTE: - keyword = "minute"; - break; - case SECOND: - keyword = "second"; - break; - default: - throwUnsupported(); - } - - return DSL.field("{dateadd}({0}, {1}, {2})", getDataType(), keyword(keyword), interval, date); - } - - case H2: { - switch (datePart) { - case YEAR: - keyword = "year"; - break; - case MONTH: - keyword = "month"; - break; - case DAY: - keyword = "day"; - break; - case HOUR: - keyword = "hour"; - break; - case MINUTE: - keyword = "minute"; - break; - case SECOND: - keyword = "second"; - break; - default: - throwUnsupported(); - } - - return DSL.field("{dateadd}({0}, {1}, {2})", getDataType(), inline(keyword), interval, date); - } - - case POSTGRES: { - switch (datePart) { - case YEAR: - keyword = " year"; - break; - case MONTH: - keyword = " month"; - break; - case DAY: - keyword = " day"; - break; - case HOUR: - keyword = " hour"; - break; - case MINUTE: - keyword = " minute"; - break; - case SECOND: - keyword = " second"; - break; - default: - throwUnsupported(); - } - - return DSL.field("({0} + ({1} || {2})::interval)::date", getDataType(), date, interval, inline(keyword)); - } - - case SQLITE: { - switch (datePart) { - case YEAR: - keyword = " year"; - break; - case MONTH: - keyword = " month"; - break; - case DAY: - keyword = " day"; - break; - case HOUR: - keyword = " hour"; - break; - case MINUTE: - keyword = " minute"; - break; - case SECOND: - keyword = " second"; - break; - default: - throwUnsupported(); - } - - return DSL.field("{datetime}({0}, '+' || {1} || {2})", getDataType(), date, interval, inline(keyword)); - } - - } - - return null; - } - - private final void throwUnsupported() { - throw new UnsupportedOperationException("Unknown date part : " + datePart); - } -} \ No newline at end of file diff --git a/jOOQ/src/main/java/org/jooq/impl/LocalDateDiff.java b/jOOQ/src/main/java/org/jooq/impl/LocalDateDiff.java deleted file mode 100644 index d6969bf719..0000000000 --- a/jOOQ/src/main/java/org/jooq/impl/LocalDateDiff.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.jooq.impl; - -import static org.jooq.impl.DSL.function; - -import java.time.LocalDate; - -import org.jooq.Configuration; -import org.jooq.Field; - -final class LocalDateDiff extends AbstractFunction { - - /** - * Generated UID - */ - private static final long serialVersionUID = 6010434059957641551L; - - private final Field date1; - private final Field date2; - - LocalDateDiff(Field date1, Field date2) { - super("localdatediff", SQLDataType.INTEGER, date1, date2); - - this.date1 = date1; - this.date2 = date2; - } - - @SuppressWarnings("incomplete-switch") - @Override - final Field getFunction0(Configuration configuration) { - switch (configuration.family()) { - case MARIADB: - case MYSQL: - return function("datediff", getDataType(), date1, date2); - - case DERBY: - return DSL.field("{fn {timestampdiff}({sql_tsi_day}, {0}, {1}) }", getDataType(), date2, date1); - - case FIREBIRD: - return DSL.field("{datediff}(day, {0}, {1})", getDataType(), date2, date1); - case H2: - case HSQLDB: - return DSL.field("{datediff}('day', {0}, {1})", getDataType(), date2, date1); - case SQLITE: - return DSL.field("({strftime}('%s', {0}) - {strftime}('%s', {1})) / 86400", getDataType(), date1, date2); - case CUBRID: - case POSTGRES: - // [#4481] Parentheses are important in case this expression is - // placed in the context of other arithmetic - return DSL.field("({0} - {1})", getDataType(), date1, date2); - } - // Default implementation for equals() and hashCode() - return date1.sub(date2).cast(Integer.class); - } -}