package org.ovirt.engine.core.searchbackend; import java.util.Date; import java.util.UUID; import org.ovirt.engine.core.common.businessentities.storage.DiskStorageType; import org.ovirt.engine.core.common.businessentities.storage.ImageStatus; import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.compat.StringFormat; import org.ovirt.engine.core.compat.StringHelper; public class DiskConditionFieldAutoCompleter extends BaseConditionFieldAutoCompleter { public static final String ALIAS = "ALIAS"; public static final String NAME = "NAME"; public static final String DESCRIPTION = "DESCRIPTION"; public static final String PROVISIONED_SIZE = "PROVISIONED_SIZE"; public static final String SIZE = "SIZE"; public static final String ACTUAL_SIZE = "ACTUAL_SIZE"; public static final String CREATION_DATE = "CREATION_DATE"; public static final String BOOTABLE = "BOOTABLE"; public static final String SHAREABLE = "SHAREABLE"; public static final String STATUS = "STATUS"; public static final String DISK_TYPE = "DISK_TYPE"; public static final String NUMBER_OF_VMS = "NUMBER_OF_VMS"; public static final String VM_NAMES = "VM_NAMES"; public static final String QUOTA = "QUOTA"; public static final String ID = "ID"; public static final String WIPE_AFTER_DELETE = "WIPE_AFTER_DELETE"; public DiskConditionFieldAutoCompleter() { // Building the basic verbs set. verbs.add(ALIAS); verbs.add(NAME); verbs.add(DESCRIPTION); verbs.add(PROVISIONED_SIZE); verbs.add(SIZE); verbs.add(ACTUAL_SIZE); verbs.add(CREATION_DATE); verbs.add(BOOTABLE); verbs.add(SHAREABLE); verbs.add(STATUS); verbs.add(DISK_TYPE); verbs.add(NUMBER_OF_VMS); verbs.add(VM_NAMES); verbs.add(QUOTA); verbs.add(ID); verbs.add(WIPE_AFTER_DELETE); // Building the autoCompletion dict. buildCompletions(); // Building the types dict. getTypeDictionary().put(ALIAS, String.class); getTypeDictionary().put(NAME, String.class); getTypeDictionary().put(DESCRIPTION, String.class); getTypeDictionary().put(PROVISIONED_SIZE, Long.class); getTypeDictionary().put(SIZE, Long.class); getTypeDictionary().put(ACTUAL_SIZE, Long.class); getTypeDictionary().put(CREATION_DATE, Date.class); getTypeDictionary().put(BOOTABLE, Boolean.class); getTypeDictionary().put(SHAREABLE, Boolean.class); getTypeDictionary().put(STATUS, ImageStatus.class); getTypeDictionary().put(DISK_TYPE, DiskStorageType.class); getTypeDictionary().put(NUMBER_OF_VMS, Integer.class); getTypeDictionary().put(VM_NAMES, String.class); getTypeDictionary().put(QUOTA, String.class); getTypeDictionary().put(ID, UUID.class); getTypeDictionary().put(WIPE_AFTER_DELETE, Boolean.class); // building the ColumnName dict. - the name of the column in db columnNameDict.put(ALIAS, "disk_alias"); columnNameDict.put(NAME, "disk_alias"); columnNameDict.put(DESCRIPTION, "disk_description"); columnNameDict.put(PROVISIONED_SIZE, "size"); columnNameDict.put(SIZE, "size"); columnNameDict.put(ACTUAL_SIZE, "actual_size"); columnNameDict.put(CREATION_DATE, "creation_date"); columnNameDict.put(BOOTABLE, "boot"); columnNameDict.put(SHAREABLE, "shareable"); columnNameDict.put(STATUS, "imageStatus"); columnNameDict.put(DISK_TYPE, "disk_storage_type"); columnNameDict.put(NUMBER_OF_VMS, "number_of_vms"); columnNameDict.put(VM_NAMES, "vm_names"); columnNameDict.put(QUOTA, "quota_name"); columnNameDict.put(ID, "disk_id"); columnNameDict.put(WIPE_AFTER_DELETE, "wipe_after_delete"); // Building the validation dict. buildBasicValidationTable(); } @Override public IAutoCompleter getFieldRelationshipAutoCompleter(String fieldName) { if (CREATION_DATE.equals(fieldName) || SIZE.equals(fieldName) || ACTUAL_SIZE.equals(fieldName) || PROVISIONED_SIZE.equals(fieldName)) { return BiggerOrSmallerRelationAutoCompleter.INSTANCE; } else if (NUMBER_OF_VMS.equals(fieldName)) { return NumericConditionRelationAutoCompleter.INSTANCE; } else { return StringConditionRelationAutoCompleter.INSTANCE; } } @Override public IConditionValueAutoCompleter getFieldValueAutoCompleter(String fieldName) { if (STATUS.equals(fieldName)) { return new EnumValueAutoCompleter(ImageStatus.class); } else if (DISK_TYPE.equals(fieldName)) { return new EnumValueAutoCompleter(DiskStorageType.class); } else if (BOOTABLE.equals(fieldName) || SHAREABLE.equals(fieldName) || WIPE_AFTER_DELETE.equals(fieldName)) { return new BitValueAutoCompleter(); } return null; } @Override public void formatValue(String fieldName, Pair<String, String> pair, boolean caseSensitive) { if (CREATION_DATE.equals(fieldName)) { Date tmp = new Date(Date.parse(StringHelper.trim(pair.getSecond(), '\''))); pair.setSecond(StringFormat.format("'%1$s'", tmp)); } else { super.formatValue(fieldName, pair, caseSensitive); } } }