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 edu.uv.controller; import com.itextpdf.text.BaseColor; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Font; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; import edu.uv.model.dao.ExamenPreguntaDAO; import edu.uv.model.dao.ExamenesGeneradosDAO; import edu.uv.model.dao.PreguntaDAO; import edu.uv.model.dao.TemasDAO; import edu.uv.model.pojos.ExamenPregunta; import edu.uv.model.pojos.ExamenesGenerados; import edu.uv.model.pojos.Pregunta; import edu.uv.model.pojos.Respuestas; import edu.uv.model.pojos.Temas; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; 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 javax.servlet.http.HttpSession; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; /** * * @author Arriaga Bellido */ @WebServlet(name = "ExamenPreguntaController", urlPatterns = { "/ExamenPreguntaController" }) public class ExamenPreguntaController extends HttpServlet { static final String LIST = ""; static final String DELETE = "borrar"; static final String FIND = "buscar"; static final String ADD = "agregar"; static final String UPDATE = "actualizar"; static final String INSERT = "insertar"; private Document pdfExamen; private Document clave; private static Font smallBold = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD); private static Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD); private static Font correcta = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD, BaseColor.RED); public int numPre = 0; public String letras[] = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l" }; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //validar que el usuario tenga la sesion iniciada HttpSession session = request.getSession(true); if ((session.getAttribute("user") == null)) { request.getRequestDispatcher("login_.jsp").forward(request, response); return; } String accion = request.getParameter("accion"); String id = ""; ExamenPregunta c = null; Pregunta P = new Pregunta(); ExamenesGenerados E = new ExamenesGenerados(); response.setContentType("text/html;charset=UTF-8"); ExamenPreguntaDAO ExamenPregunta_DAO = new ExamenPreguntaDAO(); PreguntaDAO Pregunta_DAO = new PreguntaDAO(); TemasDAO Temas_DAO = new TemasDAO(); ExamenesGeneradosDAO ExamenesGenerados_DAO = new ExamenesGeneradosDAO(); //crear el factory para iniciar la validacion ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); if (accion == null) { ExamenesGenerados peto = ExamenesGenerados_DAO.find(Integer.parseInt(request.getParameter("idEx"))); try { // Crea una referencia a un documento PDF en el que se va a guardar el examen pdfExamen = new Document(); clave = new Document(); URL resource = getClass().getResource("/"); String path = resource.getPath(); path = path.replace("WEB-INF/classes/", "assets/"); PdfWriter.getInstance(pdfExamen, new FileOutputStream(path + "examen.pdf")); PdfWriter.getInstance(clave, new FileOutputStream(path + "clave.pdf")); pdfExamen.open(); clave.open(); //pdfExamen.add(new Paragraph(x)); encabezado(pdfExamen, peto); encabezado(clave, peto); contenido(pdfExamen, clave, peto); //encabezado(pdfExamen,examen); //encabezado(clave,examen); } catch (DocumentException xd) { System.out.println(xd.getMessage()); } pdfExamen.close(); clave.close(); request.setAttribute("Examen", peto); //request.getRequestDispatcher("ExamenPregunta_list.jsp").forward(request, response); //request.setAttribute("list",preguntasList(Integer.parseInt(request.getParameter("idEx")))); request.getRequestDispatcher("ExamenPregunta_list.jsp").forward(request, response); } else switch (accion) { case INSERT: c = new ExamenPregunta(); c.setExamenesGenerados( ExamenesGenerados_DAO.find(Integer.parseInt(request.getParameter("tipoExa")))); c.setPregunta(Pregunta_DAO.find(Integer.parseInt(request.getParameter("pregunta")))); c.setPuntaje(Double.parseDouble(request.getParameter("puntaje"))); Set<ConstraintViolation<ExamenPregunta>> violations = validator.validate(c); // enviar mensajes a jsp if (violations.size() > 0) { request.setAttribute("mensajes", violations); request.getRequestDispatcher("error.jsp").forward(request, response); } else { request.setAttribute("url", "ExamenPreguntaController"); ExamenPregunta_DAO.create(c); request.getRequestDispatcher("success.jsp").forward(request, response); } break; case DELETE: id = request.getParameter("id"); ExamenPregunta_DAO.delete(Integer.parseInt(id)); request.setAttribute("url", "ExamenPreguntaController"); request.getRequestDispatcher("success.jsp").forward(request, response); break; case UPDATE: c = new ExamenPregunta(); String id_examn = request.getParameter("id_examen"); c = ExamenPregunta_DAO.find(Integer.parseInt(request.getParameter("id"))); c.setPregunta(Pregunta_DAO.find(Integer.parseInt(request.getParameter("pregunta")))); /* c.setExamenesGenerados(ExamenesGenerados_DAO.find(Integer.parseInt(request.getParameter("tipoExa")))); c.setPregunta(Pregunta_DAO.find(Integer.parseInt(request.getParameter("pregunta")))); c.setPuntaje(Double.parseDouble(request.getParameter("puntaje"))); c.setIdExamenPregunta(Integer.parseInt(request.getParameter("idExamenPregunta"))); */ Set<ConstraintViolation<ExamenPregunta>> violations2 = validator.validate(c); // enviar mensajes a jsp if (violations2.size() > 0) { request.setAttribute("mensajes", violations2); request.getRequestDispatcher("error.jsp").forward(request, response); } else { ExamenPregunta_DAO.update(c); request.setAttribute("url", "ExamenPreguntaController?idEx=" + id_examn); request.getRequestDispatcher("success.jsp").forward(request, response); } break; case FIND: List<Pregunta> preg = Pregunta_DAO.findAll(); List<Pregunta> aux = new ArrayList<Pregunta>(); id = request.getParameter("pregunta"); c = ExamenPregunta_DAO.find(Integer.parseInt(id)); for (Pregunta p : preg) { if (p.getTemas().getNombreTema().equals(c.getPregunta().getTemas().getNombreTema())) { if (p.getModalidadPregunta().equals(c.getPregunta().getModalidadPregunta())) { aux.add(p); } } } request.setAttribute("ExamenPregunta", c); //request.setAttribute("ExamenesGenerados",ExamenesGenerados_DAO.findAll()); request.setAttribute("Pregunta", aux); request.getRequestDispatcher("ExamenPregunta_edit.jsp").forward(request, response); break; case ADD: request.setAttribute("ExamenesGenerados", ExamenesGenerados_DAO.findAll()); request.setAttribute("Pregunta", Pregunta_DAO.findAll()); request.getRequestDispatcher("Pregunta_add.jsp").forward(request, response); break; default: } } protected void contenido(Document pdfExamen, Document clave, ExamenesGenerados examen) { Set<ExamenPregunta> todas = examen.getExamenPreguntas(); numPre = 0; for (ExamenPregunta x : todas) { try { pdfExamen.add(new Paragraph( numPre + "-. " + x.getPregunta().getDescripcionPregunta() + " " + x.getPuntaje() + "Pts")); clave.add(new Paragraph( numPre + "-. " + x.getPregunta().getDescripcionPregunta() + " " + x.getPuntaje() + "Pts")); numPre++; if (x.getPregunta().getTipoPregunta().equals("VF")) { pdfExamen.add(new Paragraph("a) Verdadero")); pdfExamen.add(new Paragraph("b) Falso")); clave.add(new Paragraph("a) Verdadero")); clave.add(new Paragraph("b) Falso")); } else { if (x.getPregunta().getTipoPregunta().equals("Acompletar")) { pdfExamen.add(new Paragraph("a)________________")); clave.add(new Paragraph("a)________________")); } else { Set<Respuestas> set = x.getPregunta().getRespuestases(); int a = 0; for (Respuestas r : set) { if (r.getTipoResp().equals("Correcta")) { pdfExamen.add(new Paragraph(letras[a] + ") " + r.getDescripcionRespuesta())); clave.add(new Paragraph(letras[a] + ") " + r.getDescripcionRespuesta(), correcta)); } else { pdfExamen.add(new Paragraph(letras[a] + ") " + r.getDescripcionRespuesta())); clave.add(new Paragraph(letras[a] + ") " + r.getDescripcionRespuesta())); } a++; } pdfExamen.add(new Paragraph("\n")); clave.add(new Paragraph("\n")); } } } catch (DocumentException ex) { } } } protected void encabezado(Document pdfExamen, ExamenesGenerados examen) { try { Paragraph titulo = new Paragraph("UNIVERSIDAD VERACRUZANA", catFont); titulo.setAlignment(Paragraph.ALIGN_CENTER); pdfExamen.add(titulo); titulo = new Paragraph(examen.getPeriodo(), smallBold); titulo.setAlignment(Paragraph.ALIGN_CENTER); pdfExamen.add(titulo); titulo = new Paragraph("Examen " + examen.getTipoExamen(), smallBold); titulo.setAlignment(Paragraph.ALIGN_CENTER); pdfExamen.add(titulo); titulo = new Paragraph(examen.getExperieciaEducativa().getNombreEe(), smallBold); titulo.setAlignment(Paragraph.ALIGN_CENTER); pdfExamen.add(titulo); pdfExamen.add(new Paragraph("Porcentajes : Teoria " + examen.getPorcTeoria() + "% Practica " + examen.getPorcPractica() + " %", smallBold)); pdfExamen.add(new Paragraph( "Profesor: ________________________________________________________________________ ", smallBold)); pdfExamen.add(new Paragraph( "Alumno: __________________________________________________________________________ ", smallBold)); pdfExamen.add(new Paragraph(" ", smallBold)); } catch (DocumentException ex) { } } protected List preguntasDisponibles(int id, List<Pregunta> actuales) { List<Pregunta> resultado = new ArrayList(); PreguntaDAO preDao = new PreguntaDAO(); List<Pregunta> preTotales = preDao.findAll(); ExamenPreguntaDAO exaGe = new ExamenPreguntaDAO(); List<ExamenPregunta> totExa = exaGe.findAll(); for (ExamenPregunta aux : totExa) { if (aux.getExamenesGenerados().getIdexamenesGenerados().equals(id)) { int y = aux.getPregunta().getIdPregunta(); for (Pregunta todas : preTotales) { if ((todas.getIdPregunta().equals(y)) && (todas.getEstado().equals("Aprobado"))) { resultado.add(todas); } } } } return resultado; } //Mostrar preguntas protected List preguntasList(int id) { List<Pregunta> resultado = new ArrayList(); PreguntaDAO preDao = new PreguntaDAO(); List<Pregunta> preTotales = preDao.findAll(); ExamenPreguntaDAO exaGe = new ExamenPreguntaDAO(); List<ExamenPregunta> totExa = exaGe.findAll(); for (ExamenPregunta aux : totExa) { if (aux.getExamenesGenerados().getIdexamenesGenerados().equals(id)) { int y = aux.getPregunta().getIdPregunta(); for (Pregunta todas : preTotales) { if (todas.getIdPregunta().equals(y)) { resultado.add(todas); } } } } return resultado; } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }