public String executa(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(true); List<Questao> questoes = (List<Questao>) session.getAttribute("subListaDeQuestoes"); Tipo tipo = (Tipo) session.getAttribute("tipo"); DateTime hI = (DateTime) session.getAttribute("hI"); Integer nQ = (Integer) session.getAttribute("oP"); Perfil p = (Perfil) session.getAttribute("user"); ProvaService pS = new ProvaService(); Prova provaSalva = (Prova) session.getAttribute("provaSalva"); Prova prova = pS.getProvaById(util(provaSalva)); if (prova == null) { int i, resolvidas = 0, brancas = 0, certas = 0, erradas = 0; for (i = 0; i < nQ; i++) { String itemEscolhido = (String) request.getParameter("iM" + i); if (itemEscolhido == null) { brancas++; if (questoes.get(i).getItem().equals("N")) { certas++; } } else if (itemEscolhido.equals(questoes.get(i).getItem()) || questoes.get(i).getItem().equals("N")) { certas++; resolvidas++; } else { erradas++; resolvidas++; } } DateTime dT = new DateTime(); prova = new Prova(); prova.setTipo_id(tipo.getId()); prova.setUsuario_id(p.getUsuario().getId()); prova.setNumero_questoes(nQ); prova.setRespondidas(resolvidas); prova.setBrancas(brancas); prova.setCertas(certas); prova.setErradas(erradas); prova.setTempo_prova(Util.calcularTempo(hI.toString(), dT.toString())); prova.setData(Util.treatToString(new Date())); pS.inserir(prova); QuestaoProvaService qpS = new QuestaoProvaService(); int count = 0, status; for (Questao questao : questoes) { String iM = (String) request.getParameter("iM" + count); if (iM == null) { if (questoes.get(count).getItem().equals("N")) { status = 3; } else { status = 0; } } else if (questoes.get(count).getItem().equals("N")) { status = 3; } else if (iM.equals(questoes.get(count).getItem())) { status = 1; } else { status = 2; } QuestaoProva qP = inserir(prova.getId(), questao.getId(), iM, status); qpS.inserir(qP); count++; } List<Prova> provas = pS.getListAllProvasByIdUsuario(p.getUsuario().getId()); session.setAttribute("provas", provas); session.setAttribute("provaSalva", prova); session.setAttribute("sucesso", "Prova salva com sucesso."); return "/alu/visualizar_provas.jsp"; } else { session.setAttribute( "erro", "Esta prova já foi salva. Para editar e visualizar uma prova acesse o menu Visualizar Provas."); return "/alu/listar_questoes.jsp"; } }
private Long util(Prova p) { return p == null ? 0L : p.getId(); }