package kr.ac.kaist.resl.lilliput.core;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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.JSONHelper;
import kr.ac.kaist.resl.lilliput.util.MongoHelper;
import org.json.JSONObject;
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.types.Page;
import com.restfb.types.User;
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 ObjectRegistration
*/
public class ObjectRegistration extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ObjectRegistration() {
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
//It's done
String accessToken = (String)request.getParameter("accessToken");
String password = (String)request.getParameter("password");
String pageURL = (String)request.getParameter("pageURL");
ObjectEnroll(accessToken, password, pageURL);
RequestDispatcher dispatcher = request.getRequestDispatcher("registration.jsp");
dispatcher.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
public void ObjectEnroll(String accessToken, String password, String pageURL)
{
//making facebookClient
FacebookClient facebookClient = new DefaultFacebookClient(accessToken);
//getting object page
Page objectPage = facebookClient.fetchObject(pageURL, Page.class);
if( objectPage == null )
{
return;
}
//getting object EPC
String objectEPC = objectPage.getProducts();
//Ontology�� �ҷ���
RemoteProjectManager rpm = RemoteProjectManager.getInstance();
Project p = rpm.getProject("localhost:5100", "Lilliput", "1234", "IoTSocialGraph", true);
OWLModel owlModel = (OWLModel)p.getKnowledgeBase();
//identify whethere object is in or not
RDFIndividual objectInd = owlModel.getRDFIndividual(objectEPC);
OWLNamedClass objectClass = owlModel.getOWLNamedClass("Object");
if( objectInd != null )
{
return;
}
else
{
objectInd = objectClass.createRDFIndividual(objectEPC);
}
//fetch user
User user = facebookClient.fetchObject("me", User.class);
String ownerFID = user.getId();
//getting ownerEPC from DB
//identify owner is registrated or not
//getting ownerEPC from DB
MongoHelper mHelper = new MongoHelper();
String ownerEPC = mHelper.isHumanSavedInDB(ownerFID);
RDFIndividual ownerInd = owlModel.getRDFIndividual(ownerEPC);
if( ownerInd == null )
{
return;
}
//giving hasOwnership relationship between owner and object
OWLObjectProperty hasOwnership = owlModel.getOWLObjectProperty("hasOwnership");
ownerInd.addPropertyValue(hasOwnership, objectInd);
//saving object information to the database
JSONHelper jhelper = new JSONHelper();
JSONObject jsonObject = jhelper.getJSONFromObject(objectPage);
String objectInformID = mHelper.saveToDB("ObjectInformation", jsonObject, "epc", objectPage.getProducts());
//save to Ontology : Information
OWLNamedClass informClass = owlModel.getOWLNamedClass("ObjectInformation");
RDFIndividual informInd = informClass.createRDFIndividual(objectInformID);
//making relationship : Human - Information
OWLObjectProperty hasInform = owlModel.getOWLObjectProperty("hasObjectInformation");
objectInd.addPropertyValue(hasInform, informInd);
p.dispose();
System.out.println("Object Registration is finished");
}
}