api: Implement findByXId in GenericDaoBase and EntityManagerImpl

Declare and define findByXId() in GenericDao and EntityManager.
This method would return a VO by UUID and EntityManager's interface would
take in the VO Interface.

Signed-off-by: Rohit Yadav <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/837d21bb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/837d21bb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/837d21bb

Branch: refs/heads/api_refactoring
Commit: 837d21bb2daf5b719c985a88e24585634c2df35f
Parents: d54d8cb
Author: Rohit Yadav <[email protected]>
Authored: Tue Dec 18 04:10:36 2012 -0800
Committer: Rohit Yadav <[email protected]>
Committed: Tue Dec 18 04:10:36 2012 -0800

----------------------------------------------------------------------
 api/src/com/cloud/dao/EntityManager.java         |    2 +-
 server/src/com/cloud/dao/EntityManagerImpl.java  |    5 +++--
 utils/src/com/cloud/utils/db/GenericDao.java     |    3 +++
 utils/src/com/cloud/utils/db/GenericDaoBase.java |    8 ++++++++
 4 files changed, 15 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/837d21bb/api/src/com/cloud/dao/EntityManager.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/dao/EntityManager.java 
b/api/src/com/cloud/dao/EntityManager.java
index 552e69d..4ddfcec 100644
--- a/api/src/com/cloud/dao/EntityManager.java
+++ b/api/src/com/cloud/dao/EntityManager.java
@@ -45,7 +45,7 @@ public interface EntityManager {
      * @param xid external id
      * @return T if found, null if not.
      */
-    public <T> T findByXid(Class<T> entityType, String xid);
+    public <T> T findByXId(Class<T> entityType, String xid);
 
     /**
      * Lists all entities.  Use this method at your own risk.

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/837d21bb/server/src/com/cloud/dao/EntityManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/dao/EntityManagerImpl.java 
b/server/src/com/cloud/dao/EntityManagerImpl.java
index 1430c08..4d7f7fb 100644
--- a/server/src/com/cloud/dao/EntityManagerImpl.java
+++ b/server/src/com/cloud/dao/EntityManagerImpl.java
@@ -45,8 +45,9 @@ public class EntityManagerImpl implements EntityManager, 
Manager {
     }
 
     @Override
-    public <T> T findByXid(Class<T> entityType, String xid) {
-        return null;
+    public <T> T findByXId(Class<T> entityType, String xid) {
+        GenericDao<? extends T, String> dao = (GenericDao<? extends T, 
String>)GenericDaoBase.getDao(entityType);
+        return dao.findByXId(xid);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/837d21bb/utils/src/com/cloud/utils/db/GenericDao.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/GenericDao.java 
b/utils/src/com/cloud/utils/db/GenericDao.java
index f36c4d8..082748a 100755
--- a/utils/src/com/cloud/utils/db/GenericDao.java
+++ b/utils/src/com/cloud/utils/db/GenericDao.java
@@ -54,6 +54,9 @@ public interface GenericDao<T, ID extends Serializable> {
     T findByIdIncludingRemoved(ID id);
     
     T findById(ID id, boolean fresh);
+
+    // Finds a VO object using uuid
+    T findByXId(ID uuid);
     
     /**
      * @return VO object ready to be used for update.  It won't have any 
fields filled in.

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/837d21bb/utils/src/com/cloud/utils/db/GenericDaoBase.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/GenericDaoBase.java 
b/utils/src/com/cloud/utils/db/GenericDaoBase.java
index be0fe89..6bc49bf 100755
--- a/utils/src/com/cloud/utils/db/GenericDaoBase.java
+++ b/utils/src/com/cloud/utils/db/GenericDaoBase.java
@@ -914,6 +914,14 @@ public abstract class GenericDaoBase<T, ID extends 
Serializable> implements Gene
     }
 
     @Override @DB(txn=false)
+    @SuppressWarnings("unchecked")
+    public T findByXId(final ID uuid) {
+        SearchCriteria<T> sc = createSearchCriteria();
+        sc.addAnd("uuid", SearchCriteria.Op.EQ, uuid);
+        return findOneBy(sc);
+    }
+
+    @Override @DB(txn=false)
     public T findByIdIncludingRemoved(ID id) {
         return findById(id, true, null);
     }

Reply via email to