Tal Nisan has uploaded a new change for review.

Change subject: webadmin: Consolidated move & copy disk availability checks
......................................................................

webadmin: Consolidated move & copy disk availability checks

The logic for checking whether moving a disk or copying a disk is allowed
was all the same except for the check whether the disk is used as a
template disk or not, both checks were consolidated to a single check
to avoid redundant checks on the same disks and for better code reuse

Change-Id: Ieb3c388aecc5b007a76c54ed0d41105bc28ebb51
Signed-off-by: Tal Nisan <tni...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
1 file changed, 26 insertions(+), 37 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/15783/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
index c875594..07dc3fd 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java
@@ -440,8 +440,7 @@
         getNewCommand().setIsExecutionAllowed(true);
         getEditCommand().setIsExecutionAllowed(disk != null && disks != null 
&& disks.size() == 1 && !isDiskLocked);
         getRemoveCommand().setIsExecutionAllowed(disks != null && disks.size() 
> 0 && isRemoveCommandAvailable());
-        getMoveCommand().setIsExecutionAllowed(disks != null && disks.size() > 
0 && isMoveCommandAvailable());
-        getCopyCommand().setIsExecutionAllowed(disks != null && disks.size() > 
0 && isCopyCommandAvailable());
+        updateCopyAndMoveCommandAvailability(disks);
 
         ChangeQuotaModel.updateChangeQuotaActionAvailability(getItems() != 
null ? (List<Disk>) getItems() : null,
                 getSelectedItems() != null ? (List<Disk>) getSelectedItems() : 
null,
@@ -449,58 +448,48 @@
                 getChangeQuotaCommand());
     }
 
-    private boolean isMoveCommandAvailable() {
-        ArrayList<Disk> disks =
-                getSelectedItems() != null ? Linq.<Disk> 
cast(getSelectedItems()) : new ArrayList<Disk>();
+    private void updateCopyAndMoveCommandAvailability(List<Disk> disks) {
+        boolean isCopyAllowed = true;
+        boolean isMoveAllowed = true;
 
         Disk firstDisk = disks.get(0);
-        if (firstDisk.getDiskStorageType() != DiskStorageType.IMAGE) {
-            return false;
+
+        if (disks == null || disks.isEmpty() || firstDisk.getDiskStorageType() 
!= DiskStorageType.IMAGE) {
+            disableMoveAndCopyCommands();
+            return;
         }
 
         NGuid datacenterId = ((DiskImage) firstDisk).getStoragePoolId();
 
         for (Disk disk : disks)
         {
-            if (disk.getDiskStorageType() != DiskStorageType.IMAGE) {
-                return false;
+            if (!isCopyAllowed && !isMoveAllowed || disk.getDiskStorageType() 
!= DiskStorageType.IMAGE) {
+                disableMoveAndCopyCommands();
+                return;
             }
 
             DiskImage diskImage = (DiskImage) disk;
-            if (disk.getDiskStorageType() != DiskStorageType.IMAGE ||
-                    diskImage.getImageStatus() != ImageStatus.OK ||
-                    disk.getVmEntityType() == VmEntityType.TEMPLATE ||
-                    !datacenterId.equals(diskImage.getStoragePoolId()))
+            if (diskImage.getImageStatus() != ImageStatus.OK || 
!datacenterId.equals(diskImage.getStoragePoolId()))
             {
-                return false;
+                disableMoveAndCopyCommands();
+                return;
+            }
+
+            if (disk.getVmEntityType() == VmEntityType.TEMPLATE) {
+                isMoveAllowed = false;
+            }
+            else {
+                isCopyAllowed = false;
             }
         }
 
-        return true;
+        getCopyCommand().setIsExecutionAllowed(isCopyAllowed);
+        getMoveCommand().setIsExecutionAllowed(isMoveAllowed);
     }
 
-    private boolean isCopyCommandAvailable() {
-        ArrayList<Disk> disks =
-                getSelectedItems() != null ? Linq.<Disk> 
cast(getSelectedItems()) : new ArrayList<Disk>();
-
-        Disk firstDisk = disks.get(0);
-        if (firstDisk.getDiskStorageType() != DiskStorageType.IMAGE) {
-            return false;
-        }
-
-        NGuid datacenterId = ((DiskImage) firstDisk).getStoragePoolId();
-
-        for (Disk disk : disks)
-        {
-            DiskImage diskImage = (DiskImage) disk;
-            if (diskImage.getImageStatus() != ImageStatus.OK || 
disk.getVmEntityType() != VmEntityType.TEMPLATE ||
-                    !datacenterId.equals(diskImage.getStoragePoolId()))
-            {
-                return false;
-            }
-        }
-
-        return true;
+    private void disableMoveAndCopyCommands() {
+        getCopyCommand().setIsExecutionAllowed(false);
+        getMoveCommand().setIsExecutionAllowed(false);
     }
 
     private boolean isRemoveCommandAvailable() {


-- 
To view, visit http://gerrit.ovirt.org/15783
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieb3c388aecc5b007a76c54ed0d41105bc28ebb51
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Tal Nisan <tni...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to