/** * 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.visit.manager.web; 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.plugin.visit.manager.vo.SummaryVo; import com.ewcms.web.QueryBaseAction; /** * @author 吴智俊 */ public class ListVisitAction extends QueryBaseAction { private static final long serialVersionUID = 8600868922673131146L; private static final String SUMMARY_CLASS_NAME = SummaryVo.class.getPackage().getName() + "." + SummaryVo.class.getSimpleName(); private DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); private String startDate; private String endDate; private Integer siteId = getCurrentSite().getId(); public String getStartDate() { return startDate; } public void setStartDate(String startDate) { this.startDate = startDate; } public String getEndDate() { return endDate; } public void setEndDate(String endDate) { this.endDate = endDate; } @Override protected Resultable queryResult(QueryFactory queryFactory, String cacheKey, int rows, int page, Order order) { String hql = "Select new " + SUMMARY_CLASS_NAME + "(v.ip, i.remotePort, v.country, v.province, v.city, i.url, i.visitDate, i.visitTime, i.referer, v.browser, v.os, v.screen, v.language, v.flashVersion) " + "From VisitItem As i, Visit As v " + "Where i.uniqueId = v.uniqueId And i.siteId=:siteId "; String countHql = "select count(i.id) From VisitItem As i, Visit As v " + "Where i.uniqueId = v.uniqueId And i.siteId=:siteId "; if (isStringNotEmpty(getStartDate())){ hql += " And i.visitDate>=:startDate "; countHql += " And i.visitDate>=:startDate "; } if (isStringNotEmpty(getEndDate())){ hql += " And i.visitDate<=:endDate "; countHql += " And i.visitDate<=:endDate "; } hql += "Order By i.visitDate Desc, i.visitTime Desc Limit " + rows + " OffSet " + (rows * (page + 1)); HqlQueryable query = queryFactory.createHqlQuery(hql, countHql); query.setParameter("siteId", siteId); if (isStringNotEmpty(getStartDate())){ try { query.setParameter("startDate", DATE_FORMAT.parse(getStartDate())); } catch (ParseException e) { e.printStackTrace(); } } if (isStringNotEmpty(getEndDate())){ try { query.setParameter("endDate", DATE_FORMAT.parse(getEndDate())); } catch (ParseException e) { e.printStackTrace(); } } setDateFormat(DATE_FORMAT); return query.setRow(rows).setPage(page).queryResult(); } @Override protected Resultable querySelectionsResult(QueryFactory queryFactory, int rows, int page, String[] selections, Order order) { return null; } }