Hello Yair Zaslavsky,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/7989

to review the following change.

Change subject: core: VmDevice implements comparable(#852451)
......................................................................

core: VmDevice implements comparable(#852451)

Changed VmDevice to implement Comprable
interface.
The comparison is based on Id comparing.
Id is composed from deviceId and vmId, so the
Id comparison algorithm checks:
a. compareTo on vmId fields.
b. (if result is not 0) compareTo on deviceId fields

Change-Id: Ic82521368a4f3c3c518c8cf4e5dc460b9e54f379
Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java
A 
backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/businessentities/VmDeviceTest.java
3 files changed, 74 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/89/7989/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java
index 12bcbd2..caa3740 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDevice.java
@@ -12,7 +12,7 @@
  * This BE holds both managed (disk, network interface etc.) and unmanaged 
(sound, video etc.) devices.
  */
 
-public class VmDevice extends IVdcQueryable implements 
BusinessEntity<VmDeviceId> {
+public class VmDevice extends IVdcQueryable implements 
BusinessEntity<VmDeviceId>, Comparable<VmDevice> {
 
     /**
      * Needed for java serialization/deserialization mechanism.
@@ -301,4 +301,9 @@
         sb.append("}");
         return sb.toString();
     }
+
+    @Override
+    public int compareTo(VmDevice rhs) {
+        return getId().compareTo(rhs.getId());
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java
index 9366938..ccc0467 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDeviceId.java
@@ -11,7 +11,7 @@
 
 @Embeddable
 @TypeDef(name = "guid", typeClass = GuidType.class)
-public class VmDeviceId implements Serializable {
+public class VmDeviceId implements Serializable,Comparable<VmDeviceId> {
 
     /**
      *
@@ -86,4 +86,14 @@
     public void setVmId(Guid vmId) {
         this.vmId = vmId;
     }
+
+    @Override
+    public int compareTo(VmDeviceId rhs) {
+        int vmComparsion = getVmId().compareTo(rhs.getVmId());
+        if (vmComparsion == 0) {
+            return getDeviceId().compareTo(rhs.getDeviceId());
+        } else {
+            return vmComparsion;
+        }
+    }
 }
diff --git 
a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/businessentities/VmDeviceTest.java
 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/businessentities/VmDeviceTest.java
new file mode 100644
index 0000000..b8b3840
--- /dev/null
+++ 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/businessentities/VmDeviceTest.java
@@ -0,0 +1,57 @@
+package org.ovirt.engine.core.common.businessentities;
+
+import org.junit.Test;
+import org.ovirt.engine.core.compat.Guid;
+import static org.junit.Assert.*;
+
+public class VmDeviceTest {
+    
+    
+    public void testSelfAndIdentifyEquality() {
+        Guid vmId = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2463");
+        Guid deviceId = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2464");
+        VmDevice device1 = createVmDevice(deviceId, vmId);
+        assertTrue(device1.compareTo(device1) == 0);
+        VmDevice device2 = createVmDevice(deviceId, vmId);
+        assertTrue(device1.compareTo(device2) == 0);
+        
+    }
+    @Test
+    public void testCompareToVmIdsAreEqual() {
+        //b23ad6d7-0df8-4d69-b4e5-d5b5e90c2463
+        Guid vmId = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2463");
+        Guid deviceId1 = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2464");
+        Guid deviceId2 = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2465");
+        VmDevice device1 = createVmDevice(deviceId1, vmId);
+        VmDevice device2 = createVmDevice(deviceId2, vmId);
+        assertCompareTo(device1, device2);
+      
+    }
+    
+    @Test
+    public void testCompareToVmIdsAreNotEqual() {
+        Guid vmId1 = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2463");
+        Guid vmId2 = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2464");
+        Guid deviceId1 = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2465");
+        Guid deviceId2 = 
Guid.createGuidFromString("b23ad6d7-0df8-4d69-b4e5-d5b5e90c2466");
+        VmDevice device1 = createVmDevice(deviceId1, vmId1);
+        VmDevice device2 = createVmDevice(deviceId2, vmId2);
+        assertCompareTo(device1, device2);
+        //Test in case the device IDs are equal
+        device1 = createVmDevice(deviceId1, vmId1);
+        device2 = createVmDevice(deviceId1, vmId2);
+        assertCompareTo(device1, device2);
+    }
+    
+    private void assertCompareTo(VmDevice device1, VmDevice device2) {
+        assertTrue(device2.compareTo(device1) > 0);
+        assertTrue(device1.compareTo(device2) < 0);
+    }
+        
+    private VmDevice createVmDevice(Guid deviceId, Guid vmId) {
+        VmDevice device = new VmDevice();
+        device.setId(new VmDeviceId(deviceId, vmId));
+        return device;
+        
+    }
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic82521368a4f3c3c518c8cf4e5dc460b9e54f379
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Eli Mesika <emes...@redhat.com>
Gerrit-Reviewer: Yair Zaslavsky <yzasl...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to