/* * Copyright 2015 Jacek Marchwicki <jacek.marchwicki@gmail.com> * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.appunite.rx.functions; import javax.annotation.Nonnull; import rx.functions.Func1; import static com.appunite.rx.internal.Preconditions.checkNotNull; import static com.appunite.rx.internal.Preconditions.checkState; import com.appunite.rx.internal.Objects; public class Functions1 { @Nonnull public static Func1<? super Boolean, Boolean> isTrue() { return new Func1<Boolean, Boolean>() { @Override public Boolean call(final Boolean aBoolean) { return aBoolean; } }; } @Nonnull public static Func1<? super Boolean, Boolean> isFalse() { return new Func1<Boolean, Boolean>() { @Override public Boolean call(Boolean aBoolean) { return !aBoolean; } }; } @Nonnull public static <T> Func1<T, Boolean> neg(@Nonnull final Func1<T, Boolean> func1) { return new Func1<T, Boolean>() { @Override public Boolean call(final T t) { return !func1.call(t); } }; } @Nonnull public static Func1<? super Object, Boolean> isNull() { return new Func1<Object, Boolean>() { @Override public Boolean call(final Object object) { return object == null; } }; } @Nonnull public static Func1<? super Object, Boolean> isNotNull() { return neg(isNull()); } @Nonnull public static Func1<? super CharSequence, Boolean> isNullOrEmpty() { return new Func1<CharSequence, Boolean>() { @Override public Boolean call(CharSequence charSequence) { return charSequence == null || charSequence.length() == 0; } }; } @Nonnull public static Func1<? super Object, Boolean> instanceOf(@Nonnull final Class clazz) { checkNotNull(clazz); return new Func1<Object, Boolean>() { @Override public Boolean call(Object o) { return clazz.isInstance(o); } }; } @Nonnull public static Func1<? super Object, ?> toObject() { return new Func1<Object, Object>() { @Override public Object call(final Object o) { return new Object(); } }; } @Nonnull public static Func1<? super Object, Void> toVoid() { return new Func1<Object, Void>() { @Override public Void call(final Object ignore) { return null; } }; } @Nonnull public static Func1<? super Boolean, ? extends Boolean> neg() { return new Func1<Boolean, Boolean>() { @Override public Boolean call(final Boolean aBoolean) { return !aBoolean; } }; } @Nonnull public static Func1<Object, Boolean> returnFalse() { return new Func1<Object, Boolean>() { @Override public Boolean call(Object o) { return false; } }; } @Nonnull public static Func1<Object, Boolean> returnTrue() { return new Func1<Object, Boolean>() { @Override public Boolean call(Object o) { return true; } }; } @Nonnull public static <T> Func1<Object, T> returnJust(final T value) { return new Func1<Object, T>() { @Override public T call(Object o) { return value; } }; } /** * Use {@link #toStringFunction()} */ @Deprecated @Nonnull public static Func1<? super CharSequence, String> charSequenceToString() { return toStringFunction(); } /** * Converts propagated value to string. * @return propagated value as string converted by its toString() method. If propagated * value is null, null is returned. */ @Nonnull public static Func1<Object, String> toStringFunction() { return new Func1<Object, String>() { @Override public String call(Object o) { if (o == null) { return null; } return o.toString(); } }; } /** * Checks if propagated value is equal to any of passed values. * * @param values values which are compared to propagated value. * @return true if propagated value is equal to at least one of passed values, false otherwise. * If values length is equal to 0 or passed null reference this method returns false. */ @Nonnull public static Func1<? super Object, Boolean> isEqualTo(@Nonnull final Object... values) { checkNotNull(values, "Values cannot be null"); checkState(values.length > 0, "You need to specify at least one object."); return new Func1<Object, Boolean>() { @Override public Boolean call(final Object o) { for (final Object value : values) { if (Objects.equal(o, value)) { return true; } } return false; } }; } }