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

Reply via email to