diff --git a/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToChar.java b/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToChar.java index 548be62991..c4fbc868b5 100644 --- a/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToChar.java +++ b/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToChar.java @@ -34,6 +34,7 @@ public interface ToChar HasAsInt, HasAsLong, HasMap>, + HasCase>, HasHash, HasCompare, HasCompose { @@ -81,10 +82,12 @@ default ToChar map(CharUnaryOperator operator) { return MapperUtil.map(this, operator); } + @Override default ToChar toUpperCase() { return map(Character::toUpperCase); } + @Override default ToChar toLowerCase() { return map(Character::toLowerCase); } diff --git a/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToString.java b/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToString.java index 4655bb7a8d..3ee4907624 100644 --- a/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToString.java +++ b/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/ToString.java @@ -4,6 +4,7 @@ import com.speedment.runtime.compute.expression.ExpressionType; import com.speedment.runtime.compute.internal.expression.ComposedUtil; import com.speedment.runtime.compute.internal.expression.MapperUtil; +import com.speedment.runtime.compute.trait.HasCase; import com.speedment.runtime.compute.trait.HasCompare; import com.speedment.runtime.compute.trait.HasCompose; import com.speedment.runtime.compute.trait.HasHash; @@ -30,6 +31,7 @@ public interface ToString extends Expression, Function, HasMap, ToString>, + HasCase>, HasHash, HasCompare, HasCompose { @@ -66,10 +68,12 @@ default ToString map(UnaryOperator mapper) { return MapperUtil.map(this, mapper); } + @Override default ToString toUpperCase() { return map(String::toUpperCase); } + @Override default ToString toLowerCase() { return map(String::toLowerCase); } diff --git a/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/trait/HasCase.java b/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/trait/HasCase.java new file mode 100644 index 0000000000..61a6b3c940 --- /dev/null +++ b/runtime-parent/runtime-compute/src/main/java/com/speedment/runtime/compute/trait/HasCase.java @@ -0,0 +1,30 @@ +package com.speedment.runtime.compute.trait; + +import com.speedment.runtime.compute.expression.Expression; + +/** + * Trait for expressions that has {@link #toUpperCase()} and + * {@link #toLowerCase()} operations. + * + * @author Emil Forslund + * @since 3.1.0 + */ +public interface HasCase> { + + /** + * Returns an expression that is equivalent to this expression, except that + * results are always in upper-case letters. + * + * @return the upper case expression + */ + RESULT toUpperCase(); + + /** + * Returns an expression that is equivalent to this expression, except that + * results are always in lower-case letters. + * + * @return the lower case expression + */ + RESULT toLowerCase(); + +}