package com.jspxcms.core.repository.impl; import java.util.Date; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.apache.commons.lang3.StringUtils; import com.jspxcms.core.domaindsl.QVoteMark; import com.jspxcms.core.repository.VoteMarkDaoPlus; import com.mysema.query.BooleanBuilder; import com.mysema.query.jpa.impl.JPAQuery; public class VoteMarkDaoImpl implements VoteMarkDaoPlus { public int countMark(String ftype, Integer fid, Integer userId, String ip, String cookie, Date after) { JPAQuery query = new JPAQuery(this.em); QVoteMark bean = QVoteMark.voteMark; query.from(bean); BooleanBuilder exp = new BooleanBuilder(); exp = exp.and(bean.ftype.eq(ftype)); exp = exp.and(bean.fid.eq(fid)); if (userId != null) { exp = exp.and(bean.user.id.eq(userId)); } else if (StringUtils.isNotBlank(ip)) { exp = exp.and(bean.ip.eq(ip)); } else if (StringUtils.isNotBlank(cookie)) { exp = exp.and(bean.cookie.eq(cookie)); } else { throw new IllegalArgumentException( "userId or ip or cookie is required."); } if (after != null) { exp = exp.and(bean.date.after(after)); } query.where(exp); return query.list(bean.count()).iterator().next().intValue(); } private EntityManager em; @PersistenceContext public void setEm(EntityManager em) { this.em = em; } }