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;
