Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package controller;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.security.NoSuchAlgorithmException;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import javax.servlet.RequestDispatcher;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import domain.Person;
- import domain.PersonService;
- import domain.Product;
- import domain.ProductService;
- import enums.FormServletActions;
- import enums.Pages;
- import exceptions.DomainException;
- @WebServlet("/ShopController")
- public class ShopController extends HttpServlet {
- private static final long serialVersionUID = 1L;
- private PersonService personService;
- private ProductService productService;
- public ShopController() {
- super();
- personService = new PersonService();
- productService = new ProductService();
- }
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- processRequest(request, response);
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- processRequest(request, response);
- }
- private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String action = request.getParameter("action");
- if(action == null || action.isEmpty()){
- System.out.println("Something went wrong with the action.");
- System.out.println(action);
- }
- else {
- if(action.equals(FormServletActions.index.toString()))
- gotoIndexPage(request, response);
- else if(action.equals(FormServletActions.usersOverview.toString()))
- gotoUsersOverviewPage(request, response);
- else if(action.equals(FormServletActions.signUp.toString()))
- gotoSignUpPage(request, response);
- else if(action.equals(FormServletActions.signUpForm.toString()))
- signUpFormAddNewUser(request, response);
- else if(action.equals(FormServletActions.productsOverview.toString()))
- gotoProductOverviewPage(request, response);
- else if(action.equals(FormServletActions.gotoAddProductsForm.toString()))
- gotoAddProductsFormPage(request, response);
- else if(action.equals(FormServletActions.addProductsForm.toString()))
- productFormAddNewProduct(request, response);
- else if(action.equals(FormServletActions.updateProduct.toString()))
- updateProduct(request, response);
- else if(action.equals(FormServletActions.updateProductWithGivenId.toString()))
- updateProduct(request, response);
- else if(action.equals(FormServletActions.deleteProductWithGivenId.toString()))
- gotoDeleteProduct(request, response);
- else if(action.equals(FormServletActions.deleteProductForm.toString()))
- deleteProduct(request, response);
- else if(action.equals(FormServletActions.updateProductValid.toString()))
- updateProductValid(request, response);
- else if(action.equals(FormServletActions.cancelProductDeletion.toString()))
- gotoProductOverviewPage(request, response);
- else if(action.equals(FormServletActions.deletePersonWithGivenId.toString()))
- deletePerson(request, response);
- else if(action.equals(FormServletActions.cancelPersonDeletion.toString()))
- gotoUsersOverviewPage(request, response);
- else if(action.equals(FormServletActions.deletePersonForm.toString()))
- deletePersonValid(request, response);
- else
- System.out.println("Nothing works, try again.");
- }
- }
- private void gotoIndexPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- RequestDispatcher view = request.getRequestDispatcher(Pages.indexPage.toString());
- view.forward(request, response);
- }
- private void gotoUsersOverviewPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- try {
- request.setAttribute("persons", personService.getAllAsList());
- } catch (SQLException | NoSuchAlgorithmException | DomainException e) {
- errors.add(e.getMessage());
- }
- request.setAttribute("errors", errors);
- RequestDispatcher view = request.getRequestDispatcher(Pages.usersOverviewPage.toString());
- view.forward(request, response);
- }
- private void gotoSignUpPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- RequestDispatcher view = request.getRequestDispatcher(Pages.signUpPage.toString());
- view.forward(request, response);
- }
- private void gotoProductOverviewPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- try {
- request.setAttribute("products", productService.getAllAsList());
- } catch (NumberFormatException | SQLException | DomainException e) {
- errors.add(e.getMessage());
- }
- request.setAttribute("errors", errors);
- RequestDispatcher view = request.getRequestDispatcher(Pages.productsOverviewPage.toString());
- view.forward(request, response);
- }
- private void gotoAddProductsFormPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- RequestDispatcher view = request.getRequestDispatcher(Pages.addProductsFormPage.toString());
- view.forward(request, response);
- }
- private void signUpFormAddNewUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- String userId = request.getParameter("email");
- request.setAttribute("email", userId);
- String password = request.getParameter("password");
- request.setAttribute("password", password);
- String firstName = request.getParameter("firstName");
- request.setAttribute("firstName", firstName);
- String lastName = request.getParameter("lastName");
- request.setAttribute("lastName", lastName);
- errors = createNewUser(userId, password, firstName, lastName, errors);
- request.setAttribute("errors", errors);
- if(errors.size() > 0)
- gotoSignUpPage(request, response);
- else
- gotoIndexPage(request, response);
- }
- private List<String> createNewUser(String userId, String password, String firstName, String lastName, List<String> errors){
- Person person = new Person();
- try{
- person.setUserId(userId);
- }catch(IllegalArgumentException e){
- errors.add(e.getMessage());
- }
- try{
- person.setPassword(password);
- }catch(IllegalArgumentException | NoSuchAlgorithmException | UnsupportedEncodingException | DomainException e){
- errors.add(e.getMessage());
- }
- try{
- person.setFirstName(firstName);
- }catch(IllegalArgumentException e){
- errors.add(e.getMessage());
- }
- try{
- person.setLastName(lastName);
- }catch(IllegalArgumentException e){
- errors.add(e.getMessage());
- }
- if(errors.isEmpty())
- try {
- personService.addPerson(person);
- } catch (IllegalArgumentException | SQLException | NoSuchAlgorithmException | UnsupportedEncodingException | DomainException e) {
- errors.add(e.getMessage());
- }
- return errors;
- }
- private void productFormAddNewProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- String description = null;
- double price = 0;
- if(request.getParameterMap().containsKey("description")){
- description = request.getParameter("description");
- request.setAttribute("description", description);
- }
- if(request.getParameterMap().containsKey("price")){
- try{
- price = Double.parseDouble(request.getParameter("price"));
- request.setAttribute("price", price);
- } catch(NumberFormatException e){
- errors.add("Give a valid number");
- }
- }
- errors = createNewProduct(description, price, errors);
- request.setAttribute("errors", errors);
- if(errors.size() > 0)
- gotoAddProductsFormPage(request, response);
- else
- gotoProductOverviewPage(request, response);
- }
- private List<String> createNewProduct(String description, double price, List<String> errors){
- Product product = new Product();
- try{
- product.setId(productService.getNewIdToUseForNewProduct());
- }catch(DomainException | NumberFormatException | SQLException e){
- errors.add(e.getMessage());
- }
- try{
- product.setDescription(description);
- }catch(DomainException e){
- errors.add(e.getMessage());
- }
- try{
- product.setPrice(price);
- }catch(DomainException e){
- errors.add(e.getMessage());
- }
- if(errors.isEmpty()){
- try {
- productService.addProduct(product);
- } catch (DomainException | NumberFormatException | SQLException e) {
- errors.add(e.getMessage());
- }
- }
- return errors;
- }
- private void updateProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- Product product = null;
- int id = 0;
- if(request.getParameterMap().containsKey("id")){
- try{
- id = Integer.parseInt(request.getParameter("id"));
- }catch(NumberFormatException e){
- errors.add("Fill in a valid number, it may not be left empty.");
- }
- } else {
- try{
- id = Integer.parseInt(request.getParameter("updateProductID"));
- request.setAttribute("updateProductID", request.getParameter("updateProductID"));
- } catch(NumberFormatException e){
- errors.add("The id may not be empty");
- }
- }
- try {
- product = productService.getProduct(id);
- } catch (DomainException | SQLException e) {
- errors.add(e.getMessage());
- }
- if(product == null){
- errors.add("The given id is out of range.");
- request.setAttribute("errors", errors);
- gotoProductOverviewPage(request, response);
- }
- else{
- request.setAttribute("errors", errors);
- gotoProductUpdatePage(request, response, product);
- }
- }
- private void gotoProductUpdatePage(HttpServletRequest request, HttpServletResponse response, Product product) throws ServletException, IOException {
- request.setAttribute("id", product.getId());
- request.setAttribute("description", product.getDescription());
- request.setAttribute("price", product.getPrice());
- RequestDispatcher view = request.getRequestDispatcher(Pages.updateProductPage.toString());
- view.forward(request, response);
- }
- private void gotoDeleteProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- if(request.getParameterMap().containsKey("id")){
- Product product = null;
- try {
- product = productService.getProduct(Integer.parseInt(request.getParameter("id")));
- } catch (NumberFormatException | DomainException | SQLException e) {
- errors.add(e.getMessage());
- }
- if(product != null){
- request.setAttribute("id", product.getId());
- request.setAttribute("description", product.getDescription());
- request.setAttribute("price", product.getPrice());
- request.setAttribute("errors", errors);
- gotoDeleteProductPage(request, response);
- } else {
- gotoProductOverviewPage(request, response);
- }
- } else {
- errors.add("Something went wrong.");
- request.setAttribute("errors", errors);
- gotoUsersOverviewPage(request, response);
- }
- }
- private void gotoDeleteProductPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- RequestDispatcher view = request.getRequestDispatcher(Pages.deleteProductPage.toString());
- view.forward(request, response);
- }
- private void deleteProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- if(request.getParameterMap().containsKey("id")){
- try {
- productService.delete(Integer.parseInt(request.getParameter("id")));
- } catch (NumberFormatException | DomainException | SQLException e) {
- errors.add(e.getMessage());
- }
- request.setAttribute("errors", errors);
- gotoProductOverviewPage(request, response);
- } else {
- errors.add("Something went super wrong, system is broken :)");
- request.setAttribute("errors", errors);
- gotoDeleteProductPage(request, response);
- }
- }
- private void updateProductValid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- Product product = new Product();
- if(request.getParameterMap().containsKey("id")){
- try{
- product.setId(Integer.parseInt(request.getParameter("id")));
- }catch(DomainException e){
- errors.add(e.getMessage());
- }
- try{
- product.setDescription(request.getParameter("description"));
- }catch(DomainException e){
- errors.add(e.getMessage());
- }
- try{
- product.setPrice(Double.parseDouble(request.getParameter("price")));
- }catch(DomainException e){
- errors.add(e.getMessage());
- }
- if(errors.isEmpty()){
- try {
- productService.addProduct(product);
- } catch (DomainException | NumberFormatException | SQLException e) {
- errors.add(e.getMessage());
- }
- }
- request.setAttribute("errors", errors);
- gotoProductOverviewPage(request, response);
- } else {
- request.setAttribute("errors", errors);
- gotoProductUpdatePage(request, response, product);
- }
- }
- private void deletePerson(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- Person person = null;
- if(request.getParameterMap().containsKey("id")){
- try {
- person = personService.getPerson(request.getParameter("id"));
- } catch (SQLException | NoSuchAlgorithmException | DomainException e) {
- errors.add(e.getMessage());
- }
- request.setAttribute("errors", errors);
- request.setAttribute("person", person);
- gotoDeletePersonPage(request, response);
- } else {
- errors.add("Please give a valid id, or chose another person.");
- request.setAttribute("errors", errors);
- gotoUsersOverviewPage(request, response);
- }
- }
- private void gotoDeletePersonPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- RequestDispatcher view = request.getRequestDispatcher(Pages.deletePersonPage.toString());
- view.forward(request, response);
- }
- private void deletePersonValid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- List<String> errors = new ArrayList<String>();
- if(request.getParameterMap().containsKey("id")){
- try {
- personService.deletePerson(request.getParameter("id"));
- } catch (SQLException e) {
- errors.add(e.getMessage());
- }
- gotoUsersOverviewPage(request, response);
- } else {
- errors.add("Something went wrong while deleting this user");
- request.setAttribute("errors", errors);
- gotoDeletePersonPage(request, response);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment