--- android/MarketStats/src/dk/thoerup/marketstats/ShowStats.java 2010/07/05 08:18:02 950 +++ android/MarketStats/src/dk/thoerup/marketstats/ShowStats.java 2010/08/12 10:01:24 1016 @@ -8,6 +8,7 @@ import java.util.logging.Logger; import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -19,7 +20,7 @@ import com.gc.android.market.api.model.Market.CommentsRequest; - +@WebServlet(urlPatterns={"/ShowStats"}) public class ShowStats extends HttpServlet { private static final long serialVersionUID = 1L; @@ -57,7 +58,7 @@ memcache = null; } - protected AppBean doLookup(String query) throws IOException { + protected AppBean lookupApp(String query) throws IOException { String key = "marketstats:" + query.replace(' ', '_'); @@ -65,13 +66,33 @@ AppBean response = (AppBean) memcache.get(key); if (response == null) { - response = doLookupWorker(query); + response = lookupAppWorker(query); if (response != null) { memcache.set(key, APP_TIMEOUT, response); } } return response; } + + protected AppBean lookupAppWorker(String query) { + + MarketSession session = new MarketSession(); + session.login(login,password); + + + AppsRequest appsRequest = AppsRequest.newBuilder() + .setQuery(query) + .setStartIndex(0) + .setEntriesCount(1) + .setWithExtendedInfo(true) + .build(); + + AppsCallback appsCb = new AppsCallback(); + session.append(appsRequest, appsCb); + session.flush(); + + return appsCb.getResult().get(0); + } CommentsRequest buildCommentRequest(String appId, int start, int count) { CommentsRequest commentsRequest = CommentsRequest.newBuilder() @@ -103,16 +124,14 @@ count = Math.min(10, commentsCb.getEntryCount() ); //log.warning("count=" + count + " start=" + start + " entryCount=" + commentsCb.getEntryCount() ); - CommentsRequest commentsRequest = buildCommentRequest(appId,start,count); - session.append(commentsRequest, commentsCb); - start +=10; + for (int i=0; i<5;i++) { + CommentsRequest commentsRequest = buildCommentRequest(appId,start,count); + session.append(commentsRequest, commentsCb); + start +=10; + } - CommentsRequest commentsRequest2 = buildCommentRequest(appId,start,count); - session.append(commentsRequest2, commentsCb); session.flush(); - - start +=10; - + if (start >= MAXCOMMENTS) break; //emergency brake @@ -122,28 +141,8 @@ } - - protected AppBean doLookupWorker(String query) { - final StringBuilder sb = new StringBuilder(); - - - MarketSession session = new MarketSession(); - session.login(login,password); - - - AppsRequest appsRequest = AppsRequest.newBuilder() - .setQuery(query) - .setStartIndex(0).setEntriesCount(10) - .setWithExtendedInfo(true) - .build(); - - AppsCallback appsCb = new AppsCallback(); - session.append(appsRequest, appsCb); - session.flush(); - - return appsCb.getResult(); - } + @SuppressWarnings("unchecked") public ArrayList getComments(AppBean app) { String key = "marketstats:comments:" + app.getId(); ArrayList comments = (ArrayList) memcache.get(key); @@ -156,9 +155,11 @@ } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String query = request.getParameter("query"); + String query = "pname:" + request.getParameter("app"); + + request.setAttribute("extended", request.getParameter("extended")); - AppBean app = doLookup(query); + AppBean app = lookupApp(query); if (app != null) { request.setAttribute("app", app);