Subversion Repositories SmartDukaan

Rev

Rev 3193 | Rev 3532 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3193 Rev 3526
Line 3... Line 3...
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.Calendar;
4
import java.util.Calendar;
5
import java.util.Date;
5
import java.util.Date;
6
import java.util.List;
6
import java.util.List;
7
import java.util.TimeZone;
7
import java.util.TimeZone;
-
 
8
import java.util.logging.Logger;
8
 
9
 
9
import javax.servlet.http.HttpServlet;
10
import javax.servlet.http.HttpServlet;
10
import javax.servlet.http.HttpServletRequest;
11
import javax.servlet.http.HttpServletRequest;
11
import javax.servlet.http.HttpServletResponse;
12
import javax.servlet.http.HttpServletResponse;
12
 
13
 
Line 18... Line 19...
18
import com.google.appengine.api.datastore.DatastoreServiceFactory;
19
import com.google.appengine.api.datastore.DatastoreServiceFactory;
19
import com.google.appengine.api.datastore.Entity;
20
import com.google.appengine.api.datastore.Entity;
20
 
21
 
21
public class AddDataLogServlet extends HttpServlet {
22
public class AddDataLogServlet extends HttpServlet {
22
    private static final long serialVersionUID = -8236918415987438049L;
23
    private static final long serialVersionUID = -8236918415987438049L;
-
 
24
    private static Logger logger = Logger.getLogger(AddDataLogServlet.class.getName());
-
 
25
    
-
 
26
    private static final int BATCH_SIZE = 200;
-
 
27
    private List<Entity> entityList =  new ArrayList<Entity>(); // TO store entities in batches for performance
23
 
28
    
24
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
29
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
25
        Entity entity = new Entity("DataLog");
30
        Entity entity = new Entity("DataLog");
26
        entity.setProperty("logTime", new Date());
31
        entity.setProperty("logTime", new Date());
27
        
32
        
28
        setTime(req, entity);
33
        setTime(req, entity);
Line 30... Line 35...
30
        setSessionId(req, entity);
35
        setSessionId(req, entity);
31
        setUserId(req, entity);
36
        setUserId(req, entity);
32
        setEmail(req, entity);
37
        setEmail(req, entity);
33
        setLogData(req, entity);
38
        setLogData(req, entity);
34
        
39
        
-
 
40
        entityList.add(entity);
-
 
41
        if(entityList.size() >= BATCH_SIZE) {
-
 
42
            logger.warning("Pushing events to datastore : " + entityList.size());
-
 
43
            synchronized(entityList) {
35
        DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
44
                DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
36
        ds.put(entity);
45
                ds.put(entityList);
-
 
46
                entityList.clear();
-
 
47
            }
-
 
48
        }
37
    }
49
    }
38
    
50
    
39
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
51
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
40
        doPost(req, resp);
52
        doPost(req, resp);
41
    }
53
    }
Line 99... Line 111...
99
            }
111
            }
100
        } catch (JSONException e) {
112
        } catch (JSONException e) {
101
            e.printStackTrace();
113
            e.printStackTrace();
102
        }
114
        }
103
    }
115
    }
-
 
116
    
-
 
117
    @Override
-
 
118
    public void destroy() {
-
 
119
        logger.warning("Pushing events to datastore in destroy() : " + entityList.size());
-
 
120
        synchronized(entityList) {
-
 
121
            DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
-
 
122
            ds.put(entityList);
-
 
123
            entityList.clear();
-
 
124
        }
-
 
125
        super.destroy();
-
 
126
    }
104
}
127
}
105
128