package org.apache.solr.request.mdrill; import java.util.PriorityQueue; import org.apache.log4j.Logger; import org.apache.solr.request.compare.GroupbyRow; import org.apache.solr.request.compare.SelectDetailRow; import org.apache.solr.request.compare.ShardDetailSelectDetailRowCompare; import org.apache.solr.request.compare.ShardDetailSelectDetailRowStringCompare; import org.apache.solr.request.compare.ShardGroupByGroupbyRowCompare; public class QueuePutUtils { static Logger LOG = Logger.getLogger(QueuePutUtils.class); public static void put2Queue(GroupbyRow mrow,PriorityQueue<GroupbyRow> res,int limit_offset,ShardGroupByGroupbyRowCompare cmp) { if (res.size() < limit_offset) { res.add(mrow); } else if (cmp.compare(res.peek(), mrow) > 0) { res.add(mrow); res.poll(); } } public static void put2QueueDetail(SelectDetailRow mrow,PriorityQueue<SelectDetailRow> res,int limit_offset,ShardDetailSelectDetailRowCompare cmp) { if (res.size() < limit_offset) { res.add(mrow); } else if (cmp.compare(res.peek(), mrow) > 0) { res.add(mrow); SelectDetailRow.FREE(res.poll()); }else{ SelectDetailRow.FREE(mrow); } } public static void put2QueueDetail(SelectDetailRow mrow,PriorityQueue<SelectDetailRow> res,int limit_offset,ShardDetailSelectDetailRowStringCompare cmp) { if (res.size() < limit_offset) { res.add(mrow); } else if (cmp.compare(res.peek(), mrow) > 0) { res.add(mrow); SelectDetailRow.FREE(res.poll()); }else{ SelectDetailRow.FREE(mrow); } } }