aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/loaders
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-02-28 23:17:00 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-02-28 23:17:00 +0100
commitae8b55b72846248256639aebd1ededc6a79e81df (patch)
treec36b932e12e05a6d6102578e91e8a80f80247a2d /main/src/cgeo/geocaching/loaders
parent3b84568a8c300c6993928c5e8dfe5d038f94ce10 (diff)
downloadcgeo-ae8b55b72846248256639aebd1ededc6a79e81df.zip
cgeo-ae8b55b72846248256639aebd1ededc6a79e81df.tar.gz
cgeo-ae8b55b72846248256639aebd1ededc6a79e81df.tar.bz2
Query various connectors in parallel
Diffstat (limited to 'main/src/cgeo/geocaching/loaders')
-rw-r--r--main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java18
-rw-r--r--main/src/cgeo/geocaching/loaders/FinderGeocacheListLoader.java17
-rw-r--r--main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java17
-rw-r--r--main/src/cgeo/geocaching/loaders/OwnerGeocacheListLoader.java15
4 files changed, 31 insertions, 36 deletions
diff --git a/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
index 3874b47..c2d92bf 100644
--- a/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
@@ -6,6 +6,7 @@ import cgeo.geocaching.connector.capability.ISearchByCenter;
import cgeo.geocaching.geopoint.Geopoint;
import org.eclipse.jdt.annotation.NonNull;
+import rx.functions.Func1;
import android.content.Context;
@@ -19,16 +20,13 @@ public class CoordsGeocacheListLoader extends AbstractSearchLoader {
@Override
public SearchResult runSearch() {
-
- SearchResult search = new SearchResult();
-
- for (ISearchByCenter centerConn : ConnectorFactory.getSearchByCenterConnectors()) {
- if (centerConn.isActive()) {
- search.addSearchResult(centerConn.searchByCenter(coords, this));
- }
- }
-
- return search;
+ return SearchResult.parallelCombineActive(ConnectorFactory.getSearchByCenterConnectors(),
+ new Func1<ISearchByCenter, SearchResult>() {
+ @Override
+ public SearchResult call(final ISearchByCenter connector) {
+ return connector.searchByCenter(coords, CoordsGeocacheListLoader.this);
+ }
+ });
}
}
diff --git a/main/src/cgeo/geocaching/loaders/FinderGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/FinderGeocacheListLoader.java
index 7edd436..378fa1b 100644
--- a/main/src/cgeo/geocaching/loaders/FinderGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/FinderGeocacheListLoader.java
@@ -5,6 +5,7 @@ import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.capability.ISearchByFinder;
import org.eclipse.jdt.annotation.NonNull;
+import rx.functions.Func1;
import android.content.Context;
@@ -19,15 +20,13 @@ public class FinderGeocacheListLoader extends AbstractSearchLoader {
@Override
public SearchResult runSearch() {
- SearchResult searchResult = new SearchResult();
-
- for (ISearchByFinder connector : ConnectorFactory.getSearchByFinderConnectors()) {
- if (connector.isActive()) {
- searchResult.addSearchResult(connector.searchByFinder(username, this));
- }
- }
-
- return searchResult;
+ return SearchResult.parallelCombineActive(ConnectorFactory.getSearchByFinderConnectors(),
+ new Func1<ISearchByFinder, SearchResult>() {
+ @Override
+ public SearchResult call(final ISearchByFinder connector) {
+ return connector.searchByFinder(username, FinderGeocacheListLoader.this);
+ }
+ });
}
}
diff --git a/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
index 9c16ee4..45b264f 100644
--- a/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
@@ -5,6 +5,7 @@ import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.capability.ISearchByKeyword;
import org.eclipse.jdt.annotation.NonNull;
+import rx.functions.Func1;
import android.content.Context;
@@ -19,15 +20,13 @@ public class KeywordGeocacheListLoader extends AbstractSearchLoader {
@Override
public SearchResult runSearch() {
- SearchResult searchResult = new SearchResult();
-
- for (ISearchByKeyword connector : ConnectorFactory.getSearchByKeywordConnectors()) {
- if (connector.isActive()) {
- searchResult.addSearchResult(connector.searchByKeyword(keyword, this));
- }
- }
-
- return searchResult;
+ return SearchResult.parallelCombineActive(ConnectorFactory.getSearchByKeywordConnectors(),
+ new Func1<ISearchByKeyword, SearchResult>() {
+ @Override
+ public SearchResult call(final ISearchByKeyword connector) {
+ return connector.searchByKeyword(keyword, KeywordGeocacheListLoader.this);
+ }
+ });
}
}
diff --git a/main/src/cgeo/geocaching/loaders/OwnerGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/OwnerGeocacheListLoader.java
index 4d530fb..70db74c 100644
--- a/main/src/cgeo/geocaching/loaders/OwnerGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/OwnerGeocacheListLoader.java
@@ -5,6 +5,7 @@ import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.capability.ISearchByOwner;
import org.eclipse.jdt.annotation.NonNull;
+import rx.functions.Func1;
import android.content.Context;
@@ -19,15 +20,13 @@ public class OwnerGeocacheListLoader extends AbstractSearchLoader {
@Override
public SearchResult runSearch() {
- SearchResult searchResult = new SearchResult();
-
- for (ISearchByOwner connector : ConnectorFactory.getSearchByOwnerConnectors()) {
- if (connector.isActive()) {
- searchResult.addSearchResult(connector.searchByOwner(username, this));
+ return SearchResult.parallelCombineActive(ConnectorFactory.getSearchByOwnerConnectors(),
+ new Func1<ISearchByOwner, SearchResult>() {
+ @Override
+ public SearchResult call(final ISearchByOwner connector) {
+ return connector.searchByOwner(username, OwnerGeocacheListLoader.this);
}
- }
-
- return searchResult;
+ });
}
}