package org.ovirt.engine.core.bll.quota;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.CommandBase;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.bll.utils.PermissionSubject;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.action.ChangeQuotaParameters;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.QuotaDao;
public abstract class ChangeQuotaCommand extends CommandBase<ChangeQuotaParameters> implements QuotaStorageDependent {
@Inject
private QuotaDao quotaDao;
public ChangeQuotaCommand(ChangeQuotaParameters parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
setStoragePoolId(getParameters().getStoragePoolId());
}
@Override
protected boolean validate() {
// check if SP exist
if (getStoragePool() == null) {
addValidationMessage(EngineMessage.ACTION_TYPE_FAILED_STORAGE_POOL_NOT_EXIST);
return false;
}
// Check if quota exist:
if (getQuotaId() == null) {
addValidationMessage(EngineMessage.ACTION_TYPE_FAILED_QUOTA_IS_NOT_VALID);
return false;
}
if (quotaDao.getById(getQuotaId()) == null) {
addValidationMessage(EngineMessage.ACTION_TYPE_FAILED_QUOTA_NOT_EXIST);
return false;
}
return true;
}
@Override
public List<PermissionSubject> getPermissionCheckSubjects() {
List<PermissionSubject> permissionList = new ArrayList<>();
permissionList.add(new PermissionSubject(getParameters().getQuotaId(),
VdcObjectType.Quota,
getActionType().getActionGroup()));
return permissionList;
}
@Override
public abstract List<QuotaConsumptionParameter> getQuotaStorageConsumptionParameters();
protected Guid getQuotaId() {
return getParameters().getQuotaId();
}
@Override
public void addQuotaPermissionSubject(List<PermissionSubject> quotaPermissionList) {
// no implementation here already checked in getPermissionCheckSubjects
}
@Override
protected void setActionMessageParameters() {
addValidationMessage(EngineMessage.VAR__ACTION__ASSIGN);
addValidationMessage(EngineMessage.VAR__TYPE__QUOTA);
}
}