package org.ovirt.engine.core.bll.network.vm; import java.util.Collections; 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.bll.validator.VnicProfileValidator; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.VnicProfileParameters; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VnicProfile; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.StoragePoolDao; import org.ovirt.engine.core.dao.VmDao; import org.ovirt.engine.core.dao.network.NetworkDao; import org.ovirt.engine.core.dao.network.NetworkFilterDao; public abstract class VnicProfileCommandBase<T extends VnicProfileParameters> extends CommandBase<T> { private Network network; @Inject private NetworkFilterDao networkFilterDao; @Inject private StoragePoolDao storagePoolDao; @Inject private NetworkDao networkDao; @Inject private VmDao vmDao; public VnicProfileCommandBase(T parameters, CommandContext cmdContext) { super(parameters, cmdContext); } protected VnicProfile getVnicProfile() { return getParameters().getVnicProfile(); } protected void setNetworkFilterId(Guid networkFilterId){ getVnicProfile().setNetworkFilterId(networkFilterId); } protected Guid getNetworkId(){ return getNetwork().getId(); } protected Guid getNetworkFilterId(){ return getVnicProfile().getNetworkFilterId(); } @Override protected void setActionMessageParameters() { addValidationMessage(EngineMessage.VAR__TYPE__VNIC_PROFILE); } @Override public List<PermissionSubject> getPermissionCheckSubjects() { Guid vnicProfileId = getVnicProfile() == null ? null : getVnicProfile().getId(); return Collections.singletonList(new PermissionSubject(vnicProfileId, VdcObjectType.VnicProfile, getActionType().getActionGroup())); } public String getVnicProfileName() { return getVnicProfile().getName(); } public String getNetworkName() { return getNetwork().getName(); } public String getDataCenterName() { return storagePoolDao.get(getNetwork().getDataCenterId()).getName(); } private Network getNetwork() { if (network == null) { network = networkDao.get(getVnicProfile().getNetworkId()); } return network; } protected VnicProfileValidator createVnicProfileValidator() { return new VnicProfileValidator(getVnicProfile(), vmDao, storagePoolDao, networkFilterDao); } }