package org.openiot.lsm.http; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.openiot.commons.osdspec.model.OSDSpec; import org.openiot.lsm.manager.SensorManager; import org.openiot.lsm.manager.TriplesDataRetriever; import org.openiot.lsm.sdum.model.beans.OSDSpecBean; import org.openiot.lsm.security.oauth.LSMRegisteredServiceImpl; import org.openiot.lsm.security.oauth.LSMServiceTicketImpl; import org.openiot.lsm.security.oauth.LSMTicketGrantingTicketImpl; import org.openiot.lsm.security.oauth.mgmt.Permission; import org.openiot.lsm.security.oauth.mgmt.Role; /** * Servlet implementation class SDUMServlet */ public class SDUMServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public SDUMServlet() { super(); // TODO Auto-generated constructor stub } /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub } /** * @see Servlet#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub try { ObjectInputStream inputFromClient = new ObjectInputStream(request.getInputStream()); // deserialize the object, note the cast Object object = inputFromClient.readObject(); String objectType = request.getHeader("objectType"); String pro = request.getHeader("project").toLowerCase(); String graphURL = request.getHeader("FunctionalGraphURL"); String perform = request.getHeader("operator"); if(perform.equals("insert")){ boolean isFeed = feedToServer(object,objectType,graphURL); response.setContentType("text/xml"); response.setHeader("Pragma", "no-cache"); // HTTP 1.0 response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1 if (isFeed) response.getWriter().print("FEED DONE"); else response.getWriter().print("FEED FAIL"); }else if(perform.equals("update")){ boolean isUpdated = updateToServer(object,graphURL); response.setContentType("text/xml"); response.setHeader("Pragma", "no-cache"); // HTTP 1.0 response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1 if (isUpdated) response.getWriter().print("Update DONE"); else response.getWriter().print("Update FAIL"); }else if(perform.equals("delete")){ boolean isFeed = deleteFromServer(object.toString(),objectType,graphURL); response.setContentType("text/xml"); response.setHeader("Pragma", "no-cache"); // HTTP 1.0 response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1 if (isFeed) response.getWriter().print("DELETE DONE"); else response.getWriter().print("DELETE FAIL"); }else if(perform.equals("load")){ Object returnObj = getFromServer(object.toString(),objectType,graphURL); response.setContentType("application/x-java-serialized-object"); ObjectOutputStream outputToApplet = new ObjectOutputStream(response.getOutputStream()); outputToApplet.writeObject(returnObj); outputToApplet.flush(); outputToApplet.close(); } } catch (Exception ex) { ex.printStackTrace(); } } private boolean feedToServer(Object object, String objectType, String graphURL) { // TODO Auto-generated method stub try { SensorManager sensorManager = new SensorManager(); sensorManager.setMetaGraph(graphURL); String triples = ""; if(object instanceof OSDSpecBean){ OSDSpecBean osdspecBean = (OSDSpecBean) object; triples = TriplesDataRetriever.OSDSpecBeanToRDF(osdspecBean); } // System.out.println(triples); sensorManager.insertTriplesToGraph(graphURL, triples); }catch(Exception e){ e.printStackTrace(); return false; } return true; } private Object getFromServer(String value, String objectType, String graphURL) { // TODO Auto-generated method stub // try { // SensorManager sensorManager = new SensorManager(); // sensorManager.setMetaGraph(graphURL); // if(objectType.equals("OAuthUser")){ // org.openiot.lsm.security.oauth.mgmt.User user = sensorManager.getOAuthUserById(value); // return user; // }else if(objectType.equals(OAUTH_SERVICE)){ // LSMRegisteredServiceImpl ser = sensorManager.getServiceById(value); // return ser; // }else if(objectType.equals(OAUTH_TICKET_GRANTING)){ // LSMTicketGrantingTicketImpl tickGrant = sensorManager.getTicketSchedulerById(value); // return tickGrant; // }else if(objectType.equals(OAUTH_TICKET)){ // LSMServiceTicketImpl ticket = sensorManager.getTicketById(value); // return ticket; // }else if(objectType.equals(OAUTH_ROLE)){ // Role role = sensorManager.getRoleById(value); // return role; // }else if(objectType.equals(OAUTH_PER)){ // Permission permission = sensorManager.getPermissionById(value); // return permission; // } // }catch(Exception e){ // e.printStackTrace(); // return null; // } return null; } private boolean updateToServer(Object object, String graphURL) { // TODO Auto-generated method stub try { SensorManager sensorManager = new SensorManager(); sensorManager.setMetaGraph(graphURL); String triples = ""; if(object instanceof OSDSpecBean){ OSDSpecBean osdspec = (OSDSpecBean) object; sensorManager.deleteOSDSpecById(osdspec.getId()); triples = TriplesDataRetriever.OSDSpecBeanToRDF(osdspec); } sensorManager.insertTriplesToGraph(graphURL, triples); }catch(Exception e){ e.printStackTrace(); return false; } return true; } private boolean deleteFromServer(String value, String objectType,String graphURL) { // TODO Auto-generated method stub try { SensorManager sensorManager = new SensorManager(); sensorManager.setMetaGraph(graphURL); if(objectType.equals("OSDSpec")){ return sensorManager.deleteOSDSpecById(value); } }catch(Exception e){ e.printStackTrace(); return false; } return true; } }