⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testresultaction.java

📁 基于STRUTS的网络调查应用
💻 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 + -