package org.ovirt.engine.core.bll.scheduling.commands; import java.util.LinkedList; import java.util.List; import javax.inject.Inject; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.businessentities.Cluster; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.common.scheduling.parameters.ClusterPolicyCRUDParameters; import org.ovirt.engine.core.dao.ClusterDao; public class RemoveClusterPolicyCommand extends ClusterPolicyCRUDCommand { @Inject private ClusterDao clusterDao; public RemoveClusterPolicyCommand(ClusterPolicyCRUDParameters parameters, CommandContext cmdContext) { super(parameters, cmdContext); } @Override protected boolean validate() { if (!checkRemoveEditValidations()) { return false; } if (clusterDao.getClustersByClusterPolicyId(getParameters().getClusterPolicyId()).size() > 0) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_CLUSTER_POLICY_INUSE, String.format("$clusters %1$s", clustersListIntoTokenizedString())); } return true; } private String clustersListIntoTokenizedString() { List<Cluster> attachedClustersList = clusterDao.getClustersByClusterPolicyId(getParameters().getClusterPolicyId()); List<String> clusterNamesList = new LinkedList<>(); for (Cluster cluster : attachedClustersList) { clusterNamesList.add(cluster.getName()); } return StringUtils.join(clusterNamesList, ','); } @Override protected void executeCommand() { schedulingManager.removeClusterPolicy(getParameters().getClusterPolicyId()); setSucceeded(true); } @Override protected void setActionMessageParameters() { addValidationMessage(EngineMessage.VAR__ACTION__REMOVE); addValidationMessage(EngineMessage.VAR__TYPE__CLUSTER_POLICY); } @Override public AuditLogType getAuditLogTypeValue() { return getSucceeded() ? AuditLogType.USER_REMOVE_CLUSTER_POLICY : AuditLogType.USER_FAILED_TO_REMOVE_CLUSTER_POLICY; } }