src/main/java/de/uapcore/lightpit/modules/LanguageModule.java

changeset 184
e8eecee6aadf
parent 183
61669abf277f
child 185
5ec9fcfbdf9c
--- a/src/main/java/de/uapcore/lightpit/modules/LanguageModule.java	Sat Jan 23 14:47:59 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 2021 Mike Becker. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *   1. Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.
- *
- *   2. Redistributions in binary form must reproduce the above copyright
- *      notice, this list of conditions and the following disclaimer in the
- *      documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- */
-package de.uapcore.lightpit.modules;
-
-import de.uapcore.lightpit.AbstractServlet;
-import de.uapcore.lightpit.Constants;
-import de.uapcore.lightpit.HttpMethod;
-import de.uapcore.lightpit.RequestMapping;
-import de.uapcore.lightpit.viewmodel.LanguageView;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.servlet.ServletException;
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.*;
-
-@WebServlet(
-        name = "LanguageModule",
-        urlPatterns = "/language/*"
-)
-public final class LanguageModule extends AbstractServlet {
-
-    private static final Logger LOG = LoggerFactory.getLogger(LanguageModule.class);
-
-    private final List<Locale> languages = new ArrayList<>();
-
-    @Override
-    public void init() throws ServletException {
-        super.init();
-
-        Optional<String[]> langs = availableLanguages();
-        if (langs.isPresent()) {
-            for (String lang : langs.get()) {
-                try {
-                    Locale locale = Locale.forLanguageTag(lang);
-                    if (locale.getLanguage().isEmpty()) {
-                        throw new IllformedLocaleException();
-                    }
-                    languages.add(locale);
-                } catch (IllformedLocaleException ex) {
-                    LOG.warn("Specified language {} in context parameter cannot be mapped to an existing locale - skipping.", lang);
-                }
-            }
-
-        } else {
-            languages.add(Locale.ENGLISH);
-            LOG.warn("Context parameter 'available-languages' not found. Only english will be available.");
-        }
-    }
-
-    @Override
-    public void destroy() {
-        super.destroy();
-        languages.clear();
-    }
-
-    @RequestMapping(method = HttpMethod.GET)
-    public void handle(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
-        final var viewModel = new LanguageView();
-        viewModel.setLanguages(languages);
-        viewModel.setBrowserLanguage(req.getLocale());
-        viewModel.setCurrentLanguage((Locale)req.getSession().getAttribute(Constants.SESSION_ATTR_LANGUAGE));
-
-        setViewModel(req, viewModel);
-        setStylesheet(req, "language");
-        setContentPage(req, "language");
-
-        renderSite(req, resp);
-    }
-
-    @RequestMapping(method = HttpMethod.POST)
-    public void switchLanguage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
-        Optional<Locale> chosenLanguage = Optional.ofNullable(req.getParameter("language"))
-                .map(Locale::forLanguageTag)
-                .filter((l) -> !l.getLanguage().isEmpty());
-
-        chosenLanguage.ifPresent((l) -> req.getSession().setAttribute(Constants.SESSION_ATTR_LANGUAGE, l));
-        chosenLanguage.ifPresent(resp::setLocale);
-
-        handle(req, resp);
-    }
-}

mercurial