diff --git a/engine/schema/src/com/cloud/vm/snapshot/VMSnapshotDetailsVO.java b/engine/schema/src/com/cloud/vm/snapshot/VMSnapshotDetailsVO.java index 934dd92cca3..ee8765b4ee4 100644 --- a/engine/schema/src/com/cloud/vm/snapshot/VMSnapshotDetailsVO.java +++ b/engine/schema/src/com/cloud/vm/snapshot/VMSnapshotDetailsVO.java @@ -18,27 +18,25 @@ */ package com.cloud.vm.snapshot; -import org.apache.cloudstack.api.InternalIdentity; - import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import javax.persistence.TableGenerator; + +import org.apache.cloudstack.api.ResourceDetail; @Entity @Table(name = "vm_snapshot_details") -public class VMSnapshotDetailsVO implements InternalIdentity { +public class VMSnapshotDetailsVO implements ResourceDetail { @Id - @TableGenerator(name = "vm_snapshot_details_seq", table = "sequence", pkColumnName = "name", valueColumnName = "value", pkColumnValue = "vm_snapshot_details_seq", allocationSize = 1) - @GeneratedValue(strategy = GenerationType.TABLE) + @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name = "id") private long id; @Column(name = "vm_snapshot_id") - Long vmSnapshotId; + private long resourceId; @Column(name = "name") String name; @@ -50,38 +48,34 @@ public class VMSnapshotDetailsVO implements InternalIdentity { } - public VMSnapshotDetailsVO(Long vmSnapshotId, String name, String value) { - this.vmSnapshotId = vmSnapshotId; + public VMSnapshotDetailsVO(long vmSnapshotId, String name, String value) { + this.resourceId = vmSnapshotId; this.name = name; this.value = value; } - public Long getVmSnapshotId() { - return this.vmSnapshotId; - } - - public void setVmSnapshotId(Long vmSnapshotId) { - this.vmSnapshotId = vmSnapshotId; - } - - public String getName() { - return this.name; - } - - public void setName(String name) { - this.name = name; - } - - public String getValue() { - return this.value; - } - - public void setValue(String value) { - this.value = value; - } - + @Override + public String getName() { + return this.name; + } + + @Override + public String getValue() { + return this.value; + } + @Override public long getId() { - return id; + return id; + } + + @Override + public long getResourceId() { + return resourceId; + } + + @Override + public boolean isDisplay() { + return false; } } diff --git a/engine/schema/src/com/cloud/vm/snapshot/dao/VMSnapshotDetailsDao.java b/engine/schema/src/com/cloud/vm/snapshot/dao/VMSnapshotDetailsDao.java index e84178cc4fd..ba2c52cc6be 100644 --- a/engine/schema/src/com/cloud/vm/snapshot/dao/VMSnapshotDetailsDao.java +++ b/engine/schema/src/com/cloud/vm/snapshot/dao/VMSnapshotDetailsDao.java @@ -18,11 +18,10 @@ */ package com.cloud.vm.snapshot.dao; +import org.apache.cloudstack.resourcedetail.ResourceDetailsDao; + import com.cloud.utils.db.GenericDao; import com.cloud.vm.snapshot.VMSnapshotDetailsVO; -import java.util.Map; - -public interface VMSnapshotDetailsDao extends GenericDao { - Map getDetails(Long vmSnapshotId); +public interface VMSnapshotDetailsDao extends GenericDao, ResourceDetailsDao { } diff --git a/engine/schema/src/com/cloud/vm/snapshot/dao/VMSnapshotDetailsDaoImpl.java b/engine/schema/src/com/cloud/vm/snapshot/dao/VMSnapshotDetailsDaoImpl.java index b528b39290f..bfa912d0327 100644 --- a/engine/schema/src/com/cloud/vm/snapshot/dao/VMSnapshotDetailsDaoImpl.java +++ b/engine/schema/src/com/cloud/vm/snapshot/dao/VMSnapshotDetailsDaoImpl.java @@ -18,35 +18,14 @@ */ package com.cloud.vm.snapshot.dao; -import com.cloud.utils.db.GenericDaoBase; -import com.cloud.utils.db.SearchBuilder; -import com.cloud.utils.db.SearchCriteria; +import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; + import com.cloud.vm.snapshot.VMSnapshotDetailsVO; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +public class VMSnapshotDetailsDaoImpl extends ResourceDetailsDaoBase implements VMSnapshotDetailsDao { -public class VMSnapshotDetailsDaoImpl extends GenericDaoBase implements VMSnapshotDetailsDao { - protected final SearchBuilder searchDetails; - - protected VMSnapshotDetailsDaoImpl() { - super(); - searchDetails = createSearchBuilder(); - searchDetails.and("vmsnapshotId", searchDetails.entity().getVmSnapshotId(), SearchCriteria.Op.EQ); - searchDetails.done(); - } @Override - public Map getDetails(Long vmSnapshotId) { - SearchCriteria sc = searchDetails.create(); - sc.setParameters("vmsnapshotId", vmSnapshotId); - - List details = listBy(sc); - Map detailsMap = new HashMap(); - for (VMSnapshotDetailsVO detail : details) { - detailsMap.put(detail.getName(), detail.getValue()); - } - - return detailsMap; + public void addDetail(long resourceId, String key, String value) { + super.addDetail(new VMSnapshotDetailsVO(resourceId, key, value)); } } diff --git a/engine/storage/integration-test/test/com/cloud/vm/snapshot/dao/VmSnapshotDaoTest.java b/engine/storage/integration-test/test/com/cloud/vm/snapshot/dao/VmSnapshotDaoTest.java index fc52f89f5d0..2a2ef9c201a 100644 --- a/engine/storage/integration-test/test/com/cloud/vm/snapshot/dao/VmSnapshotDaoTest.java +++ b/engine/storage/integration-test/test/com/cloud/vm/snapshot/dao/VmSnapshotDaoTest.java @@ -18,16 +18,19 @@ */ package com.cloud.vm.snapshot.dao; -import com.cloud.vm.snapshot.VMSnapshotDetailsVO; +import java.util.Map; + +import javax.inject.Inject; + import junit.framework.Assert; + import org.apache.cloudstack.storage.test.CloudStackTestNGBase; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import javax.inject.Inject; -import java.util.Map; +import com.cloud.vm.snapshot.VMSnapshotDetailsVO; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:/storageContext.xml") @@ -39,7 +42,7 @@ public class VmSnapshotDaoTest extends CloudStackTestNGBase { public void testVmSnapshotDetails() { VMSnapshotDetailsVO detailsVO = new VMSnapshotDetailsVO(1L, "test", "foo"); vmsnapshotDetailsDao.persist(detailsVO); - Map details = vmsnapshotDetailsDao.getDetails(1L); + Map details = vmsnapshotDetailsDao.listDetailsKeyPairs(1L); Assert.assertTrue(details.containsKey("test")); }