src/share/classes/javax/swing/RowFilter.java
Print this page
*** 171,182 ****
* not a valid regular expression.
* @see java.util.regex.Pattern
*/
public static <M,I> RowFilter<M,I> regexFilter(String regex,
int... indices) {
! return (RowFilter<M,I>)new RegexFilter(Pattern.compile(regex),
! indices);
}
/**
* Returns a <code>RowFilter</code> that includes entries that
* have at least one <code>Date</code> value meeting the specified
--- 171,181 ----
* not a valid regular expression.
* @see java.util.regex.Pattern
*/
public static <M,I> RowFilter<M,I> regexFilter(String regex,
int... indices) {
! return new RegexFilter<M, I>(Pattern.compile(regex), indices);
}
/**
* Returns a <code>RowFilter</code> that includes entries that
* have at least one <code>Date</code> value meeting the specified
*** 199,209 ****
* @see java.util.Calendar
* @see java.util.Date
*/
public static <M,I> RowFilter<M,I> dateFilter(ComparisonType type,
Date date, int... indices) {
! return (RowFilter<M,I>)new DateFilter(type, date.getTime(), indices);
}
/**
* Returns a <code>RowFilter</code> that includes entries that
* have at least one <code>Number</code> value meeting the
--- 198,208 ----
* @see java.util.Calendar
* @see java.util.Date
*/
public static <M,I> RowFilter<M,I> dateFilter(ComparisonType type,
Date date, int... indices) {
! return new DateFilter<M, I>(type, date.getTime(), indices);
}
/**
* Returns a <code>RowFilter</code> that includes entries that
* have at least one <code>Number</code> value meeting the
*** 222,232 ****
* are < 0, <code>type</code> is <code>null</code>
* or <code>number</code> is <code>null</code>
*/
public static <M,I> RowFilter<M,I> numberFilter(ComparisonType type,
Number number, int... indices) {
! return (RowFilter<M,I>)new NumberFilter(type, number, indices);
}
/**
* Returns a <code>RowFilter</code> that includes entries if any
* of the supplied filters includes the entry.
--- 221,231 ----
* are < 0, <code>type</code> is <code>null</code>
* or <code>number</code> is <code>null</code>
*/
public static <M,I> RowFilter<M,I> numberFilter(ComparisonType type,
Number number, int... indices) {
! return new NumberFilter<M, I>(type, number, indices);
}
/**
* Returns a <code>RowFilter</code> that includes entries if any
* of the supplied filters includes the entry.
*** 395,459 ****
*/
public abstract I getIdentifier();
}
! private static abstract class GeneralFilter extends RowFilter<Object,Object> {
private int[] columns;
GeneralFilter(int[] columns) {
checkIndices(columns);
this.columns = columns;
}
! public boolean include(Entry<? extends Object,? extends Object> value){
int count = value.getValueCount();
if (columns.length > 0) {
for (int i = columns.length - 1; i >= 0; i--) {
int index = columns[i];
if (index < count) {
if (include(value, index)) {
return true;
}
}
}
! }
! else {
while (--count >= 0) {
if (include(value, count)) {
return true;
}
}
}
return false;
}
protected abstract boolean include(
! Entry<? extends Object,? extends Object> value, int index);
}
! private static class RegexFilter extends GeneralFilter {
private Matcher matcher;
RegexFilter(Pattern regex, int[] columns) {
super(columns);
if (regex == null) {
throw new IllegalArgumentException("Pattern must be non-null");
}
matcher = regex.matcher("");
}
protected boolean include(
! Entry<? extends Object,? extends Object> value, int index) {
matcher.reset(value.getStringValue(index));
return matcher.find();
}
}
! private static class DateFilter extends GeneralFilter {
private long date;
private ComparisonType type;
DateFilter(ComparisonType type, long date, int[] columns) {
super(columns);
--- 394,459 ----
*/
public abstract I getIdentifier();
}
! private static abstract class GeneralFilter<M, I> extends RowFilter<M, I> {
private int[] columns;
GeneralFilter(int[] columns) {
checkIndices(columns);
this.columns = columns;
}
! @Override
! public boolean include(Entry<? extends M, ? extends I> value){
int count = value.getValueCount();
if (columns.length > 0) {
for (int i = columns.length - 1; i >= 0; i--) {
int index = columns[i];
if (index < count) {
if (include(value, index)) {
return true;
}
}
}
! } else {
while (--count >= 0) {
if (include(value, count)) {
return true;
}
}
}
return false;
}
protected abstract boolean include(
! Entry<? extends M, ? extends I> value, int index);
}
! private static class RegexFilter<M, I> extends GeneralFilter<M, I> {
private Matcher matcher;
RegexFilter(Pattern regex, int[] columns) {
super(columns);
if (regex == null) {
throw new IllegalArgumentException("Pattern must be non-null");
}
matcher = regex.matcher("");
}
+ @Override
protected boolean include(
! Entry<? extends M, ? extends I> value, int index) {
matcher.reset(value.getStringValue(index));
return matcher.find();
}
}
! private static class DateFilter<M, I> extends GeneralFilter<M, I> {
private long date;
private ComparisonType type;
DateFilter(ComparisonType type, long date, int[] columns) {
super(columns);
*** 462,473 ****
}
this.type = type;
this.date = date;
}
protected boolean include(
! Entry<? extends Object,? extends Object> value, int index) {
Object v = value.getValue(index);
if (v instanceof Date) {
long vDate = ((Date)v).getTime();
switch(type) {
--- 462,474 ----
}
this.type = type;
this.date = date;
}
+ @Override
protected boolean include(
! Entry<? extends M, ? extends I> value, int index) {
Object v = value.getValue(index);
if (v instanceof Date) {
long vDate = ((Date)v).getTime();
switch(type) {
*** 485,498 ****
}
return false;
}
}
!
!
!
! private static class NumberFilter extends GeneralFilter {
private boolean isComparable;
private Number number;
private ComparisonType type;
NumberFilter(ComparisonType type, Number number, int[] columns) {
--- 486,496 ----
}
return false;
}
}
! private static class NumberFilter<M, I> extends GeneralFilter<M, I> {
private boolean isComparable;
private Number number;
private ComparisonType type;
NumberFilter(ComparisonType type, Number number, int[] columns) {
*** 504,522 ****
this.type = type;
this.number = number;
isComparable = (number instanceof Comparable);
}
@SuppressWarnings("unchecked")
protected boolean include(
! Entry<? extends Object,? extends Object> value, int index) {
Object v = value.getValue(index);
if (v instanceof Number) {
boolean compared = true;
int compareResult;
! Class vClass = v.getClass();
if (number.getClass() == vClass && isComparable) {
compareResult = ((Comparable)number).compareTo(v);
}
else {
compareResult = longCompare((Number)v);
--- 502,521 ----
this.type = type;
this.number = number;
isComparable = (number instanceof Comparable);
}
+ @Override
@SuppressWarnings("unchecked")
protected boolean include(
! Entry<? extends M, ? extends I> value, int index) {
Object v = value.getValue(index);
if (v instanceof Number) {
boolean compared = true;
int compareResult;
! Class<?> vClass = v.getClass();
if (number.getClass() == vClass && isComparable) {
compareResult = ((Comparable)number).compareTo(v);
}
else {
compareResult = longCompare((Number)v);