package org.ovirt.engine.core.searchbackend;
import java.util.Arrays;
import java.util.Date;
import java.util.UUID;
import org.ovirt.engine.core.common.businessentities.ArchitectureType;
import org.ovirt.engine.core.common.businessentities.DateEnumForSearch;
import org.ovirt.engine.core.common.businessentities.VmTemplateStatus;
import org.ovirt.engine.core.common.utils.SimpleDependencyInjector;
public class VmTemplateConditionFieldAutoCompleter extends BaseConditionFieldAutoCompleter {
public static final String NAME = "NAME";
public static final String COMMENT = "COMMENT";
public static final String OS = "OS";
public static final String CREATIONDATE = "CREATIONDATE";
public static final String CHILDCOUNT = "CHILDCOUNT";
public static final String MEM = "MEM";
public static final String DESCRIPTION = "DESCRIPTION";
public static final String STATUS = "STATUS";
public static final String CLUSTER = "CLUSTER";
public static final String DATACENTER = "DATACENTER";
public static final String QUOTA = "QUOTA";
public static final String ARCHITECTURE = "ARCHITECTURE";
public static final String VMT_ID = "_VMT_ID";
public static final String VERSION_NAME = "VERSION_NAME";
public VmTemplateConditionFieldAutoCompleter() {
verbs.add(NAME);
verbs.add(COMMENT);
verbs.add(OS);
verbs.add(CREATIONDATE);
verbs.add(CHILDCOUNT);
verbs.add(MEM);
verbs.add(DESCRIPTION);
verbs.add(STATUS);
verbs.add(CLUSTER);
verbs.add(DATACENTER);
verbs.add(QUOTA);
verbs.add(ARCHITECTURE);
verbs.add(VERSION_NAME);
buildCompletions();
verbs.add(VMT_ID);
// Building the types dict
getTypeDictionary().put(NAME, String.class);
getTypeDictionary().put(COMMENT, String.class);
getTypeDictionary().put(OS, String.class);
getTypeDictionary().put(CREATIONDATE, Date.class);
getTypeDictionary().put(CHILDCOUNT, Integer.class);
getTypeDictionary().put(MEM, Integer.class);
getTypeDictionary().put(DESCRIPTION, String.class);
getTypeDictionary().put(STATUS, VmTemplateStatus.class);
getTypeDictionary().put(CLUSTER, String.class);
getTypeDictionary().put(DATACENTER, String.class);
getTypeDictionary().put(QUOTA, String.class);
getTypeDictionary().put(VMT_ID, UUID.class);
getTypeDictionary().put(DESCRIPTION, String.class);
getTypeDictionary().put(ARCHITECTURE, ArchitectureType.class);
getTypeDictionary().put(VERSION_NAME, String.class);
// building the ColumnName Dict
columnNameDict.put(NAME, "name");
columnNameDict.put(COMMENT, "free_text_comment");
columnNameDict.put(OS, "os");
columnNameDict.put(CREATIONDATE, "creation_date");
columnNameDict.put(CHILDCOUNT, "child_count");
columnNameDict.put(MEM, "mem_size_mb");
columnNameDict.put(DESCRIPTION, "description");
columnNameDict.put(STATUS, "status");
columnNameDict.put(CLUSTER, "cluster_name");
columnNameDict.put(DATACENTER, "storage_pool_name");
columnNameDict.put(QUOTA, "quota_name");
columnNameDict.put(VMT_ID, "vmt_guid");
columnNameDict.put(DESCRIPTION, "description");
columnNameDict.put(ARCHITECTURE, "architecture");
columnNameDict.put(VERSION_NAME, "template_version_name");
sortableFieldDict.put(NAME, Arrays.asList(
new SyntaxChecker.SortByElement("name"),
// sort by template_version_name column, treat 'base version' as NULL
new SyntaxChecker.SortByElement("(NULLIF(template_version_name, 'base version'))"),
new SyntaxChecker.SortByElement("template_version_number")));
notFreeTextSearchableFieldsList.add(OS);
// Building the validation dict
buildBasicValidationTable();
}
@Override
public IAutoCompleter getFieldRelationshipAutoCompleter(String fieldName) {
if (CREATIONDATE.equals(fieldName)) {
return TimeConditionRelationAutoCompleter.INSTANCE;
} else if (CHILDCOUNT.equals(fieldName) || MEM.equals(fieldName)) {
return NumericConditionRelationAutoCompleter.INSTANCE;
} else {
return StringConditionRelationAutoCompleter.INSTANCE;
}
}
@Override
public IConditionValueAutoCompleter getFieldValueAutoCompleter(String fieldName) {
if (OS.equals(fieldName)) {
return SimpleDependencyInjector.getInstance().get(OsValueAutoCompleter.class);
} else if (CREATIONDATE.equals(fieldName)) {
return new DateEnumValueAutoCompleter(DateEnumForSearch.class);
} else if (STATUS.equals(fieldName)) {
return new EnumValueAutoCompleter(VmTemplateStatus.class);
} else if (QUOTA.equals(fieldName)) {
return new NullableStringAutoCompleter();
} else if (ARCHITECTURE.equals(fieldName)) {
return new EnumValueAutoCompleter(ArchitectureType.class);
}
return null;
}
}