@Override
 public List<Ciudad> listT(Ciudad t) {
   List<Ciudad> ciudad = new ArrayList<Ciudad>();
   Connection con = null;
   try {
     con = DataBaseConnection.openConnection();
     String sql =
         "SELECT * FROM t_ciudad WHERE cod_ciudad=" + t.getCod_ciudad() + " AND EST_cui != 0 ";
     Statement st = con.createStatement();
     ResultSet rs = st.executeQuery(sql);
     while (rs.next()) {
       Ciudad ciudaddb = new Ciudad();
       ciudaddb.setCod_pais(rs.getInt("cod_pais"));
       ciudaddb.setCod_ciudad(rs.getInt("cod_ciudad"));
       ciudaddb.setNom_ciu(rs.getString("nom_ciu"));
       ciudaddb.setDes_ciu(rs.getString("des_cui"));
       ciudaddb.setEst_ciu(rs.getString("est_cui"));
       ciudad.add(ciudaddb);
     }
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     DataBaseConnection.closeConnection(con);
   }
   return ciudad;
 }
  public String Load() {
    try {
      setPermiso(true);
      if (Permiso) {
        setSession(ActionContext.getContext().getSession());
        if (Operacion.equals("Nuevo")) {
        } else {

          if (Oconfiguracionalmacen.getIdConfiguracionAlmacen() == 0) {
            Oconfiguracionalmacen.setIdConfiguracionAlmacen(
                ConfiguracionAlmacenDAO.getInstancia().UltimoID());
          }
          Oconfiguracionalmacen =
              ConfiguracionAlmacenDAO.getInstancia()
                  .obtener(Oconfiguracionalmacen.getIdConfiguracionAlmacen());
          ListaDetalleConfiguracionAlmacen =
              ConfiguracionAlmacenDAO.getInstancia().buscarDetalle(Oconfiguracionalmacen);
          session.put("ListaDetalleConfiguracionAlmacen", ListaDetalleConfiguracionAlmacen);
        }

        return "Autorizado";
      } else {
        return "NoAutorizado";
      }
    } catch (Exception ex) {
      msg = ex.getMessage();
      return "NoAutorizado";
    }
  }
  @Override
  public int delete(Ciudad t) {
    Connection con = null;
    int rows = -1;
    try {
      con = DataBaseConnection.openConnection();
      System.out.println("Se Eliminara CIUDAD con id :" + t.getCod_pais());

      // String sql="DELETE FROM t_pais WHERE cod_pais=?";
      // PreparedStatement ps=con.prepareStatement(sql);
      // ps.setInt(1, t.getCod_pais());

      String sql = "UPDATE t_ciudad SET est_ciu=? WHERE cod_ciudad=?";
      PreparedStatement ps = con.prepareStatement(sql);
      ps.setString(1, "0");
      ps.setInt(2, t.getCod_ciudad());

      rows = ps.executeUpdate();
      System.out.println(rows);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      DataBaseConnection.closeConnection(con);
    }
    return rows;
  }
  @Override
  public int update(Ciudad t) {
    Connection con = null;
    int rows = -1;
    try {
      con = DataBaseConnection.openConnection();
      System.out.println("Se actualizara Ciudad con id :" + t.getCod_ciudad());
      String sql =
          "UPDATE t_ciudad SET nom_ciu=?, des_cui=?, est_cui=? WHERE cod_pais=? and cod_ciudad=? and est_cui!=0";
      PreparedStatement ps = con.prepareStatement(sql);
      ps.setString(1, t.getNom_ciu());
      ps.setString(2, t.getDes_ciu());
      ps.setString(3, t.getEst_ciu());
      ps.setInt(4, t.getCod_pais());
      ps.setInt(5, t.getCod_ciudad());
      int row = ps.executeUpdate();
      System.out.println(row);

    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      DataBaseConnection.closeConnection(con);
    }
    return rows;
  }
 @Override
 public Ciudad ultReg(Ciudad t) {
   Connection con = null;
   Ciudad ciudaddb = null;
   try {
     con = DataBaseConnection.openConnection();
     PreparedStatement ps = null;
     System.out.println("SE BUSCARA ULTIMO REGISTRO");
     String sql = "select max(cod_ciudad) from t_ciudad";
     System.out.println("Se busca Ciudad ");
     Statement st = con.createStatement();
     ResultSet rs = st.executeQuery(sql);
     while (rs.next()) {
       ciudaddb = new Ciudad();
       ciudaddb.setCod_ciudad(rs.getInt("max(cod_ciudad)"));
       System.out.println("SE ENCONTRO ULTIMO REGISTRO :" + rs.getInt("cod_ciudad"));
     }
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     DataBaseConnection.closeConnection(con);
   }
   System.out.println("SE DEVUELVE ULTIMO REGSITRO CIUDAD: " + ciudaddb.getCod_ciudad());
   return ciudaddb;
 }
 @Override
 public Ciudad insert(Ciudad t) {
   Connection con = null;
   try {
     con = DataBaseConnection.openConnection();
     System.out.println("Se Registrara CIUDAD con id :" + t.getCod_ciudad());
     String sql =
         "INSERT INTO t_ciudad (cod_pais,cod_ciudad,nom_ciu,des_cui,est_cui) VALUES(?,?,?,?,?)";
     PreparedStatement ps = con.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
     ps.setInt(1, t.getCod_pais());
     ps.setInt(2, t.getCod_ciudad());
     ps.setString(3, t.getNom_ciu());
     ps.setString(4, t.getDes_ciu());
     ps.setString(5, t.getEst_ciu());
     ps.executeUpdate();
     ResultSet rs = ps.getGeneratedKeys();
     if (rs.next()) {
       int id = rs.getInt(1);
       System.out.println(id);
     }
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     if (con != null) {
       try {
         con.close();
       } catch (Exception ex) {
       }
     }
   }
   return t;
 }
 @Override
 public List<Ciudad> listAll() {
   List<Ciudad> ciudad = new ArrayList<Ciudad>();
   Connection con = null;
   try {
     con = DataBaseConnection.openConnection();
     String sql = "SELECT * FROM t_ciudad where est_cui != 0 ORDER BY cod_ciudad DESC";
     Statement st = con.createStatement();
     ResultSet rs = st.executeQuery(sql);
     while (rs.next()) {
       System.out.println("CIUDAD LISTADA");
       Ciudad ciudaddb = new Ciudad();
       ciudaddb.setCod_pais(rs.getInt("cod_pais"));
       ciudaddb.setCod_ciudad(rs.getInt("cod_ciudad"));
       ciudaddb.setNom_ciu(rs.getString("nom_ciu"));
       ciudaddb.setDes_ciu(rs.getString("des_cui"));
       ciudaddb.setEst_ciu(rs.getString("est_cui"));
       ciudad.add(ciudaddb);
     }
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     DataBaseConnection.closeConnection(con);
   }
   return ciudad;
 }
 public String EditarConfiguracionAlmacen() throws Exception {
   try {
     session = ActionContext.getContext().getSession();
     msg = "Se Edito correctamente";
   } catch (Exception ex) {
     msg = ex.getMessage();
   }
   return SUCCESS;
 }
 public String ObtenerConfiguracionAlmacen() throws Exception {
   try {
     setOconfiguracionalmacen(
         ConfiguracionAlmacenDAO.getInstancia()
             .obtener(getOconfiguracionalmacen().getIdConfiguracionAlmacen()));
   } catch (Exception ex) {
     msg = ex.getMessage();
   }
   return SUCCESS;
 }
 public String BuscarConfiguracionAlmacen() throws Exception {
   try {
     setListaConfiguracionAlmacen(
         ConfiguracionAlmacenDAO.getInstancia().buscar(getOconfiguracionalmacen()));
     msg = "Busqueda correcta";
   } catch (Exception ex) {
     msg = ex.getMessage();
   }
   return SUCCESS;
 }
 public String EliminarConfiguracionAlmacen() throws Exception {
   try {
     session = ActionContext.getContext().getSession();
     ConfiguracionAlmacenDAO.getInstancia()
         .eliminar(getOconfiguracionalmacen(), ((Usuario) session.get("Usuario")));
     msg = "Se Elimino correctamente";
   } catch (Exception ex) {
     msg = ex.getMessage();
   }
   return SUCCESS;
 }
  public String QuitarDetalleConfiguracionAlmacen() throws Exception {
    try {
      session = ActionContext.getContext().getSession();

      if (session.get("ListaDetalleConfiguracionAlmacen") != null) {
        setListaDetalleConfiguracionAlmacen(
            (ArrayList<DetalleConfiguracionAlmacen>)
                session.get("ListaDetalleConfiguracionAlmacen"));
      }

      ListaDetalleConfiguracionAlmacen.remove(index);

      session.put("ListaDetalleConfiguracionAlmacen", ListaDetalleConfiguracionAlmacen);

      msg = "Se Elimino correctamente";
    } catch (Exception ex) {
      msg = ex.getMessage();
    }
    return SUCCESS;
  }
  public String GrabarConfiguracionAlmacen() throws Exception {
    try {
      session = ActionContext.getContext().getSession();

      if (session.get("ListaDetalleConfiguracionAlmacen") != null) {
        setListaDetalleConfiguracionAlmacen(
            (ArrayList<DetalleConfiguracionAlmacen>)
                session.get("ListaDetalleConfiguracionAlmacen"));
      }

      String xml = "<root>";
      for (int i = 0; i < ListaDetalleConfiguracionAlmacen.size(); i++) {
        xml = xml + ListaDetalleConfiguracionAlmacen.get(i).xml();
      }
      xml = xml + "</root>";

      if (Operacion.equals("Nuevo")) {
        int id =
            ConfiguracionAlmacenDAO.getInstancia()
                .ingresar(getOconfiguracionalmacen(), ((Usuario) session.get("Usuario")), xml);
        Oconfiguracionalmacen.setIdConfiguracionAlmacen(id);
        msg = "Se registro correctamente";
      } else {
        ConfiguracionAlmacenDAO.getInstancia()
            .editar(Oconfiguracionalmacen, ((Usuario) session.get("Usuario")), xml);
        msg = "Se edito correctamente";
      }

      session.remove("ListaDetalleConfiguracionAlmacen");

    } catch (Exception ex) {
      error = true;
      msg = ex.getMessage();
    }
    return SUCCESS;
  }
 @Override
 public Ciudad findById(Ciudad t) {
   Connection con = null;
   Ciudad ciudaddb = null;
   try {
     con = DataBaseConnection.openConnection();
     PreparedStatement ps = null;
     if (t.getCod_pais() == 0) {
       // Buscara por Id ciudad
       String sql = "SELECT * FROM t_ciudad WHERE cod_ciudad=? and est_cui!=0";
       System.out.println("Se busca Ciudad por id :" + t.getCod_ciudad());
       ps = con.prepareStatement(sql);
       ps.setInt(1, t.getCod_ciudad());
     } else {
       // Buscara por Id pais
       String sql = "SELECT * FROM t_ciudad WHERE cod_pais=? and est_cui!=0";
       System.out.println("Se busca Ciudad por Pais :" + t.getCod_pais());
       ps = con.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
       ps.setInt(1, t.getCod_pais());
     }
     ResultSet rs = ps.executeQuery();
     while (rs.next()) {
       ciudaddb = new Ciudad();
       ciudaddb.setCod_pais(rs.getInt("cod_pais"));
       ciudaddb.setCod_ciudad(rs.getInt("cod_ciudad"));
       ciudaddb.setNom_ciu(rs.getString("nom_ciu"));
       ciudaddb.setNom_ciu(rs.getString("des_ciu"));
       ciudaddb.setEst_ciu(rs.getString("est_ciu"));
     }
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     DataBaseConnection.closeConnection(con);
   }
   return ciudaddb;
 }
  /**
   * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   */
  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException, ParseException {
    response.setContentType("text/html;charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    PrintWriter out = response.getWriter();

    HttpSession session = request.getSession();
    ServletContext app = getServletContext();

    try {
      String url = null;
      // test login
      String login = (String) session.getAttribute("username");
      if (login == null || login.isEmpty()) {
        response.sendRedirect("../login.html");
      }
      // boolean isMultiPart =
      // ServletFileUpload.isMultipartContent(request);
      boolean isMultiPart = DiskFileUpload.isMultipartContent(request);
      if (!isMultiPart) {

      } else {
        // FileItemFactory factory = new DiskFileItemFactory();
        // ServletFileUpload upload = new ServletFileUpload(factory);
        DiskFileUpload upload = new DiskFileUpload();
        List items = null;
        try {
          items = upload.parseRequest(request);
        } catch (FileUploadException e) {
          e.printStackTrace();
        }

        Iterator iter = items.iterator();
        final Hashtable params = new Hashtable();

        final ArrayList<String> fileName = new ArrayList<String>();
        int inde = 0;
        while (iter.hasNext()) {
          FileItem item = (FileItem) iter.next();

          if (item.isFormField()) {
            // System.out.println("item.getFieldName(): "+item.getFieldName());
            params.put(item.getFieldName(), item.getString("UTF-8"));
          } else {
            try {
              String itemName = item.getName();

              if (!"".equals(itemName)) {

                // System.out.println("itemName: "+itemName);
                String filename = itemName.substring(itemName.lastIndexOf("\\") + 1);
                fileName.add(filename);
                String RealPath =
                    getServletContext().getRealPath("/") + "images/fashion/" + itemName;

                inde++;
                File savedFile = new File(RealPath);

                item.write(savedFile);
              } else {
                fileName.add("");
              }

            } catch (Exception e) {
              e.printStackTrace();
            }
          }
        }
        String lang = (String) app.getAttribute("MALL_LA");
        final String pid = (String) params.get("pId");
        final String productname = (String) params.get("product_name");

        final String amount = (String) params.get("product_amount");
        String prePrice = (String) params.get("product_price");
        final float price = Float.parseFloat(prePrice);

        final String categoryChild = (String) params.get("selectCategoryChild");
        final String categorySub = (String) params.get("selectCategorySub");

        final String selectManufactural = (String) params.get("selectManufactural");

        final Date currentday = new Date();
        SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd");

        final String detail = (String) params.get("shortDescription");

        final String color = (String) params.get("color");

        final String size = (String) params.get("size");
        final String origin = (String) params.get("origin");
        final String pType = (String) params.get("productType");
        final String vPeriod = (String) params.get("validityPeriod");
        final String de_CostID = (String) params.get("de_CostID");

        final String unit = LanguegeBUS.getValue("dvtDef", lang);
        String account = session.getAttribute("username").toString();

        final User newUser = UserBUS.getUser(account, lang);

        TransactionMethod tr =
            new TransactionMethod() {
              @Override
              protected void doMethod(Session session, String lang) {

                if (pid == null || pid.isEmpty()) {
                  Products newProduct = new Products();
                  newProduct.setUser(newUser);

                  newProduct.setCategoryChildId(categoryChild);
                  if (!categorySub.equals("0")) {
                    newProduct.setCategorySubId(categorySub);
                  }
                  int manufacturer = -1;
                  Manufacturer manu =
                      ManufacturerBUS.getManufacturerByName(selectManufactural, lang);
                  if (manu == null) {
                    manu = new Manufacturer(selectManufactural);
                    save(manu, session);
                  }
                  manufacturer = manu.getManufacturerId();

                  newProduct.setManufacturerId(manufacturer);
                  newProduct.setColor(color);
                  newProduct.setDetail(detail);
                  newProduct.setProductName(productname);
                  newProduct.setPrice(price);
                  newProduct.setSize(size);
                  newProduct.setAmount(Integer.parseInt(amount));
                  newProduct.setUnit(unit);
                  newProduct.setOriginId(Integer.parseInt(origin));
                  newProduct.setProductTypeId(Integer.parseInt(pType));
                  newProduct.setUploadDate(currentday);
                  if (de_CostID != null && !("null".equals(de_CostID))) {
                    Delivercost deliverCost =
                        DeliverCostBUS.getDeliverCostById(Integer.parseInt(de_CostID), lang);
                    newProduct.setDeliverCost(deliverCost);
                  }

                  // boolean kqPro =
                  // ProductBUS.insertProducts(newProduct,lang);
                  // if(kqPro){
                  save(newProduct, session);
                  // insert images of this product
                  int productid = newProduct.getProductId();
                  for (int i = 0; i < fileName.size(); i++) {
                    if (!"".equals(fileName.get(i))) {
                      Productphotos newProductphoto = new Productphotos();
                      newProductphoto.setProductPhotoName(fileName.get(i));
                      newProductphoto.setProductId(productid);
                      // ProductPhotoBUS.insertProductPhotos(newProductphoto,lang);
                      save(newProductphoto, session);
                    }
                  }
                  // insert inventory
                  Inventory iv = new Inventory();
                  Date d = new Date();
                  Calendar c = Calendar.getInstance();
                  c.setTime(d);
                  c.add(Calendar.DATE, Integer.parseInt(vPeriod)); // number
                  // of
                  // days
                  // to
                  // add
                  d = c.getTime();
                  iv.setLimitDate(d);
                  iv.setProductId(newProduct.getProductId());
                  if (Integer.parseInt(vPeriod) == 0) {
                    iv.setSateId(1);
                  } else {
                    iv.setSateId(2);
                  }
                  // InventoryDAO.insertInventory(iv, lang);
                  save(iv, session);
                  // }

                } else {
                  Products p = ProductBUS.getProducts(Integer.parseInt(pid), lang);
                  String expDate = (String) params.get("expDate");

                  p.setCategoryChildId(categoryChild);
                  if (!categorySub.equals("0")) {
                    p.setCategorySubId(categorySub);
                  }
                  int manufacturer = -1;
                  Manufacturer manu =
                      ManufacturerBUS.getManufacturerByName(selectManufactural, lang);
                  if (manu == null) {
                    manu = new Manufacturer(selectManufactural);
                    save(manu, session);
                  }
                  manufacturer = manu.getManufacturerId();
                  p.setManufacturerId(manufacturer);
                  p.setColor(color);
                  p.setDetail(detail);
                  p.setProductName(productname);
                  p.setPrice(price);
                  p.setSize(size);
                  p.setAmount(Integer.parseInt(amount));
                  p.setUnit(unit);
                  p.setOriginId(Integer.parseInt(origin));
                  p.setProductTypeId(Integer.parseInt(pType));
                  p.setUploadDate(currentday);
                  if (de_CostID != null && !("null".equals(de_CostID))) {
                    Delivercost deliverCost =
                        DeliverCostBUS.getDeliverCostById(Integer.parseInt(de_CostID), lang);
                    p.setDeliverCost(deliverCost);
                  }
                  // /ProductBUS.updateProducts(p,lang);
                  update(p, session);
                  //
                  List<Productphotos> currentPhotos = ProductPhotoBUS.lstProductPhotoAll(p, lang);
                  int productid = p.getProductId();
                  // update current photo
                  for (int i = 0; i < currentPhotos.size(); i++) {
                    if (!"".equals(fileName.get(i))) {

                      Productphotos oldProductphoto = currentPhotos.get(i);
                      oldProductphoto.setProductPhotoName(fileName.get(i));
                      update(oldProductphoto, session);
                    }
                  }
                  // save new photo
                  for (int i = currentPhotos.size(); i < fileName.size(); i++) {
                    if (!"".equals(fileName.get(i))) {
                      Productphotos newProductphoto = new Productphotos();
                      newProductphoto.setProductPhotoName(fileName.get(i));
                      newProductphoto.setProductId(productid);

                      // ProductPhotoBUS.insertProductPhotos(newProductphoto,lang);
                      save(newProductphoto, session);
                    }
                  }

                  if (Integer.parseInt(vPeriod) > 0) {

                    // Insert Limit Date
                    Extension ext = new Extension();
                    ext.setProductId(p.getProductId());
                    // insert inventory
                    List<Inventory> lst = InventoryDAO.lstInvenProductId(p, lang);
                    if (null == lst || lst.isEmpty()) {
                      Inventory iv = new Inventory();
                      Date d = new Date();

                      iv.setLimitDate(d);
                      iv.setProductId(p.getProductId());
                      iv.setSateId(1);
                      // InventoryDAO.insertInventory(iv, lang);
                      save(iv, session);
                      ext.setLimitDateOld(d);
                    } else {
                      Inventory in = (Inventory) lst.get(0);
                      ext.setLimitDateOld(in.getLimitDate());
                    }
                    // ----end insert inventory
                    ext.setLimitDateNum(Integer.parseInt(vPeriod));
                    ext.setCharge(Float.valueOf(0));
                    ext.setStatus("N");
                    // ExtensionDAO.insertExtension(ext, lang);
                    save(ext, session);
                    // ---end Insert Limit Date
                  }
                }
              }
            };
        boolean result = tr.executeTransaction(lang);
        if (result) {
          request.setAttribute("Message", "Upload complete !!!");
        } else {
          request.setAttribute("Message", "Upload unsuccessful !!!");
        }
        url = "/sale/upload.html";
        RequestDispatcher rd = getServletContext().getRequestDispatcher(url);
        rd.forward(request, response);
      }

    } finally {
      out.close();
    }
  }