package org.ovirt.engine.ui.uicommonweb.models; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.core.common.action.TerminateSessionParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.UserSession; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicompat.ConstantsManager; public class TerminateSessionsModel extends ConfirmationModel { private static final String CMD_TEMINATE = "OnTerminate"; //$NON-NLS-1$ private static final String CMD_CANCEL = "Cancel"; //$NON-NLS-1$ private final SearchableListModel sourceListModel; private final List<UserSession> sessions; public TerminateSessionsModel(SearchableListModel<UserSession, UserSession> sourceListModel) { this.sourceListModel = sourceListModel; this.sessions = sourceListModel.getSelectedItems(); setTitle(ConstantsManager.getInstance().getConstants().terminateSessionTitle()); setMessage(ConstantsManager.getInstance().getConstants().terminateSessionConfirmation()); setHelpTag(HelpTag.terminate_session); setHashName("terminate_sessions"); //$NON-NLS-1$ UICommand okCommand = UICommand.createOkUiCommand(CMD_TEMINATE, this); getCommands().add(okCommand); UICommand cancelCommand = UICommand.createDefaultCancelUiCommand(CMD_CANCEL, this); getCommands().add(cancelCommand); } @Override public void initialize() { super.initialize(); setSessionsDetails(); } private void setSessionsDetails() { final List<String> sessionStrings = new ArrayList<>(); for (UserSession session : sessions) { final long sessionId = session.getId(); final String sessionUserName = session.getUserName(); final String userSessionRow = ConstantsManager.getInstance().getMessages() .userSessionRow(sessionId, sessionUserName); sessionStrings.add(userSessionRow); } setItems(sessionStrings); } private void cancel() { sourceListModel.setConfirmWindow(null); } private void onTerminate() { final List<VdcActionParametersBase> parameterList = new ArrayList<>(sessions.size()); for (UserSession session : sessions) { final long sessionId = session.getId(); final TerminateSessionParameters terminateSessionParameters = new TerminateSessionParameters(sessionId); parameterList.add(terminateSessionParameters); } Frontend.getInstance() .runMultipleActions(VdcActionType.TerminateSession, parameterList, result -> sourceListModel.getSearchCommand().execute()); cancel(); } @Override public void executeCommand(UICommand command) { super.executeCommand(command); if (CMD_TEMINATE.equals(command.getName())) { onTerminate(); } else if (CMD_CANCEL.equals(command.getName())) { cancel(); } } }