Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package controlador; import ExcelView.ClientesExcelView; import MapeoBD.Cliente; import MapeoBD.Empleado; import MapeoBD.Empleado_proyecto; import MapeoBD.Proyecto; import MapeoBD.Prueba; import MapeoBD.Usuario; import java.io.File; import java.io.FileInputStream; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import javax.mail.Message; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.servlet.http.HttpServletRequest; import modelo.ClienteDAO; import modelo.EmpleadoDAO; import modelo.ProyectoDAO; import modelo.PruebaDAO; import modelo.UsuarioDAO; import static org.apache.commons.codec.digest.DigestUtils.md5; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessagePreparator; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * * @author Marco */ @Controller public class controlador { @Autowired JavaMailSender mail_sender; @Autowired private ClienteDAO cliente_bd; @Autowired private ProyectoDAO proyecto_bd; @Autowired private UsuarioDAO usuario_bd; @Autowired private EmpleadoDAO empleado_bd; @Autowired private PruebaDAO prueba_bd; @RequestMapping(value = "/administrador/prueba", method = RequestMethod.GET) public String prueba(ModelMap model, HttpServletRequest a) { return "prueba"; } @RequestMapping(value = "/crear", method = RequestMethod.GET) public String crear(HttpServletRequest a) { return "crear"; } @RequestMapping(value = "/administrador/pruebaR", method = RequestMethod.POST) public ModelAndView pruebaR(ModelMap model, HttpServletRequest request, RedirectAttributes redirect) { System.out.println("hola prueba"); LinkedList<Integer> respuestas = new LinkedList<Integer>(); for (int i = 1; i < 31; i++) { Integer b = Integer.parseInt(request.getParameter(String.valueOf(i))); respuestas.add(b); } for (Integer b : respuestas) { System.out.println(b); if (b == 0) { return new ModelAndView("redirect:/error"); } } model.addAttribute("respuestas", respuestas); return new ModelAndView("prueba", model); } @RequestMapping(value = "/administrador/show", method = RequestMethod.GET) public ModelAndView mostrarc(ModelMap model, HttpServletRequest a, RedirectAttributes redirect) { Cliente cliente = cliente_bd.verCliente(Long.parseLong(a.getParameter("id"))); LinkedList<Cliente> datos_e = new LinkedList<Cliente>(); if (cliente.getHabilitado() == 1) { model.addAttribute("checado", "checked"); } List<Empleado> empleados = empleado_bd.getEmpleados(); for (Empleado em : empleados) { datos_e.add(cliente_bd.verCliente(em.getCliente_id())); } model.addAttribute("cliente", cliente); model.addAttribute("empleados", empleados); model.addAttribute("datos_e", datos_e); return new ModelAndView("cliente", model); } @RequestMapping(value = "/cliente/show", method = RequestMethod.GET) public ModelAndView perfil(ModelMap model, HttpServletRequest a, RedirectAttributes redirect) { Cliente cliente = cliente_bd.porCorreo(a.getParameter("correo")).get(0); model.addAttribute("cliente", cliente); return new ModelAndView("clientec", model); } @RequestMapping(value = "home", method = RequestMethod.GET) public ModelAndView home(ModelMap model, HttpServletRequest a, RedirectAttributes redirect) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String currentPrincipalName = authentication.getName(); System.out.println(SecurityContextHolder.getContext().getAuthentication().getAuthorities()); List<Prueba> pruebas = prueba_bd.getPruebas(); List<Empleado> empleados = empleado_bd.getEmpleados(); List<Cliente> datos_e = new LinkedList<>(); for (Empleado em : empleados) { datos_e.add(cliente_bd.verCliente(em.getCliente_id())); } model.addAttribute("pruebas", pruebas); model.addAttribute("datos_e", datos_e); if (String.valueOf(SecurityContextHolder.getContext().getAuthentication().getAuthorities()) .equals("[ROLE_ADMIN]")) { System.out.println(SecurityContextHolder.getContext().getAuthentication().getAuthorities()); List b = cliente_bd.getClientes(); b.remove(0); model.addAttribute("clientes", b); model.addAttribute("username", currentPrincipalName); return new ModelAndView("home", model); } else { List c = cliente_bd.porCorreo(currentPrincipalName); Cliente aa = (Cliente) c.get(0); long f = aa.getId_cliente(); List b = proyecto_bd.getProyecto(f); model.addAttribute("proyectos", b); model.addAttribute("username", currentPrincipalName); return new ModelAndView("homec", model); } } @RequestMapping(value = "/exportarExcelCliente", method = RequestMethod.GET) public ClientesExcelView exportarExcelAlumnoNombre(Model model, HttpServletRequest request, RedirectAttributes redirect) { model.addAttribute("clientes", cliente_bd.getClientes()); return new ClientesExcelView(); } @RequestMapping(value = "/administrador/borraCliente", method = RequestMethod.POST) public ModelAndView borrarCliente(ModelMap model, HttpServletRequest request) { String id_cliente = request.getParameter("id_cliente"); cliente_bd.borrarCliente(Long.parseLong(id_cliente)); model.addAttribute("id_cliente", id_cliente); return new ModelAndView("confirmacion", model); } @RequestMapping(value = "/administrador/crearCliente", method = RequestMethod.POST) public String creaCliente(ModelMap model, HttpServletRequest request) throws UnsupportedEncodingException { String correo = request.getParameter("correo"); String Nombre_Cliente = request.getParameter("Nombre_Cliente"); String Telefono_Local = request.getParameter("Telefono_Local"); String Telefono_Movil = request.getParameter("Telefono_Movil"); String Area = request.getParameter("Area"); String Puesto = request.getParameter("Puesto"); String Nombre_Empresa = request.getParameter("Nombre_Empresa"); String ape_pa = request.getParameter("apellidop"); String ape_ma = request.getParameter("apellidom"); String pass = request.getParameter("password"); String rol = "ROLE_CLIENTE"; String login_u = request.getParameter("Nombre_Usuario"); String password = null; MessageDigest md; try { md = MessageDigest.getInstance("MD5"); md.update(pass.getBytes()); byte[] digest = md.digest(); StringBuilder sb = new StringBuilder(); for (byte b : digest) { sb.append(String.format("%02x", b & 0xff)); } password = sb.toString(); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(controlador.class.getName()).log(Level.SEVERE, null, ex); } Usuario u = new Usuario(login_u, password, rol); usuario_bd.crearUsuario(u); Cliente c = new Cliente(u, correo, Nombre_Cliente, ape_pa, ape_ma, Telefono_Local, Telefono_Movil, Area, Puesto, Nombre_Empresa, 1); cliente_bd.crearCliente(c); List b = cliente_bd.getClientes(); b.remove(0); model.addAttribute("clientes", b); return "redirect:/home"; } @RequestMapping(value = "/administrador/modificarCliente", method = RequestMethod.POST) public ModelAndView modificarCliente(ModelMap model, HttpServletRequest request) { String id_cliente = request.getParameter("id_cliente"); String correo = request.getParameter("correo"); String password = "hola"; String Nombre_Cliente = request.getParameter("Nombre_Cliente"); String ape_pa = request.getParameter("apellidop"); String ape_ma = request.getParameter("apellidom"); String Telefono_Local = request.getParameter("Telefono_Local"); String Telefono_Movil = request.getParameter("Telefono_Movil"); String login_u = request.getParameter("Nombre_Usuario"); String Area = request.getParameter("Area"); String Puesto = request.getParameter("Puesto"); String Nombre_Empresa = request.getParameter("Nombre_Empresa"); String Rol = request.getParameter("ROL"); int habilitado; if (request.getParameter("habilitado") == null) { habilitado = 0; } else { habilitado = 1; } Usuario u = new Usuario(login_u, password, Rol); Long id_user = u.getId_usuario(); Cliente c = new Cliente(u, correo, Nombre_Cliente, ape_pa, ape_ma, Telefono_Local, Telefono_Movil, Area, Puesto, Nombre_Empresa, habilitado); cliente_bd.modificaCliente(c, Long.parseLong(id_cliente), u); model.addAttribute("id_cliente", id_cliente); return new ModelAndView("redirect:/administrador/show?id=" + id_cliente); } @RequestMapping(value = "/cliente/modificarCliente", method = RequestMethod.POST) public ModelAndView modificarClie(ModelMap model, HttpServletRequest request) { String id_cliente = request.getParameter("id_cliente"); String correo = request.getParameter("correo"); String password = "hola"; String Nombre_Cliente = request.getParameter("Nombre_Cliente"); String ape_pa = request.getParameter("apellidop"); String ape_ma = request.getParameter("apellidom"); String Telefono_Local = request.getParameter("Telefono_Local"); String Telefono_Movil = request.getParameter("Telefono_Movil"); String login_u = request.getParameter("Nombre_Usuario"); String Area = request.getParameter("Area"); String Puesto = request.getParameter("Puesto"); String Nombre_Empresa = request.getParameter("Nombre_Empresa"); String Rol = request.getParameter("ROL"); int habilitado; if (request.getParameter("habilitado") == null) { habilitado = 0; } else { habilitado = 1; } Usuario u = new Usuario(login_u, password, Rol); Long id_user = u.getId_usuario(); Cliente c = new Cliente(u, correo, Nombre_Cliente, ape_pa, ape_ma, Telefono_Local, Telefono_Movil, Area, Puesto, Nombre_Empresa, habilitado); model.addAttribute("id_cliente", id_cliente); List b = cliente_bd.getClientes(); b.remove(0); model.addAttribute("clientes", b); return new ModelAndView("redirect:/home"); } @RequestMapping(value = "/") public String index(ModelMap model) { return "index"; } //nota solo sirve con windows y el excel debe estar en C:\\ @RequestMapping(value = "/cliente/abreExcel", method = RequestMethod.POST) public ModelAndView abreExcel(ModelMap model, @RequestParam("archivo") File archivo, HttpServletRequest request) { try { String var = "C:\\" + archivo.getPath(); System.out.print(var); File objeto = new File(var); Workbook wb; //wb= WorkbookFactory.create(new FileInputStream(objeto)); FileInputStream inp = new FileInputStream(var); HSSFWorkbook workbook = new HSSFWorkbook(inp); HSSFSheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); Row row; if (rowIterator.hasNext()) { row = rowIterator.next(); } while (rowIterator.hasNext()) { row = rowIterator.next(); Usuario u = new Usuario(); Cliente cliente; Empleado empleado; String pass = row.getCell(9).getStringCellValue(); String rol = row.getCell(10).getStringCellValue(); String login_u = row.getCell(11).getStringCellValue(); String password = null; MessageDigest md; try { md = MessageDigest.getInstance("MD5"); md.update(pass.getBytes()); byte[] digest = md.digest(); StringBuilder sb = new StringBuilder(); for (byte b : digest) { sb.append(String.format("%02x", b & 0xff)); } password = sb.toString(); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(controlador.class.getName()).log(Level.SEVERE, null, ex); } u.setLogin_usuario(login_u); u.setPassword_usuario(password); u.setRol_usuario(rol); usuario_bd.crearUsuario(u); Usuario usu = usuario_bd.daID(login_u); System.out.print(usu.getId_usuario() + " " + login_u); cliente = new Cliente(usu, row.getCell(0).getStringCellValue(), row.getCell(1).getStringCellValue(), row.getCell(2).getStringCellValue(), row.getCell(3).getStringCellValue(), row.getCell(4).getStringCellValue(), row.getCell(5).getStringCellValue(), row.getCell(6).getStringCellValue(), row.getCell(7).getStringCellValue(), row.getCell(8).getStringCellValue(), 1); String url = "http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); String token = ""; mail_sender.send(construirResetTokenEmail(url, token, cliente.getCorreo(), null)); cliente_bd.crearCliente(cliente); List clientes = cliente_bd.porCorreo(row.getCell(0).getStringCellValue()); Cliente auxCli = (Cliente) clientes.get(0); System.out.print(row.getCell(13)); int horas = (int) (row.getCell(13).getNumericCellValue()); int hijos = (int) (row.getCell(16).getNumericCellValue()); int sueldo = (int) (row.getCell(19).getNumericCellValue()); int candidato = (int) (row.getCell(21).getNumericCellValue()); Date fecha = row.getCell(17).getDateCellValue(); empleado = new Empleado(auxCli.getId_cliente(), row.getCell(12).getStringCellValue(), horas, row.getCell(14).getStringCellValue(), row.getCell(15).getStringCellValue(), hijos, fecha, row.getCell(18).getStringCellValue(), String.valueOf(sueldo), row.getCell(20).getStringCellValue(), String.valueOf(candidato), 1); empleado_bd.crearEmpleado(empleado); } } catch (Exception e) { e.printStackTrace(); } //workbook.close(); model.addAttribute("clientes", cliente_bd.getClientes()); return new ModelAndView("redirect:/home"); } private MimeMessagePreparator construirResetTokenEmail(String contextPath, String token, final String correo, Usuario usuario) { final String texto = "Utiliza la siguiente URL para contestar la prueba"; final String url = contextPath + "/prueba_adaptabilidad"; MimeMessagePreparator message_preparator = new MimeMessagePreparator() { @Override public void prepare(MimeMessage message) throws Exception { message.setFrom(new InternetAddress("validar.correo.sistema@gmail.com")); message.setRecipient(Message.RecipientType.TO, new InternetAddress(correo)); message.setText(texto + "\n" + url); message.setSubject("Link de la prueba"); } }; return message_preparator; } }