package org.infosec.ismp.agent.winsensor.operation.dao.impl; import java.util.ArrayList; import java.util.List; import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.infosec.ismp.agent.winsensor.operation.dao.AgentDutyManagerSentHisDao; import org.infosec.ismp.agent.winsensor.operation.entity.AgentDutyManagerSentHisBO; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * @author Rocky * @version create time: Jan 11, 2011 9:58:50 PM * */ public class AgentDutyManagerSentHisDaoImpl extends HibernateDaoSupport implements AgentDutyManagerSentHisDao { @Override public void addSentHistory(AgentDutyManagerSentHisBO sentHistory) { getHibernateTemplate().save(sentHistory); } @SuppressWarnings("unchecked") @Override public AgentDutyManagerSentHisBO findSentHistory(String dutyManagerId, String sensorId) { Criteria criteria = getSession().createCriteria(AgentDutyManagerSentHisBO.class); criteria.add(Restrictions.eq("dutyManagerId", dutyManagerId)); criteria.add(Restrictions.eq("sensorId", sensorId)); criteria.addOrder(Order.desc("createTime")); List<AgentDutyManagerSentHisBO> sentHistories = criteria.list(); if (sentHistories.size() > 0) { return sentHistories.get(0); } return null; } @SuppressWarnings("unchecked") @Override public AgentDutyManagerSentHisBO findRemovedHistory(String sensorId) { Criteria criteria = getSession().createCriteria(AgentDutyManagerSentHisBO.class); criteria.add(Restrictions.eq("sensorId", sensorId)); criteria.add(Restrictions.eq("isRemoved", true)); criteria.add(Restrictions.eq("removedTime", null)); criteria.addOrder(Order.desc("sendTime")); List<AgentDutyManagerSentHisBO> sentHistories = criteria.list(); if (sentHistories.size() > 0) { return sentHistories.get(0); } return null; } @SuppressWarnings("unchecked") @Override public List<String> getAllUnsentDutySensorId() { //If the impact of the performance, use the HQL statement. Criteria criteria = getSession().createCriteria(AgentDutyManagerSentHisBO.class); criteria.add(Restrictions.eq("isSent", false)); criteria.add(Restrictions.eq("expired", false)); criteria.add(Restrictions.eq("isRemoved", false)); List<AgentDutyManagerSentHisBO> sentHistories = criteria.list(); List<String> sensorIds = new ArrayList<String>(); for (AgentDutyManagerSentHisBO sentHistory : sentHistories) { sensorIds.add(sentHistory.getSensorId()); } return sensorIds; } @Override public void updateSentHistory(AgentDutyManagerSentHisBO sentHistory) { getHibernateTemplate().update(sentHistory); } @SuppressWarnings("unchecked") @Override public List<AgentDutyManagerSentHisBO> getAllUnsentDutyManager(String sensorId) { Criteria criteria = getSession().createCriteria(AgentDutyManagerSentHisBO.class); criteria.add(Restrictions.eq("sensorId", sensorId)); criteria.add(Restrictions.eq("expired", false)); criteria.add(Restrictions.eq("isSent", false)); criteria.add(Restrictions.eq("isRemoved", false)); return criteria.list(); } @SuppressWarnings("unchecked") @Override public List<AgentDutyManagerSentHisBO> findSentHistory(String dutyManagerId) { Criteria criteria = getSession().createCriteria(AgentDutyManagerSentHisBO.class); criteria.add(Restrictions.eq("dutyManagerId", dutyManagerId)); return criteria.list(); } @SuppressWarnings("unchecked") @Override public List<String> getAllUnsentDutyManager(List<String> dutyManagerIds) { Criteria criteria = getSession().createCriteria(AgentDutyManagerSentHisBO.class); criteria.add(Restrictions.in("dutyManagerId", dutyManagerIds)); criteria.add(Restrictions.eq("isSent", false)); criteria.add(Restrictions.eq("expired", false)); criteria.add(Restrictions.eq("isRemoved", false)); List<AgentDutyManagerSentHisBO> sentHistories = criteria.list(); List<String> sensorIds = new ArrayList<String>(); for (AgentDutyManagerSentHisBO sentHistory : sentHistories) { if (!sensorIds.contains(sentHistory.getSensorId())) { sensorIds.add(sentHistory.getSensorId()); } } return sensorIds; } @SuppressWarnings("unchecked") @Override public List<String> getAllUnremovedDutySensorId() { Criteria criteria = getSession().createCriteria(AgentDutyManagerSentHisBO.class); criteria.add(Restrictions.eq("isRemoved", true)); criteria.add(Restrictions.eq("isSent", true)); criteria.add(Restrictions.eq("expired", false)); criteria.add(Restrictions.eq("removedTime", null)); List<AgentDutyManagerSentHisBO> sentHistories = criteria.list(); List<String> sensorIds = new ArrayList<String>(); for (AgentDutyManagerSentHisBO sentHistory : sentHistories) { if (!sensorIds.contains(sentHistory.getSensorId())) { sensorIds.add(sentHistory.getSensorId()); } } return sensorIds; } }