📄 savetestaction.java
字号:
/* * CyberTester - J2EE Web application for creating, delivering and managing tests/exams/surveys. * Copyright (C) 2004 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.admin.test;import javax.servlet.http.*;import java.util.*;import org.apache.struts.action.*;import com.cyberdemia.school.*;import com.cyberdemia.cybertester.*;import java.util.logging.*;import com.cyberdemia.cybertester.admin.*;/** * * SaveTestAction is a Struts action to save the values received from * the test editor to either a new or existing test. * * @version $Revision: 1.5 $ at $Date: 2004/04/12 14:57:29 $ by $Author: alexycyap $ * @author Alexander Yap */public final class SaveTestAction extends AbstractAdminAction{ protected ActionForward doPerform( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, HttpSession session) throws Exception { TestForm testForm = (TestForm)form; // Was this transaction cancelled? if (isCancelled(request)) { cleanup( mapping, session ); return mapping.findForward(Constants.SUCCESS); } Logger logger = CyberTesterUtils.getLogger(); ActionErrors errors = new ActionErrors(); // If submitted out of order, go to error page. if (!isTokenValid(request)) { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.transaction.token")); } resetToken(request); if (errors.isEmpty()) { // Examine all parameters to determine associations with resources ArrayList addResList = new ArrayList(); ArrayList removeResList = new ArrayList(); Enumeration paramEnum = request.getParameterNames(); while (paramEnum.hasMoreElements()) { String paramName = (String)paramEnum.nextElement(); if (paramName.startsWith(AdminConstants.ASSOC_PARAM_PREFIX)) { String resIdStr = paramName.substring(AdminConstants.ASSOC_PARAM_PREFIX.length()); if ("true".equalsIgnoreCase( request.getParameter(paramName))) { logger.log(Level.FINE, "Adding resource "+resIdStr); Integer resId = CyberTesterUtils.convertToInteger(resIdStr); if (resId!=null) { addResList.add(resId); } } else { logger.log(Level.FINE, "NOT adding resource "+resIdStr); } } else if (paramName.startsWith(AdminConstants.DISASSOC_PARAM_PREFIX)) { String resIdStr = paramName.substring(AdminConstants.DISASSOC_PARAM_PREFIX.length()); if ("true".equalsIgnoreCase( request.getParameter(paramName))) { logger.log(Level.FINE, "Removing resource "+resIdStr); Integer resId = CyberTesterUtils.convertToInteger(resIdStr); if (resId!=null) { removeResList.add(resId); } } else { logger.log(Level.FINE, "NOT removing resource "+resIdStr); } } } try { TestManagerHome tMgrHome = CyberTesterUtils.getTestManagerHome(); TestManager testMgr = (TestManager)tMgrHome.create(); if (testForm.isNew()) { logger.log(Level.FINE, "Creating new test, name=\""+testForm.getName()+"\"."); Integer testId = testMgr.addTest( testForm.getName(), testForm.getOwnerHierId(), Double.parseDouble(testForm.getPassPercentage()), testForm.getTimeLimitSeconds(), testForm.isMultiQuestionsMode(), testForm.isSuppressQuestionFeedback(), testForm.isSuppressTestEndFeedback() ); logger.log(Level.FINE, "Created new test, ID="+testId+" name=\""+testForm.getName()+"\"."); } else { Integer testId = testForm.getId(); if (testId!=null) { logger.log(Level.FINE, "Modifying test, ID="+testId); TestData testData = new TestData(testId, testForm.getName(), null, testForm.getOwnerHierId(), Double.parseDouble(testForm.getPassPercentage()), testForm.getTimeLimitSeconds(), testForm.isMultiQuestionsMode(), testForm.isSuppressQuestionFeedback(), testForm.isSuppressTestEndFeedback(), false); testData.setResourceIdsToAdd( (Integer[])addResList.toArray(new Integer[0]) ); testData.setResourceIdsToRemove( (Integer[])removeResList.toArray(new Integer[0]) ); testMgr.setTestData(testId, testData); } else { logger.log(Level.WARNING, "Test editing aborted because ID is missing."); } } } catch (Exception ex) { logger.log( Level.SEVERE, "Error saving Test", ex); cleanup( mapping, session ); throw ex; } } cleanup( mapping, session ); if (!errors.isEmpty()) { saveErrors(request, errors); saveToken(request); return (new ActionForward(mapping.getInput())); } return mapping.findForward(Constants.SUCCESS); } private void cleanup( ActionMapping mapping, HttpSession session) { if (mapping.getAttribute() != null) session.removeAttribute(mapping.getAttribute()); session.removeAttribute(AdminConstants.MODE_KEY); session.removeAttribute(AdminConstants.TEST_DATA_KEY); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -