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 &lt; 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 &lt; 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);