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

📄 checkmultianswersaction.java

📁 老外的在线考试
💻 JAVA
字号:
/* * CyberTester - J2EE Web application for creating, delivering and managing tests/exams/surveys.  * Copyright (C) 2003 CyberDemia Research and Services Pty Ltd * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see the file COPYING); if not, write to the * Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * * See the COPYING file located in the top-level-directory of * the archive of this program for complete text of license. */package com.cyberdemia.cybertester.student.test;import javax.servlet.http.*;import org.apache.struts.action.*;import com.cyberdemia.school.*;import com.cyberdemia.cybertester.*;import com.cyberdemia.cybertester.student.StudentConstants;import java.util.logging.*;/** *  * CheckMultiAnswersAction is a Struts action to receive and check the user's answers * to all the questions. It is called once for a test that has its * "multiQuestionsMode" enabled. *   * @author Alexander Yap */public final class CheckMultiAnswersAction extends AbstractUserAction{	protected ActionForward doPerform(		ActionMapping mapping, ActionForm form,		HttpServletRequest request, HttpServletResponse response,		HttpSession session) throws Exception	{		ActionErrors errors = new ActionErrors();		QuestionData[] questions = (QuestionData[])session.getAttribute( StudentConstants.QUESTION_LIST_KEY);		if ( questions==null )		{			errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.transaction.token"));		}				// Was this transaction cancelled?		if (isCancelled(request))		{			cleanup( session );			return mapping.findForward(Constants.CANCELLED);		}		String testId = (String)session.getAttribute(StudentConstants.TEST_ID_KEY);		String userId = (String)session.getAttribute(Constants.USER_ID_KEY);		boolean testTimedOut = false;		if (errors.isEmpty())		{			try			{												TestManagerHome testMgrHome = CyberTesterUtils.getTestManagerHome();				TestManager testMgr = (TestManager)testMgrHome.create();				if (!testMgr.getTestScoreForUser(testId, userId, false).isTestTaken())				{					int timeSecs = (int)(StudentTestUtils.checkTestTimeToken(session,testId)/1000);										for (int q=0; q<questions.length; q++)					{						String answerStr = request.getParameter("answer"+q);						if (answerStr!=null)						{							QuestionData quesData = questions[q];							Integer userAnswer = new Integer(answerStr);														if (testMgr.checkQuestionAnswer(testId, quesData.getId(), userId, q, userAnswer, timeSecs,0)==IAnswerStatus.TEST_TIMED_OUT)							{								testTimedOut = true;														}						}						else						{							errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.form.missingParam.select","Answer "+q));						}					}				}				else				{					CyberTesterUtils.getLogger().log( Level.WARNING, "User "+userId+" already taken test "+testId);					errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.test.taken"));				}			}			catch (Exception ex)			{				CyberTesterUtils.getLogger().log( Level.SEVERE, "Error checking answers.", ex);				errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.checking.answers",ex.getMessage()));			}		}		// End of the test, clean up the session		cleanup(session);		if (!errors.isEmpty())		{			saveErrors(request, errors);			return mapping.findForward(Constants.ERROR);		}		request.setAttribute( StudentConstants.TEST_ID_KEY,testId);		if (testTimedOut)		{			request.setAttribute(StudentConstants.TEST_TIMED_OUT_KEY, Boolean.TRUE);		}		return mapping.findForward(Constants.SUCCESS);			}	private void cleanup(HttpSession session)	{		session.removeAttribute(StudentConstants.TEST_ID_KEY);		session.removeAttribute(StudentConstants.TEST_DATA_KEY);		session.removeAttribute(StudentConstants.QUESTION_LIST_KEY);		StudentTestUtils.removeTestTimeToken(session);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -