package com.ringtone.server; import java.io.IOException; import javax.jdo.PersistenceManager; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.appengine.repackaged.org.json.JSONArray; import java.util.HashMap; import java.util.List; import java.util.Map; public class SearchServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String isJson = req.getParameter(Const.JSON); String key = req.getParameter(Const.QUERY); String startStr = req.getParameter(Const.START); String type = req.getParameter(Const.TYPE); int start = 0; if (startStr != null) { start = Integer.parseInt(startStr); } List<SongEntry> searchResults = null; if (type == null) { searchResults = SearchUtils.getResultsByKeyword(key, start); } else if (type.equalsIgnoreCase(Const.CATEGORY)) { searchResults = SearchUtils.getResultsByCategory(key, start); } else if (type.equalsIgnoreCase(Const.DOWNLOAD_COUNT)) { searchResults = SearchUtils.getResultsByDownloadCount(start); } else if (type.equalsIgnoreCase(Const.ADD_DATE)) { searchResults = SearchUtils.getResultsByDate(start); } else if (type.equalsIgnoreCase(Const.ARTIST)) { searchResults = SearchUtils.getResultsByArtist(key, start); } JSONArray jsonArray = new JSONArray(); for (SongEntry songEntry : searchResults) { Map<String, String> songMap = new HashMap<String, String>(); songMap.put(Const.UUID, songEntry.getUuid()); songMap.put(Const.TITILE, songEntry.getTitle()); songMap.put(Const.ARTIST, songEntry.getArtist()); songMap.put(Const.CATEGORY, songEntry.getCategory()); songMap.put(Const.AVG_RATE, Float.toString(songEntry.getAvg_rate())); songMap.put(Const.DOWNLOAD_COUNT, Integer.toString(songEntry.getDownload_count())); songMap.put(Const.SIZE, Integer.toString((int)songEntry.getSize())); songMap.put(Const.IMAGE, songEntry.getImage()); songMap.put(Const.S3URL, songEntry.getS3_url()); jsonArray.put(songMap); } DebugUtils.D("results size: "+searchResults.size()); if (start==0 && type==null) { QueryUtils.insertQuery(key, searchResults.size()); } String response = null; response = jsonArray.toString(); resp.getOutputStream().write(response.getBytes()); resp.flushBuffer(); } }