fixing bug 2303: newhome search now also considers remote servers

This commit is contained in:
Axel Uhl committed 2014-09-15 22:53:22 +02:00
1 parent 0d47d89c13
commit ddaa8abf6d
6 files changed
+48 -15

No files matched your search

@@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.client.place.searchresult;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder;
@@ -45,8 +46,26 @@ public class SearchResultActivity extends AbstractActivity {
}
protected void doSearch(final String searchText) {
KeywordQuery searchQuery = new KeywordQuery(searchText);
clientFactory.getSailingService().search(null, searchQuery, new AsyncCallback<Iterable<LeaderboardSearchResultDTO>>() {
final KeywordQuery searchQuery = new KeywordQuery(searchText.split("[ \t]+"));
clientFactory.getSailingService().getSearchServerNames(new AsyncCallback<Iterable<String>>() {
@Override
public void onSuccess(Iterable<String> serverNames) {
view.initSearchResult(searchText);
searchSingleServer(searchText, searchQuery, /* null meaning the "local" server */ null);
for (String serverName : serverNames) {
searchSingleServer(searchText, searchQuery, serverName);
}
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Error: "+caught.getMessage());
}
});
}
private void searchSingleServer(final String searchText, KeywordQuery searchQuery, String serverName) {
clientFactory.getSailingService().search(serverName, searchQuery, new AsyncCallback<Iterable<LeaderboardSearchResultDTO>>() {
@Override
public void onSuccess(Iterable<LeaderboardSearchResultDTO> searchResults) {
view.updateSearchResult(searchText, searchResults);
@@ -5,6 +5,8 @@ import com.sap.sailing.gwt.ui.shared.LeaderboardSearchResultDTO;
public interface SearchResultView {
Widget asWidget();
void initSearchResult(String searchText);
void updateSearchResult(String searchText, Iterable<LeaderboardSearchResultDTO> searchResultItems);
}
@@ -22,6 +22,11 @@ public class TabletAndDesktopSearchResultView extends Composite implements Searc
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public void initSearchResult(String searchText) {
searchResult.init(searchText);
}
@Override
public void updateSearchResult(String searchText, Iterable<LeaderboardSearchResultDTO> searchResultItems) {
searchResult.updateSearchResult(searchText, searchResultItems);
@@ -39,6 +39,8 @@ public class SearchResult extends Composite {
private final List<SearchResultItem> searchResultItemComposites;
private final PlaceNavigator navigator;
private int resultCounter;
public SearchResult(PlaceNavigator navigator) {
this.navigator = navigator;
this.searchResultItemComposites = new ArrayList<SearchResultItem>();
@@ -85,17 +87,9 @@ public class SearchResult extends Composite {
}
public void updateSearchResult(String searchText, Iterable<LeaderboardSearchResultDTO> searchResultItems) {
searchResultItemPanel.clear();
searchResultItemComposites.clear();
searchResultFor.setInnerText(searchText);
searchText1.setText(searchText);
searchText2.setText(searchText);
int resultCounter = 0;
for(LeaderboardSearchResultDTO singleSearchResult: searchResultItems) {
for (LeaderboardSearchResultDTO singleSearchResult : searchResultItems) {
// for now filter all results where we no event is defined
if(singleSearchResult.getEvent() != null) {
if (singleSearchResult.getEvent() != null) {
SearchResultItem searchResultItem = new SearchResultItem(navigator, singleSearchResult);
searchResultItemPanel.add(searchResultItem);
searchResultItemComposites.add(searchResultItem);
@@ -104,4 +98,15 @@ public class SearchResult extends Composite {
}
searchResultCount.setInnerText(String.valueOf(resultCounter));
}
public void init(String searchText) {
searchResultItemPanel.clear();
searchResultItemComposites.clear();
searchResultFor.setInnerText(searchText);
searchText1.setText(searchText);
searchText2.setText(searchText);
resultCounter = 0;
}
}
@@ -71,6 +71,7 @@ import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Triple;
import com.sap.sse.common.search.KeywordQuery;
import com.sap.sse.common.search.Result;
import com.sap.sse.common.search.Searchable;
/**
* An OSGi service that can be used to track boat races using a TracTrac connector that pushes
@@ -91,7 +92,7 @@ import com.sap.sse.common.search.Result;
*
*/
public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetcher, RegattaRegistry, RaceFetcher,
LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager {
LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager, Searchable<LeaderboardSearchResult, KeywordQuery> {
@Override
Regatta getRegatta(RegattaName regattaName);
@@ -562,6 +563,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
/**
* Searches the content of this server, not that of any remote servers referenced by any {@link RemoteSailingServerReference}s.
*/
@Override
Result<LeaderboardSearchResult> search(KeywordQuery query);
/**
@@ -6,6 +6,6 @@ package com.sap.sse.common.search;
* @author Axel Uhl (D043530)
*
*/
public interface Searchable<H extends Hit> {
Result<H> query(Query query);
public interface Searchable<H extends Hit, Q extends Query> {
Result<H> search(Q query);
}