Hellboyandso

RequestHandler

Jan 14th, 2016
626
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.99 KB | None | 0 0
  1. package controller;
  2.  
  3. import java.io.IOException;
  4. import java.io.UnsupportedEncodingException;
  5. import java.security.NoSuchAlgorithmException;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import javax.servlet.RequestDispatcher;
  10. import javax.servlet.ServletException;
  11. import javax.servlet.annotation.WebServlet;
  12. import javax.servlet.http.HttpServlet;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15.  
  16. import domain.Person;
  17. import domain.PersonService;
  18. import domain.Product;
  19. import domain.ProductService;
  20. import enums.FormServletActions;
  21. import enums.Pages;
  22. import exceptions.DomainException;
  23.  
  24. @WebServlet("/ShopController")
  25. public class ShopController extends HttpServlet {
  26.     private static final long serialVersionUID = 1L;
  27.     private PersonService personService;
  28.     private ProductService productService;
  29.    
  30.     public ShopController() {
  31.         super();
  32.         personService = new PersonService();
  33.         productService = new ProductService();
  34.     }
  35.  
  36.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  37.         processRequest(request, response);
  38.     }
  39.  
  40.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  41.         processRequest(request, response);
  42.     }
  43.    
  44.     private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  45.         String action = request.getParameter("action");
  46.         if(action == null || action.isEmpty()){
  47.             System.out.println("Something went wrong with the action.");
  48.             System.out.println(action);
  49.         }
  50.         else {
  51.             if(action.equals(FormServletActions.index.toString()))
  52.                 gotoIndexPage(request, response);
  53.             else if(action.equals(FormServletActions.usersOverview.toString()))
  54.                 gotoUsersOverviewPage(request, response);
  55.             else if(action.equals(FormServletActions.signUp.toString()))
  56.                 gotoSignUpPage(request, response);
  57.             else if(action.equals(FormServletActions.signUpForm.toString()))
  58.                 signUpFormAddNewUser(request, response);
  59.             else if(action.equals(FormServletActions.productsOverview.toString()))
  60.                 gotoProductOverviewPage(request, response);
  61.             else if(action.equals(FormServletActions.gotoAddProductsForm.toString()))
  62.                 gotoAddProductsFormPage(request, response);
  63.             else if(action.equals(FormServletActions.addProductsForm.toString()))
  64.                 productFormAddNewProduct(request, response);
  65.             else if(action.equals(FormServletActions.updateProduct.toString()))
  66.                 updateProduct(request, response);
  67.             else if(action.equals(FormServletActions.updateProductWithGivenId.toString()))
  68.                 updateProduct(request, response);
  69.             else if(action.equals(FormServletActions.deleteProductWithGivenId.toString()))
  70.                 gotoDeleteProduct(request, response);
  71.             else if(action.equals(FormServletActions.deleteProductForm.toString()))
  72.                 deleteProduct(request, response);
  73.             else if(action.equals(FormServletActions.updateProductValid.toString()))
  74.                 updateProductValid(request, response);
  75.             else if(action.equals(FormServletActions.cancelProductDeletion.toString()))
  76.                 gotoProductOverviewPage(request, response);
  77.             else if(action.equals(FormServletActions.deletePersonWithGivenId.toString()))
  78.                 deletePerson(request, response);
  79.             else if(action.equals(FormServletActions.cancelPersonDeletion.toString()))
  80.                 gotoUsersOverviewPage(request, response);
  81.             else if(action.equals(FormServletActions.deletePersonForm.toString()))
  82.                 deletePersonValid(request, response);
  83.             else
  84.                 System.out.println("Nothing works, try again.");
  85.         }
  86.     }
  87.    
  88.     private void gotoIndexPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  89.         RequestDispatcher view = request.getRequestDispatcher(Pages.indexPage.toString());
  90.         view.forward(request, response);
  91.     }
  92.    
  93.     private void gotoUsersOverviewPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  94.         List<String> errors = new ArrayList<String>();
  95.         try {
  96.             request.setAttribute("persons", personService.getAllAsList());
  97.         } catch (SQLException | NoSuchAlgorithmException | DomainException e) {
  98.             errors.add(e.getMessage());
  99.         }
  100.         request.setAttribute("errors", errors);
  101.         RequestDispatcher view = request.getRequestDispatcher(Pages.usersOverviewPage.toString());
  102.         view.forward(request, response);
  103.     }
  104.    
  105.     private void gotoSignUpPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  106.         RequestDispatcher view = request.getRequestDispatcher(Pages.signUpPage.toString());
  107.         view.forward(request, response);
  108.     }
  109.    
  110.     private void gotoProductOverviewPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  111.         List<String> errors = new ArrayList<String>();
  112.         try {
  113.             request.setAttribute("products", productService.getAllAsList());
  114.         } catch (NumberFormatException | SQLException | DomainException e) {
  115.             errors.add(e.getMessage());
  116.         }
  117.         request.setAttribute("errors", errors);
  118.         RequestDispatcher view = request.getRequestDispatcher(Pages.productsOverviewPage.toString());
  119.         view.forward(request, response);
  120.     }
  121.    
  122.     private void gotoAddProductsFormPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  123.         RequestDispatcher view = request.getRequestDispatcher(Pages.addProductsFormPage.toString());
  124.         view.forward(request, response);
  125.     }
  126.    
  127.     private void signUpFormAddNewUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  128.         List<String> errors = new ArrayList<String>();
  129.         String userId = request.getParameter("email");
  130.         request.setAttribute("email", userId);
  131.         String password = request.getParameter("password");
  132.         request.setAttribute("password", password);
  133.         String firstName = request.getParameter("firstName");
  134.         request.setAttribute("firstName", firstName);
  135.         String lastName = request.getParameter("lastName");
  136.         request.setAttribute("lastName", lastName);
  137.         errors = createNewUser(userId, password, firstName, lastName, errors);
  138.         request.setAttribute("errors", errors);
  139.         if(errors.size() > 0)
  140.             gotoSignUpPage(request, response);
  141.         else
  142.             gotoIndexPage(request, response);
  143.     }
  144.    
  145.     private List<String> createNewUser(String userId, String password, String firstName, String lastName, List<String> errors){
  146.         Person person = new Person();
  147.         try{
  148.             person.setUserId(userId);
  149.         }catch(IllegalArgumentException e){
  150.             errors.add(e.getMessage());
  151.         }
  152.         try{
  153.             person.setPassword(password);
  154.         }catch(IllegalArgumentException | NoSuchAlgorithmException | UnsupportedEncodingException | DomainException e){
  155.             errors.add(e.getMessage());
  156.         }
  157.         try{
  158.             person.setFirstName(firstName);
  159.         }catch(IllegalArgumentException e){
  160.             errors.add(e.getMessage());
  161.         }
  162.         try{
  163.             person.setLastName(lastName);
  164.         }catch(IllegalArgumentException e){
  165.             errors.add(e.getMessage());
  166.         }
  167.         if(errors.isEmpty())
  168.             try {
  169.                 personService.addPerson(person);
  170.             } catch (IllegalArgumentException | SQLException | NoSuchAlgorithmException | UnsupportedEncodingException | DomainException e) {
  171.                 errors.add(e.getMessage());
  172.             }
  173.         return errors;
  174.     }
  175.    
  176.     private void productFormAddNewProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  177.         List<String> errors = new ArrayList<String>();
  178.         String description = null;
  179.         double price = 0;
  180.         if(request.getParameterMap().containsKey("description")){
  181.             description = request.getParameter("description");
  182.             request.setAttribute("description", description);
  183.         }
  184.         if(request.getParameterMap().containsKey("price")){
  185.             try{
  186.                 price = Double.parseDouble(request.getParameter("price"));
  187.                 request.setAttribute("price", price);
  188.             } catch(NumberFormatException e){
  189.                 errors.add("Give a valid number");
  190.             }
  191.         }
  192.         errors = createNewProduct(description, price, errors);
  193.         request.setAttribute("errors", errors);
  194.         if(errors.size() > 0)
  195.             gotoAddProductsFormPage(request, response);
  196.         else
  197.             gotoProductOverviewPage(request, response);
  198.     }
  199.    
  200.     private List<String> createNewProduct(String description, double price, List<String> errors){
  201.         Product product = new Product();
  202.         try{
  203.             product.setId(productService.getNewIdToUseForNewProduct());
  204.         }catch(DomainException | NumberFormatException | SQLException e){
  205.             errors.add(e.getMessage());
  206.         }
  207.         try{
  208.             product.setDescription(description);
  209.         }catch(DomainException e){
  210.             errors.add(e.getMessage());
  211.         }
  212.         try{
  213.             product.setPrice(price);
  214.         }catch(DomainException e){
  215.             errors.add(e.getMessage());
  216.         }
  217.         if(errors.isEmpty()){
  218.             try {
  219.                 productService.addProduct(product);
  220.             } catch (DomainException | NumberFormatException | SQLException e) {
  221.                 errors.add(e.getMessage());
  222.             }
  223.         }
  224.         return errors;
  225.     }
  226.    
  227.     private void updateProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  228.         List<String> errors = new ArrayList<String>();
  229.         Product product = null;
  230.         int id = 0;
  231.         if(request.getParameterMap().containsKey("id")){
  232.             try{
  233.                 id = Integer.parseInt(request.getParameter("id"));
  234.             }catch(NumberFormatException e){
  235.                 errors.add("Fill in a valid number, it may not be left empty.");
  236.             }
  237.         } else {
  238.             try{
  239.                 id = Integer.parseInt(request.getParameter("updateProductID"));
  240.                 request.setAttribute("updateProductID", request.getParameter("updateProductID"));
  241.             } catch(NumberFormatException e){
  242.                 errors.add("The id may not be empty");
  243.             }
  244.         }
  245.         try {
  246.             product = productService.getProduct(id);
  247.         } catch (DomainException | SQLException e) {
  248.             errors.add(e.getMessage());
  249.         }
  250.         if(product == null){
  251.             errors.add("The given id is out of range.");
  252.             request.setAttribute("errors", errors);
  253.             gotoProductOverviewPage(request, response);
  254.         }
  255.         else{
  256.             request.setAttribute("errors", errors);
  257.             gotoProductUpdatePage(request, response, product);
  258.         }
  259.     }
  260.    
  261.     private void gotoProductUpdatePage(HttpServletRequest request, HttpServletResponse response, Product product) throws ServletException, IOException {
  262.         request.setAttribute("id", product.getId());
  263.         request.setAttribute("description", product.getDescription());
  264.         request.setAttribute("price", product.getPrice());
  265.         RequestDispatcher view = request.getRequestDispatcher(Pages.updateProductPage.toString());
  266.         view.forward(request, response);
  267.     }
  268.    
  269.     private void gotoDeleteProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  270.         List<String> errors = new ArrayList<String>();
  271.         if(request.getParameterMap().containsKey("id")){
  272.             Product product = null;
  273.             try {
  274.                 product = productService.getProduct(Integer.parseInt(request.getParameter("id")));
  275.             } catch (NumberFormatException | DomainException | SQLException e) {
  276.                 errors.add(e.getMessage());
  277.             }
  278.             if(product != null){
  279.                 request.setAttribute("id", product.getId());
  280.                 request.setAttribute("description", product.getDescription());
  281.                 request.setAttribute("price", product.getPrice());
  282.                 request.setAttribute("errors", errors);
  283.                 gotoDeleteProductPage(request, response);
  284.             } else {
  285.                 gotoProductOverviewPage(request, response);
  286.             }
  287.         } else {
  288.             errors.add("Something went wrong.");
  289.             request.setAttribute("errors", errors);
  290.             gotoUsersOverviewPage(request, response);
  291.         }
  292.     }
  293.    
  294.     private void gotoDeleteProductPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  295.         RequestDispatcher view = request.getRequestDispatcher(Pages.deleteProductPage.toString());
  296.         view.forward(request, response);
  297.     }
  298.    
  299.     private void deleteProduct(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  300.         List<String> errors = new ArrayList<String>();
  301.         if(request.getParameterMap().containsKey("id")){
  302.             try {
  303.                 productService.delete(Integer.parseInt(request.getParameter("id")));
  304.             } catch (NumberFormatException | DomainException | SQLException e) {
  305.                 errors.add(e.getMessage());
  306.             }
  307.             request.setAttribute("errors", errors);
  308.             gotoProductOverviewPage(request, response);
  309.         } else {
  310.             errors.add("Something went super wrong, system is broken :)");
  311.             request.setAttribute("errors", errors);
  312.             gotoDeleteProductPage(request, response);
  313.         }
  314.     }
  315.    
  316.     private void updateProductValid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  317.         List<String> errors = new ArrayList<String>();
  318.         Product product = new Product();
  319.         if(request.getParameterMap().containsKey("id")){
  320.             try{
  321.                 product.setId(Integer.parseInt(request.getParameter("id")));
  322.             }catch(DomainException e){
  323.                 errors.add(e.getMessage());
  324.             }
  325.             try{
  326.                 product.setDescription(request.getParameter("description"));
  327.             }catch(DomainException e){
  328.                 errors.add(e.getMessage());
  329.             }
  330.             try{
  331.                 product.setPrice(Double.parseDouble(request.getParameter("price")));
  332.             }catch(DomainException e){
  333.                 errors.add(e.getMessage());
  334.             }
  335.             if(errors.isEmpty()){
  336.                 try {
  337.                     productService.addProduct(product);
  338.                 } catch (DomainException | NumberFormatException | SQLException e) {
  339.                     errors.add(e.getMessage());
  340.                 }
  341.             }
  342.             request.setAttribute("errors", errors);
  343.             gotoProductOverviewPage(request, response);
  344.         } else {
  345.             request.setAttribute("errors", errors);
  346.             gotoProductUpdatePage(request, response, product);
  347.         }
  348.     }
  349.    
  350.     private void deletePerson(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  351.         List<String> errors = new ArrayList<String>();
  352.         Person person = null;
  353.         if(request.getParameterMap().containsKey("id")){
  354.             try {
  355.                 person = personService.getPerson(request.getParameter("id"));
  356.             } catch (SQLException | NoSuchAlgorithmException | DomainException e) {
  357.                 errors.add(e.getMessage());
  358.             }
  359.             request.setAttribute("errors", errors);
  360.             request.setAttribute("person", person);
  361.             gotoDeletePersonPage(request, response);
  362.         } else {
  363.             errors.add("Please give a valid id, or chose another person.");
  364.             request.setAttribute("errors", errors);
  365.             gotoUsersOverviewPage(request, response);
  366.         }
  367.     }
  368.    
  369.     private void gotoDeletePersonPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  370.         RequestDispatcher view = request.getRequestDispatcher(Pages.deletePersonPage.toString());
  371.         view.forward(request, response);
  372.     }
  373.    
  374.     private void deletePersonValid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  375.         List<String> errors = new ArrayList<String>();
  376.         if(request.getParameterMap().containsKey("id")){
  377.             try {
  378.                 personService.deletePerson(request.getParameter("id"));
  379.             } catch (SQLException e) {
  380.                 errors.add(e.getMessage());
  381.             }
  382.             gotoUsersOverviewPage(request, response);
  383.         } else {
  384.             errors.add("Something went wrong while deleting this user");
  385.             request.setAttribute("errors", errors);
  386.             gotoDeletePersonPage(request, response);
  387.         }
  388.     }
  389. }
Advertisement
Add Comment
Please, Sign In to add comment