/** * 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 java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.List; import com.ewcms.common.query.Resultable; import com.ewcms.common.query.jpa.EntityQueryable; import com.ewcms.common.query.jpa.HqlQueryable; import com.ewcms.common.query.jpa.QueryFactory; import com.ewcms.plugin.vote.model.Questionnaire; import com.ewcms.plugin.vote.model.Questionnaire.Status; import com.ewcms.web.QueryBaseAction; /** * * @author 吴智俊 * */ public class QuestionnaireQueryAction extends QueryBaseAction { private static final long serialVersionUID = 4389831251347203862L; private DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private Integer channelId; public Integer getChannelId() { return channelId; } public void setChannelId(Integer channelId) { this.channelId = channelId; } @Override protected Resultable queryResult(QueryFactory queryFactory, String cacheKey, int rows, int page, Order order) { String hql = "Select q From Questionnaire As q Where q.channelId=:channelId "; String countHql = "Select Count(q.id) From Questionnaire As q Where q.channelId=:channelId "; Long id = getParameterValue(Long.class,"id", "查询编号错误,应该是整型"); if (isNotNull(id)) { hql += " And q.id=:id"; countHql += " And q.id=:id"; } String title = getParameterValue(String.class, "title"); if (isStringNotEmpty(title)) { hql += " And q.title Like :title"; countHql += " And q.title Like :title"; } String startTime = getParameterValue(String.class, "startTime"); if (isNotNull(startTime)) { hql += " And q.startTime>=:startTime"; countHql += " And q.startTime>=:startTime"; } String endTime = getParameterValue(String.class, "endTime"); if (isNotNull(endTime)) { hql += " And q.endTime<:endTime"; countHql += " And q.endTime<:endTime"; } String status = getParameterValue(String.class, "status"); if (isStringNotEmpty(status) && !status.equals("-1")){ hql += " And q.status=:status"; countHql += " And q.status=:status"; } Long numberBegin = getParameterValue(Long.class, "numberBegin"); if (isNotNull(numberBegin)) { hql += " And q.number>=:numberBegin"; countHql +=" And q.number>=:numberBegin"; } Long numberEnd = getParameterValue(Long.class, "numberEnd"); if (isNotNull(numberEnd)) { hql += " And q.number<=:numberEnd"; countHql +=" And q.number<=:numberEnd"; } String voteEnd = getParameterValue(String.class, "voteEnd", ""); if (isStringNotEmpty(voteEnd) && !voteEnd.equals("-1")){ hql += " And q.voteEnd=:voteEnd"; countHql += " And q.voteEnd=:voteEnd"; } String verifiCode = getParameterValue(String.class, "verifiCode"); if (isStringNotEmpty(verifiCode) && !verifiCode.equals("-1")) { hql += " And q.verifiCode=:verifiCode"; countHql += " And q.verifiCode=:verifiCode"; } hql += " Order By q.id Desc "; 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(startTime)){ try { query.setParameter("startTime", DATE_FORMAT.parse(startTime)); } catch (ParseException e) { e.printStackTrace(); } } if (isStringNotEmpty(endTime)){ try { query.setParameter("endTime", DATE_FORMAT.parse(endTime)); } catch (ParseException e) { e.printStackTrace(); } } if (isStringNotEmpty(status) && !status.equals("-1")){ query.setParameter("status", Status.valueOf(status)); } if (isNotNull(numberBegin)) { query.setParameter("numberBegin", numberBegin); } if (isNotNull(numberEnd)) { query.setParameter("numberEnd", numberEnd); } if (isStringNotEmpty(voteEnd) && !voteEnd.equals("-1")){ query.setParameter("voteEnd", Boolean.parseBoolean(voteEnd)); } if (isStringNotEmpty(verifiCode) && !verifiCode.equals("-1")){ query.setParameter("verifiCode", Boolean.parseBoolean(verifiCode)); } query.setParameter("channelId", getChannelId()); setDateFormat(DATE_FORMAT); return query.setRow(rows).setPage(page).queryResult(); } @Override protected Resultable querySelectionsResult(QueryFactory queryFactory, int rows, int page, String[] selections, Order order) { EntityQueryable query = queryFactory.createEntityQuery(Questionnaire.class).setPage(page).setRow(rows).orderAsc("id"); query.eq("channelId", getChannelId()); List<Long> ids = getIds(Long.class); query.in("id", ids); setDateFormat(DATE_FORMAT); return query.queryResult(); } }