/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE file at the root of the source * tree and available online at * * https://github.com/keeps/roda */ package org.roda.wui.client.common.search; import java.util.ArrayList; import java.util.List; import org.roda.core.data.v2.index.IsIndexed; import org.roda.wui.client.browse.BrowserService; import org.roda.wui.client.common.utils.AsyncCallbackUtils; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.SuggestOracle; public class SearchSuggestOracle<T extends IsIndexed> extends SuggestOracle { private Class<T> classToRequest; private String field; private boolean allowPartial; public SearchSuggestOracle(Class<T> classToRequest, String field, boolean allowPartial) { this.classToRequest = classToRequest; this.field = field; this.allowPartial = allowPartial; } @Override public void requestSuggestions(final Request request, final Callback callback) { BrowserService.Util.getInstance().suggest(classToRequest.getName(), field, request.getQuery(), allowPartial, new AsyncCallback<List<String>>() { @Override public void onFailure(Throwable caught) { AsyncCallbackUtils.defaultFailureTreatment(caught); } @Override public void onSuccess(List<String> suggestionList) { List<SearchSuggest> suggestions = new ArrayList<>(); for (String suggestion : suggestionList) { suggestions.add(new SearchSuggest(suggestion, suggestion, suggestions.size())); } Response response = new Response(); response.setSuggestions(suggestions); callback.onSuggestionsReady(request, response); } }); } }