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 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 PlaceRegistration
*/
public class PlaceRegistration extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public PlaceRegistration() {
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 pageURL = (String)request.getParameter("pageURL");
PlaceEnroll(accessToken, 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 PlaceEnroll(String accessToken, String pageURL)
{
//making facebookClient
FacebookClient facebookClient = new DefaultFacebookClient(accessToken);
//getting Place page
Page placePage = facebookClient.fetchObject(pageURL, Page.class);
if( placePage == null )
{
return;
}
//getting object EPC
String placeEPC = placePage.getName().toLowerCase();
//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 placeInd = owlModel.getRDFIndividual(placeEPC);
OWLNamedClass placeClass = owlModel.getOWLNamedClass("IndoorSpace");
if( placeInd != null )
{
return;
}
else
{
placeInd = placeClass.createRDFIndividual(placeEPC);
}
//saving place information to the database
JSONHelper jhelper = new JSONHelper();
JSONObject jsonPlace = jhelper.getJSONFromPlace(placePage);
MongoHelper mHelper = new MongoHelper();
String placeInformID = mHelper.saveToDB("SpaceInformation", jsonPlace, "epc", placePage.getName().toLowerCase());
//save to Ontology : Information
OWLNamedClass informClass = owlModel.getOWLNamedClass("SpaceInformation");
RDFIndividual informInd = informClass.createRDFIndividual(placeInformID);
//making relationship : Human - Information
OWLObjectProperty hasInform = owlModel.getOWLObjectProperty("hasSpaceInformation");
placeInd.addPropertyValue(hasInform, informInd);
p.dispose();
System.out.println("Place Registration is finished");
}
}