diff --git a/engine/schema/src/main/java/com/cloud/network/dao/NetworkDaoImpl.java b/engine/schema/src/main/java/com/cloud/network/dao/NetworkDaoImpl.java index 926e293bc2f..a1ab1d1ef93 100644 --- a/engine/schema/src/main/java/com/cloud/network/dao/NetworkDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/network/dao/NetworkDaoImpl.java @@ -651,19 +651,22 @@ public class NetworkDaoImpl extends GenericDaoBaseimplements Ne List domainIds, Filter filter) { SearchBuilder sb = createSearchBuilder(); sb.and("trafficType", sb.entity().getTrafficType(), Op.EQ); - sb.and().op("account", sb.entity().getAccountId(), Op.IN); - sb.or("domain", sb.entity().getDomainId(), Op.IN); - sb.cp(); + boolean accountIdsNotEmpty = CollectionUtils.isNotEmpty(accountIds); + boolean domainIdsNotEmpty = CollectionUtils.isNotEmpty(domainIds); + if (accountIdsNotEmpty || domainIdsNotEmpty) { + sb.and().op("account", sb.entity().getAccountId(), SearchCriteria.Op.IN); + sb.or("domain", sb.entity().getDomainId(), SearchCriteria.Op.IN); + sb.cp(); + } sb.done(); final SearchCriteria sc = sb.create(); sc.setParameters("trafficType", trafficType); - if (CollectionUtils.isNotEmpty(accountIds)) { + if (accountIdsNotEmpty) { sc.setParameters("account", accountIds.toArray()); } - if (CollectionUtils.isNotEmpty(domainIds)) { - sc.setParameters("domain", domainIds); + if (domainIdsNotEmpty) { + sc.setParameters("domain", domainIds.toArray()); } - return listBy(sc, filter); } diff --git a/engine/schema/src/main/java/com/cloud/tags/dao/ResourceTagsDaoImpl.java b/engine/schema/src/main/java/com/cloud/tags/dao/ResourceTagsDaoImpl.java index 47556018de4..5dd79983766 100644 --- a/engine/schema/src/main/java/com/cloud/tags/dao/ResourceTagsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/tags/dao/ResourceTagsDaoImpl.java @@ -128,17 +128,21 @@ public class ResourceTagsDaoImpl extends GenericDaoBase imp List domainIds, Filter filter) { SearchBuilder sb = createSearchBuilder(); sb.and("resourceType", sb.entity().getResourceType(), Op.EQ); - sb.and().op("account", sb.entity().getAccountId(), SearchCriteria.Op.IN); - sb.or("domain", sb.entity().getDomainId(), SearchCriteria.Op.IN); - sb.cp(); + boolean accountIdsNotEmpty = CollectionUtils.isNotEmpty(accountIds); + boolean domainIdsNotEmpty = CollectionUtils.isNotEmpty(domainIds); + if (accountIdsNotEmpty || domainIdsNotEmpty) { + sb.and().op("account", sb.entity().getAccountId(), SearchCriteria.Op.IN); + sb.or("domain", sb.entity().getDomainId(), SearchCriteria.Op.IN); + sb.cp(); + } sb.done(); final SearchCriteria sc = sb.create();; sc.setParameters("resourceType", resourceType); - if (CollectionUtils.isNotEmpty(accountIds)) { + if (accountIdsNotEmpty) { sc.setParameters("account", accountIds.toArray()); } - if (CollectionUtils.isNotEmpty(domainIds)) { - sc.setParameters("domain", domainIds); + if (domainIdsNotEmpty) { + sc.setParameters("domain", domainIds.toArray()); } return listBy(sc, filter); } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/ImageTransferDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/ImageTransferDaoImpl.java index 85dd174c129..3e1f6b513a5 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/ImageTransferDaoImpl.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/backup/dao/ImageTransferDaoImpl.java @@ -108,16 +108,20 @@ public class ImageTransferDaoImpl extends GenericDaoBase @Override public List listByOwners(List accountIds, List domainIds, Filter filter) { SearchBuilder sb = createSearchBuilder(); - sb.and().op("account", sb.entity().getAccountId(), SearchCriteria.Op.IN); - sb.or("domain", sb.entity().getDomainId(), SearchCriteria.Op.IN); - sb.cp(); + boolean accountIdsNotEmpty = CollectionUtils.isNotEmpty(accountIds); + boolean domainIdsNotEmpty = CollectionUtils.isNotEmpty(domainIds); + if (accountIdsNotEmpty || domainIdsNotEmpty) { + sb.and().op("account", sb.entity().getAccountId(), SearchCriteria.Op.IN); + sb.or("domain", sb.entity().getDomainId(), SearchCriteria.Op.IN); + sb.cp(); + } sb.done(); final SearchCriteria sc = sb.create(); - if (CollectionUtils.isNotEmpty(accountIds)) { + if (accountIdsNotEmpty) { sc.setParameters("account", accountIds.toArray()); } - if (CollectionUtils.isNotEmpty(domainIds)) { - sc.setParameters("domain", domainIds); + if (domainIdsNotEmpty) { + sc.setParameters("domain", domainIds.toArray()); } return listBy(sc, filter); diff --git a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java index 94b25ccc82f..a0a5c1a43dd 100644 --- a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java @@ -835,19 +835,23 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation listByHypervisorTypeAndOwners(Hypervisor.HypervisorType hypervisorType, - List accountIds, String domainPath, Filter filter) { + List accountIds, String domainPath, Filter filter) { SearchBuilder sb = createSearchBuilder(); sb.and("hypervisorType", sb.entity().getHypervisorType(), Op.EQ); - sb.and().op("account", sb.entity().getAccountId(), Op.IN); - sb.or("domainPath", sb.entity().getDomainPath(), Op.LIKE); - sb.cp(); + boolean accountIdsNotEmpty = CollectionUtils.isNotEmpty(accountIds); + boolean domainPathNotBlank = StringUtils.isNotBlank(domainPath); + if (accountIdsNotEmpty || domainPathNotBlank) { + sb.and().op("account", sb.entity().getAccountId(), Op.IN); + sb.or("domainPath", sb.entity().getDomainPath(), Op.LIKE); + sb.cp(); + } sb.done(); SearchCriteria sc = sb.create(); sc.setParameters("hypervisorType", hypervisorType); - if (CollectionUtils.isNotEmpty(accountIds)) { + if (accountIdsNotEmpty) { sc.setParameters("account", accountIds.toArray()); } - if (StringUtils.isNotBlank(domainPath)) { + if (domainPathNotBlank) { sc.setParameters("domainPath", domainPath + "%"); } return listBy(sc, filter); diff --git a/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java index 4bcb8bff687..8e79dfe4b74 100644 --- a/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java @@ -385,21 +385,25 @@ public class VolumeJoinDaoImpl extends GenericDaoBaseWithTagInformation listByHypervisorTypeAndOwners(Hypervisor.HypervisorType hypervisorType, - List accountIds, String domainPath, Filter filter) { + List accountIds, String domainPath, Filter filter) { SearchBuilder sb = createSearchBuilder(); sb.and("vmType", sb.entity().getVmType(), SearchCriteria.Op.EQ); sb.and("hypervisorType", sb.entity().getHypervisorType(), SearchCriteria.Op.EQ); - sb.and().op("account", sb.entity().getAccountId(), SearchCriteria.Op.IN); - sb.or("domainPath", sb.entity().getDomainPath(), SearchCriteria.Op.LIKE); - sb.cp(); + boolean accountIdsNotEmpty = CollectionUtils.isNotEmpty(accountIds); + boolean domainPathNotBlank = StringUtils.isNotBlank(domainPath); + if (accountIdsNotEmpty || domainPathNotBlank) { + sb.and().op("account", sb.entity().getAccountId(), SearchCriteria.Op.IN); + sb.or("domainPath", sb.entity().getDomainPath(), SearchCriteria.Op.LIKE); + sb.cp(); + } sb.done(); SearchCriteria sc = sb.create(); sc.setParameters("vmType", VirtualMachine.Type.User); sc.setParameters("hypervisorType", hypervisorType); - if (CollectionUtils.isNotEmpty(accountIds)) { + if (accountIdsNotEmpty) { sc.setParameters("account", accountIds.toArray()); } - if (StringUtils.isNotBlank(domainPath)) { + if (domainPathNotBlank) { sc.setParameters("domainPath", domainPath + "%"); } return search(sc, filter);