package org.infosec.ismp.agent.winsensor.communication.services;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.dom4j.Document;
import org.infosec.ismp.agent.winsensor.SensorServer;
import org.infosec.ismp.agent.winsensor.operation.entity.AgentDutyManagerBO;
import org.infosec.ismp.agent.winsensor.util.FileUploadUtil;
import org.infosec.ismp.agent.winsensor.util.XmlParseUtil;
/**
* @author Rocky
* @version create time: Jan 12, 2011 10:30:23 AM
*
*/
public class OperationDutyHolder extends HttpServlet {
private static final long serialVersionUID = -2062497937004072606L;
private SensorServer sensorServer;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
handleRequest(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
handleRequest(req, resp);
}
public void handleRequest(HttpServletRequest req, HttpServletResponse resp) {
InputStream inputStream = null;
FileUploadUtil fileUploadUtil = new FileUploadUtil();
XmlParseUtil xmlParseUtil = new XmlParseUtil();
PrintWriter printWriter = null;
try {
inputStream = fileUploadUtil.getCompleteInputStream(req);
String sensorId = xmlParseUtil.parseDutyConnection(inputStream);
resp.setContentType("text/xml;charset=UTF-8");
printWriter = resp.getWriter();
if (!StringUtils.isBlank(sensorId)) {
AgentDutyManagerBO dutyManager = sensorServer.getNewDutyInfo(sensorId);
if (dutyManager != null) {
Document document = xmlParseUtil.createDuty(dutyManager);
System.out.println("Duty: " + document.getRootElement().asXML());
printWriter.write(document.getRootElement().asXML());
sensorServer.dutySendSuccess(sensorId, String.valueOf(dutyManager.getId()));
} else {
if (sensorServer.ifRemovedCurrentDutyInfo(sensorId)) {
Document document = xmlParseUtil.createRemovedDuty();
printWriter.write(document.getRootElement().asXML());
sensorServer.removedCurrentDutySuccess(sensorId);
} else {
printWriter.write("");
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (printWriter != null) {
printWriter.close();
}
}
}
public void setSensorServer(SensorServer sensorServer) {
this.sensorServer = sensorServer;
}
}