@@ -179,21 +179,18 @@ private Pair<List<DnsServerVO>, Integer> searchForDnsServerInternal(ListDnsServe
179179 Filter searchFilter = new Filter (DnsServerVO .class , "id" , true , cmd .getStartIndex (), cmd .getPageSizeVal ());
180180
181181 // Step 2: Search for caller's own DNS servers using standard ACL pattern
182- SearchBuilder <DnsServerVO > sb = dnsServerDao .createSearchBuilder ();
183- accountMgr .buildACLSearchBuilder (sb , domainId , isRecursive , permittedAccountIds , listProjectResourcesCriteria );
184- sb .and ("state" , sb .entity ().getState (), SearchCriteria .Op .EQ );
185- sb .done ();
182+ SearchBuilder <DnsServerVO > ownerSb = dnsServerDao .createSearchBuilder ();
183+ accountMgr .buildACLSearchBuilder (ownerSb , domainId , isRecursive , permittedAccountIds , listProjectResourcesCriteria );
184+ ownerSb .and ("state" , ownerSb .entity ().getState (), SearchCriteria .Op .EQ );
185+ ownerSb .done ();
186186
187- SearchCriteria <DnsServerVO > sc = sb .create ();
188- accountMgr .buildACLSearchCriteria (sc , domainId , isRecursive , permittedAccountIds , listProjectResourcesCriteria );
189- sc .setParameters ("state" , DnsServer .State .Enabled );
190-
191- Pair <List <DnsServerVO >, Integer > ownServersPair = dnsServerDao .searchAndCount (sc , searchFilter );
192- List <DnsServerVO > dnsServers = new ArrayList <>(ownServersPair .first ());
193- int count = ownServersPair .second ();
187+ SearchCriteria <DnsServerVO > ownerSc = ownerSb .create ();
188+ accountMgr .buildACLSearchCriteria (ownerSc , domainId , isRecursive , permittedAccountIds , listProjectResourcesCriteria );
189+ ownerSc .setParameters ("state" , DnsServer .State .Enabled );
194190
195191 // Step 3: Search for public DNS servers from caller's domain and children
196192 // domains
193+ // ToDo: use ViewVO and domainpath
197194 Long callerDomainId = caller .getDomainId ();
198195 DomainVO callerDomain = domainDao .findById (callerDomainId );
199196 if (callerDomain != null ) {
@@ -204,30 +201,21 @@ private Pair<List<DnsServerVO>, Integer> searchForDnsServerInternal(ListDnsServe
204201 domainIds .add (childDomain .getId ());
205202 }
206203
207- SearchBuilder <DnsServerVO > publicSb = dnsServerDao .createSearchBuilder ();
208- publicSb .and ("publicDns" , publicSb .entity ().isPublicServer (), SearchCriteria .Op .EQ );
209- publicSb .and ("publicDomainId" , publicSb .entity ().getDomainId (), SearchCriteria .Op .IN );
210- publicSb .and ("publicState" , publicSb .entity ().getState (), SearchCriteria .Op .EQ );
211- publicSb .done ();
212-
213- SearchCriteria <DnsServerVO > publicSc = publicSb .create ();
214- publicSc .setParameters ("publicDns" , 1 );
215- publicSc .setParameters ("publicDomainId" , domainIds .toArray ());
216- publicSc .setParameters ("publicState" , DnsServer .State .Enabled );
217-
218- List <DnsServerVO > publicServers = dnsServerDao .search (publicSc , null );
219-
220- // Deduplicate: add only public servers not already in the own servers list
221- List <Long > ownServerIds = dnsServers .stream ().map (DnsServerVO ::getId ).collect (Collectors .toList ());
222- for (DnsServerVO publicServer : publicServers ) {
223- if (!ownServerIds .contains (publicServer .getId ())) {
224- dnsServers .add (publicServer );
225- count ++;
226- }
227- }
228- }
204+ SearchBuilder <DnsServerVO > sb = dnsServerDao .createSearchBuilder ();
205+ sb .and ("publicDns" , sb .entity ().isPublicServer (), SearchCriteria .Op .EQ );
206+ sb .and ("publicDomainId" , sb .entity ().getDomainId (), SearchCriteria .Op .IN );
207+ sb .and ("publicState" , sb .entity ().getState (), SearchCriteria .Op .EQ );
208+ sb .done ();
209+
210+ SearchCriteria <DnsServerVO > sc = sb .create ();
211+ sc .setParameters ("publicDns" , 1 );
212+ sc .setParameters ("publicDomainId" , domainIds .toArray ());
213+ sc .setParameters ("publicState" , DnsServer .State .Enabled );
214+ sc .addOr ("ownerSc" , SearchCriteria .Op .SC , ownerSc );
229215
230- return new Pair <>(dnsServers , count );
216+ return dnsServerDao .searchAndCount (sc , searchFilter );
217+ }
218+ return dnsServerDao .searchAndCount (ownerSc , searchFilter );
231219 }
232220
233221 @ Override
0 commit comments