Refactor previous fix

This commit is contained in:
drdev
2013-12-17 22:14:17 +00:00
parent 040e51f124
commit d8b6140692
2 changed files with 16 additions and 23 deletions

View File

@@ -110,27 +110,6 @@ public class CardSearchFilter extends TextSearchFilter<PaperCard> {
return button;
}
@Override
public <U extends InventoryItem> Predicate<U> buildPredicate(Class<U> genericType) {
final Predicate<PaperCard> predicate = this.buildPredicate();
return new Predicate<U>() {
@Override
public boolean apply(U item) {
try {
return predicate.apply((PaperCard)item);
}
catch (Exception ex) {
//fallback to regular item text filter if item not PaperCard
boolean result = btnName.getSelected() && SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item);
if (cbSearchMode.getSelectedIndex() != 0) { //invert result if needed
result = !result;
}
return result;
}
}
};
}
@Override
protected Predicate<PaperCard> buildPredicate() {
return SFilterUtil.buildTextFilter(
@@ -140,4 +119,14 @@ public class CardSearchFilter extends TextSearchFilter<PaperCard> {
btnType.getSelected(),
btnText.getSelected());
}
@Override
protected <U extends InventoryItem> boolean showUnsupportedItem(U item) {
//fallback to regular item text filter if item not PaperCard
boolean result = btnName.getSelected() && SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item);
if (cbSearchMode.getSelectedIndex() != 0) { //invert result if needed
result = !result;
}
return result;
}
}

View File

@@ -122,7 +122,7 @@ public abstract class ItemFilter<T extends InventoryItem> {
this.itemManager.applyFilters();
}
public <U extends InventoryItem> Predicate<U> buildPredicate(Class<U> genericType) {
public final <U extends InventoryItem> Predicate<U> buildPredicate(Class<U> genericType) {
final Predicate<T> predicate = this.buildPredicate();
return new Predicate<U>() {
@SuppressWarnings("unchecked")
@@ -132,12 +132,16 @@ public abstract class ItemFilter<T extends InventoryItem> {
return predicate.apply((T)item);
}
catch (Exception ex) {
return false; //if can't cast U to T, filter item out
return showUnsupportedItem(item); //if can't cast U to T, filter item out unless derived class can handle it
}
}
};
}
protected <U extends InventoryItem> boolean showUnsupportedItem(U item) {
return false; //don't show unsupported items by default
}
public abstract ItemFilter<T> createCopy();
public abstract boolean isEmpty();
public abstract void reset();