Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / NewStats: 3,195,240 members, 7,957,578 topics. Date: Tuesday, 24 September 2024 at 03:07 PM |
Nairaland Forum / Science/Technology / Programming / Software/Programmer Market / Online Test Development (693 Views)
(1) (Reply)
Online Test Development by naijaswag1: 11:14am On Jul 10, 2013 |
Servlets, JSP, JPA, Java Security, MySQL, Glassfish, HTML, Javascript and Netbeans
|
Re: Online Test Development by naijaswag1: 10:54pm On Jul 11, 2013 |
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package bolaschool.exam; import bolaschool.entity.Fouranswers; import bolaschool.entity.Student; import java.io.IOException; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Timer; import java.util.TimerTask; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceUnit; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.transaction.UserTransaction; /** * * @author ThankGod Ukachukwu */ public class HotSeatServlet extends HttpServlet { /** * 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 */ @PersistenceUnit private EntityManagerFactory emf; @Resource private UserTransaction utx; List<List<Fouranswers>> studentExamination = new LinkedList<List<Fouranswers>>(); int mins = 0; int examCount = 1; int pageCounter = 0; Timer timer = null; HttpServletRequest request = null; HttpServletResponse response = null; boolean firstTime = false; protected void processRequest(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { assert emf != null; this.request = request; this.response = response; String initialize = request.getParameter("initialize" if ("yes".equals(initialize)) { EntityManager em = null; em = emf.createEntityManager(); List<Fouranswers> questions = em.createQuery("SELECT f FROM Fouranswers f".getResultList(); Set<String> questtype = new LinkedHashSet(); Iterator itil = questions.iterator(); Fouranswers four = null; while (itil.hasNext()) { four = (Fouranswers) itil.next(); questtype.add(four.getQuestiontype()); } String str = questtype.toString() + " questiontype"; Logger.getLogger(LoginStudent.class.getName()).log(Level.SEVERE, str); itil = questtype.iterator(); String questType = ""; while (itil.hasNext()) { questType = (String) itil.next(); Iterator itil2 = questions.iterator(); List<Fouranswers> pages = new LinkedList<Fouranswers>(); while (itil2.hasNext()) { four = (Fouranswers) itil2.next(); if (four.getQuestiontype().equals(questType)) { pages.add(four); } } studentExamination.add(pages); } Logger.getLogger(LoginStudent.class.getName()).log(Level.WARNING, "size" + String.valueOf(studentExamination.size())); List<Fouranswers> firstPage = studentExamination.get(pageCounter); Logger.getLogger(LoginStudent.class.getName()).log(Level.WARNING, "pagecounter=" + String.valueOf(pageCounter)); Iterator itty = firstPage.iterator(); Fouranswers ffy = null; while (itty.hasNext()) { ffy = (Fouranswers) itty.next(); ffy.setQuestionNum(examCount++); } request.setAttribute("page", firstPage); request.setAttribute("where", "first" request.setAttribute("mins", mins); request.setAttribute("examCount", examCount); request.getRequestDispatcher("fourquestionsexam.jsp".forward(request, response); } else if (!"yes".equals(initialize)) { String direction = request.getParameter("direction" if (direction.equals("END") { endExam(); timer.cancel(); } else if (direction.equals("BACK") { List<Fouranswers> firstPage = null; if (pageCounter > 0) { pageCounter -= 1; firstPage = studentExamination.get(pageCounter); examCount -= (firstPage.size() * 2); Iterator itty = firstPage.iterator(); Fouranswers ffy = null; while (itty.hasNext()) { ffy = (Fouranswers) itty.next(); ffy.setQuestionNum(examCount++); } request.setAttribute("page", firstPage); if (pageCounter > 0) { request.setAttribute("where", "middle" } else { request.setAttribute("where", "first" } } else { firstPage = studentExamination.get(pageCounter); examCount -= (firstPage.size() * 2); Iterator itty = firstPage.iterator(); Fouranswers ffy = null; while (itty.hasNext()) { ffy = (Fouranswers) itty.next(); ffy.setQuestionNum(examCount++); } request.setAttribute("page", firstPage); request.setAttribute("where", "first" } request.setAttribute("pageCounter", pageCounter); request.setAttribute("mins", mins); request.setAttribute("examCount", examCount); request.getRequestDispatcher("fourquestionsexam.jsp".forward(request, response); } else if (direction.equals("NEXT") { List<Fouranswers> firstPage = studentExamination.get(pageCounter); Map<String, String[]> mapofPara = request.getParameterMap(); Set<String> paramSet = mapofPara.keySet(); Logger.getLogger(LoginStudent.class.getName()).log(Level.WARNING, mapofPara.toString()); String[] paraStr = null; Fouranswers ansfour = null; int questId = 0; outer: for (String ste : paramSet) { if (ste.equals("initialize" | ste.equals("pageCounterCheck" | ste.equals("direction") { continue outer; } paraStr = mapofPara.get(ste); Integer steq = Integer.parseInt(ste); Logger.getLogger(LoginStudent.class.getName()).log(Level.WARNING, "steq " + String.valueOf(steq)); Iterator ittb = firstPage.iterator(); while (ittb.hasNext()) { ansfour = (Fouranswers) ittb.next(); questId = ansfour.getQuestionId(); if (questId == steq) { if (paraStr.length == 1 && paraStr[0].equals("") { } else { ansfour.setAnswer(paraStr[0]); } Logger.getLogger(LoginStudent.class.getName()).log(Level.WARNING, ste + " " + questId + " " + Arrays.toString(paraStr)); } } } if (pageCounter == (studentExamination.size() - 1)) { firstPage = studentExamination.get(pageCounter); Iterator itty = firstPage.iterator(); Fouranswers ffy = null; while (itty.hasNext()) { ffy = (Fouranswers) itty.next(); ffy.setQuestionNum(examCount++); } request.setAttribute("page", firstPage); request.setAttribute("where", "end" } else { pageCounter += 1; firstPage = studentExamination.get(pageCounter); Iterator itty = firstPage.iterator(); Fouranswers ffy = null; while (itty.hasNext()) { ffy = (Fouranswers) itty.next(); ffy.setQuestionNum(examCount++); } request.setAttribute("page", firstPage); if (pageCounter == studentExamination.size() - 1) { request.setAttribute("where", "end" } else { request.setAttribute("where", "middle" } request.setAttribute("pageCounter", pageCounter); } request.setAttribute("mins", mins); request.setAttribute("examCount", examCount); request.getRequestDispatcher("fourquestionsexam.jsp".forward(request, response); } } } // <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); } @Override public void init() throws ServletException { super.init(); timer = new Timer(); mins = 2400; timer.schedule(new TimerTask() { @Override public void run() { mins--; Logger.getLogger(LoginStudent.class.getName()).log(Level.WARNING, String.valueOf(mins)); if (mins == 0) { try { //mark exam //send to result paage endExam(); request.getRequestDispatcher("results.jsp".forward(request, response); timer.cancel(); //HotSeatServlet.this.destroy(); } catch (ServletException ex) { Logger.getLogger(HotSeatServlet.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(HotSeatServlet.class.getName()).log(Level.SEVERE, null, ex); } } } }, 10000, 1000); } @Override public void destroy() { super.destroy(); timer.cancel(); } /** * Returns a short description of the servlet. * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> public void endExam() { try { Iterator ittd = studentExamination.iterator(); List<Fouranswers> fourQuests = null; int correctQuestions = 0; int wrongQuestions = 0; int unansweredQuestions = 0; while (ittd.hasNext()) { fourQuests = (List<Fouranswers> ittd.next(); Iterator ittg = fourQuests.iterator(); Fouranswers fourAns = null; innerend: while (ittg.hasNext()) { fourAns = (Fouranswers) ittg.next(); if (fourAns.getAnswer() == null) { unansweredQuestions++; } else if (fourAns.getAnswer().equals(fourAns.getSolution())) { correctQuestions++; } else { wrongQuestions++; } } } HttpSession session = request.getSession(false); Student student = (Student) session.getAttribute("student" student.setCorrectionsQuestions(correctQuestions); student.setUnansweredQuestions(unansweredQuestions); student.setWrongQuestions(wrongQuestions); session.invalidate(); request.logout(); response.sendRedirect("/onlinetesting/studentindex.jsp" this.destroy(); String strr = "unansweredQuestions=" + unansweredQuestions + ":" + "correctQuestions=" + correctQuestions + ":" + "wrongQuestions=" + wrongQuestions; Logger.getLogger(LoginStudent.class.getName()).log(Level.SEVERE, strr); } catch (IOException ex) { Logger.getLogger(HotSeatServlet.class.getName()).log(Level.SEVERE, null, ex); } catch (ServletException ex) { Logger.getLogger(HotSeatServlet.class.getName()).log(Level.SEVERE, null, ex); } } } |
(1) (Reply)
Programmer/website Developer Need / Sage Professional Needed For Just 2 Days. / Relevance Of Sql
(Go Up)
Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health religion celebs tv-movies music-radio literature webmasters programming techmarket Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 29 |