Moved ResourceDao and ResourceDaoBase to 
cloud-engine-schema/org/apache/cloudstack (used to be mistakenly placed under 
com/cloud/cloud)


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

Branch: refs/heads/object_store_migration
Commit: 2cac1aaa0fc9ab82c64b66244ad4f169654a3d73
Parents: 5caeab7
Author: Alena Prokharchyk <[email protected]>
Authored: Mon Oct 28 15:03:57 2013 -0700
Committer: Alena Prokharchyk <[email protected]>
Committed: Mon Oct 28 15:03:57 2013 -0700

----------------------------------------------------------------------
 .../com/cloud/dc/dao/DataCenterDetailsDao.java  |   2 +
 .../cloud/dc/dao/DataCenterDetailsDaoImpl.java  |   1 +
 .../com/cloud/dc/dao/ResourceDetailsDao.java    |  42 -------
 .../cloud/dc/dao/ResourceDetailsDaoBase.java    | 116 -------------------
 .../cloud/network/dao/NetworkDetailsDao.java    |   3 +-
 .../network/dao/NetworkDetailsDaoImpl.java      |   2 +-
 .../service/dao/ServiceOfferingDetailsDao.java  |   3 +-
 .../dao/ServiceOfferingDetailsDaoImpl.java      |   2 +-
 .../storage/dao/StoragePoolDetailsDaoImpl.java  |   2 +-
 .../cloud/storage/dao/VMTemplateDetailsDao.java |   3 +-
 .../storage/dao/VMTemplateDetailsDaoImpl.java   |   2 +-
 .../com/cloud/storage/dao/VolumeDetailsDao.java |   3 +-
 .../cloud/storage/dao/VolumeDetailsDaoImpl.java |   2 +-
 .../src/com/cloud/vm/dao/NicDetailsDao.java     |   3 +-
 .../src/com/cloud/vm/dao/NicDetailsDaoImpl.java |   2 +-
 .../src/com/cloud/vm/dao/UserVmDetailsDao.java  |   3 +-
 .../com/cloud/vm/dao/UserVmDetailsDaoImpl.java  |   2 +-
 .../resourcedetail/ResourceDetailsDao.java      |  42 +++++++
 .../resourcedetail/ResourceDetailsDaoBase.java  | 116 +++++++++++++++++++
 .../dao/FirewallRuleDetailsDao.java             |   2 +-
 .../dao/FirewallRuleDetailsDaoImpl.java         |   2 +-
 .../db/PrimaryDataStoreDetailsDao.java          |   2 +-
 .../datastore/db/StoragePoolDetailsDao.java     |   3 +-
 .../db/PrimaryDataStoreDetailsDaoImpl.java      |   2 +-
 server/src/com/cloud/api/ApiDBUtils.java        |   2 +-
 .../metadata/ResourceMetaDataManagerImpl.java   |   2 +-
 26 files changed, 188 insertions(+), 178 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java 
b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java
index 747d558..ed7c494 100644
--- a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java
+++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java
@@ -16,6 +16,8 @@
 // under the License.
 package com.cloud.dc.dao;
 
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
+
 import com.cloud.dc.DataCenterDetailVO;
 import com.cloud.utils.db.GenericDao;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java 
b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
index 1d003ca..93c08ec 100644
--- a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
@@ -22,6 +22,7 @@ import org.apache.cloudstack.api.ResourceDetail;
 import org.apache.cloudstack.framework.config.ConfigKey;
 import org.apache.cloudstack.framework.config.ConfigKey.Scope;
 import org.apache.cloudstack.framework.config.ScopedConfigStorage;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 
 import com.cloud.dc.DataCenterDetailVO;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDao.java 
b/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDao.java
deleted file mode 100644
index fd8f89c..0000000
--- a/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDao.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.dc.dao;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cloudstack.api.ResourceDetail;
-
-import com.cloud.utils.db.GenericDao;
-
-public interface ResourceDetailsDao<R extends ResourceDetail> extends 
GenericDao<R, Long>{
-    public R findDetail(long resourceId, String name);
-
-    public Map<String, String> findDetails(long resourceId);
-
-    public List<R> findDetailsList(long resourceId);
-
-    public void removeDetails(long resourceId);
-
-    public void removeDetail(long resourceId, String key);
-
-    public void addDetails(List<R> details);
-    
-    public void addDetail(R detail);
-    
-    public R createDetail(long resourceId, String key, String value);
-}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDaoBase.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDaoBase.java 
b/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDaoBase.java
deleted file mode 100644
index ba0e5c3..0000000
--- a/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDaoBase.java
+++ /dev/null
@@ -1,116 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.dc.dao;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cloudstack.api.ResourceDetail;
-
-import com.cloud.utils.db.GenericDaoBase;
-import com.cloud.utils.db.SearchBuilder;
-import com.cloud.utils.db.SearchCriteria;
-import com.cloud.utils.db.TransactionLegacy;
-
-
-public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends 
GenericDaoBase<R, Long>{
-    private SearchBuilder<R> AllFieldsSearch;
-    
-    public ResourceDetailsDaoBase() {
-        AllFieldsSearch = createSearchBuilder();
-        AllFieldsSearch.and("resourceId", 
AllFieldsSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
-        AllFieldsSearch.and("name", AllFieldsSearch.entity().getName(), 
SearchCriteria.Op.EQ);
-        AllFieldsSearch.done();
-    }
-
-    public R findDetail(long resourceId, String name) {
-        SearchCriteria<R> sc = AllFieldsSearch.create();
-        sc.setParameters("resourceId", resourceId);
-        sc.setParameters("name", name);
-        
-        return findOneBy(sc);
-    }
-
-
-    public Map<String, String> findDetails(long resourceId) {
-        SearchCriteria<R> sc = AllFieldsSearch.create();
-        sc.setParameters("resourceId", resourceId);
-        
-        List<R> results = search(sc, null);
-        Map<String, String> details = new HashMap<String, 
String>(results.size());
-        for (R result : results) {
-            details.put(result.getName(), result.getValue());
-        }
-        return details;
-    }
-
-    public List<R> findDetailsList(long resourceId) {
-        SearchCriteria<R> sc = AllFieldsSearch.create();
-        sc.setParameters("resourceId", resourceId);
-
-        List<R> results = search(sc, null);
-        return results;
-    }
-
-
-    public void removeDetails(long resourceId) {
-        SearchCriteria<R> sc = AllFieldsSearch.create();
-        sc.setParameters("resourceId", resourceId);
-        remove(sc);
-    }
-
-    
-    public void removeDetail(long resourceId, String key) {
-        if (key != null){
-            SearchCriteria<R> sc = AllFieldsSearch.create();
-            sc.setParameters("name", key);
-            remove(sc);
-        }
-    }
-
-
-    public void addDetails(List<R> details) {
-        if (details.isEmpty()) {
-            return;
-        }
-        TransactionLegacy txn = TransactionLegacy.currentTxn();
-        txn.start();
-        SearchCriteria<R> sc = AllFieldsSearch.create();
-        sc.setParameters("resourceId", details.get(0).getResourceId());
-        expunge(sc);
-        
-        for (R detail : details) {
-            persist(detail);
-        }
-        
-        txn.commit();
-    }
-    
-
-    public void addDetail(R detail) {
-        if (detail == null) {
-            return;
-        }
-        R existingDetail = findDetail(detail.getResourceId(), 
detail.getName());
-        if (existingDetail != null) {
-            remove(existingDetail.getId());
-        }
-        persist(detail);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java 
b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java
index ec1b44c..efe84f6 100644
--- a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java
+++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java
@@ -16,7 +16,8 @@
 // under the License.
 package com.cloud.network.dao;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
+
 import com.cloud.utils.db.GenericDao;
 
 public interface NetworkDetailsDao extends GenericDao<NetworkDetailVO, Long>, 
ResourceDetailsDao<NetworkDetailVO> {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java 
b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
index 5306a35..db5c44f 100644
--- a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
@@ -18,9 +18,9 @@ package com.cloud.network.dao;
 
 import javax.ejb.Local;
 
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 
 @Component
 @Local(value=NetworkDetailsDao.class)

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java 
b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java
index 495ccd5..b377e6c 100644
--- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java
+++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java
@@ -16,7 +16,8 @@
 // under the License.
 package com.cloud.service.dao;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
+
 import com.cloud.service.ServiceOfferingDetailsVO;
 import com.cloud.utils.db.GenericDao;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java 
b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
index c059ca8..8a78b17 100644
--- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
@@ -18,9 +18,9 @@ package com.cloud.service.dao;
 
 import javax.ejb.Local;
 
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 import com.cloud.service.ServiceOfferingDetailsVO;
 
 @Component

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java 
b/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
index 8914732..3c177d0 100644
--- a/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
@@ -21,10 +21,10 @@ import javax.ejb.Local;
 import org.apache.cloudstack.framework.config.ConfigKey;
 import org.apache.cloudstack.framework.config.ConfigKey.Scope;
 import org.apache.cloudstack.framework.config.ScopedConfigStorage;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 
 @Local(value = StoragePoolDetailsDao.class)
 public class StoragePoolDetailsDaoImpl extends 
ResourceDetailsDaoBase<StoragePoolDetailVO> implements StoragePoolDetailsDao, 
ScopedConfigStorage {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java 
b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java
index 818f9dd..e98f651 100644
--- a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java
+++ b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java
@@ -16,7 +16,8 @@
 // under the License.
 package com.cloud.storage.dao;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
+
 import com.cloud.storage.VMTemplateDetailVO;
 import com.cloud.utils.db.GenericDao;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java 
b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
index d4ca38e..e2f5abf 100644
--- a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
@@ -18,9 +18,9 @@ package com.cloud.storage.dao;
 
 import javax.ejb.Local;
 
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 import com.cloud.storage.VMTemplateDetailVO;
 
 @Component

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java 
b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java
index a7c7013..a7cee81 100644
--- a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java
+++ b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java
@@ -16,7 +16,8 @@
 // under the License.
 package com.cloud.storage.dao;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
+
 import com.cloud.storage.VolumeDetailVO;
 import com.cloud.utils.db.GenericDao;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java 
b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
index 700be46..1afa6a2 100644
--- a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
@@ -18,9 +18,9 @@ package com.cloud.storage.dao;
 
 import javax.ejb.Local;
 
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 import com.cloud.storage.VolumeDetailVO;
 
 @Component

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/vm/dao/NicDetailsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/NicDetailsDao.java 
b/engine/schema/src/com/cloud/vm/dao/NicDetailsDao.java
index 3835ddc..2ca901f 100644
--- a/engine/schema/src/com/cloud/vm/dao/NicDetailsDao.java
+++ b/engine/schema/src/com/cloud/vm/dao/NicDetailsDao.java
@@ -16,7 +16,8 @@
 // under the License.
 package com.cloud.vm.dao;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
+
 import com.cloud.utils.db.GenericDao;
 import com.cloud.vm.NicDetailVO;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java 
b/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
index 0775f7f..d442982 100644
--- a/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
@@ -18,9 +18,9 @@ package com.cloud.vm.dao;
 
 import javax.ejb.Local;
 
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 import com.cloud.vm.NicDetailVO;
 
 @Component

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java 
b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java
index c06e9bb..c22da6b 100644
--- a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java
+++ b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java
@@ -16,7 +16,8 @@
 // under the License.
 package com.cloud.vm.dao;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
+
 import com.cloud.utils.db.GenericDao;
 import com.cloud.vm.UserVmDetailVO;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java 
b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
index 45c33cd..0445419 100644
--- a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
@@ -18,9 +18,9 @@ package com.cloud.vm.dao;
 
 import javax.ejb.Local;
 
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 import com.cloud.vm.UserVmDetailVO;
 
 @Component

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java
 
b/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java
new file mode 100644
index 0000000..043c833
--- /dev/null
+++ 
b/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java
@@ -0,0 +1,42 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.resourcedetail;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cloudstack.api.ResourceDetail;
+
+import com.cloud.utils.db.GenericDao;
+
+public interface ResourceDetailsDao<R extends ResourceDetail> extends 
GenericDao<R, Long>{
+    public R findDetail(long resourceId, String name);
+
+    public Map<String, String> findDetails(long resourceId);
+
+    public List<R> findDetailsList(long resourceId);
+
+    public void removeDetails(long resourceId);
+
+    public void removeDetail(long resourceId, String key);
+
+    public void addDetails(List<R> details);
+    
+    public void addDetail(R detail);
+    
+    public R createDetail(long resourceId, String key, String value);
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java
 
b/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java
new file mode 100644
index 0000000..a514b1e
--- /dev/null
+++ 
b/engine/schema/src/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java
@@ -0,0 +1,116 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.resourcedetail;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cloudstack.api.ResourceDetail;
+
+import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.SearchBuilder;
+import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.TransactionLegacy;
+
+
+public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends 
GenericDaoBase<R, Long>{
+    private SearchBuilder<R> AllFieldsSearch;
+    
+    public ResourceDetailsDaoBase() {
+        AllFieldsSearch = createSearchBuilder();
+        AllFieldsSearch.and("resourceId", 
AllFieldsSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
+        AllFieldsSearch.and("name", AllFieldsSearch.entity().getName(), 
SearchCriteria.Op.EQ);
+        AllFieldsSearch.done();
+    }
+
+    public R findDetail(long resourceId, String name) {
+        SearchCriteria<R> sc = AllFieldsSearch.create();
+        sc.setParameters("resourceId", resourceId);
+        sc.setParameters("name", name);
+        
+        return findOneBy(sc);
+    }
+
+
+    public Map<String, String> findDetails(long resourceId) {
+        SearchCriteria<R> sc = AllFieldsSearch.create();
+        sc.setParameters("resourceId", resourceId);
+        
+        List<R> results = search(sc, null);
+        Map<String, String> details = new HashMap<String, 
String>(results.size());
+        for (R result : results) {
+            details.put(result.getName(), result.getValue());
+        }
+        return details;
+    }
+
+    public List<R> findDetailsList(long resourceId) {
+        SearchCriteria<R> sc = AllFieldsSearch.create();
+        sc.setParameters("resourceId", resourceId);
+
+        List<R> results = search(sc, null);
+        return results;
+    }
+
+
+    public void removeDetails(long resourceId) {
+        SearchCriteria<R> sc = AllFieldsSearch.create();
+        sc.setParameters("resourceId", resourceId);
+        remove(sc);
+    }
+
+    
+    public void removeDetail(long resourceId, String key) {
+        if (key != null){
+            SearchCriteria<R> sc = AllFieldsSearch.create();
+            sc.setParameters("name", key);
+            remove(sc);
+        }
+    }
+
+
+    public void addDetails(List<R> details) {
+        if (details.isEmpty()) {
+            return;
+        }
+        TransactionLegacy txn = TransactionLegacy.currentTxn();
+        txn.start();
+        SearchCriteria<R> sc = AllFieldsSearch.create();
+        sc.setParameters("resourceId", details.get(0).getResourceId());
+        expunge(sc);
+        
+        for (R detail : details) {
+            persist(detail);
+        }
+        
+        txn.commit();
+    }
+    
+
+    public void addDetail(R detail) {
+        if (detail == null) {
+            return;
+        }
+        R existingDetail = findDetail(detail.getResourceId(), 
detail.getName());
+        if (existingDetail != null) {
+            remove(existingDetail.getId());
+        }
+        persist(detail);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDao.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDao.java
 
b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDao.java
index eae1d10..9931aaa 100644
--- 
a/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDao.java
+++ 
b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDao.java
@@ -17,8 +17,8 @@
 package org.apache.cloudstack.resourcedetail.dao;
 
 import org.apache.cloudstack.resourcedetail.FirewallRuleDetailVO;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
 import com.cloud.utils.db.GenericDao;
 
 public interface FirewallRuleDetailsDao extends 
GenericDao<FirewallRuleDetailVO, Long>, 
ResourceDetailsDao<FirewallRuleDetailVO>{

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
 
b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
index b235ace..bff86db 100644
--- 
a/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
+++ 
b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
@@ -19,9 +19,9 @@ package org.apache.cloudstack.resourcedetail.dao;
 import javax.ejb.Local;
 
 import org.apache.cloudstack.resourcedetail.FirewallRuleDetailVO;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 
 @Component
 @Local (value={FirewallRuleDetailsDao.class})

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java
 
b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java
index 7b6d390..5bab460 100644
--- 
a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java
+++ 
b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java
@@ -16,7 +16,7 @@
 // under the License.
 package org.apache.cloudstack.storage.datastore.db;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
 
 public interface PrimaryDataStoreDetailsDao extends 
ResourceDetailsDao<PrimaryDataStoreDetailVO> {
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java
----------------------------------------------------------------------
diff --git 
a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java
 
b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java
index 2ec04d5..114a5b7 100644
--- 
a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java
+++ 
b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java
@@ -16,7 +16,8 @@
 // under the License.
 package org.apache.cloudstack.storage.datastore.db;
 
-import com.cloud.dc.dao.ResourceDetailsDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
+
 import com.cloud.utils.db.GenericDao;
 
 public interface StoragePoolDetailsDao extends GenericDao<StoragePoolDetailVO, 
Long>, ResourceDetailsDao<StoragePoolDetailVO> {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
 
b/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
index 5613931..61125f6 100644
--- 
a/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
+++ 
b/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
@@ -16,11 +16,11 @@
 // under the License.
 package org.apache.cloudstack.storage.volume.db;
 
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDetailVO;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDetailsDao;
 import org.springframework.stereotype.Component;
 
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 
 @Component
 public class PrimaryDataStoreDetailsDaoImpl extends 
ResourceDetailsDaoBase<PrimaryDataStoreDetailVO> implements

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/server/src/com/cloud/api/ApiDBUtils.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiDBUtils.java 
b/server/src/com/cloud/api/ApiDBUtils.java
index 1be6a21..aec25e5 100755
--- a/server/src/com/cloud/api/ApiDBUtils.java
+++ b/server/src/com/cloud/api/ApiDBUtils.java
@@ -59,6 +59,7 @@ import org.apache.cloudstack.framework.jobs.AsyncJob;
 import org.apache.cloudstack.framework.jobs.AsyncJobManager;
 import org.apache.cloudstack.framework.jobs.dao.AsyncJobDao;
 import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 
@@ -126,7 +127,6 @@ import com.cloud.dc.dao.ClusterDao;
 import com.cloud.dc.dao.DataCenterDao;
 import com.cloud.dc.dao.DataCenterDetailsDao;
 import com.cloud.dc.dao.HostPodDao;
-import com.cloud.dc.dao.ResourceDetailsDaoBase;
 import com.cloud.dc.dao.VlanDao;
 import com.cloud.domain.DomainVO;
 import com.cloud.domain.dao.DomainDao;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2cac1aaa/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java 
b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
index 6d03b2a..ec5b7ea 100644
--- a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
+++ b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
@@ -26,13 +26,13 @@ import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.cloudstack.api.ResourceDetail;
+import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
 import org.apache.cloudstack.resourcedetail.dao.FirewallRuleDetailsDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
 import com.cloud.dc.dao.DataCenterDetailsDao;
-import com.cloud.dc.dao.ResourceDetailsDao;
 import com.cloud.event.ActionEvent;
 import com.cloud.event.EventTypes;
 import com.cloud.exception.InvalidParameterValueException;

Reply via email to