This is an automated email from the ASF dual-hosted git repository.

sureshanaparti pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.19 by this push:
     new c7f1ba5b8ee server: refactor listNetworks api database retrievals 
(#9184)
c7f1ba5b8ee is described below

commit c7f1ba5b8eec03d51bfe0f1432e46c9101b0f940
Author: Abhishek Kumar <abhishek.mr...@gmail.com>
AuthorDate: Fri Jun 28 17:19:32 2024 +0530

    server: refactor listNetworks api database retrievals (#9184)
    
    * server: refactor listNetworks api database retrievals
    
    * fixes
    
    * remove unused methods
    
    * imports
    
    * fix empty searchcriteria issue
    
    * refactor
    
    Signed-off-by: Abhishek Kumar <abhishek.mr...@gmail.com>
---
 .../java/com/cloud/network/NetworkServiceImpl.java | 209 +++++++++++----------
 1 file changed, 113 insertions(+), 96 deletions(-)

diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java 
b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
index c58463ac708..83ef8b1b213 100644
--- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
@@ -36,7 +36,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
-import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
@@ -2197,6 +2196,9 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
         Long associatedNetworkId = cmd.getAssociatedNetworkId();
         String networkFilterStr = cmd.getNetworkFilter();
 
+        boolean applyManualPagination = 
CollectionUtils.isNotEmpty(supportedServicesStr) ||
+                Boolean.TRUE.equals(canUseForDeploy);
+
         String vlanId = null;
         if (cmd instanceof ListNetworksCmdByAdmin) {
             vlanId = ((ListNetworksCmdByAdmin)cmd).getVlan();
@@ -2282,7 +2284,13 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
             isRecursive = true;
         }
 
-        Filter searchFilter = new Filter(NetworkVO.class, "id", false, null, 
null);
+        Long offset = cmd.getStartIndex();
+        Long limit = cmd.getPageSizeVal();
+        if (applyManualPagination) {
+            offset = null;
+            limit = null;
+        }
+        Filter searchFilter = new Filter(NetworkVO.class, "id", false, offset, 
limit);
         SearchBuilder<NetworkVO> sb = _networksDao.createSearchBuilder();
 
         if (forVpc != null) {
@@ -2337,113 +2345,123 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
             sb.join("associatedNetworkSearch", associatedNetworkSearch, 
sb.entity().getId(), associatedNetworkSearch.entity().getResourceId(), 
JoinBuilder.JoinType.INNER);
         }
 
-        List<NetworkVO> networksToReturn = new ArrayList<NetworkVO>();
+        SearchCriteria<NetworkVO> mainSearchCriteria = 
createNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId,
+                guestIpType, trafficType, physicalNetworkId, 
networkOfferingId, aclType, restartRequired,
+                specifyIpRanges, vpcId, tags, display, vlanId, 
associatedNetworkId);
+        SearchCriteria<NetworkVO> additionalSearchCriteria = 
_networksDao.createSearchCriteria();
 
         if (isSystem == null || !isSystem) {
             if (!permittedAccounts.isEmpty()) {
                 if (Arrays.asList(Network.NetworkFilter.Account, 
Network.NetworkFilter.AccountDomain, 
Network.NetworkFilter.All).contains(networkFilter)) {
                     //get account level networks
-                    
networksToReturn.addAll(listAccountSpecificNetworks(buildNetworkSearchCriteria(sb,
 keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, 
networkOfferingId,
-                            aclType, skipProjectNetworks, restartRequired, 
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId), 
searchFilter, permittedAccounts));
+                    additionalSearchCriteria.addOr("id", SearchCriteria.Op.SC,
+                            getAccountSpecificNetworksSearchCriteria(sb, 
permittedAccounts, skipProjectNetworks));
                 }
                 if (domainId != null && 
Arrays.asList(Network.NetworkFilter.Domain, 
Network.NetworkFilter.AccountDomain, 
Network.NetworkFilter.All).contains(networkFilter)) {
                     //get domain level networks
-                    
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb, 
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, 
networkOfferingId,
-                            aclType, true, restartRequired, specifyIpRanges, 
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter, domainId, 
false));
+                    SearchCriteria<NetworkVO> domainLevelSC = 
getDomainLevelNetworksSearchCriteria(sb, domainId, false);
+                    if (domainLevelSC != null) {
+                        additionalSearchCriteria.addOr("id", 
SearchCriteria.Op.SC, domainLevelSC);
+                    }
                 }
                 if (Arrays.asList(Network.NetworkFilter.Shared, 
Network.NetworkFilter.All).contains(networkFilter)) {
                     // get shared networks
-                    List<NetworkVO> sharedNetworks = 
listSharedNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, 
zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
-                            aclType, true, restartRequired, specifyIpRanges, 
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter, 
permittedAccounts);
-                    addNetworksToReturnIfNotExist(networksToReturn, 
sharedNetworks);
-
+                    SearchCriteria<NetworkVO> sharedNetworksSC = 
getSharedNetworksSearchCriteria(sb, permittedAccounts);
+                    if (sharedNetworksSC != null) {
+                        additionalSearchCriteria.addOr("id", 
SearchCriteria.Op.SC, sharedNetworksSC);
+                    }
                 }
             } else {
                 if (Arrays.asList(Network.NetworkFilter.Account, 
Network.NetworkFilter.AccountDomain, 
Network.NetworkFilter.All).contains(networkFilter)) {
                     //add account specific networks
-                    
networksToReturn.addAll(listAccountSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb,
 keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, 
networkOfferingId,
-                            aclType, skipProjectNetworks, restartRequired, 
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId), 
searchFilter, path, isRecursive));
+                    additionalSearchCriteria.addOr("id", SearchCriteria.Op.SC,
+                            
getAccountSpecificNetworksByDomainPathSearchCriteria(sb, path, isRecursive,
+                                    skipProjectNetworks));
                 }
                 if (Arrays.asList(Network.NetworkFilter.Domain, 
Network.NetworkFilter.AccountDomain, 
Network.NetworkFilter.All).contains(networkFilter)) {
                     //add domain specific networks of domain + parent domains
-                    
networksToReturn.addAll(listDomainSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb,
 keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, 
networkOfferingId,
-                            aclType, true, restartRequired, specifyIpRanges, 
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter, path, 
isRecursive));
+                    SearchCriteria<NetworkVO> 
domainSpecificNetworksByDomainPathSC =
+                            
getDomainSpecificNetworksByDomainPathSearchCriteria(sb, path, isRecursive);
+                    if (domainSpecificNetworksByDomainPathSC != null) {
+                        additionalSearchCriteria.addOr("id", 
SearchCriteria.Op.SC, domainSpecificNetworksByDomainPathSC);
+                    }
                     //add networks of subdomains
                     if (domainId == null) {
-                        
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb, 
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, 
networkOfferingId,
-                            aclType, true, restartRequired, specifyIpRanges, 
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter, 
caller.getDomainId(), true));
+                        SearchCriteria<NetworkVO> domainLevelSC = 
getDomainLevelNetworksSearchCriteria(sb, caller.getDomainId(), true);
+                        if (domainLevelSC != null) {
+                            additionalSearchCriteria.addOr("id", 
SearchCriteria.Op.SC, domainLevelSC);
+                        }
                     }
                 }
                 if (Arrays.asList(Network.NetworkFilter.Shared, 
Network.NetworkFilter.All).contains(networkFilter)) {
                     // get shared networks
-                    List<NetworkVO> sharedNetworks = 
listSharedNetworksByDomainPath(buildNetworkSearchCriteria(sb, keyword, id, 
isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, 
networkOfferingId,
-                            aclType, true, restartRequired, specifyIpRanges, 
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter, path, 
isRecursive);
-                    addNetworksToReturnIfNotExist(networksToReturn, 
sharedNetworks);
+                    SearchCriteria<NetworkVO> sharedNetworksSC = 
getSharedNetworksByDomainPathSearchCriteria(sb, path, isRecursive);
+                    if (sharedNetworksSC != null) {
+                        additionalSearchCriteria.addOr("id", 
SearchCriteria.Op.SC, sharedNetworksSC);
+                    }
                 }
             }
+            if 
(CollectionUtils.isNotEmpty(additionalSearchCriteria.getValues())) {
+                mainSearchCriteria.addAnd("id", SearchCriteria.Op.SC, 
additionalSearchCriteria);
+            }
         } else {
-            networksToReturn = 
_networksDao.search(buildNetworkSearchCriteria(sb, keyword, id, isSystem, 
zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
-                    null, true, restartRequired, specifyIpRanges, vpcId, tags, 
display, vlanId, associatedNetworkId), searchFilter);
+            if (skipProjectNetworks) {
+                mainSearchCriteria.setJoinParameters("accountSearch", 
"typeNEQ", Account.Type.PROJECT);
+            } else {
+                mainSearchCriteria.setJoinParameters("accountSearch", 
"typeEQ", Account.Type.PROJECT);
+            }
         }
+        Pair<List<NetworkVO>, Integer> result = 
_networksDao.searchAndCount(mainSearchCriteria, searchFilter);
+        List<NetworkVO> networksToReturn = result.first();
 
         if (supportedServicesStr != null && !supportedServicesStr.isEmpty() && 
!networksToReturn.isEmpty()) {
-            List<NetworkVO> supportedNetworks = new ArrayList<NetworkVO>();
-            Service[] suppportedServices = new 
Service[supportedServicesStr.size()];
+            List<NetworkVO> supportedNetworks = new ArrayList<>();
+            Service[] supportedServices = new 
Service[supportedServicesStr.size()];
             int i = 0;
             for (String supportedServiceStr : supportedServicesStr) {
                 Service service = Service.getService(supportedServiceStr);
                 if (service == null) {
                     throw new InvalidParameterValueException("Invalid service 
specified " + supportedServiceStr);
                 } else {
-                    suppportedServices[i] = service;
+                    supportedServices[i] = service;
                 }
                 i++;
             }
-
             for (NetworkVO network : networksToReturn) {
-                if (areServicesSupportedInNetwork(network.getId(), 
suppportedServices)) {
+                if (areServicesSupportedInNetwork(network.getId(), 
supportedServices)) {
                     supportedNetworks.add(network);
                 }
             }
-
             networksToReturn = supportedNetworks;
         }
 
         if (canUseForDeploy != null) {
-            List<NetworkVO> networksForDeploy = new ArrayList<NetworkVO>();
+            List<NetworkVO> networksForDeploy = new ArrayList<>();
             for (NetworkVO network : networksToReturn) {
                 if (_networkModel.canUseForDeploy(network) == canUseForDeploy) 
{
                     networksForDeploy.add(network);
                 }
             }
-
             networksToReturn = networksForDeploy;
         }
 
-        //Now apply pagination
-        List<? extends Network> wPagination = 
com.cloud.utils.StringUtils.applyPagination(networksToReturn, 
cmd.getStartIndex(), cmd.getPageSizeVal());
-        if (wPagination != null) {
-            Pair<List<? extends Network>, Integer> listWPagination = new 
Pair<List<? extends Network>, Integer>(wPagination, networksToReturn.size());
-            return listWPagination;
+        if (applyManualPagination) {
+            //Now apply pagination
+            List<? extends Network> wPagination = 
com.cloud.utils.StringUtils.applyPagination(networksToReturn, 
cmd.getStartIndex(), cmd.getPageSizeVal());
+            if (wPagination != null) {
+                Pair<List<? extends Network>, Integer> listWPagination = new 
Pair<>(wPagination, networksToReturn.size());
+                return listWPagination;
+            }
+            return new Pair<>(networksToReturn, networksToReturn.size());
         }
 
-        return new Pair<List<? extends Network>, Integer>(networksToReturn, 
networksToReturn.size());
+        return new Pair<>(result.first(), result.second());
     }
 
-    private void addNetworksToReturnIfNotExist(final List<NetworkVO> 
networksToReturn, final List<NetworkVO> sharedNetworks) {
-        Set<Long> networkIds = networksToReturn.stream()
-                .map(NetworkVO::getId)
-                .collect(Collectors.toSet());
-        List<NetworkVO> sharedNetworksToReturn = sharedNetworks.stream()
-                .filter(network -> ! networkIds.contains(network.getId()))
-                .collect(Collectors.toList());
-        networksToReturn.addAll(sharedNetworksToReturn);
-    }
-
-    private SearchCriteria<NetworkVO> 
buildNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String keyword, Long id,
-            Boolean isSystem, Long zoneId, String guestIpType, String 
trafficType, Long physicalNetworkId,
-            Long networkOfferingId, String aclType, boolean 
skipProjectNetworks, Boolean restartRequired,
-            Boolean specifyIpRanges, Long vpcId, Map<String, String> tags, 
Boolean display, String vlanId, Long associatedNetworkId) {
+    private SearchCriteria<NetworkVO> 
createNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String keyword, Long 
id,
+                                                                 Boolean 
isSystem, Long zoneId, String guestIpType, String trafficType, Long 
physicalNetworkId,
+                                                                 Long 
networkOfferingId, String aclType, Boolean restartRequired,
+                                                                 Boolean 
specifyIpRanges, Long vpcId, Map<String, String> tags, Boolean display, String 
vlanId, Long associatedNetworkId) {
 
         SearchCriteria<NetworkVO> sc = sb.create();
 
@@ -2485,12 +2503,6 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
             sc.addAnd("physicalNetworkId", SearchCriteria.Op.EQ, 
physicalNetworkId);
         }
 
-        if (skipProjectNetworks) {
-            sc.setJoinParameters("accountSearch", "typeNEQ", 
Account.Type.PROJECT);
-        } else {
-            sc.setJoinParameters("accountSearch", "typeEQ", 
Account.Type.PROJECT);
-        }
-
         if (restartRequired != null) {
             sc.addAnd("restartRequired", SearchCriteria.Op.EQ, 
restartRequired);
         }
@@ -2531,8 +2543,8 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
         return sc;
     }
 
-    private List<NetworkVO> listDomainLevelNetworks(SearchCriteria<NetworkVO> 
sc, Filter searchFilter, long domainId, boolean parentDomainsOnly) {
-        List<Long> networkIds = new ArrayList<Long>();
+    private SearchCriteria<NetworkVO> 
getDomainLevelNetworksSearchCriteria(SearchBuilder<NetworkVO> sb, long 
domainId, boolean parentDomainsOnly) {
+        List<Long> networkIds = new ArrayList<>();
         Set<Long> allowedDomains = _domainMgr.getDomainParentIds(domainId);
         List<NetworkDomainVO> maps = 
_networkDomainDao.listDomainNetworkMapByDomain(allowedDomains.toArray());
 
@@ -2547,48 +2559,55 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
         }
 
         if (!networkIds.isEmpty()) {
-            SearchCriteria<NetworkVO> domainSC = 
_networksDao.createSearchCriteria();
+            SearchCriteria<NetworkVO> domainSC = sb.create();
+            domainSC.setJoinParameters("accountSearch", "typeNEQ", 
Account.Type.PROJECT);
             domainSC.addAnd("id", SearchCriteria.Op.IN, networkIds.toArray());
             domainSC.addAnd("aclType", SearchCriteria.Op.EQ, 
ACLType.Domain.toString());
-
-            sc.addAnd("id", SearchCriteria.Op.SC, domainSC);
-            return _networksDao.search(sc, searchFilter);
-        } else {
-            return new ArrayList<NetworkVO>();
+            return domainSC;
         }
+        return null;
     }
 
-    private List<NetworkVO> 
listAccountSpecificNetworks(SearchCriteria<NetworkVO> sc, Filter searchFilter, 
List<Long> permittedAccounts) {
-        SearchCriteria<NetworkVO> accountSC = 
_networksDao.createSearchCriteria();
+    private SearchCriteria<NetworkVO> 
getAccountSpecificNetworksSearchCriteria(SearchBuilder<NetworkVO> sb,
+           List<Long> permittedAccounts, boolean skipProjectNetworks) {
+        SearchCriteria<NetworkVO> accountSC = sb.create();
+        if (skipProjectNetworks) {
+            accountSC.setJoinParameters("accountSearch", "typeNEQ", 
Account.Type.PROJECT);
+        } else {
+            accountSC.setJoinParameters("accountSearch", "typeEQ", 
Account.Type.PROJECT);
+        }
         if (!permittedAccounts.isEmpty()) {
             accountSC.addAnd("accountId", SearchCriteria.Op.IN, 
permittedAccounts.toArray());
         }
-
         accountSC.addAnd("aclType", SearchCriteria.Op.EQ, 
ACLType.Account.toString());
-
-        sc.addAnd("id", SearchCriteria.Op.SC, accountSC);
-        return _networksDao.search(sc, searchFilter);
+        return accountSC;
     }
 
-    private List<NetworkVO> 
listAccountSpecificNetworksByDomainPath(SearchCriteria<NetworkVO> sc, Filter 
searchFilter, String path, boolean isRecursive) {
-        SearchCriteria<NetworkVO> accountSC = 
_networksDao.createSearchCriteria();
+    private SearchCriteria<NetworkVO> 
getAccountSpecificNetworksByDomainPathSearchCriteria(SearchBuilder<NetworkVO> 
sb,
+           String path, boolean isRecursive, boolean skipProjectNetworks) {
+        SearchCriteria<NetworkVO> accountSC = sb.create();
+        if (skipProjectNetworks) {
+            accountSC.setJoinParameters("accountSearch", "typeNEQ", 
Account.Type.PROJECT);
+        } else {
+            accountSC.setJoinParameters("accountSearch", "typeEQ", 
Account.Type.PROJECT);
+        }
         accountSC.addAnd("aclType", SearchCriteria.Op.EQ, 
ACLType.Account.toString());
 
         if (path != null) {
             if (isRecursive) {
-                sc.setJoinParameters("domainSearch", "path", path + "%");
+                accountSC.setJoinParameters("domainSearch", "path", path + 
"%");
             } else {
-                sc.setJoinParameters("domainSearch", "path", path);
+                accountSC.setJoinParameters("domainSearch", "path", path);
             }
         }
 
-        sc.addAnd("id", SearchCriteria.Op.SC, accountSC);
-        return _networksDao.search(sc, searchFilter);
+        return accountSC;
     }
 
-    private List<NetworkVO> 
listDomainSpecificNetworksByDomainPath(SearchCriteria<NetworkVO> sc, Filter 
searchFilter, String path, boolean isRecursive) {
+    private SearchCriteria<NetworkVO> 
getDomainSpecificNetworksByDomainPathSearchCriteria(SearchBuilder<NetworkVO> sb,
+            String path, boolean isRecursive) {
 
-        Set<Long> allowedDomains = new HashSet<Long>();
+        Set<Long> allowedDomains = new HashSet<>();
         if (path != null) {
             if (isRecursive) {
                 allowedDomains = _domainMgr.getDomainChildrenIds(path);
@@ -2598,7 +2617,7 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
             }
         }
 
-        List<Long> networkIds = new ArrayList<Long>();
+        List<Long> networkIds = new ArrayList<>();
 
         List<NetworkDomainVO> maps = 
_networkDomainDao.listDomainNetworkMapByDomain(allowedDomains.toArray());
 
@@ -2607,30 +2626,28 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
         }
 
         if (!networkIds.isEmpty()) {
-            SearchCriteria<NetworkVO> domainSC = 
_networksDao.createSearchCriteria();
+            SearchCriteria<NetworkVO> domainSC = sb.create();
+            domainSC.setJoinParameters("accountSearch", "typeNEQ", 
Account.Type.PROJECT);
             domainSC.addAnd("id", SearchCriteria.Op.IN, networkIds.toArray());
             domainSC.addAnd("aclType", SearchCriteria.Op.EQ, 
ACLType.Domain.toString());
-
-            sc.addAnd("id", SearchCriteria.Op.SC, domainSC);
-            return _networksDao.search(sc, searchFilter);
-        } else {
-            return new ArrayList<NetworkVO>();
+            return domainSC;
         }
+        return null;
     }
 
-    private List<NetworkVO> listSharedNetworks(SearchCriteria<NetworkVO> sc, 
Filter searchFilter, List<Long> permittedAccounts) {
+    private SearchCriteria<NetworkVO> 
getSharedNetworksSearchCriteria(SearchBuilder<NetworkVO> sb, List<Long> 
permittedAccounts) {
         List<Long> sharedNetworkIds = 
_networkPermissionDao.listPermittedNetworkIdsByAccounts(permittedAccounts);
         if (!sharedNetworkIds.isEmpty()) {
-            SearchCriteria<NetworkVO> ssc = 
_networksDao.createSearchCriteria();
+            SearchCriteria<NetworkVO> ssc = sb.create();
+            ssc.setJoinParameters("accountSearch", "typeNEQ", 
Account.Type.PROJECT);
             ssc.addAnd("id", SearchCriteria.Op.IN, sharedNetworkIds.toArray());
-            sc.addAnd("id", SearchCriteria.Op.SC, ssc);
-            return _networksDao.search(sc, searchFilter);
+            return ssc;
         }
-        return new ArrayList<NetworkVO>();
+        return null;
     }
 
-    private List<NetworkVO> 
listSharedNetworksByDomainPath(SearchCriteria<NetworkVO> sc, Filter 
searchFilter, String path, boolean isRecursive) {
-        Set<Long> allowedDomains = new HashSet<Long>();
+    private SearchCriteria<NetworkVO> 
getSharedNetworksByDomainPathSearchCriteria(SearchBuilder<NetworkVO> sb, String 
path, boolean isRecursive) {
+        Set<Long> allowedDomains = new HashSet<>();
         if (path != null) {
             if (isRecursive) {
                 allowedDomains = _domainMgr.getDomainChildrenIds(path);
@@ -2652,13 +2669,13 @@ public class NetworkServiceImpl extends ManagerBase 
implements NetworkService, C
 
             List<Long> sharedNetworkIds = 
_networkPermissionDao.listPermittedNetworkIdsByAccounts(allowedAccountsList);
             if (!sharedNetworkIds.isEmpty()) {
-                SearchCriteria<NetworkVO> ssc = 
_networksDao.createSearchCriteria();
+                SearchCriteria<NetworkVO> ssc = sb.create();
+                ssc.setJoinParameters("accountSearch", "typeNEQ", 
Account.Type.PROJECT);
                 ssc.addAnd("id", SearchCriteria.Op.IN, 
sharedNetworkIds.toArray());
-                sc.addAnd("id", SearchCriteria.Op.SC, ssc);
-                return _networksDao.search(sc, searchFilter);
+                return ssc;
             }
         }
-        return new ArrayList<NetworkVO>();
+        return null;
     }
 
     @Override

Reply via email to