📄 testresultaction.java
字号:
/*
* Creado el 25-ene-2005 18:00:44
*
*/
package com.martincuervo.javatest.web.actions;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.martincuervo.javatest.business.vo.AnswerVO;
import com.martincuervo.javatest.business.vo.QuestionVO;
/**
* @author Jorge Martin Cuervo <jorge@martincuervo.com>
*
*/
public class TestResultAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
/*
* lectura de los datos de la session. Preguntas y las respuestas
*/
QuestionVO[] questions = (QuestionVO[])session.getAttribute("questions");
Set[] answers = (Set[])session.getAttribute("answers");
Integer actual_question = (Integer)session.getAttribute("actual_question");
int i = actual_question != null ? actual_question.intValue() : 0;
/*
* Si todavia no ha terminado lo mando a la pagina de test
*/
if (questions != null && i == questions.length) {
/*
* Comprobacion de respuestas
*/
List failures = new ArrayList();
for (int j = 0; j < questions.length; j++) {
/*
* Si no tiene marcadas todas las opciones va para el saco de
* failures
*/
if (!answers[j].equals(getCorrectAnswers(questions[j]) ) ){
for (Iterator iter = questions[j].getAnswers().iterator(); iter.hasNext();) {
AnswerVO element = (AnswerVO) iter.next();
element.setChecked( answers[j].contains(new Integer(element.getId())) );
}
failures.add(questions[j]);
}
}
/*
* datos estadisticos
*/
request.setAttribute("questions.length", new Integer(questions.length));
request.setAttribute("questions.good", new Integer(questions.length - failures.size()));
request.setAttribute("questions.bad", new Integer(failures.size()));
request.setAttribute("list_failures", failures);
PrintWriter out =
new PrintWriter(new FileWriter(request.getRemoteAddr()+ "-"+ new Date()+".txt"));
out.println("**************************");
out.println("total:"+questions.length);
out.println("bien:"+(questions.length - failures.size()));
out.println("mal:"+failures.size());
out.println("**************************");
out.println(request.getRemoteAddr());
out.println(new Date());
printCollection(Arrays.asList(questions), out);
out.println("**************************");
printCollection(failures, out);
out.close();
return mapping.findForward("success");
} else {
return mapping.findForward("failure");
}
}
/**
* Para mejorar el log
* @param c
* @param out
*/
public static void printCollection(Collection c, PrintWriter out) {
for (Iterator iter = c.iterator(); iter.hasNext();) {
out.println(iter.next());
}
}
/**
* Retorna un Set con los codigo de las respuestas correctas
*
* @param question
* @return
*/
public static Set getCorrectAnswers(QuestionVO question) {
Set set = new HashSet();
for (Iterator iter = question.getAnswers().iterator(); iter.hasNext();) {
AnswerVO element = (AnswerVO) iter.next();
if (element.isCorrect()) {
set.add(new Integer(element.getId()));
}
}
return set;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -