package org.ovirt.engine.core.searchbackend;
import java.util.HashMap;
import org.ovirt.engine.core.common.businessentities.Identifiable;
import org.ovirt.engine.core.compat.DateTime;
import org.ovirt.engine.core.compat.DayOfWeek;
public class DateEnumValueAutoCompleter extends BaseAutoCompleter implements IConditionValueAutoCompleter {
private HashMap<String, Integer> enumValues = new HashMap<>();
public <E extends Enum<? extends E> & Identifiable> DateEnumValueAutoCompleter(Class<E> enumerationType) {
super();
for (E val : enumerationType.getEnumConstants()) {
String ValName = val.name().toUpperCase();
enumValues.put(ValName, val.getValue());
verbs.add(ValName);
}
addDaysOfWeek();
buildCompletions();
}
private void addDaysOfWeek() {
String day;
int dayIndex = 3;
for (int i = -2; i > -8; i--) {
day = DateTime.getNow().addDays(i).getDayOfWeek().toString();
enumValues.put(day, dayIndex);
verbs.add(day);
dayIndex++;
}
}
@Override
public String convertFieldEnumValueToActualValue(String fieldValue) {
if (DateUtils.parse(fieldValue) != null) {
return fieldValue;
}
// check enum values
if (enumValues.containsKey(fieldValue.toUpperCase())) {
return enumValues.get(fieldValue.toUpperCase()).toString();
}
// check for rest of the week
for (DayOfWeek day : DayOfWeek.values()) {
if (day.toString().equalsIgnoreCase(fieldValue)) {
return day.toString();
}
}
return "";
}
}