package org.ovirt.engine.core.searchbackend;
import org.ovirt.engine.core.compat.*;
public class BaseAutoCompleter implements IAutoCompleter {
protected final java.util.HashMap<String, String> mVerbs = new java.util.HashMap<String, String>();
protected final java.util.HashMap<String, java.util.ArrayList<String>> mVerbCompletion =
new java.util.HashMap<String, java.util.ArrayList<String>>();
public BaseAutoCompleter() {
}
public BaseAutoCompleter(String text) {
mVerbs.put(text, text);
buildCompletions();
}
public BaseAutoCompleter(String[] text) {
for (String s : text) {
mVerbs.put(s, s);
}
buildCompletions();
}
protected void buildCompletions() {
java.util.ArrayList<String> emptyKeyList = new java.util.ArrayList<String>();
for (String title : mVerbs.keySet()) {
emptyKeyList.add(changeCaseDisplay(title));
for (int idx = 1; idx <= title.length(); idx++) {
String curKey = title.substring(0, idx);
if (!mVerbCompletion.containsKey(curKey)) {
java.util.ArrayList<String> newList = new java.util.ArrayList<String>();
mVerbCompletion.put(curKey, newList);
}
java.util.ArrayList<String> curList = mVerbCompletion.get(curKey);
curList.add(changeCaseDisplay(title));
}
}
mVerbCompletion.put("", emptyKeyList);
mVerbCompletion.put(" ", emptyKeyList);
}
public String[] getCompletion(String wordPart) {
String[] retval = new String[0];
if (mVerbCompletion.containsKey(wordPart.toUpperCase())) {
java.util.ArrayList<String> curList = mVerbCompletion.get(wordPart.toUpperCase());
retval = new String[curList.size()];
retval = curList.toArray(new String[] {});
}
return retval;
}
public boolean validate(String text) {
return (text != null) ? mVerbs.containsKey(text.toUpperCase()) : false;
}
public boolean validateCompletion(String text) {
return mVerbCompletion.containsKey(text);
}
public String changeCaseDisplay(String text) {
for (String s : EnumCompat.GetNames(DayOfWeek.class)) {
if (StringHelper.EqOp(text, s)) // days of the begin with capital
// letter
{
return text;
}
}
return text.toLowerCase();
}
}