/** * 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.notes.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 com.ewcms.common.query.Resultable; import com.ewcms.common.query.jpa.HqlQueryable; import com.ewcms.common.query.jpa.QueryFactory; import com.ewcms.web.QueryBaseAction; import com.ewcms.web.util.EwcmsContextUtil; import com.ewcms.plugin.notes.model.Memoranda.BeforeStatus; import com.ewcms.plugin.notes.model.Memoranda.FrequencyStatus; /** * * @author wu_zhijun */ public class MemorandaQueryAction extends QueryBaseAction { private static final long serialVersionUID = 5942472910913752255L; private DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override protected Resultable queryResult(QueryFactory queryFactory, String cacheKey, int rows, int page, Order order) { String hql = "From Memoranda As m Where m.userName=:userName "; String countHql = "Select count(m.id) From Memoranda As m Where m.userName=:userName "; Long id = getParameterValue(Long.class, "id", "查询编号错误,应该是整型"); if (isNotNull(id)){ hql += " And m.id=:id "; countHql += " And m.id=:id"; } String title = getParameterValue(String.class, "title", ""); if (isStringNotEmpty(title)){ hql += " And m.title Like :title"; countHql += " And m.title Like :title"; } String noteDateStart = getParameterValue(String.class, "noteDateStart",""); if (isStringNotEmpty(noteDateStart)){ hql += " And m.noteDate>=:noteDateStart"; countHql += " And m.noteDate>=:noteDateStart"; } String noteDateEnd = getParameterValue(String.class, "noteDateEnd",""); if (isStringNotEmpty(noteDateEnd)){ hql += " And m.noteDate<=:noteDateEnd"; countHql += " And m.noteDate<=:noteDateEnd"; } String frequencyStatus = getParameterValue(String.class, "frequencyStatus",""); if (isStringNotEmpty(frequencyStatus) && !frequencyStatus.equals("-1")){ hql += " And m.frequency=:frequencyStatus"; countHql += " And m.frequency=:frequencyStatus"; } String beforeStatus = getParameterValue(String.class, "beforeStatus",""); if (isStringNotEmpty(beforeStatus) && !beforeStatus.equals("-1")){ hql += " And m.before=:beforeStatus"; countHql += " And m.before=:beforeStatus"; } String warn = getParameterValue(String.class, "warn", ""); if (isStringNotEmpty(warn) && !warn.equals("-1")){ hql += " And m.warn=:warn"; countHql += " And m.warn=:warn"; } String missRemind = getParameterValue(String.class, "missRemind", ""); if (isStringNotEmpty(missRemind) && !missRemind.equals("-1")){ hql += " And m.missRemind=:missRemind"; countHql += " And m.missRemind=:missRemind"; } hql += " Order By m.noteDate Desc, m.warnTime Desc, m.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(noteDateStart)){ try { query.setParameter("noteDateStart", DATE_FORMAT.parse(noteDateStart)); } catch (ParseException e) { e.printStackTrace(); } } if (isStringNotEmpty(noteDateEnd)){ try { query.setParameter("noteDateEnd", DATE_FORMAT.parse(noteDateEnd)); } catch (ParseException e) { e.printStackTrace(); } } if (isStringNotEmpty(frequencyStatus) && !frequencyStatus.equals("-1")){ query.setParameter("frequencyStatus", FrequencyStatus.valueOf(frequencyStatus)); } if (isStringNotEmpty(beforeStatus) && !beforeStatus.equals("-1")){ query.setParameter("beforeStatus", BeforeStatus.valueOf(beforeStatus)); } if (isStringNotEmpty(warn) && !warn.equals("-1")){ query.setParameter("warn", Boolean.parseBoolean(warn)); } if (isStringNotEmpty(missRemind) && !missRemind.equals("-1")){ query.setParameter("missRemind", Boolean.parseBoolean(missRemind)); } query.setParameter("userName", EwcmsContextUtil.getUserName()); 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 Memoranda As m Where m.userName=:userName And m.id In (:id) Order By m.noteDate Desc, m.warnTime Desc, m.id Desc"; String countHql = "Select count(m.id) From Memoranda As m Where m.userName=:userName And m.id In (:id) "; HqlQueryable query = queryFactory.createHqlQuery(hql, countHql); query.setParameter("id", getIds(Long.class)); query.setParameter("userName", EwcmsContextUtil.getUserName()); setDateFormat(DATE_FORMAT); return query.setRow(rows).setPage(page).queryResult(); } }