aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2011-12-11 12:23:42 +0100
committerBananeweizen <bananeweizen@gmx.de>2011-12-11 12:23:42 +0100
commitb6cabce732d206d23ec7ccc70531e1163aa201d9 (patch)
treef150415d2f8a871d658ec2c0fda40a670ea02b1f /main/src
parentcd99cb81516670d8a8dfd323fe7753debb6d54f4 (diff)
downloadcgeo-b6cabce732d206d23ec7ccc70531e1163aa201d9.zip
cgeo-b6cabce732d206d23ec7ccc70531e1163aa201d9.tar.gz
cgeo-b6cabce732d206d23ec7ccc70531e1163aa201d9.tar.bz2
refactoring: use an interface for the filters
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/CacheListAdapter.java8
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java16
-rw-r--r--main/src/cgeo/geocaching/filter/AbstractFilter.java29
-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.java18
-rw-r--r--main/src/cgeo/geocaching/filter/cgFilter.java34
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;
- }
-}