package org.ovirt.engine.core.searchbackend;
import org.ovirt.engine.core.common.businessentities.ExternalStatus;
import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus;
import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
import org.ovirt.engine.core.common.businessentities.storage.StorageType;
public class StorageDomainFieldAutoCompleter extends BaseConditionFieldAutoCompleter {
public static final String NAME = "NAME";
public static final String STATUS = "STATUS";
public static final String SHARED_STATUS = "SHARED_STATUS";
public static final String EXTERNAL_STATUS = "EXTERNAL_STATUS";
public static final String DATACENTER = "DATACENTER";
public static final String TYPE = "TYPE";
public static final String SIZE = "SIZE";
public static final String USED = "USED";
public static final String COMMITTED = "COMMITTED";
public static final String COMMENT = "COMMENT";
public static final String DESCRIPTION = "DESCRIPTION";
public static final String WIPE_AFTER_DELETE = "WIPE_AFTER_DELETE";
public static final String LOW_SPACE_THRESHOLD = "LOW_SPACE_THRESHOLD (%)";
public static final String CRITICAL_SPACE_THRESHOLD = "CRITICAL_SPACE_THRESHOLD (GB)";
public StorageDomainFieldAutoCompleter() {
// Building the basic vervs Dict
verbs.add(NAME);
verbs.add(STATUS);
verbs.add(SHARED_STATUS);
verbs.add(EXTERNAL_STATUS);
verbs.add(DATACENTER);
verbs.add(TYPE);
verbs.add(SIZE);
verbs.add(USED);
verbs.add(COMMITTED);
verbs.add(COMMENT);
verbs.add(DESCRIPTION);
verbs.add(WIPE_AFTER_DELETE);
verbs.add(LOW_SPACE_THRESHOLD);
verbs.add(CRITICAL_SPACE_THRESHOLD);
// Building the autoCompletion Dict
buildCompletions();
// Building the types dict
getTypeDictionary().put(NAME, String.class);
getTypeDictionary().put(STATUS, StorageDomainStatus.class);
getTypeDictionary().put(SHARED_STATUS, StorageDomainSharedStatus.class);
getTypeDictionary().put(EXTERNAL_STATUS, ExternalStatus.class);
getTypeDictionary().put(DATACENTER, String.class);
getTypeDictionary().put(TYPE, StorageType.class);
getTypeDictionary().put(SIZE, Integer.class);
getTypeDictionary().put(USED, Integer.class);
getTypeDictionary().put(COMMITTED, Integer.class);
getTypeDictionary().put(COMMENT, String.class);
getTypeDictionary().put(DESCRIPTION, String.class);
getTypeDictionary().put(WIPE_AFTER_DELETE, Boolean.class);
getTypeDictionary().put(LOW_SPACE_THRESHOLD, Integer.class);
getTypeDictionary().put(CRITICAL_SPACE_THRESHOLD, Integer.class);
// building the ColumnName Dict
columnNameDict.put(NAME, "storage_name");
columnNameDict.put(STATUS, "status");
columnNameDict.put(SHARED_STATUS, "storage_domain_shared_status");
columnNameDict.put(EXTERNAL_STATUS, "external_status");
columnNameDict.put(DATACENTER, "storage_pool_name::text");
columnNameDict.put(TYPE, "storage_type");
columnNameDict.put(SIZE, "available_disk_size");
columnNameDict.put(USED, "used_disk_size");
columnNameDict.put(COMMITTED, "commited_disk_size");
columnNameDict.put(COMMENT, "storage_comment");
columnNameDict.put(DESCRIPTION, "storage_description");
columnNameDict.put(WIPE_AFTER_DELETE, "wipe_after_delete");
columnNameDict.put(LOW_SPACE_THRESHOLD, "warning_low_space_indicator");
columnNameDict.put(CRITICAL_SPACE_THRESHOLD, "critical_space_action_blocker");
// Building the validation dict
buildBasicValidationTable();
}
@Override
public IAutoCompleter getFieldRelationshipAutoCompleter(String fieldName) {
if (SIZE.equals(fieldName) || USED.equals(fieldName)
|| COMMITTED.equals(fieldName)) {
return NumericConditionRelationAutoCompleter.INSTANCE;
} else {
return StringConditionRelationAutoCompleter.INSTANCE;
}
}
@Override
public IConditionValueAutoCompleter getFieldValueAutoCompleter(String fieldName) {
IConditionValueAutoCompleter retval = null;
if (TYPE.equals(fieldName)) {
retval = new EnumValueAutoCompleter(StorageType.class);
}
else if (STATUS.equals(fieldName)) {
retval = new EnumValueAutoCompleter(StorageDomainStatus.class);
}
else if (SHARED_STATUS.equals(fieldName)) {
retval = new EnumValueAutoCompleter(StorageDomainSharedStatus.class);
}
else if (EXTERNAL_STATUS.equals(fieldName)) {
retval = new EnumValueAutoCompleter(ExternalStatus.class);
}
else if (WIPE_AFTER_DELETE.equals(fieldName)) {
retval = new BitValueAutoCompleter();
}
return retval;
}
}