diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2011-12-11 12:23:42 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2011-12-11 12:23:42 +0100 |
| commit | b6cabce732d206d23ec7ccc70531e1163aa201d9 (patch) | |
| tree | f150415d2f8a871d658ec2c0fda40a670ea02b1f | |
| parent | cd99cb81516670d8a8dfd323fe7753debb6d54f4 (diff) | |
| download | cgeo-b6cabce732d206d23ec7ccc70531e1163aa201d9.zip cgeo-b6cabce732d206d23ec7ccc70531e1163aa201d9.tar.gz cgeo-b6cabce732d206d23ec7ccc70531e1163aa201d9.tar.bz2 | |
refactoring: use an interface for the filters
| -rw-r--r-- | main/src/cgeo/geocaching/CacheListAdapter.java | 8 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/cgeocaches.java | 16 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/AbstractFilter.java | 29 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/FilterBySize.java (renamed from main/src/cgeo/geocaching/filter/cgFilterBySize.java) | 12 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/FilterByTrackables.java (renamed from main/src/cgeo/geocaching/filter/cgFilterByTrackables.java) | 6 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/FilterByType.java (renamed from main/src/cgeo/geocaching/filter/cgFilterByType.java) | 8 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/IFilter.java | 18 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/cgFilter.java | 34 |
8 files changed, 72 insertions, 59 deletions
diff --git a/main/src/cgeo/geocaching/CacheListAdapter.java b/main/src/cgeo/geocaching/CacheListAdapter.java index ad0bf56..5d53d72 100644 --- a/main/src/cgeo/geocaching/CacheListAdapter.java +++ b/main/src/cgeo/geocaching/CacheListAdapter.java @@ -3,7 +3,7 @@ package cgeo.geocaching; import cgeo.geocaching.enumerations.CacheListType; import cgeo.geocaching.enumerations.CacheSize; import cgeo.geocaching.enumerations.CacheType; -import cgeo.geocaching.filter.cgFilter; +import cgeo.geocaching.filter.IFilter; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.sorting.CacheComparator; import cgeo.geocaching.sorting.DistanceComparator; @@ -72,7 +72,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> { private static final int SWIPE_MAX_OFF_PATH = 100; private static final int SWIPE_DISTANCE = 80; private static final float SWIPE_OPACITY = 0.5f; - private cgFilter currentFilter = null; + private IFilter currentFilter = null; private List<cgCache> originalList = null; private final CacheListType cacheListType; @@ -123,7 +123,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> { /** * Called after a user action on the filter menu. */ - public void setFilter(cgFilter filter) { + public void setFilter(final IFilter filter) { // Backup current caches list if it isn't backed up yet if (originalList == null) { originalList = new ArrayList<cgCache>(list); @@ -161,7 +161,7 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> { } public String getFilterName() { - return currentFilter.getFilterName(); + return currentFilter.getName(); } public void setHistoric(boolean historicIn) { diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java index 30eb27f..0dfda1c 100644 --- a/main/src/cgeo/geocaching/cgeocaches.java +++ b/main/src/cgeo/geocaching/cgeocaches.java @@ -10,10 +10,10 @@ import cgeo.geocaching.enumerations.CacheSize; import cgeo.geocaching.enumerations.CacheType; import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.files.GPXImporter; -import cgeo.geocaching.filter.cgFilter; -import cgeo.geocaching.filter.cgFilterBySize; -import cgeo.geocaching.filter.cgFilterByTrackables; -import cgeo.geocaching.filter.cgFilterByType; +import cgeo.geocaching.filter.FilterBySize; +import cgeo.geocaching.filter.FilterByTrackables; +import cgeo.geocaching.filter.FilterByType; +import cgeo.geocaching.filter.IFilter; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.maps.CGeoMap; import cgeo.geocaching.sorting.CacheComparator; @@ -1048,7 +1048,7 @@ public class cgeocaches extends AbstractListActivity { showFilterMenu(SUBMENU_FILTER_SIZE); return true; case MENU_FILTER_TRACKABLES: - setFilter(new cgFilterByTrackables(res.getString(R.string.caches_filter_track))); + setFilter(new FilterByTrackables(res.getString(R.string.caches_filter_track))); return true; case MENU_FILTER_CLEAR: if (adapter != null) { @@ -1084,7 +1084,7 @@ public class cgeocaches extends AbstractListActivity { } builder.setItems(names.toArray(new String[names.size()]), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { - setFilter(new cgFilterBySize(cacheSizes[item])); + setFilter(new FilterBySize(cacheSizes[item])); } }); break; @@ -1099,7 +1099,7 @@ public class cgeocaches extends AbstractListActivity { } builder.setItems(typeNames.toArray(new String[typeNames.size()]), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { - setFilter(new cgFilterByType(cacheTypes[item])); + setFilter(new FilterByType(cacheTypes[item])); } }); break; @@ -1285,7 +1285,7 @@ public class cgeocaches extends AbstractListActivity { return adapter.getItem(adapterInfo.position); } - private boolean setFilter(cgFilter filter) { + private boolean setFilter(IFilter filter) { if (adapter != null) { adapter.setFilter(filter); prepareFilterBar(); diff --git a/main/src/cgeo/geocaching/filter/AbstractFilter.java b/main/src/cgeo/geocaching/filter/AbstractFilter.java new file mode 100644 index 0000000..49cf84a --- /dev/null +++ b/main/src/cgeo/geocaching/filter/AbstractFilter.java @@ -0,0 +1,29 @@ +package cgeo.geocaching.filter; + +import cgeo.geocaching.cgCache; + +import java.util.ArrayList; +import java.util.List; + +abstract class AbstractFilter implements IFilter { + private final String name; + + public AbstractFilter(String name) { + this.name = name; + } + + public void filter(List<cgCache> list) { + final List<cgCache> itemsToRemove = new ArrayList<cgCache>(); + for (cgCache item : list) { + if (!accepts(item)) { + itemsToRemove.add(item); + } + } + list.removeAll(itemsToRemove); + } + + @Override + public String getName() { + return name; + } +} diff --git a/main/src/cgeo/geocaching/filter/cgFilterBySize.java b/main/src/cgeo/geocaching/filter/FilterBySize.java index eb754c6..a9d6036 100644 --- a/main/src/cgeo/geocaching/filter/cgFilterBySize.java +++ b/main/src/cgeo/geocaching/filter/FilterBySize.java @@ -3,21 +3,21 @@ package cgeo.geocaching.filter; import cgeo.geocaching.cgCache; import cgeo.geocaching.enumerations.CacheSize; -public class cgFilterBySize extends cgFilter { +public class FilterBySize extends AbstractFilter { private final CacheSize cacheSize; - public cgFilterBySize(CacheSize cacheSize) { + public FilterBySize(CacheSize cacheSize) { super(cacheSize.id); this.cacheSize = cacheSize; } @Override - boolean applyFilter(cgCache cache) { - return this.cacheSize == cache.getSize(); + public boolean accepts(cgCache cache) { + return cacheSize == cache.getSize(); } @Override - public String getFilterName() { - return this.cacheSize.getL10n(); + public String getName() { + return cacheSize.getL10n(); } } diff --git a/main/src/cgeo/geocaching/filter/cgFilterByTrackables.java b/main/src/cgeo/geocaching/filter/FilterByTrackables.java index 90cae99..ad5c806 100644 --- a/main/src/cgeo/geocaching/filter/cgFilterByTrackables.java +++ b/main/src/cgeo/geocaching/filter/FilterByTrackables.java @@ -2,13 +2,13 @@ package cgeo.geocaching.filter; import cgeo.geocaching.cgCache; -public class cgFilterByTrackables extends cgFilter { - public cgFilterByTrackables(String name) { +public class FilterByTrackables extends AbstractFilter { + public FilterByTrackables(String name) { super(name); } @Override - boolean applyFilter(cgCache cache) { + public boolean accepts(cgCache cache) { return cache.hasTrackables(); } } diff --git a/main/src/cgeo/geocaching/filter/cgFilterByType.java b/main/src/cgeo/geocaching/filter/FilterByType.java index 6d18ed3..6f6445e 100644 --- a/main/src/cgeo/geocaching/filter/cgFilterByType.java +++ b/main/src/cgeo/geocaching/filter/FilterByType.java @@ -3,21 +3,21 @@ package cgeo.geocaching.filter; import cgeo.geocaching.cgCache; import cgeo.geocaching.enumerations.CacheType; -public class cgFilterByType extends cgFilter { +public class FilterByType extends AbstractFilter { private final CacheType cacheType; - public cgFilterByType(final CacheType cacheType) { + public FilterByType(final CacheType cacheType) { super(cacheType.id); this.cacheType = cacheType; } @Override - boolean applyFilter(final cgCache cache) { + public boolean accepts(final cgCache cache) { return cacheType == cache.getType(); } @Override - public String getFilterName() { + public String getName() { return cacheType.getL10n(); } } diff --git a/main/src/cgeo/geocaching/filter/IFilter.java b/main/src/cgeo/geocaching/filter/IFilter.java new file mode 100644 index 0000000..abc2d50 --- /dev/null +++ b/main/src/cgeo/geocaching/filter/IFilter.java @@ -0,0 +1,18 @@ +package cgeo.geocaching.filter; + +import cgeo.geocaching.cgCache; + +import java.util.List; + +public interface IFilter { + + public abstract String getName(); + + /** + * @param cache + * @return true if the filter accepts the cache, false otherwise + */ + public abstract boolean accepts(final cgCache cache); + + public void filter(final List<cgCache> list); +}
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/filter/cgFilter.java b/main/src/cgeo/geocaching/filter/cgFilter.java deleted file mode 100644 index 62fe49c..0000000 --- a/main/src/cgeo/geocaching/filter/cgFilter.java +++ /dev/null @@ -1,34 +0,0 @@ -package cgeo.geocaching.filter; - -import cgeo.geocaching.cgCache; - -import java.util.ArrayList; -import java.util.List; - -public abstract class cgFilter { - private String name; - - public cgFilter(String name) { - this.name = name; - } - - /** - * @param cache - * @return true if the cache applies (passes the criteria), false else - */ - abstract boolean applyFilter(cgCache cache); - - public void filter(List<cgCache> list) { - List<cgCache> itemsToRemove = new ArrayList<cgCache>(); - for (cgCache item : list) { - if (!applyFilter(item)) { - itemsToRemove.add(item); - } - } - list.removeAll(itemsToRemove); - } - - public String getFilterName() { - return name; - } -} |
