Fri, 23 Oct 2020 18:40:50 +0200
migrate WebColor
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2018 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.*; import de.uapcore.lightpit.dao.DataAccessObjects; import de.uapcore.lightpit.entities.User; import de.uapcore.lightpit.viewmodel.UsersEditView; import de.uapcore.lightpit.viewmodel.UsersView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import java.sql.SQLException; import java.util.NoSuchElementException; @WebServlet( name = "UsersModule", urlPatterns = "/teams/*" ) public final class UsersModule extends AbstractLightPITServlet { private static final Logger LOG = LoggerFactory.getLogger(UsersModule.class); @Override protected String getResourceBundleName() { return "localization.users"; } @RequestMapping(method = HttpMethod.GET) public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException { final var userDao = dao.getUserDao(); final var viewModel = new UsersView(); viewModel.setUsers(userDao.list()); setViewModel(req, viewModel); setContentPage(req, "users"); return ResponseType.HTML; } @RequestMapping(requestPath = "edit", method = HttpMethod.GET) public ResponseType edit(HttpServletRequest req, DataAccessObjects dao) throws SQLException { final var viewModel = new UsersEditView(); viewModel.setUser(findByParameter(req, Integer.class, "id", dao.getUserDao()::find).orElse(new User(-1))); setViewModel(req, viewModel); setContentPage(req, "user-form"); return ResponseType.HTML; } @RequestMapping(requestPath = "commit", method = HttpMethod.POST) public ResponseType commit(HttpServletRequest req, DataAccessObjects dao) { User user = new User(-1); try { user = new User(getParameter(req, Integer.class, "userid").orElseThrow()); user.setUsername(getParameter(req, String.class, "username").orElseThrow()); getParameter(req, String.class, "givenname").ifPresent(user::setGivenname); getParameter(req, String.class, "lastname").ifPresent(user::setLastname); getParameter(req, String.class, "mail").ifPresent(user::setMail); dao.getUserDao().saveOrUpdate(user); setRedirectLocation(req, "./teams/"); setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); LOG.debug("Successfully updated user {}", user.getUsername()); } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) { final var viewModel = new UsersEditView(); viewModel.setUser(user); // TODO: viewModel.setErrorText() setViewModel(req, viewModel); setContentPage(req, "user-form"); LOG.warn("Form validation failure: {}", ex.getMessage()); LOG.debug("Details:", ex); } return ResponseType.HTML; } }