Frank Kobzik has uploaded a new change for review.

Change subject: frontend: Add NONE to GraphicsTypes enum
......................................................................

frontend: Add NONE to GraphicsTypes enum

This is useful for expressing
 - that a VM/Template is headless, or
 - graphics of stopped VM (stopped vm has no active graphics).

Change-Id: Ib69e8d687495bddabff28fe6a061c8118ff1983d
Signed-off-by: Frantisek Kobzik <fkob...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/UnitToGraphicsDeviceParamsBuilder.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
A 
frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/GraphicsTypesTest.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
M 
frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
6 files changed, 76 insertions(+), 39 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/38171/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/UnitToGraphicsDeviceParamsBuilder.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/UnitToGraphicsDeviceParamsBuilder.java
index 0e4da00..dd85539 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/UnitToGraphicsDeviceParamsBuilder.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/UnitToGraphicsDeviceParamsBuilder.java
@@ -16,7 +16,7 @@
 
         for (GraphicsType graphicsType : GraphicsType.values()) {
             destination.getGraphicsDevices().put(graphicsType, null); // reset
-            if 
(source.getGraphicsType().getSelectedItem().getBackingGraphicsType().contains(graphicsType))
 {
+            if 
(source.getGraphicsType().getSelectedItem().getBackingGraphicsTypes().contains(graphicsType))
 {
                 GraphicsDevice d = new 
GraphicsDevice(graphicsType.getCorrespondingDeviceType());
                 destination.getGraphicsDevices().put(d.getGraphicsType(), d);
             }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
index d1cef78..36e55f2 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
@@ -841,33 +841,29 @@
         return graphicsType;
     }
 
+    /**
+     * Enum for representing (possibly multiple) graphics device of a VM.
+     */
     public enum GraphicsTypes {
-        SPICE,
-        VNC,
-        SPICE_AND_VNC;
 
-        Set<GraphicsType> spice = new HashSet<GraphicsType>();
-        Set<GraphicsType> vnc = new HashSet<GraphicsType>();
-        Set<GraphicsType> spiceAndVnc = new HashSet<GraphicsType>();
+        NONE(),
+        SPICE(GraphicsType.SPICE),
+        VNC(GraphicsType.VNC),
+        SPICE_AND_VNC(GraphicsType.SPICE, GraphicsType.VNC);
 
-        {
-            spice.add(GraphicsType.SPICE);
-            vnc.add(GraphicsType.VNC);
-            spiceAndVnc.add(GraphicsType.SPICE);
-            spiceAndVnc.add(GraphicsType.VNC);
+        private Set<GraphicsType> backingTypes;
+
+        private GraphicsTypes(GraphicsType ... backingTypes) {
+            this.backingTypes = new HashSet<>();
+            if (backingTypes != null) {
+                for (GraphicsType backingType : backingTypes) {
+                    this.backingTypes.add(backingType);
+                }
+            }
         }
 
-        public Collection<GraphicsType> getBackingGraphicsType() {
-            switch (this) {
-                case SPICE:
-                    return spice;
-                case VNC:
-                    return vnc;
-                case SPICE_AND_VNC:
-                    return spiceAndVnc;
-                default:
-                    return null;
-            }
+        public Collection<GraphicsType> getBackingGraphicsTypes() {
+            return backingTypes;
         }
 
         public static GraphicsTypes fromGraphicsType(GraphicsType type) {
@@ -881,17 +877,14 @@
         }
 
         public static GraphicsTypes fromGraphicsTypes(Collection<GraphicsType> 
types) {
-            if (types.containsAll(Arrays.asList(GraphicsType.SPICE, 
GraphicsType.VNC))) {
-                return UnitVmModel.GraphicsTypes.SPICE_AND_VNC;
-            } else if (types.contains(GraphicsType.SPICE)) {
-                return UnitVmModel.GraphicsTypes.SPICE;
-            } else if (types.contains(GraphicsType.VNC)) {
-                return UnitVmModel.GraphicsTypes.VNC;
+            for (GraphicsTypes myTypes : values()) {
+                if (myTypes.getBackingGraphicsTypes().equals(types)) {
+                    return myTypes;
+                }
             }
 
-            return null;
+            return NONE;
         }
-
     }
 
     private void 
setGraphicsType(NotChangableForVmInPoolListModel<GraphicsTypes> graphicsType) {
@@ -1983,7 +1976,7 @@
             }
         }
 
-        if 
(!graphicsTypes.getBackingGraphicsType().contains(GraphicsType.SPICE)) {
+        if 
(!graphicsTypes.getBackingGraphicsTypes().contains(GraphicsType.SPICE)) {
             getUsbPolicy().setIsChangable(false);
         }
 
@@ -2109,7 +2102,7 @@
 
         GraphicsTypes graphicsTypes = getGraphicsType().getSelectedItem();
         if (graphicsTypes != null) {
-            
getVncKeyboardLayout().setIsAvailable(graphicsTypes.getBackingGraphicsType().contains(GraphicsType.VNC));
+            
getVncKeyboardLayout().setIsAvailable(graphicsTypes.getBackingGraphicsTypes().contains(GraphicsType.VNC));
         }
     }
 
@@ -2167,7 +2160,7 @@
 
             GraphicsTypes selectedGraphics = 
getGraphicsType().getSelectedItem();
             boolean spiceCopyPasteToggle = selectedGraphics != null
-                    && 
selectedGraphics.getBackingGraphicsType().contains(GraphicsType.SPICE)
+                    && 
selectedGraphics.getBackingGraphicsTypes().contains(GraphicsType.SPICE)
                     && 
AsyncDataProvider.getInstance().isSpiceCopyPasteToggleSupported(getSelectedCluster().getCompatibilityVersion().toString());
             if (!spiceCopyPasteToggle) {
                 handleQxlChangeProhibitionReason(getSpiceCopyPasteEnabled(), 
getSelectedCluster().getCompatibilityVersion().toString(), isQxl);
@@ -2344,15 +2337,15 @@
             return;
         }
 
-        if (display != DisplayType.qxl || 
!graphics.getBackingGraphicsType().contains(GraphicsType.SPICE)) {
+        if (display != DisplayType.qxl || 
!graphics.getBackingGraphicsTypes().contains(GraphicsType.SPICE)) {
             
getUsbPolicy().setSelectedItem(org.ovirt.engine.core.common.businessentities.UsbPolicy.DISABLED);
             getIsSmartcardEnabled().setEntity(false);
         }
 
         handleQxlClusterLevel();
-        
getUsbPolicy().setIsChangable(graphics.getBackingGraphicsType().contains(GraphicsType.SPICE));
-        
getIsSmartcardEnabled().setIsChangable(graphics.getBackingGraphicsType().contains(GraphicsType.SPICE));
-        
getVncKeyboardLayout().setIsAvailable(graphics.getBackingGraphicsType().contains(GraphicsType.VNC));
+        
getUsbPolicy().setIsChangable(graphics.getBackingGraphicsTypes().contains(GraphicsType.SPICE));
+        
getIsSmartcardEnabled().setIsChangable(graphics.getBackingGraphicsTypes().contains(GraphicsType.SPICE));
+        
getVncKeyboardLayout().setIsAvailable(graphics.getBackingGraphicsTypes().contains(GraphicsType.VNC));
         updateNumOfMonitors();
     }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/GraphicsTypesTest.java
 
b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/GraphicsTypesTest.java
new file mode 100644
index 0000000..ab3e757
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/GraphicsTypesTest.java
@@ -0,0 +1,41 @@
+package org.ovirt.engine.ui.uicommonweb.models.vms;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import org.junit.Test;
+import org.ovirt.engine.core.common.businessentities.GraphicsType;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel.GraphicsTypes;
+
+
+import static org.junit.Assert.assertEquals;
+
+
+public class GraphicsTypesTest {
+
+    @Test
+    public void testGetBackingGraphicsType() throws Exception {
+        assertEquals(makeSet(), GraphicsTypes.NONE.getBackingGraphicsTypes());
+        assertEquals(makeSet(GraphicsType.SPICE), 
GraphicsTypes.SPICE.getBackingGraphicsTypes());
+        assertEquals(makeSet(GraphicsType.VNC), 
GraphicsTypes.VNC.getBackingGraphicsTypes());
+        assertEquals(makeSet(GraphicsType.SPICE, GraphicsType.VNC), 
GraphicsTypes.SPICE_AND_VNC.getBackingGraphicsTypes());
+    }
+
+    @Test
+    public void testFromGraphicsType() throws Exception {
+        assertEquals(GraphicsTypes.SPICE, 
GraphicsTypes.fromGraphicsType(GraphicsType.SPICE));
+        assertEquals(GraphicsTypes.VNC, 
GraphicsTypes.fromGraphicsType(GraphicsType.VNC));
+    }
+
+    @Test
+    public void testFromGraphicsTypes() throws Exception {
+        assertEquals(GraphicsTypes.NONE, 
GraphicsTypes.fromGraphicsTypes(null));
+        assertEquals(GraphicsTypes.SPICE, 
GraphicsTypes.fromGraphicsTypes(makeSet(GraphicsType.SPICE)));
+        assertEquals(GraphicsTypes.VNC, 
GraphicsTypes.fromGraphicsTypes(makeSet(GraphicsType.VNC)));
+    }
+
+    private <T> Set<T> makeSet(T ... elems) {
+        return new HashSet<>(Arrays.asList(elems));
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
index f4387c8..f1e711b 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
@@ -153,6 +153,8 @@
 
     String GraphicsType___VNC();
 
+    String UnitVmModel$GraphicsTypes___NONE();
+
     String UnitVmModel$GraphicsTypes___SPICE();
 
     String UnitVmModel$GraphicsTypes___VNC();
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
index ab0098e..d1f2bb3 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
+++ 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
@@ -96,6 +96,7 @@
 DisplayType___vga=VGA
 GraphicsType___SPICE=SPICE
 GraphicsType___VNC=VNC
+UnitVmModel$GraphicsTypes___NONE=None
 UnitVmModel$GraphicsTypes___SPICE=SPICE
 UnitVmModel$GraphicsTypes___VNC=VNC
 UnitVmModel$GraphicsTypes___SPICE_AND_VNC=SPICE + VNC
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
index d9b3d88..90fa4cb 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
@@ -184,7 +184,7 @@
             @Override
             protected UnitVmModel.GraphicsTypes getRawValue(VM vm) {
                 if ((vm.getStatus() == VMStatus.Down) || (vm.getStatus() == 
VMStatus.ImageLocked)) {
-                    return null;
+                    return UnitVmModel.GraphicsTypes.NONE;
                 }
 
                 Map<GraphicsType, GraphicsInfo> graphicsInfos = 
vm.getGraphicsInfos();


-- 
To view, visit https://gerrit.ovirt.org/38171
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to