81,090
社区成员
发帖
与我相关
我的任务
分享
1 异常处理 再改改。。。。
2 能不要用递归 就不要用 递归,很多时候 问题都出现在递归。。。
/**
* 查询mostPopular业务列表 - 支持分页显示
* @param language - 系统语言
* @param type - service类型 -- mostPopular业务类型统一设值为2
* @param flag - service手动标示
* @param curPage
* @param pageSize
* @return PageControl
*/
public PageControl getTotalServiceList(LanguageInfo language,int type,Map<String, Boolean> flag, int curPage, int pageSize)throws PortalONEException{
int maxSize = ConfigUtil.getConfig().sysCfg.getMostPopularMaxSize(); //系统配置项,标示前台需要展现多少条popular业务(运行后可改变)
this.deleteRecommendService(maxSize, type); //删除排名大于maxSize的业务(手动干扰排名业务存储在手动干扰实体表recommend中)
int num = getRecommendServiceNum(type); //查询recommend中记录数
int popnum = this.getPopularServiceNum(language); //查询service表(存储所有业务)中记录数
PageControl pageControl = null; //用于分页
LinkedList<ServiceDetail> totallist = new LinkedList<ServiceDetail>();
if(num == 0){
if(popnum == 0)return null;
if(popnum > maxSize)
popnum = maxSize;
List<ServiceDetail> popservices = null;
try
{
popservices = (List<ServiceDetail>) getPopularServiceList(language, 0, popnum).getSubList();
pageControl = new PageControl(popservices, curPage, pageSize);
}
catch (RuntimeException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return pageControl;
}else if(num <= maxSize){
int remain = maxSize - num;
List<ServiceDetail> popservices = (List<ServiceDetail>) getRemainPopularServiceList(type, language, 0, remain);
totallist.addAll(popservices);
int size = totallist.size();
while(remain - size > 0){
totallist.offer(null);
size ++;
}
List<RecommendDetail> recommendlist = getRecommendList(type, 0, num);
int leng = recommendlist.size();
for (int i = 0; i < leng; i++) {
RecommendDetail recommend = recommendlist.get(i);
int index = recommend.getSequence()-1;
flag.put(recommend.getServiceId(), true);
ServiceDetail service = getPopularService(language, recommend.getServiceId());
try {
totallist.add(index, service);
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
this.deleteRecommendService(type);
return getTotalServiceList(language, type, flag, curPage, pageSize);
}
}
while(totallist.remove(null));
pageControl = new PageControl(totallist, curPage, pageSize);
return pageControl;
}else{
this.deleteRecommendService(type);
return getTotalServiceList(language, type, flag, curPage, pageSize);
}
}