Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package in.shop2020.web;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONObject;

import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.EntityNotFoundException;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;
import com.google.appengine.api.datastore.Query.FilterOperator;

public class MyNotesServlet extends HttpServlet {

        private static final long serialVersionUID = 1L;
        private static final String ENTITY_KIND = "UserNote";
        
        public void doPost(HttpServletRequest req, HttpServletResponse resp)    {

                
                String user = req.getParameter("user");
                String entity = req.getParameter("entity");
                String slide = req.getParameter("slide");
                String noteText = req.getParameter("note");
                String keyName = "";
                
                DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
                if (user == null || entity == null || user.isEmpty() || entity.isEmpty())       {
                        return;
                }
                
                keyName = user + "-" + entity + "-" + slide;
                Key key = KeyFactory.createKey(ENTITY_KIND, keyName);
                Entity note;
                try {
                        note = datastore.get(key);      // Note exists
                        note.setProperty("note", noteText);
                        datastore.put(note);
                } catch (EntityNotFoundException enf)   {       // Note does not exist
                        try {
                                long userId = Long.parseLong(user);
                                long entityId = Long.parseLong(entity);
                                
                                note = new Entity(ENTITY_KIND, keyName);
                                note.setProperty("userId", userId);
                                note.setProperty("entityId", entityId);
                                note.setProperty("slide", slide);
                                note.setProperty("note", noteText);
                                datastore.put(note);
                                
                        } catch (NumberFormatException nfe) {
                                System.out.println("Not able to convert user id or entity id from string to long.");
                        } 
                } 
        }

        public void doGet(HttpServletRequest req, HttpServletResponse resp)     {
                
                resp.setContentType("application/json");
                try {
                        long userId = Long.parseLong(req.getParameter("user"));
                        long entityId = Long.parseLong(req.getParameter("entity"));
                        
                        Query q = new Query(ENTITY_KIND);
                        q.addFilter("userId", FilterOperator.EQUAL , userId);
                        q.addFilter("entityId", FilterOperator.EQUAL, entityId);
                        
                        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
                        PreparedQuery pq = datastore.prepare(q);
                        
                        Map<String, String> notes = new HashMap<String, String>();
                        
                        for(Entity result: pq.asIterable())     {
                                notes.put((String) result.getProperty("slide"), (String) result.getProperty("note"));
                        }

                        resp.getWriter().print(new JSONObject(notes));
                        
                } catch (NumberFormatException e)       {
                        System.out.println("Not able to convert user id or entity id from string to long.");
                        
                } catch (IOException e) {
                        System.out.println("Unable to write on output stream");
                }
        }
}