/[projects]/android/MarketStats/src/dk/thoerup/marketstats/ShowStats.java
ViewVC logotype

Annotation of /android/MarketStats/src/dk/thoerup/marketstats/ShowStats.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 760 - (hide annotations) (download)
Thu May 27 09:45:44 2010 UTC (14 years ago) by torben
File size: 4092 byte(s)
Remove unneeded import
1 torben 659 package dk.thoerup.marketstats;
2    
3     import java.io.IOException;
4     import java.io.PrintWriter;
5     import java.net.InetSocketAddress;
6 torben 662 import java.util.ArrayList;
7 torben 659 import java.util.Date;
8     import java.util.Locale;
9     import java.util.logging.Logger;
10    
11     import javax.servlet.ServletException;
12     import javax.servlet.http.HttpServlet;
13     import javax.servlet.http.HttpServletRequest;
14     import javax.servlet.http.HttpServletResponse;
15    
16     import net.spy.memcached.MemcachedClient;
17    
18     import com.gc.android.market.api.MarketSession;
19     import com.gc.android.market.api.model.Market.AppsRequest;
20     import com.gc.android.market.api.model.Market.CommentsRequest;
21    
22    
23 torben 664
24 torben 659 public class ShowStats extends HttpServlet {
25     private static final long serialVersionUID = 1L;
26    
27 torben 662 final int TIMEOUT = 30*60;
28 torben 659 static final Logger log = Logger.getLogger(ShowStats.class.getName());
29    
30     String login;
31     String password;
32 torben 667
33     MemcachedClient memcache = null;
34 torben 659
35    
36     @Override
37     public void init() throws ServletException {
38     super.init();
39    
40     login = getServletContext().getInitParameter("login");
41     password = getServletContext().getInitParameter("password");
42 torben 667
43     try {
44     memcache = new MemcachedClient(new InetSocketAddress("localhost", 11211));
45     } catch (IOException e) {
46     throw new ServletException(e);
47     }
48 torben 659 }
49    
50 torben 705 protected String doLookup(String query) throws IOException {
51 torben 667
52 torben 659
53 torben 759 String key = "marketstats:" + query.replace(' ', '_');
54 torben 667 String response = (String) memcache.get(key);
55 torben 659
56     if (response == null) {
57 torben 705 response = doLookupWorker(query);
58 torben 667 memcache.set(key, TIMEOUT, response);
59 torben 659 response += "<!-- new lookup -->";
60     } else {
61     response += "<!-- from memcached -->";
62     }
63     return response;
64     }
65 torben 663
66 torben 756 private void loadComments(String appId, MarketSession session, ArrayList<CommentBean> commentBeans) {
67 torben 663 CommentCallback commentsCb = new CommentCallback();
68     commentsCb.setList( commentBeans );
69 torben 659
70 torben 756 session.setLocale( Locale.ROOT );
71 torben 663
72    
73 torben 756
74 torben 663 int start = 0;
75     do {
76     int count = 10;
77     if (start > 0)
78     count = Math.min(10, commentsCb.getEntryCount() );
79    
80 torben 757 //log.warning("count=" + count + " start=" + start + " entryCount=" + commentsCb.getEntryCount() );
81 torben 663 CommentsRequest commentsRequest = CommentsRequest.newBuilder()
82     .setAppId(appId)
83     .setStartIndex(start)
84     .setEntriesCount(count)
85     .build();
86    
87     session.append(commentsRequest, commentsCb);
88     session.flush();
89     start +=10;
90    
91 torben 757 if (start >= 200)
92 torben 663 break; //emergency brake
93    
94     } while ( start < commentsCb.getEntryCount() );
95     }
96 torben 659
97 torben 663
98 torben 705 protected String doLookupWorker(String query) {
99 torben 659 final StringBuilder sb = new StringBuilder();
100    
101    
102     MarketSession session = new MarketSession();
103     session.login(login,password);
104    
105 torben 662
106 torben 659 AppsRequest appsRequest = AppsRequest.newBuilder()
107 torben 705 .setQuery(query)
108 torben 659 .setStartIndex(0).setEntriesCount(10)
109     .setWithExtendedInfo(true)
110     .build();
111    
112    
113 torben 663 AppsCallback appsCb = new AppsCallback() ;
114     appsCb.setStringBuffer(sb);
115 torben 659
116 torben 662 ArrayList<CommentBean> commentBeans = new ArrayList<CommentBean>();
117 torben 659
118    
119    
120     session.append(appsRequest, appsCb);
121     session.flush();
122 torben 705
123     String appId = appsCb.getAppId();
124    
125     if (appId != null) {
126 torben 662
127 torben 756 loadComments(appId, session, commentBeans);
128 torben 705
129     sb.append("-----------------------------------------------------------------\n");
130     for (CommentBean c : commentBeans) {
131 torben 756 sb.append("User: " + c.author + "\n");
132 torben 705 sb.append("Rating: " + c.rating + "\n");
133     sb.append("Time: " + new Date(c.time).toString() + "\n");
134     sb.append( c.text + "\n");
135     sb.append("\n");
136    
137     }
138     sb.append("Comments: " + commentBeans.size() + "\n");
139 torben 662 }
140 torben 705 sb.append("Cache.Timeout=" + TIMEOUT/60 + " minutes");
141 torben 662
142    
143 torben 659 return sb.toString();
144     }
145    
146     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
147 torben 705 String query = request.getParameter("query");
148 torben 662
149 torben 660 response.setContentType("text/html");
150 torben 659 PrintWriter out = response.getWriter();
151 torben 758 out.print( "<html><body><pre>" + doLookup(query) + "</pre></body></html>" );
152 torben 659 }
153    
154     }

  ViewVC Help
Powered by ViewVC 1.1.20