package ua.sergiishapoval.carrental.controller; import org.apache.commons.beanutils.BeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ua.sergiishapoval.carrental.command.Command; import ua.sergiishapoval.carrental.command.CommandFactory; import ua.sergiishapoval.carrental.dao.DaoInitDestroy; import ua.sergiishapoval.carrental.dao.DaoFactory; import ua.sergiishapoval.carrental.model.User; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; import java.util.Locale; import java.util.Map; /** * Created by Сергей on 26.12.2014. */ //@WebServlet(name = "MainServlet", urlPatterns = "/*", loadOnStartup = 1) public class MainServlet extends HttpServlet { private Logger logger = LoggerFactory.getLogger(MainServlet.class); @Override public void init() throws ServletException { try { DaoInitDestroy daoInitDestroy = DaoFactory.getDaoInitDestroy(); daoInitDestroy.initDB(); } catch (SQLException e) { logger.error("DBError", e); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Command command = CommandFactory.createCommand(request); command.execute(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { clearSessionInvalidUser(request); setLocale(request); autorizeByCookies(request); Command command = CommandFactory.createCommand(request); command.execute(request, response); } private void autorizeByCookies(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); if (cookies!= null && cookies.length > 1) { Map<String, String> userMap = new HashMap<>(); for (Cookie cookie : cookies) { userMap.put(cookie.getName(), cookie.getValue()); } User user = new User(); try { BeanUtils.populate(user, userMap); } catch (ReflectiveOperationException e) { logger.error("BeanUtilsError", e); } request.getSession().setAttribute("user", user); } } private void setLocale(HttpServletRequest request) { if (request.getSession().getAttribute("lang_id") == null){ String language = request.getLocale().getLanguage(); switch (language.toLowerCase()){ case "ru": break; default:language = "en"; } request.getSession().setAttribute("lang_id", language ); Locale locale = new Locale(language); Locale.setDefault(locale); } } private void clearSessionInvalidUser(HttpServletRequest request) { if (request.getSession().getAttribute("userError") != null) { request.getSession().removeAttribute("user"); request.getSession().removeAttribute("auth"); request.getSession().removeAttribute("userError"); } } @Override public void destroy() { try { DaoInitDestroy daoInitDestroy = DaoFactory.getDaoInitDestroy(); daoInitDestroy.destroyDB(); } catch (SQLException e) { logger.error("DBError", e); } } }