Subversion Repositories SmartDukaan

Rev

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

Rev 3526 Rev 3532
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;
-
 
9
 
8
 
10
import javax.servlet.http.HttpServlet;
9
import javax.servlet.http.HttpServlet;
11
import javax.servlet.http.HttpServletRequest;
10
import javax.servlet.http.HttpServletRequest;
12
import javax.servlet.http.HttpServletResponse;
11
import javax.servlet.http.HttpServletResponse;
13
 
12
 
Line 19... Line 18...
19
import com.google.appengine.api.datastore.DatastoreServiceFactory;
18
import com.google.appengine.api.datastore.DatastoreServiceFactory;
20
import com.google.appengine.api.datastore.Entity;
19
import com.google.appengine.api.datastore.Entity;
21
 
20
 
22
public class AddDataLogServlet extends HttpServlet {
21
public class AddDataLogServlet extends HttpServlet {
23
    private static final long serialVersionUID = -8236918415987438049L;
22
    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
-
 
28
    
23
 
29
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
24
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
30
        Entity entity = new Entity("DataLog");
25
        Entity entity = new Entity("DataLog");
31
        entity.setProperty("logTime", new Date());
26
        entity.setProperty("logTime", new Date());
32
        
27
        
33
        setTime(req, entity);
28
        setTime(req, entity);
Line 35... Line 30...
35
        setSessionId(req, entity);
30
        setSessionId(req, entity);
36
        setUserId(req, entity);
31
        setUserId(req, entity);
37
        setEmail(req, entity);
32
        setEmail(req, entity);
38
        setLogData(req, entity);
33
        setLogData(req, entity);
39
        
34
        
40
        entityList.add(entity);
-
 
41
        if(entityList.size() >= BATCH_SIZE) {
-
 
42
            logger.warning("Pushing events to datastore : " + entityList.size());
-
 
43
            synchronized(entityList) {
-
 
44
                DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
35
        DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
45
                ds.put(entityList);
36
        ds.put(entity);
46
                entityList.clear();
-
 
47
            }
-
 
48
        }
-
 
49
    }
37
    }
50
    
38
    
51
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
39
    public void doGet(HttpServletRequest req, HttpServletResponse resp) {
52
        doPost(req, resp);
40
        doPost(req, resp);
53
    }
41
    }
Line 111... Line 99...
111
            }
99
            }
112
        } catch (JSONException e) {
100
        } catch (JSONException e) {
113
            e.printStackTrace();
101
            e.printStackTrace();
114
        }
102
        }
115
    }
103
    }
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
    }
-
 
127
}
104
}
128
105