CLOUDSTACK-5877: ListTemplates does not sort based on sort_key.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/dd50210e Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/dd50210e Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/dd50210e Branch: refs/heads/rbac Commit: dd50210e74d484387215a60f807aa46d341b933d Parents: 6d9146b Author: Min Chen <min.c...@citrix.com> Authored: Wed Jan 15 17:37:52 2014 -0800 Committer: Min Chen <min.c...@citrix.com> Committed: Wed Jan 15 17:39:00 2014 -0800 ---------------------------------------------------------------------- .../src/com/cloud/api/query/ViewResponseHelper.java | 3 ++- .../com/cloud/api/query/dao/TemplateJoinDaoImpl.java | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd50210e/server/src/com/cloud/api/query/ViewResponseHelper.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/query/ViewResponseHelper.java b/server/src/com/cloud/api/query/ViewResponseHelper.java index 5a953de..149b0d9 100644 --- a/server/src/com/cloud/api/query/ViewResponseHelper.java +++ b/server/src/com/cloud/api/query/ViewResponseHelper.java @@ -19,6 +19,7 @@ package com.cloud.api.query; import java.util.ArrayList; import java.util.EnumSet; import java.util.Hashtable; +import java.util.LinkedHashMap; import java.util.List; import org.apache.log4j.Logger; @@ -360,7 +361,7 @@ public class ViewResponseHelper { } public static List<TemplateResponse> createTemplateResponse(TemplateJoinVO... templates) { - Hashtable<String, TemplateResponse> vrDataList = new Hashtable<String, TemplateResponse>(); + LinkedHashMap<String, TemplateResponse> vrDataList = new LinkedHashMap<String, TemplateResponse>(); for (TemplateJoinVO vr : templates) { TemplateResponse vrData = vrDataList.get(vr.getTempZonePair()); if (vrData == null) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/dd50210e/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java index 53cb14a..fedc13d 100644 --- a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java @@ -44,11 +44,12 @@ import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; +import com.cloud.utils.Pair; +import com.cloud.utils.db.Filter; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; -import com.cloud.utils.Pair; -import com.cloud.utils.db.Filter; + @Component @Local(value = {TemplateJoinDao.class}) @@ -91,7 +92,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBase<TemplateJoinVO, Long> im activeTmpltSearch.done(); // select distinct pair (template_id, zone_id) - this._count = "select count(distinct temp_zone_pair) from template_view WHERE "; + _count = "select count(distinct temp_zone_pair) from template_view WHERE "; } private String getTemplateStatus(TemplateJoinVO template) { @@ -383,6 +384,9 @@ public class TemplateJoinDaoImpl extends GenericDaoBase<TemplateJoinVO, Long> im DETAILS_BATCH_SIZE = Integer.parseInt(batchCfg); } // query details by batches + Boolean isAscending = Boolean.parseBoolean(_configDao.getValue("sortkey.algorithm")); + isAscending = (isAscending == null ? true : isAscending); + Filter searchFilter = new Filter(TemplateJoinVO.class, "sortKey", isAscending, null, null); List<TemplateJoinVO> uvList = new ArrayList<TemplateJoinVO>(); // query details by batches int curr_index = 0; @@ -397,7 +401,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBase<TemplateJoinVO, Long> im sc.setParameters("templateState", VirtualMachineTemplate.State.Active); } sc.setParameters("tempZonePairIN", labels); - List<TemplateJoinVO> vms = searchIncludingRemoved(sc, null, null, false); + List<TemplateJoinVO> vms = searchIncludingRemoved(sc, searchFilter, null, false); if (vms != null) { uvList.addAll(vms); } @@ -415,7 +419,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBase<TemplateJoinVO, Long> im sc.setParameters("templateState", VirtualMachineTemplate.State.Active); } sc.setParameters("tempZonePairIN", labels); - List<TemplateJoinVO> vms = searchIncludingRemoved(sc, null, null, false); + List<TemplateJoinVO> vms = searchIncludingRemoved(sc, searchFilter, null, false); if (vms != null) { uvList.addAll(vms); }