This commit is contained in:
Redkale
2016-11-07 19:15:27 +08:00
parent 11f895a0ca
commit 5b7739b26b
3 changed files with 35 additions and 0 deletions

View File

@@ -43,6 +43,8 @@ public enum FilterExpress {
NOTIN("NOT IN"),
ISNULL("IS NULL"),
ISNOTNULL("IS NOT NULL"),
ISEMPTY("="),//值为空
ISNOTEMPTY("<>"), //值不为空
OPAND("&"), //与运算 > 0
OPOR("|"), //或运算 > 0
OPANDNO("&"), //与运算 == 0

View File

@@ -344,6 +344,9 @@ public class FilterNode { //FilterNode 不能实现Serializable接口 否则
if (express == ISNULL || express == ISNOTNULL) {
return new StringBuilder().append(info.getSQLColumn(talis, column)).append(' ').append(express.value());
}
if (express == ISEMPTY || express == ISNOTEMPTY) {
return new StringBuilder().append(info.getSQLColumn(talis, column)).append(' ').append(express.value()).append(" ''");
}
if (val0 == null) return null;
if (express == FV_MOD || express == FV_DIV) {
FilterValue fv = (FilterValue) val0;
@@ -585,6 +588,32 @@ public class FilterNode { //FilterNode 不能实现Serializable接口 否则
return field + " != null";
}
};
if (express == ISEMPTY) return new Predicate<T>() {
@Override
public boolean test(T t) {
Object v = attr.get(t);
return v == null || v.toString().isEmpty();
}
@Override
public String toString() {
return field + " = ''";
}
};
if (express == ISNOTEMPTY) return new Predicate<T>() {
@Override
public boolean test(T t) {
Object v = attr.get(t);
return v != null && !v.toString().isEmpty();
}
@Override
public String toString() {
return field + " != ''";
}
};
if (val0 == null) return null;
final Class atype = attr.type();
@@ -1737,6 +1766,8 @@ public class FilterNode { //FilterNode 不能实现Serializable接口 否则
String col = prefix == null ? column : (prefix + "." + column);
if (express == ISNULL || express == ISNOTNULL) {
sb.append(col).append(' ').append(express.value());
} else if (express == ISEMPTY || express == ISNOTEMPTY) {
sb.append(col).append(' ').append(express.value()).append(" ''");
} else if (ev != null) {
boolean lower = (express == IGNORECASELIKE || express == IGNORECASENOTLIKE || express == IGNORECASECONTAIN || express == IGNORECASENOTCONTAIN);
sb.append(lower ? ("LOWER(" + col + ')') : col).append(' ').append(express.value()).append(' ').append(formatToString(express, ev));

View File

@@ -353,6 +353,8 @@ public final class FilterNodeBean<T extends FilterBean> implements Comparable<Fi
String col = prefix == null ? column : (prefix + "." + column);
if (express == ISNULL || express == ISNOTNULL) {
sb.append(col).append(' ').append(express.value());
} else if (express == ISEMPTY || express == ISNOTEMPTY) {
sb.append(col).append(' ').append(express.value()).append(" ''");
} else {
boolean lower = (express == IGNORECASEEQUAL || express == IGNORECASENOTEQUAL || express == IGNORECASELIKE
|| express == IGNORECASENOTLIKE || express == IGNORECASECONTAIN || express == IGNORECASENOTCONTAIN);