diff options
Diffstat (limited to 'main/src/cgeo/geocaching/loaders')
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; + }); } } |
