package org.ovirt.engine.ui.uicommonweb.models.storage; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.core.common.action.RegisterCinderDiskParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.comparators.DiskByDiskAliasComparator; import org.ovirt.engine.core.common.businessentities.storage.CinderDisk; import org.ovirt.engine.core.common.businessentities.storage.Disk; import org.ovirt.engine.core.common.queries.IdQueryParameters; 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.models.SearchableListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; public class StorageRegisterDiskListModel extends SearchableListModel<StorageDomain, Disk> { private UICommand registerCommand; public UICommand getRegisterCommand() { return registerCommand; } private void setRegisterCommand(UICommand value) { registerCommand = value; } public StorageRegisterDiskListModel() { setTitle(ConstantsManager.getInstance().getConstants().registerDisksTitle()); setRegisterCommand(new UICommand("Register", this)); //$NON-NLS-1$ setIsTimerDisabled(true); updateActionAvailability(); } @Override protected void onEntityChanged() { super.onEntityChanged(); getSearchCommand().execute(); } public void setEntity(StorageDomain value) { super.setEntity(value); } @Override protected void onSelectedItemChanged() { super.onSelectedItemChanged(); updateActionAvailability(); } @Override protected void selectedItemsChanged() { super.selectedItemsChanged(); updateActionAvailability(); } @Override public void search() { if (getEntity() == null) { setItems(null); return; } super.search(); } public void cancel() { setWindow(null); } @Override protected void syncSearch() { if (getEntity() == null) { return; } IdQueryParameters parameters = new IdQueryParameters(getEntity().getId()); parameters.setRefresh(getIsQueryFirstTime()); Frontend.getInstance().runQuery(VdcQueryType.GetUnregisteredCinderDisksByStorageDomainId, parameters, new SetSortedItemsAsyncQuery(new DiskByDiskAliasComparator())); } private void updateActionAvailability() { List<Disk> disks = getSelectedItems() != null ? getSelectedItems() : new ArrayList<Disk>(); getRegisterCommand().setIsExecutionAllowed(disks.size() > 0); } private void register() { if (getWindow() != null) { return; } ArrayList<VdcActionParametersBase> parametersList = new ArrayList<>(); for (Object item : getSelectedItems()) { CinderDisk disk = (CinderDisk) item; RegisterCinderDiskParameters parameters = new RegisterCinderDiskParameters(disk, getEntity().getId()); parametersList.add(parameters); } Frontend.getInstance().runMultipleAction(VdcActionType.RegisterCinderDisk, parametersList, result -> {}, this); } private void onRegister() { } @Override public void executeCommand(UICommand command) { super.executeCommand(command); if (command == getRegisterCommand()) { register(); } else if ("OnRegister".equals(command.getName())) { //$NON-NLS-1$ onRegister(); } else if ("Cancel".equals(command.getName())) { //$NON-NLS-1$ cancel(); } } @Override protected String getListName() { return "StorageRegisterDiskListModel"; //$NON-NLS-1$ } }