package org.ovirt.engine.core.bll;

import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.VmPoolOperationParameters;
import org.ovirt.engine.core.common.businessentities.vm_pools;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;

public class AddVmPoolCommand<T extends VmPoolOperationParameters> extends VmPoolCommandBase<T> {

    /**
     * Constructor for command creation when compensation is applied on startup
     *
     * @param commandId
     */
    protected AddVmPoolCommand(Guid commandId) {
        super(commandId);
    }

    public AddVmPoolCommand(T parameters) {
        super(parameters);
        setVmPool(parameters.getVmPool());
    }

    @Override
    protected void executeCommand() {
        vm_pools vmPool = getVmPool();

        DbFacade.getInstance().getVmPoolDAO().save(vmPool);
        setActionReturnValue(vmPool.getvm_pool_id());
        setSucceeded(true);
    }

    @Override
    public AuditLogType getAuditLogTypeValue() {
        return getSucceeded() ? AuditLogType.USER_ADD_VM_POOL
                : AuditLogType.USER_ADD_VM_POOL_FAILED;
    }
}
