Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / New
Stats: 3,154,759 members, 7,824,182 topics. Date: Saturday, 11 May 2024 at 03:14 AM

Online Test Development - Software/Programmer Market - Nairaland

Nairaland Forum / Science/Technology / Programming / Software/Programmer Market / Online Test Development (683 Views)

(2) (3) (4)

(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"wink;

if ("yes".equals(initialize)) {

EntityManager em = null;

em = emf.createEntityManager();

List<Fouranswers> questions = em.createQuery("SELECT f FROM Fouranswers f"wink.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"wink;

request.setAttribute("mins", mins);
request.setAttribute("examCount", examCount);
request.getRequestDispatcher("fourquestionsexam.jsp"wink.forward(request, response);

} else if (!"yes".equals(initialize)) {



String direction = request.getParameter("direction"wink;



if (direction.equals("END"wink) {
endExam();
timer.cancel();

} else if (direction.equals("BACK"wink) {


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"wink;

} else {
request.setAttribute("where", "first"wink;
}
} 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"wink;
}
request.setAttribute("pageCounter", pageCounter);


request.setAttribute("mins", mins);
request.setAttribute("examCount", examCount);
request.getRequestDispatcher("fourquestionsexam.jsp"wink.forward(request, response);

} else if (direction.equals("NEXT"wink) {


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"wink | ste.equals("pageCounterCheck"wink | ste.equals("direction"wink) {
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("grin"wink) {
} 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"wink;

} 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"wink;
} else {
request.setAttribute("where", "middle"wink;
}

request.setAttribute("pageCounter", pageCounter);
}


request.setAttribute("mins", mins);
request.setAttribute("examCount", examCount);
request.getRequestDispatcher("fourquestionsexam.jsp"wink.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"wink.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>wink 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"wink;

student.setCorrectionsQuestions(correctQuestions);
student.setUnansweredQuestions(unansweredQuestions);
student.setWrongQuestions(wrongQuestions);

session.invalidate();
request.logout();
response.sendRedirect("/onlinetesting/studentindex.jsp"wink;

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)

------------------- / Get A Personal Payroll Software For Your Laptop / Phone Street Maps Of Nigerian Cities, No Internet Connection Needed

(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. 27
Disclaimer: Every Nairaland member is solely responsible for anything that he/she posts or uploads on Nairaland.