This commit is contained in:
338
src/com/wentch/redkale/service/DataSourceService.java
Normal file
338
src/com/wentch/redkale/service/DataSourceService.java
Normal file
@@ -0,0 +1,338 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package com.wentch.redkale.service;
|
||||
|
||||
import com.wentch.redkale.source.*;
|
||||
import com.wentch.redkale.util.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import javax.annotation.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author zhangjx
|
||||
*/
|
||||
public class DataSourceService implements DataSource, Service {
|
||||
|
||||
@Resource(name = "$")
|
||||
private DataSource source;
|
||||
|
||||
@Override
|
||||
public DataConnection createReadConnection() {
|
||||
return source.createReadConnection();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataConnection createWriteConnection() {
|
||||
return source.createWriteConnection();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void insert(T... values) {
|
||||
source.insert(values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void insert(DataConnection conn, T... values) {
|
||||
source.insert(conn, values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void refreshCache(Class<T> clazz) {
|
||||
source.refreshCache(clazz);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void delete(T... values) {
|
||||
source.delete(values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void delete(DataConnection conn, T... values) {
|
||||
source.delete(conn, values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void delete(Class<T> clazz, Serializable... ids) {
|
||||
source.delete(clazz, ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void delete(DataConnection conn, Class<T> clazz, Serializable... ids) {
|
||||
source.delete(conn, clazz, ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void delete(Class<T> clazz, FilterNode node) {
|
||||
source.delete(clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void delete(DataConnection conn, Class<T> clazz, FilterNode node) {
|
||||
source.delete(conn, clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void update(T... values) {
|
||||
source.update(values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void update(DataConnection conn, T... values) {
|
||||
source.update(conn, values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumn(Class<T> clazz, Serializable id, String column, Serializable value) {
|
||||
source.updateColumn(clazz, id, column, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumn(DataConnection conn, Class<T> clazz, Serializable id, String column, Serializable value) {
|
||||
source.updateColumn(conn, clazz, id, column, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumns(T value, String... columns) {
|
||||
source.updateColumns(value, columns);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumns(DataConnection conn, T value, String... columns) {
|
||||
source.updateColumns(conn, value, columns);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumnIncrement(Class<T> clazz, Serializable id, String column, long incvalue) {
|
||||
source.updateColumnIncrement(clazz, id, column, incvalue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumnIncrement(DataConnection conn, Class<T> clazz, Serializable id, String column, long incvalue) {
|
||||
source.updateColumnIncrement(conn, clazz, id, column, incvalue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumnAnd(Class<T> clazz, Serializable id, String column, long incvalue) {
|
||||
source.updateColumnAnd(clazz, id, column, incvalue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumnAnd(DataConnection conn, Class<T> clazz, Serializable id, String column, long incvalue) {
|
||||
source.updateColumnAnd(conn, clazz, id, column, incvalue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumnOr(Class<T> clazz, Serializable id, String column, long incvalue) {
|
||||
source.updateColumnOr(clazz, id, column, incvalue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void updateColumnOr(DataConnection conn, Class<T> clazz, Serializable id, String column, long incvalue) {
|
||||
source.updateColumnOr(conn, clazz, id, column, incvalue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Number getNumberResult(Class entityClass, Reckon reckon, String column) {
|
||||
return source.getNumberResult(entityClass, reckon, column);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Number getNumberResult(Class entityClass, Reckon reckon, String column, FilterBean bean) {
|
||||
return source.getNumberResult(entityClass, reckon, column, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Number getNumberResult(Class entityClass, Reckon reckon, String column, FilterNode node) {
|
||||
return source.getNumberResult(entityClass, reckon, column, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, V extends Number> Map<K, V> getMapResult(Class entityClass, String keyColumn, Reckon reckon, String reckonColumn) {
|
||||
return source.getMapResult(entityClass, keyColumn, reckon, reckonColumn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, V extends Number> Map<K, V> getMapResult(Class entityClass, String keyColumn, Reckon reckon, String reckonColumn, FilterBean bean) {
|
||||
return source.getMapResult(entityClass, keyColumn, reckon, reckonColumn, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, V extends Number> Map<K, V> getMapResult(Class entityClass, String keyColumn, Reckon reckon, String reckonColumn, FilterNode node) {
|
||||
return source.getMapResult(entityClass, keyColumn, reckon, reckonColumn, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T find(Class<T> clazz, Serializable pk) {
|
||||
return source.find(clazz, pk);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T find(Class<T> clazz, SelectColumn selects, Serializable pk) {
|
||||
return source.find(clazz, selects, pk);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T findByColumn(Class<T> clazz, String column, Serializable key) {
|
||||
return source.findByColumn(clazz, column, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T find(Class<T> clazz, FilterNode node) {
|
||||
return source.find(clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T find(Class<T> clazz, FilterBean bean) {
|
||||
return source.find(clazz, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> boolean exists(Class<T> clazz, Serializable pk) {
|
||||
return source.exists(clazz, pk);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> boolean exists(Class<T> clazz, FilterNode node) {
|
||||
return source.exists(clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> boolean exists(Class<T> clazz, FilterBean bean) {
|
||||
return source.exists(clazz, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, String column, Serializable key) {
|
||||
return source.queryColumnSet(selectedColumn, clazz, column, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||
return source.queryColumnSet(selectedColumn, clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> HashSet<V> queryColumnSet(String selectedColumn, Class<T> clazz, FilterBean bean) {
|
||||
return source.queryColumnSet(selectedColumn, clazz, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> List<V> queryColumnList(String selectedColumn, Class<T> clazz, String column, Serializable key) {
|
||||
return source.queryColumnList(selectedColumn, clazz, column, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> List<V> queryColumnList(String selectedColumn, Class<T> clazz, FilterNode node) {
|
||||
return source.queryColumnList(selectedColumn, clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> List<V> queryColumnList(String selectedColumn, Class<T> clazz, FilterBean bean) {
|
||||
return source.queryColumnList(selectedColumn, clazz, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, T> Map<K, T> queryMap(Class<T> clazz, FilterNode node) {
|
||||
return source.queryMap(clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, T> Map<K, T> queryMap(Class<T> clazz, FilterBean bean) {
|
||||
return source.queryMap(clazz, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, T> Map<K, T> queryMap(Class<T> clazz, SelectColumn selects, FilterNode node) {
|
||||
return source.queryMap(clazz, selects, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, T> Map<K, T> queryMap(Class<T> clazz, SelectColumn selects, FilterBean bean) {
|
||||
return source.queryMap(clazz, selects, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, String column, Serializable key) {
|
||||
return source.queryList(clazz, column, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, FilterNode node) {
|
||||
return source.queryList(clazz, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, FilterBean bean) {
|
||||
return source.queryList(clazz, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, SelectColumn selects, FilterNode node) {
|
||||
return source.queryList(clazz, selects, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, SelectColumn selects, FilterBean bean) {
|
||||
return source.queryList(clazz, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, Flipper flipper, String column, Serializable key) {
|
||||
return source.queryList(clazz, flipper, column, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, Flipper flipper, FilterNode node) {
|
||||
return source.queryList(clazz, flipper, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, Flipper flipper, FilterBean bean) {
|
||||
return source.queryList(clazz, flipper, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, SelectColumn selects, Flipper flipper, FilterNode node) {
|
||||
return source.queryList(clazz, selects, flipper, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> queryList(Class<T> clazz, SelectColumn selects, Flipper flipper, FilterBean bean) {
|
||||
return source.queryList(clazz, selects, flipper, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> Sheet<V> queryColumnSheet(String selectedColumn, Class<T> clazz, Flipper flipper, FilterBean bean) {
|
||||
return source.queryColumnSheet(selectedColumn, clazz, flipper, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> Sheet<V> queryColumnSheet(String selectedColumn, Class<T> clazz, Flipper flipper, FilterNode node) {
|
||||
return source.queryColumnSheet(selectedColumn, clazz, flipper, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Sheet<T> querySheet(Class<T> clazz, Flipper flipper, FilterBean bean) {
|
||||
return source.querySheet(clazz, flipper, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Sheet<T> querySheet(Class<T> clazz, Flipper flipper, FilterNode node) {
|
||||
return source.querySheet(clazz, flipper, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Sheet<T> querySheet(Class<T> clazz, SelectColumn selects, Flipper flipper, FilterBean bean) {
|
||||
return source.querySheet(clazz, selects, flipper, bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Sheet<T> querySheet(Class<T> clazz, SelectColumn selects, Flipper flipper, FilterNode node) {
|
||||
return source.querySheet(clazz, selects, flipper, node);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,7 +24,7 @@ import javax.xml.stream.*;
|
||||
* @author zhangjx
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public final class DataDefaultSource implements DataSource, Nameable {
|
||||
public final class DataDefaultSource implements DataSource, Nameable, Function<Class, EntityInfo> {
|
||||
|
||||
public static final String DATASOURCE_CONFPATH = "DATASOURCE_CONFPATH";
|
||||
|
||||
@@ -326,6 +326,11 @@ public final class DataDefaultSource implements DataSource, Nameable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityInfo apply(Class t) {
|
||||
return loadEntityInfo(t);
|
||||
}
|
||||
|
||||
private <T> EntityInfo<T> loadEntityInfo(Class<T> clazz) {
|
||||
return EntityInfo.load(clazz, this.nodeid, this.cacheForbidden, fullloader);
|
||||
}
|
||||
@@ -640,7 +645,7 @@ public final class DataDefaultSource implements DataSource, Nameable {
|
||||
private <T> void delete(final Connection conn, final EntityInfo<T> info, final FilterNode node) {
|
||||
try {
|
||||
if (!info.isVirtualEntity()) {
|
||||
CharSequence join = node.createSQLJoin(info);
|
||||
CharSequence join = node.createSQLJoin(this, info);
|
||||
CharSequence where = node.createSQLExpress(info, null);
|
||||
String sql = "DELETE FROM " + info.getTable() + (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
if (debug.get()) logger.finest(info.getType().getSimpleName() + " delete sql=" + sql);
|
||||
@@ -1085,7 +1090,7 @@ public final class DataDefaultSource implements DataSource, Nameable {
|
||||
return cache.getNumberResult(reckon, column, node, bean);
|
||||
}
|
||||
}
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, bean);
|
||||
final String sql = "SELECT " + reckon.getColumn((column == null || column.isEmpty() ? "*" : ("a." + column))) + " FROM " + info.getTable() + " a"
|
||||
+ (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
@@ -1134,7 +1139,7 @@ public final class DataDefaultSource implements DataSource, Nameable {
|
||||
}
|
||||
}
|
||||
final String sqlkey = info.getSQLColumn(keyColumn);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, bean);
|
||||
final String sql = "SELECT a." + sqlkey + ", " + reckon.getColumn((reckonColumn == null || reckonColumn.isEmpty() ? "*" : ("a." + reckonColumn)))
|
||||
+ " FROM " + info.getTable() + " a" + (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where)) + " GROUP BY a." + sqlkey;
|
||||
@@ -1219,7 +1224,7 @@ public final class DataDefaultSource implements DataSource, Nameable {
|
||||
final Connection conn = createReadSQLConnection();
|
||||
try {
|
||||
final SelectColumn sels = selects;
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, bean);
|
||||
final String sql = "SELECT a.* FROM " + info.getTable() + " a" + (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(clazz.getSimpleName() + " find sql=" + sql);
|
||||
@@ -1277,7 +1282,7 @@ public final class DataDefaultSource implements DataSource, Nameable {
|
||||
|
||||
final Connection conn = createReadSQLConnection();
|
||||
try {
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, bean);
|
||||
final String sql = "SELECT COUNT(a." + info.getPrimarySQLColumn() + ") FROM " + info.getTable() + " a" + (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(clazz.getSimpleName() + " exists sql=" + sql);
|
||||
@@ -1531,7 +1536,7 @@ public final class DataDefaultSource implements DataSource, Nameable {
|
||||
try {
|
||||
final SelectColumn sels = selects;
|
||||
final List<T> list = new ArrayList();
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, bean);
|
||||
final String sql = "SELECT a.* FROM " + info.getTable() + " a" + (join == null ? "" : join)
|
||||
+ ((where == null || where.length() == 0) ? "" : (" WHERE " + where)) + info.createSQLOrderby(flipper);
|
||||
|
||||
@@ -228,7 +228,7 @@ final class FilterBeanNode extends FilterNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> CharSequence createSQLJoin(final EntityInfo<T> info) {
|
||||
protected <T> CharSequence createSQLJoin(final Function<Class, EntityInfo> func, final EntityInfo<T> info) {
|
||||
if (joinSQL == null) return null;
|
||||
return joinSQL;
|
||||
}
|
||||
|
||||
17
src/com/wentch/redkale/source/FilterJoinNode.java
Normal file
17
src/com/wentch/redkale/source/FilterJoinNode.java
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package com.wentch.redkale.source;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author zhangjx
|
||||
*/
|
||||
public class FilterJoinNode extends FilterNode {
|
||||
|
||||
private Class joinClass;
|
||||
|
||||
private String joinColumn;
|
||||
}
|
||||
@@ -140,10 +140,11 @@ public class FilterNode {
|
||||
* 该方法需要重载
|
||||
*
|
||||
* @param <T>
|
||||
* @param func
|
||||
* @param info
|
||||
* @return
|
||||
*/
|
||||
protected <T> CharSequence createSQLJoin(final EntityInfo<T> info) {
|
||||
protected <T> CharSequence createSQLJoin(final Function<Class, EntityInfo> func, final EntityInfo<T> info) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -273,28 +274,28 @@ public class FilterNode {
|
||||
|
||||
if (express == ISNULL) return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return attr.get(t) == null;
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return attr.get(t) == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " = null";
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " = null";
|
||||
}
|
||||
};
|
||||
if (express == ISNOTNULL) return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return attr.get(t) != null;
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return attr.get(t) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " != null";
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " != null";
|
||||
}
|
||||
};
|
||||
if (attr == null) return null;
|
||||
Serializable val0 = getElementValue(bean);
|
||||
if (val0 == null) return null;
|
||||
@@ -401,113 +402,113 @@ public class FilterNode {
|
||||
switch (express) {
|
||||
case EQUAL: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return val.equals(attr.get(t));
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return val.equals(attr.get(t));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
case NOTEQUAL: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return !val.equals(attr.get(t));
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return !val.equals(attr.get(t));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
case GREATERTHAN: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return ((Number) attr.get(t)).longValue() > ((Number) val).longValue();
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return ((Number) attr.get(t)).longValue() > ((Number) val).longValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
case LESSTHAN: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return ((Number) attr.get(t)).longValue() < ((Number) val).longValue();
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return ((Number) attr.get(t)).longValue() < ((Number) val).longValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
case GREATERTHANOREQUALTO: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return ((Number) attr.get(t)).longValue() >= ((Number) val).longValue();
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return ((Number) attr.get(t)).longValue() >= ((Number) val).longValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
case LESSTHANOREQUALTO: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return ((Number) attr.get(t)).longValue() <= ((Number) val).longValue();
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return ((Number) attr.get(t)).longValue() <= ((Number) val).longValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + ' ' + express.value() + ' ' + val;
|
||||
}
|
||||
};
|
||||
|
||||
case OPAND: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return (((Number) attr.get(t)).longValue() & ((Number) val).longValue()) > 0;
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return (((Number) attr.get(t)).longValue() & ((Number) val).longValue()) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " & " + val + " > 0";
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " & " + val + " > 0";
|
||||
}
|
||||
};
|
||||
case OPOR: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return (((Number) attr.get(t)).longValue() | ((Number) val).longValue()) > 0;
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return (((Number) attr.get(t)).longValue() | ((Number) val).longValue()) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " | " + val + " > 0";
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " | " + val + " > 0";
|
||||
}
|
||||
};
|
||||
case OPANDNO: return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return (((Number) attr.get(t)).longValue() & ((Number) val).longValue()) == 0;
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
return (((Number) attr.get(t)).longValue() & ((Number) val).longValue()) == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " & " + val + " = 0";
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " & " + val + " = 0";
|
||||
}
|
||||
};
|
||||
case LIKE:
|
||||
return new Predicate<T>() {
|
||||
|
||||
@@ -573,34 +574,34 @@ public class FilterNode {
|
||||
final Comparable max = range.getMax();
|
||||
if (express == BETWEEN) return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
Comparable rs = (Comparable) attr.get(t);
|
||||
if (rs == null) return false;
|
||||
if (min != null && min.compareTo(rs) >= 0) return false;
|
||||
return !(max != null && max.compareTo(rs) <= 0);
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
Comparable rs = (Comparable) attr.get(t);
|
||||
if (rs == null) return false;
|
||||
if (min != null && min.compareTo(rs) >= 0) return false;
|
||||
return !(max != null && max.compareTo(rs) <= 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " BETWEEN " + min + " AND " + max;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " BETWEEN " + min + " AND " + max;
|
||||
}
|
||||
};
|
||||
if (express == NOTBETWEEN) return new Predicate<T>() {
|
||||
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
Comparable rs = (Comparable) attr.get(t);
|
||||
if (rs == null) return true;
|
||||
if (min != null && min.compareTo(rs) >= 0) return true;
|
||||
return (max != null && max.compareTo(rs) <= 0);
|
||||
}
|
||||
@Override
|
||||
public boolean test(T t) {
|
||||
Comparable rs = (Comparable) attr.get(t);
|
||||
if (rs == null) return true;
|
||||
if (min != null && min.compareTo(rs) >= 0) return true;
|
||||
return (max != null && max.compareTo(rs) <= 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " NOT BETWEEN " + min + " AND " + max;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String toString() {
|
||||
return attr.field() + " NOT BETWEEN " + min + " AND " + max;
|
||||
}
|
||||
};
|
||||
return null;
|
||||
case IN:
|
||||
case NOTIN:
|
||||
|
||||
Reference in New Issue
Block a user