/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.plugin.crawler.manager.web;
import static com.ewcms.common.lang.EmptyUtil.isNotNull;
import static com.ewcms.common.lang.EmptyUtil.isStringNotEmpty;
import com.ewcms.common.query.Resultable;
import com.ewcms.common.query.jpa.HqlQueryable;
import com.ewcms.common.query.jpa.QueryFactory;
import com.ewcms.web.QueryBaseAction;
/**
*
* @author wuzhijun
*
*/
public class DomainQueryAction extends QueryBaseAction {
private static final long serialVersionUID = -6105582233144966796L;
private Long gatherId;
public Long getGatherId() {
return gatherId;
}
public void setGatherId(Long gatherId) {
this.gatherId = gatherId;
}
@Override
protected Resultable queryResult(QueryFactory queryFactory, String cacheKey, int rows, int page, Order order) {
String hql = "Select u From Gather As g Left Join g.domains As u Where g.id=:gatherId ";
String countHql = "Select Count(u.id) From Gather As g Left Join g.domains As u Where g.id=:gatherId ";
Long id = getParameterValue(Long.class, "id", "查询编号错误,应该是整型");
if (isNotNull(id)){
hql += " And u.id=:id ";
countHql += " And u.id=:id";
}
String url = getParameterValue(String.class, "url", "");
if (isStringNotEmpty(url)){
hql += " And u.url Like :url";
countHql += " And u.url Like :url";
}
hql += " Order By u.level Asc ";
hql += " Limit " + rows + " OffSet " + (rows * (page + 1));
HqlQueryable query = queryFactory.createHqlQuery(hql, countHql);
if (isNotNull(id)){
query.setParameter("id", id);
}
if (isStringNotEmpty(url)){
query.setParameter("url", "%" + url + "%");
}
query.setParameter("gatherId", getGatherId());
return query.setRow(rows).setPage(page).queryResult();
}
@Override
protected Resultable querySelectionsResult(QueryFactory queryFactory, int rows, int page, String[] selections, Order order) {
String hql = "Select u From Gather As g Left Join g.domains As u Where g.id=:gatherId And u.id In (:id) Order By u.level";
String countHql = "Select Count(u.id) From Gather As g Left Join g.domains As u Where g.id=:gatherId And u.id In (:id)";
HqlQueryable query = queryFactory.createHqlQuery(hql, countHql);
query.setParameter("id", getIds(Long.class));
query.setParameter("gatherId", getGatherId());
return query.setRow(rows).setPage(page).queryResult();
}
}