Tomas Jelinek has uploaded a new change for review. Change subject: webadmin: moved the remove disk related logic into the RemoveDiskModel ......................................................................
webadmin: moved the remove disk related logic into the RemoveDiskModel Done it so this model will be reusable from other places as well (VM dialog when integrating the disks into it). still a WIP Change-Id: I0ea61be0b8ee30b509056ebf8bf8235e5980f8cd Bug-Url: https://bugzilla.redhat.com/1117489 Signed-off-by: Tomas Jelinek <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RemoveDiskModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java 2 files changed, 97 insertions(+), 63 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/35420/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RemoveDiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RemoveDiskModel.java index be9f977..d9cf4b0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RemoveDiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RemoveDiskModel.java @@ -1,17 +1,102 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; +import org.ovirt.engine.core.common.action.AttachDetachVmDiskParameters; +import org.ovirt.engine.core.common.action.RemoveDiskParameters; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.Disk; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.uicommonweb.ICommandTarget; +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.EntityModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; +import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; + +import java.util.ArrayList; +import java.util.List; @SuppressWarnings("unused") -public class RemoveDiskModel extends ConfirmationModel -{ - public RemoveDiskModel() - { +public class RemoveDiskModel extends ConfirmationModel { + + public static String ON_REMOVE = "OnRemoveDisk"; + + public static String CANCEL_REMOVE = "CancelRemoveDisk"; + + private VM vm; + private List<Disk> disksToRemove; + private ICommandTarget target; + + private UICommand cancelCommand; + + public RemoveDiskModel() { setLatch(new EntityModel<Boolean>()); getLatch().setIsAvailable(true); } + public void initialize(VM vm, List<Disk> disksToRemove, ICommandTarget target) { + this.vm = vm; + this.disksToRemove = disksToRemove; + + setTitle(ConstantsManager.getInstance().getConstants().removeDisksTitle()); + setHelpTag(HelpTag.remove_disk); + setHashName("remove_disk"); //$NON-NLS-1$ + + getLatch().setEntity(false); + + ArrayList<DiskModel> items = new ArrayList<DiskModel>(); + for (Disk disk : disksToRemove) { + DiskModel diskModel = new DiskModel(); + diskModel.setDisk(disk); + diskModel.setVm(vm); + + items.add(diskModel); + + // A shared disk or a disk snapshot can only be detached + if (disk.getNumberOfVms() > 1) { + getLatch().setIsChangable(false); + } + } + setItems(items); + + UICommand tempVar = new UICommand(ON_REMOVE, target); //$NON-NLS-1$ + tempVar.setTitle(ConstantsManager.getInstance().getConstants().ok()); + tempVar.setIsDefault(true); + getCommands().add(tempVar); + cancelCommand = new UICommand(CANCEL_REMOVE, target); //$NON-NLS-1$ + cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + cancelCommand.setIsCancel(true); + getCommands().add(cancelCommand); + } + + public void store(final ICommandTarget target) { + boolean removeDisk = getLatch().getEntity(); + VdcActionType actionType = removeDisk ? VdcActionType.RemoveDisk : VdcActionType.DetachDiskFromVm; + ArrayList<VdcActionParametersBase> paramerterList = new ArrayList<VdcActionParametersBase>(); + + for (Disk disk : disksToRemove) { + VdcActionParametersBase parameters = removeDisk ? + new RemoveDiskParameters(disk.getId()) : + new AttachDetachVmDiskParameters(vm.getId(), disk.getId()); + paramerterList.add(parameters); + } + + startProgress(null); + + Frontend.getInstance().runMultipleAction(actionType, paramerterList, + new IFrontendMultipleActionAsyncCallback() { + @Override + public void executed(FrontendMultipleActionAsyncResult result) { + stopProgress(); + target.executeCommand(cancelCommand); + } + }, + this); + } + @Override public boolean validate() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java index 81700c5..c05298d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java @@ -7,11 +7,9 @@ import java.util.List; import org.ovirt.engine.core.common.VdcActionUtils; -import org.ovirt.engine.core.common.action.AttachDetachVmDiskParameters; import org.ovirt.engine.core.common.action.ChangeQuotaParameters; import org.ovirt.engine.core.common.action.GetDiskAlignmentParameters; import org.ovirt.engine.core.common.action.HotPlugDiskToVmParameters; -import org.ovirt.engine.core.common.action.RemoveDiskParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.Disk; @@ -406,67 +404,15 @@ boolean hasSystemDiskWarning = false; RemoveDiskModel model = new RemoveDiskModel(); setWindow(model); - model.setTitle(ConstantsManager.getInstance().getConstants().removeDisksTitle()); - model.setHelpTag(HelpTag.remove_disk); - model.setHashName("remove_disk"); //$NON-NLS-1$ - - model.getLatch().setEntity(false); - - ArrayList<DiskModel> items = new ArrayList<DiskModel>(); - for (Object item : getSelectedItems()) - { - Disk disk = (Disk) item; - - DiskModel diskModel = new DiskModel(); - diskModel.setDisk(disk); - diskModel.setVm(getEntity()); - - items.add(diskModel); - - // A shared disk or a disk snapshot can only be detached - if (disk.getNumberOfVms() > 1) { - model.getLatch().setIsChangable(false); - } - } - model.setItems(items); - - UICommand tempVar = new UICommand("OnRemove", this); //$NON-NLS-1$ - tempVar.setTitle(ConstantsManager.getInstance().getConstants().ok()); - tempVar.setIsDefault(true); - model.getCommands().add(tempVar); - UICommand tempVar2 = new UICommand("Cancel", this); //$NON-NLS-1$ - tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); - tempVar2.setIsCancel(true); - model.getCommands().add(tempVar2); + model.initialize(getEntity(), getSelectedItems(), this); } private void onRemove() { - VM vm = getEntity(); RemoveDiskModel model = (RemoveDiskModel) getWindow(); - boolean removeDisk = (Boolean) model.getLatch().getEntity(); - VdcActionType actionType = removeDisk ? VdcActionType.RemoveDisk : VdcActionType.DetachDiskFromVm; - ArrayList<VdcActionParametersBase> paramerterList = new ArrayList<VdcActionParametersBase>(); - - for (Object item : getSelectedItems()) { - Disk disk = (Disk) item; - VdcActionParametersBase parameters = removeDisk ? - new RemoveDiskParameters(disk.getId()) : - new AttachDetachVmDiskParameters(vm.getId(), disk.getId()); - paramerterList.add(parameters); + if (!model.validate()) { + return; } - - model.startProgress(null); - - Frontend.getInstance().runMultipleAction(actionType, paramerterList, - new IFrontendMultipleActionAsyncCallback() { - @Override - public void executed(FrontendMultipleActionAsyncResult result) { - VmDiskListModel localModel = (VmDiskListModel) result.getState(); - localModel.stopProgress(); - cancel(); - } - }, - this); + model.store(this); } private void plug() { @@ -806,7 +752,10 @@ { cancel(); } - else if ("OnRemove".equals(command.getName())) //$NON-NLS-1$ + else if (RemoveDiskModel.CANCEL_REMOVE.equals(command.getName())) { + cancel(); + } + else if (RemoveDiskModel.ON_REMOVE.equals(command.getName())) { onRemove(); } -- To view, visit http://gerrit.ovirt.org/35420 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0ea61be0b8ee30b509056ebf8bf8235e5980f8cd Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
