package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.Nameable; import org.ovirt.engine.core.common.businessentities.qos.StorageQos; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.FrontendMultipleQueryAsyncResult; import org.ovirt.engine.ui.uicompat.external.StringUtils; public class RemoveStorageQosModel extends RemoveQosModel<StorageQos> { public RemoveStorageQosModel(ListModel<StorageQos> sourceListModel) { super(sourceListModel); } @Override public String getTitle() { return ConstantsManager.getInstance().getConstants().removeStorageQoSTitle(); } @Override protected VdcQueryType getUsingEntitiesByQosIdQueryType() { return VdcQueryType.GetDiskProfilesByStorageQosId; } protected void handleSetMessageQueryResult(FrontendMultipleQueryAsyncResult result) { setHelpTag(getRemoveQosHelpTag()); setHashName(getRemoveQosHashName()); int index = 0; int numberOfTimesUsedByDiskProfiles = 0; ArrayList<String> list = new ArrayList<>(); for (VdcQueryReturnValue returnValue : result.getReturnValues()) { List<Nameable> diskProfileEntities = returnValue.getReturnValue(); String qosName = sourceListModel.getSelectedItems().get(index).getName(); if (diskProfileEntities.size() == 0) { list.add(qosName); } else { numberOfTimesUsedByDiskProfiles += diskProfileEntities.size(); List<String> diskProfileNames = new ArrayList<>(); for (Nameable diskProfileEntity : diskProfileEntities) { String diskProfileName = diskProfileEntity.getName(); diskProfileNames.add(diskProfileName); } String diskProfileNamesAsString = StringUtils.join(diskProfileNames, ", "); //$NON-NLS-1$ list.add(ConstantsManager.getInstance().getMessages().removeStorageQoSItem(qosName, diskProfileNamesAsString)); } index++; } setMessage(getRemoveQosMessage(numberOfTimesUsedByDiskProfiles)); setItems(list); } @Override protected String getRemoveQosMessage(int size) { return ConstantsManager.getInstance().getMessages().removeStorageQoSMessage(size); } @Override protected String getRemoveQosHashName() { return "remove_storage_qos"; //$NON-NLS-1$ } @Override protected HelpTag getRemoveQosHelpTag() { return HelpTag.remove_storage_qos; } @Override protected VdcActionType getRemoveActionType() { return VdcActionType.RemoveStorageQos; } }