package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.VmPoolParametersBase;
import org.ovirt.engine.core.compat.NGuid;
import org.ovirt.engine.core.dal.VdcBllMessages;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
public class RemoveVmPoolCommand<T extends VmPoolParametersBase> extends VmPoolCommandBase<T> {
public RemoveVmPoolCommand(T parameters) {
super(parameters);
}
@Override
protected boolean canDoAction() {
return CanRemoveVmPool(getParameters().getVmPoolId(), getReturnValue().getCanDoActionMessages());
}
@Override
protected void executeCommand() {
if (getVmPoolId() != null && CanRemoveVmPoolWithoutReasons(getVmPoolId())) {
DbFacade.getInstance().getVmPoolDAO().remove(getVmPoolId());
setSucceeded(true);
}
}
@Override
public AuditLogType getAuditLogTypeValue() {
return getSucceeded() ? AuditLogType.USER_REMOVE_VM_POOL : AuditLogType.USER_REMOVE_VM_POOL_FAILED;
}
public static boolean CanRemoveVmPoolWithoutReasons(NGuid vmPoolId) {
java.util.ArrayList<String> reasons = new java.util.ArrayList<String>();
return (CanRemoveVmPool(vmPoolId, reasons));
}
public static boolean CanRemoveVmPool(NGuid vmPoolId, java.util.ArrayList<String> reasons) {
boolean returnValue = true;
if (DbFacade.getInstance().getVmPoolDAO().getVmPoolsMapByVmPoolId(vmPoolId).size() != 0) {
returnValue = false;
reasons.add(VdcBllMessages.VM_POOL_CANNOT_REMOVE_VM_POOL_WITH_VMS.toString());
}
return returnValue;
}
}