35 |
35 |
36 import javax.servlet.ServletException; |
36 import javax.servlet.ServletException; |
37 import javax.servlet.annotation.WebServlet; |
37 import javax.servlet.annotation.WebServlet; |
38 import javax.servlet.http.HttpServletRequest; |
38 import javax.servlet.http.HttpServletRequest; |
39 import javax.servlet.http.HttpServletResponse; |
39 import javax.servlet.http.HttpServletResponse; |
|
40 import java.io.IOException; |
40 import java.util.*; |
41 import java.util.*; |
41 |
42 |
42 @WebServlet( |
43 @WebServlet( |
43 name = "LanguageModule", |
44 name = "LanguageModule", |
44 urlPatterns = "/language/*" |
45 urlPatterns = "/language/*" |
83 super.destroy(); |
84 super.destroy(); |
84 languages.clear(); |
85 languages.clear(); |
85 } |
86 } |
86 |
87 |
87 @RequestMapping(method = HttpMethod.GET) |
88 @RequestMapping(method = HttpMethod.GET) |
88 public ResponseType handle(HttpServletRequest req) { |
89 public void handle(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { |
89 |
90 |
90 final var viewModel = new LanguageView(); |
91 final var viewModel = new LanguageView(); |
91 viewModel.setLanguages(languages); |
92 viewModel.setLanguages(languages); |
92 viewModel.setBrowserLanguage(req.getLocale()); |
93 viewModel.setBrowserLanguage(req.getLocale()); |
93 viewModel.setCurrentLanguage((Locale)req.getSession().getAttribute(Constants.SESSION_ATTR_LANGUAGE)); |
94 viewModel.setCurrentLanguage((Locale)req.getSession().getAttribute(Constants.SESSION_ATTR_LANGUAGE)); |
94 |
95 |
95 setViewModel(req, viewModel); |
96 setViewModel(req, viewModel); |
96 setStylesheet(req, "language"); |
97 setStylesheet(req, "language"); |
97 setContentPage(req, "language"); |
98 setContentPage(req, "language"); |
98 return ResponseType.HTML; |
99 |
|
100 renderSite(req, resp); |
99 } |
101 } |
100 |
102 |
101 @RequestMapping(method = HttpMethod.POST) |
103 @RequestMapping(method = HttpMethod.POST) |
102 public ResponseType switchLanguage(HttpServletRequest req, HttpServletResponse resp) { |
104 public void switchLanguage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { |
103 |
105 |
104 Optional<Locale> chosenLanguage = Optional.ofNullable(req.getParameter("language")) |
106 Optional<Locale> chosenLanguage = Optional.ofNullable(req.getParameter("language")) |
105 .map(Locale::forLanguageTag) |
107 .map(Locale::forLanguageTag) |
106 .filter((l) -> !l.getLanguage().isEmpty()); |
108 .filter((l) -> !l.getLanguage().isEmpty()); |
107 |
109 |
108 chosenLanguage.ifPresent((l) -> req.getSession().setAttribute(Constants.SESSION_ATTR_LANGUAGE, l)); |
110 chosenLanguage.ifPresent((l) -> req.getSession().setAttribute(Constants.SESSION_ATTR_LANGUAGE, l)); |
109 chosenLanguage.ifPresent(resp::setLocale); |
111 chosenLanguage.ifPresent(resp::setLocale); |
110 |
112 |
111 return handle(req); |
113 handle(req, resp); |
112 } |
114 } |
113 } |
115 } |