
cn.org.atool.fluent.mybatis.ifs.IfsPredicate Maven / Gradle / Ivy
package cn.org.atool.fluent.mybatis.ifs;
import cn.org.atool.fluent.mybatis.base.model.ISqlOp;
import cn.org.atool.fluent.mybatis.base.model.SqlOp;
import cn.org.atool.fluent.mybatis.utility.ObjectArray;
import java.util.Arrays;
import java.util.function.Predicate;
import static java.util.stream.Collectors.toList;
/**
* 值对结构
*
* @author wudarui
*/
@SuppressWarnings("rawtypes")
public class IfsPredicate {
public final Predicate predicate;
private final Object[] values;
public IfsPredicate(Predicate predicate, Object... values) {
this.predicate = predicate;
this.values = convert(values);
}
private Object[] convert(Object[] values) {
if (values == null || values.length != 1) {
return values;
}
Object first = values[0];
if (first == null) {
return values;
} else if (first.getClass().isArray()) {
return ObjectArray.array(first);
} else {
return values;
}
}
public Object value(ISqlOp op) {
if (op == null || values == null) {
return this.firstValue();
}
if (SqlOp.IN.equals(op)) {
return Arrays.stream(values).collect(toList());
} else {
return this.firstValue();
}
}
private Object firstValue() {
return values == null || values.length == 0 ? null : values[0];
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy