package org.infosec.ismp.agent.winsensor.operation.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.infosec.ismp.agent.comm.winsensor.model.operation.DutyManager; import org.infosec.ismp.agent.winsensor.entity.WinsensorDeviceBO; import org.infosec.ismp.agent.winsensor.operation.dao.AgentDutyManagerSentHisDao; import org.infosec.ismp.agent.winsensor.operation.entity.AgentDutyManagerBO; import org.infosec.ismp.agent.winsensor.operation.entity.AgentDutyManagerSentHisBO; import org.infosec.ismp.agent.winsensor.operation.service.AgentDutyManagerSentHisService; /** * @author Rocky * @version create time: Jan 11, 2011 9:59:52 PM * */ public class AgentDutyManagerSentHisServiceImpl implements AgentDutyManagerSentHisService { private AgentDutyManagerSentHisDao dao; @Override public List<String> addSentHistory(List<DutyManager> dutyManagers, List<WinsensorDeviceBO> devices) { List<String> sensorIds = new ArrayList<String>(); for (DutyManager dutyManager : dutyManagers) { for (WinsensorDeviceBO device : devices) { if (dutyManager.getDomainId().equals(device.getDomainId())) { AgentDutyManagerSentHisBO sentHistory = new AgentDutyManagerSentHisBO(); sentHistory.setSensorId(device.getSensorId()); sentHistory.setCreateTime(new Date()); sentHistory.setDutyManagerId(dutyManager.getId()); sentHistory.setExpired(false); sentHistory.setIsSent(false); sentHistory.setIsRemoved(false); dao.addSentHistory(sentHistory); sensorIds.add(device.getSensorId()); } } } return sensorIds; } @Override public List<String> getAllUnsentDutySensorId(List<String> allLegalSensorIds) { List<String> allSensorIds = dao.getAllUnsentDutySensorId(); List<String> sensorIds = new ArrayList<String>(); //Filter duplicate sensorId and illegal sensorId. for (String sensorId : allSensorIds) { if (allLegalSensorIds.contains(sensorId) && (!sensorIds.contains(sensorId))) { sensorIds.add(sensorId); } } return sensorIds; } @Override public List<AgentDutyManagerSentHisBO> getAllUnsentDutyManager(String sensorId) { return dao.getAllUnsentDutyManager(sensorId); } @Override public void cleanUpExpiredSentHistory(List<String> dutyManagerIds) { for (String dutyManagerId : dutyManagerIds) { List<AgentDutyManagerSentHisBO> sentHistories = dao.findSentHistory(dutyManagerId); for (AgentDutyManagerSentHisBO sentHistory : sentHistories) { sentHistory.setExpired(true); dao.updateSentHistory(sentHistory); } } } @Override public List<String> getAllUnsentDutyManager( List<AgentDutyManagerBO> allCurrentUsedDutyManager) { List<String> dutyManagerIds = new ArrayList<String>(); for (AgentDutyManagerBO dutyManager : allCurrentUsedDutyManager) { dutyManagerIds.add(String.valueOf(dutyManager.getId())); } return dao.getAllUnsentDutyManager(dutyManagerIds); } @Override public List<String> deleteDutyManager(String dutyManagerId, List<String> allSensorIds) { List<AgentDutyManagerSentHisBO> sentHistories = dao.findSentHistory(dutyManagerId); List<String> sensorIds = new ArrayList<String>(); for (AgentDutyManagerSentHisBO sentHistory : sentHistories) { sentHistory.setIsRemoved(true); dao.updateSentHistory(sentHistory); if (allSensorIds.contains(sentHistory.getSensorId())) { sensorIds.add(sentHistory.getSensorId()); } } return sensorIds; } @Override public List<String> getAllUnremovedDutySensorId(List<String> allLegalSensorIds) { List<String>allSensorIds = dao.getAllUnremovedDutySensorId(); List<String> sensorIds = new ArrayList<String>(); for (String sensorId : allSensorIds) { if (allLegalSensorIds.contains(sensorId)) { sensorIds.add(sensorId); } } return sensorIds; } @Override public void updateSendSuccessHistory(String dutyManagerId, String sensorId) { AgentDutyManagerSentHisBO sentHistory = dao.findSentHistory(dutyManagerId, sensorId); if (sentHistory != null) { sentHistory.setIsSent(true); sentHistory.setSendTime(new Date()); dao.updateSentHistory(sentHistory); } } @Override public void updateRemovedSuccessHistory(String sensorId) { AgentDutyManagerSentHisBO sentHistory = dao.findRemovedHistory(sensorId); if (sentHistory != null) { sentHistory.setRemovedTime(new Date()); dao.updateSentHistory(sentHistory); } } public void setDao(AgentDutyManagerSentHisDao dao) { this.dao = dao; } }