package org.rhq.enterprise.server.search;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.search.SearchSubsystem;
import org.rhq.enterprise.server.search.assist.AbstractSearchAssistant;
import org.rhq.enterprise.server.search.assist.SearchAssistant;
import org.rhq.enterprise.server.search.execution.SearchAssistManager;
import org.rhq.enterprise.server.util.LookupUtil;
public class TestAutoCompletionManager extends SearchAssistManager {
public static class TestAutoCompletor extends AbstractSearchAssistant {
/*
* color[primary] = red, green, blue
* color[other] = red-green, green-blue, blue-red
* number = two, four, twenty-two, twenty-four, forty-two
*/
private static Map<String, List<String>> suggestionMap = new HashMap<String, List<String>>();
static {
suggestionMap.put("color:params", build("primary", "other"));
suggestionMap.put("color:primary", build("red", "green", "blue"));
suggestionMap.put("color:other", build("red-green", "green-blue", "blue-red"));
suggestionMap.put("number:", build("two", "four", "twenty-two", "twenty-four", "forty-two"));
}
private static List<String> build(String... items) {
return Collections.unmodifiableList(Arrays.asList(items));
}
public TestAutoCompletor(Subject subject) {
super(subject);
}
@Override
public SearchSubsystem getSearchSubsystem() {
return null;
}
@Override
public List<String> getSimpleContexts() {
return Arrays.asList("number");
}
@Override
public List<String> getParameterizedContexts() {
return Arrays.asList("color");
}
@Override
public List<String> getParameters(String context, String filter) {
super.getParameters(context, filter);
return filter(suggestionMap.get("color:params"), filter);
}
@Override
public List<String> getValues(String context, String param, String filter) {
super.getValues(context, param, filter);
String lookup = context + ":" + (param == null ? "" : param);
return filter(suggestionMap.get(lookup), filter);
}
}
public TestAutoCompletionManager() {
super(LookupUtil.getSubjectManager().getOverlord(), null);
}
@Override
protected AbstractSearchAssistant getSearchAssistant() {
return new TestAutoCompletor(LookupUtil.getSubjectManager().getOverlord());
}
@Override
protected SearchAssistant getTabAwareSearchAssistant(String tab) {
return new TestAutoCompletor(LookupUtil.getSubjectManager().getOverlord());
}
}