[#6246] Add Kotlin operators on Field

This commit is contained in:
lukaseder 2017-05-18 16:05:04 +02:00
parent 9661e1531b
commit a898acbf36
2 changed files with 79 additions and 0 deletions

View File

@ -525,6 +525,23 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
@Support
Field<T> neg();
/**
* Negate this field to get its negative value.
* <p>
* This is an alias for {@link #neg()}, which can be recognised by the
* Kotlin language for operator overloading.
*/
@Support
Field<T> unaryMinus();
/**
* Get this field as its positive value (no effect on SQL).
* <p>
* This can be recognised by the Kotlin language for operator overloading.
*/
@Support
Field<T> unaryPlus();
/**
* An arithmetic expression adding this to value.
*
@ -707,6 +724,22 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
@Support
Field<T> multiply(Field<? extends Number> value);
/**
* An alias for {@link #mul(Number)}.
*
* @see #mul(Number)
*/
@Support
Field<T> times(Number value);
/**
* An alias for {@link #mul(Field)}.
*
* @see #mul(Field)
*/
@Support
Field<T> times(Field<? extends Number> value);
/**
* An arithmetic expression dividing this by value.
* <p>
@ -785,6 +818,22 @@ public interface Field<T> extends SelectField<T>, GroupField, FieldOrRow {
@Support
Field<T> modulo(Field<? extends Number> value);
/**
* An alias for {@link #mod(Number)}.
*
* @see #mod(Number)
*/
@Support
Field<T> rem(Number value);
/**
* An alias for {@link #mod(Field)}.
*
* @see #mod(Field)
*/
@Support
Field<T> rem(Field<? extends Number> value);
/**
* An arithmetic expression getting this value raised to the power of <code>exponent</code>.
* <p>

View File

@ -403,6 +403,16 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
return new Neg<T>(this, ExpressionOperator.SUBTRACT);
}
@Override
public final Field<T> unaryMinus() {
return neg();
}
@Override
public final Field<T> unaryPlus() {
return this;
}
@Override
public final Field<T> add(Number value) {
return add(Tools.field(value));
@ -505,6 +515,16 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
return mul(value);
}
@Override
public final Field<T> times(Number value) {
return mul(value);
}
@Override
public final Field<T> times(Field<? extends Number> value) {
return mul(value);
}
@Override
public final Field<T> divide(Number value) {
return div(value);
@ -525,6 +545,16 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
return mod(value);
}
@Override
public final Field<T> rem(Number value) {
return mod(value);
}
@Override
public final Field<T> rem(Field<? extends Number> value) {
return mod(value);
}
// ------------------------------------------------------------------------
// XXX: Bitwise operations
// ------------------------------------------------------------------------