0

Init project

This commit is contained in:
2015-12-01 22:39:00 +00:00
commit 0478fac0da
35 changed files with 1239 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
package kinosearch.webapp.servlets;
import kinosearch.core.Kino;
import kinosearch.core.Tools;
import kinosearch.webapp.WebApp;
import kinosearch.webapp.template.TemplateProcessor;
import kinosearch.core.warez.KinoWarez;
import kinosearch.core.warez.Onlinelife;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 3242992839104315456L;
private TemplateProcessor template;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
template = WebApp.getTemplateProcessor();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, Object> model = new HashMap<>();
model.put(".templatedir", getServletContext().getRealPath("WEB-INF"));
model.put("basedir", getServletContext().getContextPath());
model.put("version", Tools.VERSION);
model.put("rutext", "Поиск кино по пиратским кинотеатрам");
if (request.getParameter("search") != null && !request.getParameter("search").trim().isEmpty()) {
search(request.getParameter("search"), model);
}
response.setCharacterEncoding("UTF-8");
try {
template.process("index.html", model, response.getWriter());
} catch (IOException e) {
log("Error process template", e);
response.sendError(500);
}
}
private void search(String search, Map<String, Object> model) {
List<Kino> list = Collections.synchronizedList(new LinkedList<>());
Set<KinoWarez> kinoWarezSet = Tools.getKinoWarezSet();
ThreadGroup threadGroup = new ThreadGroup("");
for (KinoWarez kinoWarez : kinoWarezSet) { //TODO на будущее надо ограничить количество одновременных потоков
new Thread(threadGroup, () -> {
kinoWarez.search(search, list);
}).start();
}
// ждем максимум 15 секунд
//FIXME надо бы убивать потоки, которые не успели найти контент
for (int i = 0; i < 15 && threadGroup.activeCount() > 0; i++) {
// System.err.println("wait("+(i+1)+")..."); //DEBUG
Tools.SafeSleep(1000);
}
model.put("searchtext", search);
model.put("resultsearch", list);
}
@Override
public void log(String message, Throwable t) {
super.log(message, t);
}
}