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 <[email protected]>
---
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 <[email protected]>
Gerrit-Reviewer: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches