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.Problem;
import org.infosec.ismp.agent.winsensor.operation.dao.ProblemDao;
import org.infosec.ismp.agent.winsensor.operation.entity.ProblemBO;
import org.infosec.ismp.agent.winsensor.operation.service.ProblemService;
/**
* @author Rocky
* @version create time: Jan 14, 2011 6:06:55 PM
*
*/
public class ProblemServiceImpl implements ProblemService {
private ProblemDao dao;
@Override
public Boolean addProblem(Problem problem) {
ProblemBO existProblem = dao.findProblem(problem.getProblemId());
if (existProblem == null) {
ProblemBO problemBO = new ProblemBO();
problemBO.setContact(problem.getContact());
problemBO.setContactAddress(problem.getContactAddress());
problemBO.setCreateTime(problem.getCreateTime());
problemBO.setDescription(problem.getDescription());
problemBO.setProblemId(problem.getProblemId());
problemBO.setSensorId(problem.getSensorId());
problemBO.setServiceAddress(problem.getServiceAddress());
problemBO.setTitle(problem.getTitle());
problemBO.setIfSendToManager(false);
dao.addProblem(problemBO);
return true;
}
return false;
}
@Override
public void updateUploadSuccessInfo(String problemId) {
ProblemBO problem = dao.findProblem(problemId);
if (problem != null) {
problem.setIfSendToManager(true);
dao.updateProblem(problem);
}
}
@Override
public List<Problem> getAllUnuploadProblem() {
List<ProblemBO> problemBOs = dao.getAllUnuploadProblem();
List<Problem> problems = new ArrayList<Problem>();
for (ProblemBO problemBO : problemBOs) {
Problem problem = new Problem();
problem.setContact(problemBO.getContact());
problem.setContactAddress(problemBO.getContactAddress());
problem.setCreateTime(problemBO.getCreateTime());
problem.setDescription(problemBO.getDescription());
problem.setProblemId(problemBO.getProblemId());
problem.setSensorId(problemBO.getSensorId());
problem.setServiceAddress(problemBO.getServiceAddress());
problem.setTitle(problemBO.getTitle());
problems.add(problem);
}
return problems;
}
@Override
public ProblemBO findByProblemId(String problemId) {
return dao.findProblem(problemId);
}
@Override
public void receivedOperationProblem(ProblemBO problem) {
problem.setIfManagerReceived(true);
dao.updateProblem(problem);
}
@Override
public void closeOperationProblem(ProblemBO problem) {
problem.setIfProblemClosed(true);
problem.setProbClosedTime(new Date());
problem.setIfSendProbClosed(false);
dao.updateProblem(problem);
}
@Override
public void generateWorkOrders(ProblemBO problem, String workOrdersId) {
problem.setWorkOrdersId(workOrdersId);
problem.setIfGeneratedWorkOrders(true);
problem.setWorkOrdersGeneTime(new Date());
problem.setIfSendGeneWorkOrders(false);
dao.updateProblem(problem);
}
@Override
public void closeWorkOrders(ProblemBO problem) {
problem.setIfWorkOrdersClosed(true);
problem.setWorkOrdersClosedTime(new Date());
problem.setIfSendWorkOrdersClosed(false);
dao.updateProblem(problem);
}
@Override
public void completeWorkOrders(ProblemBO problem) {
problem.setIfWorkOrdersComplete(true);
problem.setWorkOrdersCompTime(new Date());
problem.setIfSendOrdersCompleted(false);
dao.updateProblem(problem);
}
@Override
public List<ProblemBO> getAllStateChangedProblems() {
return dao.getAllStateChangedProblems();
}
@Override
public List<ProblemBO> findBySensorId(String sensorId) {
return dao.findBySensorId(sensorId);
}
@Override
public void sendProblemClosedSuccess(ProblemBO problem) {
problem.setIfSendProbClosed(true);
problem.setSendProbClosedTime(new Date());
dao.updateProblem(problem);
}
@Override
public void sendOrdersGeneratedSuccess(ProblemBO problem) {
problem.setIfSendGeneWorkOrders(true);
problem.setSendGeneworkOrdersTime(new Date());
dao.updateProblem(problem);
}
@Override
public void sendOrdersClosedSuccess(ProblemBO problem) {
problem.setIfSendWorkOrdersClosed(true);
problem.setSendOrdersClosedTime(new Date());
dao.updateProblem(problem);
}
@Override
public void sendOrdersCompleteSuccess(ProblemBO problem) {
problem.setIfSendOrdersCompleted(true);
problem.setSendOrdersCompTime(new Date());
dao.updateProblem(problem);
}
public void setDao(ProblemDao dao) {
this.dao = dao;
}
}