package org.ovirt.engine.core.bll; import java.util.List; import org.ovirt.engine.core.common.action.EventSubscriptionParametesBase; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.event_map; import org.ovirt.engine.core.common.businessentities.event_notification_methods; import org.ovirt.engine.core.dal.VdcBllMessages; import org.ovirt.engine.core.dal.dbbroker.DbFacade; public class RemoveEventSubscriptionCommand<T extends EventSubscriptionParametesBase> extends EventSubscriptionCommandBase<T> { public RemoveEventSubscriptionCommand(T parameters) { super(parameters); } @Override protected boolean canDoAction() { boolean retValue; // get notification method List<event_notification_methods> event_notification_methods = (DbFacade.getInstance() .getEventDAO().getEventNotificationMethodsById(getParameters().getEventSubscriber().getmethod_id())); if (event_notification_methods.size() > 0) { // validate event List<event_map> event_map = DbFacade.getInstance().getEventDAO().getEventMapByName( getParameters().getEventSubscriber().getevent_up_name()); if (event_map.size() > 0) { // Validate user DbUser user = DbFacade.getInstance() .getDbUserDAO() .get(getParameters().getEventSubscriber().getsubscriber_id()); if (user == null) { addCanDoActionMessage(VdcBllMessages.USER_MUST_EXIST_IN_DB); retValue = false; } else { retValue = ValidateRemove(event_notification_methods, getParameters().getEventSubscriber(), user); } } else { addCanDoActionMessage(VdcBllMessages.EN_UNSUPPORTED_NOTIFICATION_EVENT); retValue = false; } } else { addCanDoActionMessage(VdcBllMessages.EN_UNKNOWN_NOTIFICATION_METHOD); retValue = false; } return retValue; } @Override protected void executeCommand() { DbFacade.getInstance().getEventDAO().unsubscribe(getParameters().getEventSubscriber()); setSucceeded(true); } }