package jtweet.web; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jtweet.oauth.Utils; import freemarker.template.Template; import freemarker.template.TemplateException; import twitter4j.Query; import twitter4j.QueryResult; import twitter4j.Tweet; import twitter4j.TwitterException; @SuppressWarnings("serial") public class SearchServlet extends JTweetServlet { protected String s; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/html; charset=UTF-8"); s = req.getParameter("s"); if (isLogin(req)) { if (Utils.isEmptyOrNull(getPasswd())) { twitterOAuth(getAccessToken(), getAccessTokenSecret(), req); } else { init_twitter(getUsername(), getPasswd(), req); } if (s.length() > 0) { getSearch(req, resp); } else { resp.sendRedirect("/home"); return; } } else { redirectLogin(req, resp); } } protected void getSearch(HttpServletRequest req, HttpServletResponse resp) throws IOException { HashMap<String, Object> root = new HashMap<String, Object>(); freemarker.template.Configuration config = new freemarker.template.Configuration(); config.setDirectoryForTemplateLoading(new File("template")); config.setDefaultEncoding("UTF-8"); String p = req.getParameter("page"); int page = 1; if (p != null) { try { page = Integer.parseInt(p); } catch (NumberFormatException e) { page = 1; } } Query query = new Query(s); query.setPage(page); try { QueryResult result = twitter.search(query); List<Tweet> tweets = result.getTweets(); root.put("user", getTuser()); root.put("search", s); root.put("browser", browser); root.put("addjs", "/js/search.js"); root.put("rate", twitter.rateLimitStatus()); root.put("page", page); root.put("tweets", tweets); Template t = config.getTemplate("search.ftl"); t.process(root, resp.getWriter()); } catch (TwitterException e) { // TODO Auto-generated catch block resp.sendError(e.getStatusCode()); e.printStackTrace(); } catch (TemplateException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }