package org.ovirt.engine.core.bll.network.dc;
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.common.VdcObjectType;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
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.network.VnicProfileDao;
public abstract class NetworkCommon<T extends VdcActionParametersBase> extends CommandBase<T> {
@Inject
private VnicProfileDao vnicProfileDao;
public NetworkCommon(Guid id) {
super(id);
}
public NetworkCommon(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
protected abstract Network getNetwork();
public String getNetworkName() {
return getNetwork().getName();
}
protected void removeVnicProfiles() {
List<VnicProfile> profiles = vnicProfileDao.getAllForNetwork(getNetwork().getId());
for (VnicProfile vnicProfile : profiles) {
getCompensationContext().snapshotEntity(vnicProfile);
vnicProfileDao.remove(vnicProfile.getId());
}
}
@Override
protected void setActionMessageParameters() {
addValidationMessage(EngineMessage.VAR__TYPE__NETWORK);
}
@Override
public List<PermissionSubject> getPermissionCheckSubjects() {
Network network = getNetwork();
Guid networkId = network == null ? null : network.getId();
return Collections.singletonList(new PermissionSubject(networkId,
VdcObjectType.Network,
getActionType().getActionGroup()));
}
}