/** * 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.vote.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.plugin.vote.model.SubjectItem.Status; import com.ewcms.web.QueryBaseAction; /** * * @author 吴智俊 * */ public class SubjectItemQueryAction extends QueryBaseAction { private static final long serialVersionUID = 5539246522711259327L; private Long subjectId; public Long getSubjectId() { return subjectId; } public void setSubjectId(Long subjectId) { this.subjectId = subjectId; } @Override protected Resultable queryResult(QueryFactory queryFactory, String cacheKey, int rows, int page, Order order) { String hql = "Select i From Subject As s Left Join s.subjectItems AS i Where s.id=:subjectId "; String countHql = "Select count(i.id) From Subject As s Left Join s.subjectItems AS i Where s.id=:subjectId "; Long id = getParameterValue(Long.class, "id", "查询编号错误,应该是整型"); if (isNotNull(id)){ hql += " And i.id=:id "; countHql += " And i.id=:id"; } String title = getParameterValue(String.class, "title", ""); if (isStringNotEmpty(title)){ hql += " And i.title Like :title"; countHql += " And i.title Like :title"; } String status = getParameterValue(String.class, "status"); if (isStringNotEmpty(status) && !status.equals("-1")){ hql += " And i.status=:status"; countHql += " And i.status=:status"; } Long voteNumberBegin = getParameterValue(Long.class, "voteNumberBegin"); if (isNotNull(voteNumberBegin)) { hql += " And i.voteNumber>=:voteNumberBegin"; countHql +=" And i.voteNumber>=:voteNumberBegin"; } Long voteNumberEnd = getParameterValue(Long.class, "voteNumberEnd"); if (isNotNull(voteNumberEnd)) { hql += " And i.voteNumber<=:voteNumberEnd"; countHql +=" And i.voteNumber<=:voteNumberEnd"; } hql += " Order By i.sort Asc "; hql += " Limit " + rows + " OffSet " + (rows * (page + 1)); HqlQueryable query = queryFactory.createHqlQuery(hql, countHql); if (isNotNull(id)){ query.setParameter("id", id); } if (isStringNotEmpty(title)){ query.setParameter("title", "%" + title + "%"); } if (isStringNotEmpty(status) && !status.equals("-1")){ query.setParameter("status", Status.valueOf(status)); } if (isNotNull(voteNumberBegin)) { query.setParameter("voteNumberBegin", voteNumberBegin); } if (isNotNull(voteNumberEnd)) { query.setParameter("voteNumberEnd", voteNumberEnd); } query.setParameter("subjectId", getSubjectId()); return query.setRow(rows).setPage(page).queryResult(); } @Override protected Resultable querySelectionsResult(QueryFactory queryFactory, int rows, int page, String[] selections, Order order) { String hql = "Select i From Subject As s Left Join s.subjectItems AS i Where s.id=:subjectId And i.id In (:id) Order By i.sort "; String countHql = "Select count(i.id) From Subject As s Left Join s.subjectItems AS i Where s.id=:subjectId And i.id In (:id) "; HqlQueryable query = queryFactory.createHqlQuery(hql, countHql); query.setParameter("id", getIds(Long.class)); query.setParameter("subjectId", getSubjectId()); return query.setRow(rows).setPage(page).queryResult(); } }