package org.ovirt.engine.ui.uicommonweb.models.datacenters; import java.util.ArrayList; import org.ovirt.engine.core.common.action.QosParametersBase; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; import org.ovirt.engine.core.common.businessentities.network.VnicProfileView; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; 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.uicommonweb.models.ConfirmationModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; public class RemoveNetworkQoSModel extends ConfirmationModel { private final ListModel sourceListModel; public RemoveNetworkQoSModel(ListModel sourceListModel) { this.sourceListModel = sourceListModel; setTitle(ConstantsManager.getInstance().getConstants().removeNetworkQoSTitle()); setMessage(); UICommand tempVar = UICommand.createDefaultOkUiCommand("onRemove", this); //$NON-NLS-1$ getCommands().add(tempVar); UICommand tempVar2 = UICommand.createCancelUiCommand("cancel", this); //$NON-NLS-1$ getCommands().add(tempVar2); } private void setMessage() { ArrayList<VdcQueryParametersBase> parameters = new ArrayList<>(); ArrayList<VdcQueryType> queryTypes = new ArrayList<>(); for (Object networkQoS : sourceListModel.getSelectedItems()) { VdcQueryParametersBase parameter = new IdQueryParameters(((NetworkQoS) networkQoS).getId()); parameters.add(parameter); queryTypes.add(VdcQueryType.GetVnicProfilesByNetworkQosId); } Frontend.getInstance().runMultipleQueries(queryTypes, parameters, result -> { ArrayList<VnicProfileView> vnicProfiles = new ArrayList<>(); setHelpTag(HelpTag.remove_network_qos); setHashName("remove_network_qos"); //$NON-NLS-1$ for (VdcQueryReturnValue returnValue : result.getReturnValues()) { vnicProfiles.addAll((ArrayList<VnicProfileView>) returnValue.getReturnValue()); } if (vnicProfiles.isEmpty()) { ArrayList<String> list = new ArrayList<>(); for (Object item : sourceListModel.getSelectedItems()) { NetworkQoS i = (NetworkQoS) item; list.add(i.getName()); } setItems(list); } else { setMessage(ConstantsManager.getInstance().getMessages().removeNetworkQoSMessage(vnicProfiles.size())); ArrayList<String> list = new ArrayList<>(); for (VnicProfileView item : vnicProfiles) { list.add(item.getName()); } setItems(list); } }); } public void onRemove() { ArrayList<VdcActionParametersBase> parameters = new ArrayList<>(); for (Object networkQoS : sourceListModel.getSelectedItems()) { QosParametersBase<NetworkQoS> parameter = new QosParametersBase<>(); NetworkQoS tempQos = (NetworkQoS) networkQoS; parameter.setQos(tempQos); parameters.add(parameter); } Frontend.getInstance().runMultipleAction(VdcActionType.RemoveNetworkQoS, parameters); cancel(); } private void cancel() { sourceListModel.setConfirmWindow(null); } @Override public void executeCommand(UICommand command) { super.executeCommand(command); if ("onRemove".equals(command.getName())) { //$NON-NLS-1$ onRemove(); } else if ("cancel".equals(command.getName())) { //$NON-NLS-1$ cancel(); } } }