This commit is contained in:
地平线
2015-10-28 11:10:24 +08:00
parent 1cdcd913ea
commit e035e71fca
2 changed files with 38 additions and 7 deletions

View File

@@ -606,7 +606,14 @@ public final class DataDefaultSource implements DataSource, Nameable {
if (cache == null) return;
final Attribute<T, Serializable> attr = info.getPrimary();
final Serializable[] keys2 = keys;
Serializable[] ids = cache.delete((T t) -> Arrays.binarySearch(keys2, attr.get(t)) >= 0);
Serializable[] ids = cache.delete((T t) -> {
Serializable k = attr.get(t);
if (k == null) return false;
for (Serializable y : keys2) {
if (k.equals(y)) return true;
}
return false;
});
if (cacheListener != null) cacheListener.deleteCache(info.getType(), ids);
} catch (SQLException e) {
throw new RuntimeException(e);

View File

@@ -498,7 +498,11 @@ public class FilterNode {
public boolean test(T t) {
Object rs = attr.get(t);
if (rs == null) return false;
return Arrays.binarySearch((int[]) val, (int) rs) >= 0;
int k = (int) rs;
for (int v : (int[]) val) {
if (v == k) return true;
}
return false;
}
@Override
@@ -513,7 +517,11 @@ public class FilterNode {
public boolean test(T t) {
Object rs = attr.get(t);
if (rs == null) return false;
return Arrays.binarySearch((short[]) val, (short) rs) >= 0;
short k = (short) rs;
for (short v : (short[]) val) {
if (v == k) return true;
}
return false;
}
@Override
@@ -528,7 +536,11 @@ public class FilterNode {
public boolean test(T t) {
Object rs = attr.get(t);
if (rs == null) return false;
return Arrays.binarySearch((long[]) val, (long) rs) >= 0;
long k = (long) rs;
for (long v : (long[]) val) {
if (v == k) return true;
}
return false;
}
@Override
@@ -543,7 +555,11 @@ public class FilterNode {
public boolean test(T t) {
Object rs = attr.get(t);
if (rs == null) return false;
return Arrays.binarySearch((float[]) val, (float) rs) >= 0;
float k = (float) rs;
for (float v : (float[]) val) {
if (v == k) return true;
}
return false;
}
@Override
@@ -558,7 +574,11 @@ public class FilterNode {
public boolean test(T t) {
Object rs = attr.get(t);
if (rs == null) return false;
return Arrays.binarySearch((double[]) val, (double) rs) >= 0;
double k = (double) rs;
for (double v : (double[]) val) {
if (v == k) return true;
}
return false;
}
@Override
@@ -572,7 +592,11 @@ public class FilterNode {
@Override
public boolean test(T t) {
Object rs = attr.get(t);
return rs != null && Arrays.binarySearch((Object[]) val, rs) >= 0;
if (rs == null) return false;
for (Object v : (Object[]) val) {
if (rs.equals(v)) return true;
}
return false;
}
@Override