package org.activityinfo.ui.client.component.form.field.suggest;
import com.google.gwt.user.client.ui.SuggestOracle;
import org.activityinfo.model.form.FormInstance;
import org.activityinfo.model.form.FormInstanceLabeler;
import org.activityinfo.core.shared.importing.match.names.LatinPlaceNameScorer;
import java.util.ArrayList;
import java.util.List;
public class InstanceSuggestOracle extends SuggestOracle {
private List<FormInstance> instances;
private LatinPlaceNameScorer scorer = new LatinPlaceNameScorer();
public InstanceSuggestOracle(List<FormInstance> range) {
this.instances = range;
}
@Override
public void requestSuggestions(Request request, Callback callback) {
List<Suggestion> suggestions = new ArrayList<>();
for(FormInstance instance : instances) {
String label = FormInstanceLabeler.getLabel(instance);
if(scorer.score(request.getQuery(), label) > 0.5) {
suggestions.add(new InstanceSuggestion(instance));
}
}
callback.onSuggestionsReady(request, new Response(suggestions));
}
}