universe@184: /* universe@184: * Copyright 2021 Mike Becker. All rights reserved. universe@184: * universe@184: * Redistribution and use in source and binary forms, with or without universe@184: * modification, are permitted provided that the following conditions are met: universe@184: * universe@184: * 1. Redistributions of source code must retain the above copyright universe@184: * notice, this list of conditions and the following disclaimer. universe@184: * universe@184: * 2. Redistributions in binary form must reproduce the above copyright universe@184: * notice, this list of conditions and the following disclaimer in the universe@184: * documentation and/or other materials provided with the distribution. universe@184: * universe@184: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" universe@184: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE universe@184: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE universe@184: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE universe@184: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL universe@184: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR universe@184: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER universe@184: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, universe@184: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE universe@184: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. universe@184: */ universe@184: universe@184: package de.uapcore.lightpit.servlet universe@184: universe@184: import de.uapcore.lightpit.AbstractServlet universe@184: import de.uapcore.lightpit.Constants universe@184: import de.uapcore.lightpit.HttpRequest universe@184: import de.uapcore.lightpit.dao.DataAccessObject universe@184: import de.uapcore.lightpit.viewmodel.LanguageView universe@184: import java.util.* universe@184: import javax.servlet.annotation.WebServlet universe@184: universe@184: @WebServlet(urlPatterns = ["/language/*"]) universe@184: class LanguageServlet : AbstractServlet() { universe@184: universe@184: init { universe@184: get("/", this::viewLanguages) universe@184: post("/", this::selectLanguage) universe@184: } universe@184: universe@184: private fun viewLanguages(http: HttpRequest, dao: DataAccessObject) { universe@184: with(http) { universe@184: view = LanguageView( universe@184: availableLanguages(), universe@184: session.getAttribute(Constants.SESSION_ATTR_LANGUAGE) as Locale, universe@184: request.locale universe@184: ) universe@184: styleSheets = listOf("language") universe@184: render("language") universe@184: } universe@184: } universe@184: universe@184: private fun selectLanguage(http: HttpRequest, dao: DataAccessObject) { universe@184: val lang = http.param("language") universe@184: if (lang != null) { universe@184: val locale = Locale.forLanguageTag(lang) universe@184: if (!locale.language.isNullOrBlank()) { universe@184: http.response.locale = locale universe@184: http.session.setAttribute(Constants.SESSION_ATTR_LANGUAGE, locale) universe@184: } universe@184: } universe@184: universe@184: viewLanguages(http, dao) universe@184: } universe@184: universe@184: }