package kr.ac.kaist.resl.lilliput.core;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.ac.kaist.resl.lilliput.util.DisappearThread;
import edu.stanford.smi.protege.model.Project;
import edu.stanford.smi.protege.server.RemoteProjectManager;
import edu.stanford.smi.protegex.owl.model.OWLModel;
import edu.stanford.smi.protegex.owl.model.OWLNamedClass;
import edu.stanford.smi.protegex.owl.model.OWLObjectProperty;
import edu.stanford.smi.protegex.owl.model.RDFIndividual;
/**
* Servlet implementation class NFCIntegration
*/
public class NFCIntegration extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public NFCIntegration() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String epc = (String)request.getParameter("EPC");
String deviceEPC = (String)request.getParameter("deviceEPC");
nearByRegistration(deviceEPC, epc);
System.out.println(epc);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
public boolean nearByRegistration(String deviceEPC, String sensedEPC)
{ //coap://iotsensor1.iot.kr:5683/sensors/temp
try {
//object�� �̹� EPCRegistration���� ����Ǿ� �ִٰ� �����Ѵ�
RemoteProjectManager rpm = RemoteProjectManager.getInstance();
Project p = rpm.getProject("localhost:5100", "Lilliput", "1234", "IoTSocialModel", true);
OWLModel owlModel = (OWLModel)p.getKnowledgeBase();
//Save Space to Ontology if it is not saved
OWLNamedClass objectClass = owlModel.getOWLNamedClass("Object");
//Identify whethere there is object or not
RDFIndividual deviceInd = owlModel.getRDFIndividual(deviceEPC);
RDFIndividual objectInd = owlModel.getRDFIndividual(sensedEPC);
OWLObjectProperty isNear = owlModel.getOWLObjectProperty("isNear");
//���ο� ���
if( deviceInd == null )
{
//���� ����ؾ���
//��������� ���
deviceInd = objectClass.createRDFIndividual(deviceEPC);
}
if( objectInd == null )
{
objectInd = objectClass.createRDFIndividual(sensedEPC);
}
//���ݱ����� ����
deviceInd.addPropertyValue(isNear, objectInd);
//�� near�� 5�� ������ ��������
p.dispose();
System.out.println( deviceEPC + " and " + sensedEPC + "is now near in Lilliput");
List<String> sensedEPCs = new ArrayList<String>();
sensedEPCs.add(sensedEPC);
DisappearThread disappearThread = new DisappearThread(deviceEPC,sensedEPCs,"isNear",20);
disappearThread.start();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
}