package org.ovirt.engine.core.bll.profiles;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.action.ProfileParametersBase;
import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.compat.Guid;
public abstract class AddProfileCommandBase<T extends ProfileParametersBase<P>, P extends ProfileBase, Q extends ProfileValidator<P>> extends ProfileCommandBase<T, P> {
public AddProfileCommandBase(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected boolean validate() {
Q validator = getProfileValidator();
return validate(validator.profileIsSet())
&& validate(validator.parentEntityExists())
&& validate(validator.qosExistsOrNull())
&& validate(validator.profileNameNotUsed());
}
@Override
protected void executeCommand() {
getParameters().getProfile().setId(Guid.newGuid());
getProfileDao().save(getParameters().getProfile());
getReturnValue().setActionReturnValue(getParameters().getProfile().getId());
if(getParameters().isAddPermissions()) {
addPermissions();
}
setSucceeded(true);
}
@Override
protected void setActionMessageParameters() {
super.setActionMessageParameters();
addValidationMessage(EngineMessage.VAR__ACTION__ADD);
}
protected abstract void addPermissions();
protected abstract Q getProfileValidator();
}