/**
* 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.report.manager.web;
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 ParameterQueryAction extends QueryBaseAction{
private static final long serialVersionUID = -859365860117918404L;
private Long reportId;
private String reportType;
public Long getReportId() {
return reportId;
}
public void setReportId(Long textId) {
this.reportId = textId;
}
public String getReportType() {
return reportType;
}
public void setReportType(String reportType) {
this.reportType = reportType;
}
@Override
protected Resultable queryResult(QueryFactory queryFactory, String cacheKey, int rows, int page, Order order) {
String reportName = "TextReport";
if (reportType.equals("chart")){
reportName = "ChartReport";
}
String hql = "Select p From " + reportName + " As r Left Join r.parameters As p Where r.id=:reportId Order By p.id Desc";
hql += " Limit " + rows + " OffSet " + (rows * (page + 1));
String countHql = "Select Count(p.id) From " + reportName + " As r Left Join r.parameters As p Where r.id=:reportId ";
HqlQueryable query = queryFactory.createHqlQuery(hql, countHql);
query.setParameter("reportId", getReportId());
return query.setRow(rows).setPage(page).queryResult();
}
@Override
protected Resultable querySelectionsResult(QueryFactory queryFactory, int rows, int page, String[] selections, Order order) {
String reportName = "TextReport";
if (reportType.equals("chart")){
reportName = "ChartReport";
}
String hql = "Select p From " + reportName + " As r Left Join r.parameters As p Where r.id=:reportId And p.id in(:id) Order By p.id ";
String countHql = "Select Count(p.id) From " + reportName + " As r Left Join r.parameters As p Where r.id=:reportId And p.id in(:id)";
HqlQueryable query = queryFactory.createHqlQuery(hql, countHql);
query.setParameter("reportId", getReportId());
query.setParameter("id", getIds(Long.class));
return query.setRow(rows).setPage(page).queryResult();
}
}