@@ -2831,39 +2831,38 @@ private Pair<List<DiskOfferingJoinVO>, Integer> searchForDiskOfferingsInternal(L
28312831 Account caller = CallContext .current ().getCallingAccount ();
28322832 if (caller .getType () != Account .ACCOUNT_TYPE_ADMIN ) {
28332833 Domain callerDomain = _domainDao .findById (caller .getDomainId ());
2834- List <Long > domainIds = _domainDao .getDomainParentIds (callerDomain .getId ())
2835- .stream ().collect (Collectors .toList ());
2836- if (isRecursive ) {
2837- List <Long > childrenIds = _domainDao .getDomainChildrenIds (callerDomain .getPath ());
2838- if (childrenIds != null && !childrenIds .isEmpty ())
2839- domainIds .addAll (childrenIds );
2840- }
2834+ List <Long > domainIds = findRelatedDomainIds (callerDomain , isRecursive );
28412835
28422836 List <Long > ids = _diskOfferingDetailsDao .findOfferingIdsByDomainIds (domainIds );
2843-
2844- if (ids == null || ids .isEmpty ()) {
2845- SearchBuilder <DiskOfferingJoinVO > sb = _diskOfferingJoinDao .createSearchBuilder ();
2846- sb .or ("domainId" , sb .entity ().getDomainId (), Op .NULL );
2847- sb .done ();
2848-
2849- SearchCriteria <DiskOfferingJoinVO > scc = sb .create ();
2850- sc .addAnd ("domainId" , SearchCriteria .Op .SC , scc );
2851- } else {
2852- SearchBuilder <DiskOfferingJoinVO > sb = _diskOfferingJoinDao .createSearchBuilder ();
2837+ SearchBuilder <DiskOfferingJoinVO > sb = _diskOfferingJoinDao .createSearchBuilder ();
2838+ if (ids != null && !ids .isEmpty ()) {
28532839 sb .and ("id" , sb .entity ().getId (), Op .IN );
2854- sb .or ("domainId" , sb .entity ().getDomainId (), Op .NULL );
2855- sb .done ();
2840+ }
2841+ sb .or ("domainId" , sb .entity ().getDomainId (), Op .NULL );
2842+ sb .done ();
28562843
2857- SearchCriteria <DiskOfferingJoinVO > scc = sb .create ();
2844+ SearchCriteria <DiskOfferingJoinVO > scc = sb .create ();
2845+ if (ids != null && !ids .isEmpty ()) {
28582846 scc .setParameters ("id" , ids .toArray ());
2859- sc .addAnd ("domainId" , SearchCriteria .Op .SC , scc );
28602847 }
2848+ sc .addAnd ("domainId" , SearchCriteria .Op .SC , scc );
28612849 }
28622850
28632851 Pair <List <DiskOfferingJoinVO >, Integer > result = _diskOfferingJoinDao .searchAndCount (sc , searchFilter );
28642852 return new Pair <>(result .first (), result .second ());
28652853 }
28662854
2855+ private List <Long > findRelatedDomainIds (Domain domain , boolean isRecursive ) {
2856+ List <Long > domainIds = _domainDao .getDomainParentIds (domain .getId ())
2857+ .stream ().collect (Collectors .toList ());
2858+ if (isRecursive ) {
2859+ List <Long > childrenIds = _domainDao .getDomainChildrenIds (domain .getPath ());
2860+ if (childrenIds != null && !childrenIds .isEmpty ())
2861+ domainIds .addAll (childrenIds );
2862+ }
2863+ return domainIds ;
2864+ }
2865+
28672866 @ Override
28682867 public ListResponse <ServiceOfferingResponse > searchForServiceOfferings (ListServiceOfferingsCmd cmd ) {
28692868 Pair <List <ServiceOfferingJoinVO >, Integer > result = searchForServiceOfferingsInternal (cmd );
@@ -3037,33 +3036,21 @@ private Pair<List<ServiceOfferingJoinVO>, Integer> searchForServiceOfferingsInte
30373036 // Fetch the offering ids from the details table since theres no smart way to filter them in the join ... yet!
30383037 if (caller .getType () != Account .ACCOUNT_TYPE_ADMIN ) {
30393038 Domain callerDomain = _domainDao .findById (caller .getDomainId ());
3040- List <Long > domainIds = _domainDao .getDomainParentIds (callerDomain .getId ())
3041- .stream ().collect (Collectors .toList ());
3042- if (isRecursive ) {
3043- List <Long > childrenIds = _domainDao .getDomainChildrenIds (callerDomain .getPath ());
3044- if (childrenIds != null && !childrenIds .isEmpty ())
3045- domainIds .addAll (childrenIds );
3046- }
3039+ List <Long > domainIds = findRelatedDomainIds (callerDomain , isRecursive );
30473040
30483041 List <Long > ids = _srvOfferingDetailsDao .findOfferingIdsByDomainIds (domainIds );
3049-
3050- if (ids == null || ids .isEmpty ()) {
3051- SearchBuilder <ServiceOfferingJoinVO > sb = _srvOfferingJoinDao .createSearchBuilder ();
3052- sb .or ("domainId" , sb .entity ().getDomainId (), Op .NULL );
3053- sb .done ();
3054-
3055- SearchCriteria <ServiceOfferingJoinVO > scc = sb .create ();
3056- sc .addAnd ("domainId" , SearchCriteria .Op .SC , scc );
3057- } else {
3058- SearchBuilder <ServiceOfferingJoinVO > sb = _srvOfferingJoinDao .createSearchBuilder ();
3042+ SearchBuilder <ServiceOfferingJoinVO > sb = _srvOfferingJoinDao .createSearchBuilder ();
3043+ if (ids != null && !ids .isEmpty ()) {
30593044 sb .and ("id" , sb .entity ().getId (), Op .IN );
3060- sb .or ("domainId" , sb .entity ().getDomainId (), Op .NULL );
3061- sb .done ();
3045+ }
3046+ sb .or ("domainId" , sb .entity ().getDomainId (), Op .NULL );
3047+ sb .done ();
30623048
3063- SearchCriteria <ServiceOfferingJoinVO > scc = sb .create ();
3049+ SearchCriteria <ServiceOfferingJoinVO > scc = sb .create ();
3050+ if (ids != null && !ids .isEmpty ()) {
30643051 scc .setParameters ("id" , ids .toArray ());
3065- sc .addAnd ("domainId" , SearchCriteria .Op .SC , scc );
30663052 }
3053+ sc .addAnd ("domainId" , SearchCriteria .Op .SC , scc );
30673054 }
30683055
30693056 if (currentVmOffering != null ) {
0 commit comments