Package oss.ngocminh.lego.service

Source Code of oss.ngocminh.lego.service.ProductCreateController

package oss.ngocminh.lego.service;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;

import oss.ngocminh.lego.data.Entity;
import oss.ngocminh.lego.data.EntityImpl;
import oss.ngocminh.lego.persistence.CategoryDAO;
import oss.ngocminh.lego.persistence.ImageCollectionDAO;
import oss.ngocminh.lego.persistence.ImageDAO;
import oss.ngocminh.lego.persistence.ProductDAO;

/**
* Servlet implementation class ProductCreateController
*/
public class ProductCreateController extends AbstractController {

  private static final long serialVersionUID = 1L;
  private ProductDAO productDAO = new ProductDAO();
  private ImageCollectionDAO imageCollectionDAO = new ImageCollectionDAO();
  private ImageDAO imageDAO = new ImageDAO();
  private CategoryDAO categoryDAO = new CategoryDAO();

  /**
   * @see HttpServlet#HttpServlet()
   */
  public ProductCreateController() {
    super();
  }

  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doGet(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
    try {
      Connection conn = getConnection();
      categoryDAO.setConnection(conn);
      request.setAttribute("categories", categoryDAO.list());
      conn.close();
      renderView(request, response);
    } catch (SQLException e) {
      throw new ServletException(e);
    }
  }

  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doPost(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
    Errors error = new Errors();
    request.setAttribute("error", error);
    String name = request.getParameter("name");
    String description = request.getParameter("description");
    int quantity = getQuantity(request, error);
    double price = getPrice(request, error);
    double discount = getDiscount(request, error);
    String type = request.getParameter("type");
    Integer category = getCategory(request, error);
    List<Entity> images = getImages(request, error);

    if (!error.isEmpty()) {
      renderView(request, response);
      return;
    }

    Entity product = new EntityImpl();
    product.put("name", name);
    product.put("imageCollection", request.getParameter("imageCollection"));
    product.put("description", description);
    product.put("quantity", quantity);
    product.put("price", price);
    product.put("discount", discount);
    product.put("type", type);
    product.put("category", category);
    try {
      Connection conn = getConnection();
      conn.setAutoCommit(false);
      productDAO.setConnection(conn);
      imageCollectionDAO.setConnection(conn);
      imageDAO.setConnection(conn);

      Entity imageCollection = new EntityImpl();
      imageCollectionDAO.save(imageCollection);
      for (Entity image : images) {
        image.put("collection", imageCollection.get("id"));
        imageDAO.save(image);
      }
      product.put("imageCollection", imageCollection.get("id"));
      productDAO.save(product);

      conn.commit();
      conn.close();

      request.setAttribute("product", product);
      renderView("success", request, response);
    } catch (SQLException e) {
      error.put("", e.getMessage());
      renderView(request, response);
    }
  }

  private List<Entity> getImages(HttpServletRequest request, Errors error) {
    List<Entity> images = new LinkedList<Entity>();
    int imageCount = Integer.parseInt(request.getParameter("imageCount"));
    for (int i = 1; i <= imageCount; i++) {
      String fileName = request.getParameter("image" + i);
      if (!StringUtils.isEmpty(fileName)) {
        Entity image = new EntityImpl();
        image.put("fileName", fileName);
        images.add(image);
      }
    }
    return images;
  }

  private Integer getCategory(HttpServletRequest request, Errors error) {
    Integer category = null;
    String categoryStr = request.getParameter("category");
    if (!categoryStr.isEmpty()) {
      try {
        category = Integer.valueOf(categoryStr);
      } catch (NumberFormatException e) {
        error.put("category", "Chủ đề không hợp lệ");
      }
    }
    return category;
  }

  private double getDiscount(HttpServletRequest request, Errors error) {
    double discount = 0;
    if (!StringUtils.isEmpty(request.getParameter("price"))) {
      try {
        discount = Double.parseDouble(request.getParameter("discount"));
        if (discount < 0 || discount >= 100) {
          error.put("discount",
              "Tỉ lệ khuyến mãi phải nằm trong khoảng 0 đến 100");
        }
      } catch (NumberFormatException e1) {
        error.put("discount", "Tỉ lệ khuyến mãi phải là số thập phân");
      }
    }
    return discount;
  }

  private double getPrice(HttpServletRequest request, Errors error) {
    double price = 0;
    try {
      price = Double.parseDouble(request.getParameter("price"));
    } catch (NumberFormatException e1) {
      error.put("price", "Giá tiền phải là số thập phân");
    }
    return price;
  }

  private int getQuantity(HttpServletRequest request, Errors error) {
    int quantity = 0;
    try {
      quantity = Integer.parseInt(request.getParameter("quantity"));
    } catch (NumberFormatException e) {
      error.put("quantity", "Số lượng phải là một số nguyên");
    }
    return quantity;
  }

}
TOP

Related Classes of oss.ngocminh.lego.service.ProductCreateController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.