/**
* 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.message.manager.web;
import static com.ewcms.common.lang.EmptyUtil.isStringNotEmpty;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import com.ewcms.common.query.Resultable;
import com.ewcms.common.query.jpa.HqlQueryable;
import com.ewcms.common.query.jpa.QueryFactory;
import com.ewcms.plugin.message.model.MsgSend.Type;
import com.ewcms.web.QueryBaseAction;
public class MoreQueryAction extends QueryBaseAction {
private static final long serialVersionUID = 8414448374757960563L;
private DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
protected Resultable queryResult(QueryFactory queryFactory, String cacheKey, int rows, int page, Order order) {
String hql = "From MsgSend As s Where s.type=:type ";
String countHql = "Select Count(s.id) From MsgSend As s Where s.type=:type ";
String title = getParameterValue(String.class, "title", "");
if (isStringNotEmpty(title)) {
hql += " And s.title Like :title";
countHql += " And s.title Like :title";
}
hql += " Order By s.sendTime Desc, s.id Desc ";
hql += " Limit " + rows + " OffSet " + (rows * (page + 1));
HqlQueryable query = queryFactory.createHqlQuery(hql, countHql);
if (type.equals(Type.NOTICE.name())){
query.setParameter("type", Type.NOTICE);
}else if (type.equals(Type.SUBSCRIPTION.name())){
query.setParameter("type", Type.SUBSCRIPTION);
}
if (isStringNotEmpty(title)){
query.setParameter("title", "%" + title + "%");
}
setDateFormat(DATE_FORMAT);
return query.setRow(rows).setPage(page).queryResult();
}
@Override
protected Resultable querySelectionsResult(QueryFactory queryFactory, int rows, int page, String[] selections, Order order) {
String hql = "From MsgSend As s Where s.type=:type ";
String countHql = "Select Count(s.id) From MsgSend As s Where s.type=:type ";
String title = getParameterValue(String.class, "title", "");
if (isStringNotEmpty(title)) {
hql += " And s.title Like :title";
countHql += " And s.title Like :title";
}
hql += " Order By s.sendTime Desc, s.id Desc";
HqlQueryable query = queryFactory.createHqlQuery(hql, countHql);
if (type.equals(Type.NOTICE.name())){
query.setParameter("type", Type.NOTICE);
}else if (type.equals(Type.SUBSCRIPTION.name())){
query.setParameter("type", Type.SUBSCRIPTION);
}
if (isStringNotEmpty(title)){
query.setParameter("title", "%" + title + "%");
}
setDateFormat(DATE_FORMAT);
return query.setRow(rows).setPage(page).queryResult();
}
}