package org.ovirt.engine.core.bll;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.TagsActionParametersBase;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.TagDao;
public class RemoveTagCommand<T extends TagsActionParametersBase> extends TagsCommandBase<T> {
@Inject
private TagsDirector tagsDirector;
@Inject
private TagDao tagDao;
public RemoveTagCommand(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected void executeCommand() {
if (getTagId() != null) {
String tagIdAndChildrenIds = tagsDirector.getTagIdAndChildrenIds(getTagId());
tagsDirector.removeTag(getTag().getTagId());
String[] IDsArray = tagIdAndChildrenIds.split("[,]", -1);
for (String id : IDsArray) {
id = id.replace("'", "");
tagDao.remove(new Guid(id));
}
setSucceeded(true);
}
}
@Override
protected boolean validate() {
boolean returnValue = true;
if (getTagId() == null || tagDao.get(getTagId()) == null) {
addValidationMessage(EngineMessage.TAGS_CANNOT_REMOVE_TAG_NOT_EXIST);
returnValue = false;
}
return returnValue;
}
@Override
public AuditLogType getAuditLogTypeValue() {
return getSucceeded() ? AuditLogType.USER_REMOVE_TAG : AuditLogType.USER_REMOVE_TAG_FAILED;
}
}