/** TwitStreet - Twitter Stock Market Game Copyright (C) 2012 Engin Guller (bisanthe@gmail.com), Cagdas Ozek (cagdasozek@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. **/ package com.twitstreet.servlet; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import javax.inject.Inject; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import com.google.inject.Singleton; import com.twitstreet.config.ConfigMgr; import com.twitstreet.db.data.Group; import com.twitstreet.main.Twitstreet; import com.twitstreet.market.PortfolioMgr; import com.twitstreet.market.StockMgr; import com.twitstreet.session.GroupMgr; import com.twitstreet.twitter.TwitterProxyFactory; @SuppressWarnings("serial") @Singleton public class GetGroupServlet extends TwitStreetServlet { @Inject GroupMgr groupMgr; @Inject Twitstreet twitstreet; @Inject ConfigMgr configMgr; @Inject StockMgr stockMgr; @Inject TwitterProxyFactory twitterProxyFactory = null; @Inject PortfolioMgr portfolioMgr = null; public static final String RESULT = "result"; public static final String REASON = "reason"; public static final String GET_GROUP_PARAM = "getgroup"; public static final String GET_GROUP = "getgroup"; public static final String GET_GROUP_TEXT = "getUserText"; public static final String GET_GROUP_DISPLAY = "getUserDisplay"; public static final String GROUP_NOT_FOUND = "user-not-found"; public static final String GET_GROUP_OTHER_SEARCH_RESULTS = "getUserOtherSearchResults"; ArrayList<Group> searchResultGroups = new ArrayList<Group>(); private static Logger logger = Logger.getLogger(GetGroupServlet.class); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1 response.setHeader("Pragma", "no-cache"); // HTTP 1.0 response.setDateHeader("Expires", 0); // prevents caching at the proxy // server searchResultGroups = new ArrayList<Group>(); request.setAttribute("title", "twitstreet - Twitter stock market game"); request.setAttribute("meta-desc", "Twitstreet is a twitter stock market game. You buy / sell follower of twitter users in this game. If follower count increases you make profit. To make most money, try to find people who will be popular in near future. A new season begins first day of every month."); long start = 0; long end = 0; start = System.currentTimeMillis(); if (!twitstreet.isInitialized()) { return; } loadUser(request); // loadUserFromCookie(request); String searchText = (String) request.getParameter(GET_GROUP_PARAM); queryGroupFromDB(searchText); searchResultGroups.removeAll(Collections.singleton(null)); end = System.currentTimeMillis(); long seconds = (end - start)/1000; if(seconds>2){ logger.info("queryGroup: " +(end - start)+" milliseconds"); }else{ logger.debug("queryGroup: " +(end - start)+" milliseconds"); } Group group = null; if (searchResultGroups.size() > 0) { group = searchResultGroups.remove(0); } request.setAttribute(GET_GROUP, group.getName()); request.setAttribute(HomePageServlet.GROUP, group); request.setAttribute(GET_GROUP_OTHER_SEARCH_RESULTS, searchResultGroups); request.setAttribute(HomePageServlet.SELECTED_TAB_GROUP_BAR, "group-details-tab"); if (group != null) { request.setAttribute(GetGroupServlet.GET_GROUP_DISPLAY, group.getName()); } request.setAttribute(GET_GROUP_TEXT, searchText); getServletContext().getRequestDispatcher("/WEB-INF/jsp/groupsContent.jsp").forward(request, response); } public void queryGroupFromDB(String searchText) throws ServletException, IOException { searchResultGroups.addAll(groupMgr.searchGroup(searchText)); } }