policyaction.java

来自「培训考试系统代码」· Java 代码 · 共 481 行 · 第 1/2 页

JAVA
481
字号
package com.huawei.icd30.agt.exam;

import javax.servlet.http.*;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import com.huawei.icd30.agt.util.*;
import com.huawei.icd30.common.db.*;

/**
 * <p> 从PolicyForm类中提取策略信息,
 * 处理增加、修改、删除与查询策略逻辑处理的Action类,
 * 根据不同的OpeType的值执行不同的动作。
 * </p>
 * <p> </p>
 * <p> </p>
 * @author 龙燕茜
 * @version 1.0
 */

public class PolicyAction extends Action
{
    public ActionForward perform(ActionMapping mapping,
           ActionForm form, HttpServletRequest req,
           HttpServletResponse res)
    {
        //判断session是否超时
      /*  ActionForward checkForword = Tools.checkSession(req,res);
        if(checkForword != null)
        {
             return checkForword;
        }
       */
        //获取操作类型
        String opeType = ((PolicyForm)form).getOpeType();//从form中获取

        if(opeType.equalsIgnoreCase(OperatorFlagCode.POLICY_ADD))
        {//增加操作
             return addPolicy(mapping,form,req,res);
        }
        else if (opeType.equalsIgnoreCase(OperatorFlagCode.POLICY_MODIFY))
        {//修改操作
             return modifyPolicy(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.POLICY_DELETE))
        {//删除操作
             return deletePolicy(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.POLICY_QUERY))
        {//查询操作
             return queryPolicy(mapping,form,req,res);
        }
        else if(opeType.equalsIgnoreCase(OperatorFlagCode.POLICY_QDETAIL_SHOW)
                    || opeType.equalsIgnoreCase(OperatorFlagCode.POLICY_QDETAIL_MODIFY))
        {//查询详细信息操作
             return queryPolicyDetail(mapping,form,req,res);
        }
        else
        {//操作类型错误,定向到错误页面
             req.setAttribute("errorId",ErrorCode.UNKNOW_ERROR);
             return (mapping.findForward("error"));
        }

    }

    /**
     * 增加策略操作
     */
    private ActionForward addPolicy(ActionMapping mapping,
           ActionForm form, HttpServletRequest req,
           HttpServletResponse res)
    {

       //从PolicyFrom中获取数据
       String title = ((PolicyForm)form).getTitle();

       //试题题型集合,之间以"#"号分割
       String[] testType = ((PolicyForm)form).getTestType();
       String testTypeSet = Tools.getStringSet(testType);

       //试题数量集合,之间以"#"号分割
       String[] number = ((PolicyForm)form).getNumber();
       String  numberSet = Tools.getStringSet(number);

       //每道题的得分集合,之间以"#"号分割
       String[] perScore = ((PolicyForm)form).getPerScore();
       String  perScoreSet = Tools.getStringSet(perScore);

       //难度集合,之间以"#"号分割
       String[] degreeStr = ((PolicyForm)form).getDegree();
       String degreeSet = Tools.getStringSet(degreeStr);

       //测试手段集合,之间以"#"号分割
       String[] testMeansStr = ((PolicyForm)form).getTestMeans();
       String testMeansSet = Tools.getStringSet(testMeansStr);

       //使用级别,之间以"#"号分割
       String[] useLevelStr = ((PolicyForm)form).getUseLevel();
       String useLevelSet = Tools.getStringSet(useLevelStr);

       //类别编号集合,之间以"#"号分割
       String[] classIdStr = ((PolicyForm)form).getClassIds();
       String classIdSet= Tools.getStringSet(classIdStr);

       //定义连接的实例
       SysDbConn aplcoms = null;
       try
       {
           //得到一个连接的实例
           aplcoms = SysConnPool.getInstance().getAplComs();

           //调用存储过程P_Agt_PolicyAdd完成策略的添加
           aplcoms.preparedSP();
           aplcoms.setString(1 ,title);
           aplcoms.setString(2 ,testTypeSet);
           aplcoms.setString(3 ,numberSet);
           aplcoms.setString(4 ,perScoreSet);
           aplcoms.setString(5 ,degreeSet);
           aplcoms.setString(6 ,testMeansSet);
           aplcoms.setString(7 ,useLevelSet);
           aplcoms.setString(8 ,classIdSet);

           SysDataSet ds = aplcoms.csCommonSP("P_Agt_PolicyAdd");
           SysRecord rc = ds.getParamSet() ;
           if(rc!=null && rc.getInt(0) == OperatorFlagCode.OPERATOR_SUCCESS)
           {//添加策略成功
                //定向到成功页面,成功号为ADDPOLICY_SUCCESS;
                req.setAttribute("successId",SuccessCode.ADDPOLICY_SUCCESS);
                return (mapping.findForward("success"));
           }
           else
           {//添加策略失败
               //定向到错误页面,错误号为POLICY_ADD_ERROR;
               req.setAttribute("errorId",ErrorCode.POLICY_ADD_ERROR);
               return (mapping.findForward("error"));
           }
       }
       catch (SysDbException aple)
       {//捕获CommonService系统异常,定向到出错页面
           //输出异常信息
           aple.printStackTrace();
           req.setAttribute("errorId",ErrorCode.COMMONSERVICE_ERROR);
           return (mapping.findForward("error"));
       }
       catch(java.sql.SQLException sqle)
       {//捕获调用aplcoms异常,定向到出错页面
           // 输出异常信息
           sqle.printStackTrace();
           req.setAttribute("errorId",ErrorCode.DATABASE_ERROR);
           return (mapping.findForward("error"));
       }
       catch(Exception e)
       {//捕获未知异常,定向到出错页面
           //输出异常信息
           e.printStackTrace();
           req.setAttribute("errorId",ErrorCode.UNKNOW_ERROR);
           return (mapping.findForward("error"));
       }
       finally
       {//关闭连接实例
           if(aplcoms != null)
           {
              aplcoms.close();
           }
       }
    }

   /**
     * 修改策略操作
     */
    private ActionForward modifyPolicy(ActionMapping mapping,
           ActionForm form, HttpServletRequest req,
           HttpServletResponse res)
    {
       //从PolicyFrom中获取数据
       String title = ((PolicyForm)form).getTitle();
       String policyId = ((PolicyForm)form).getPolicyId();

       //试题题型集合,之间以"#"号分割
       String[] testType = ((PolicyForm)form).getTestType();
       String testTypeSet = Tools.getStringSet(testType);

       //试题数量集合,之间以"#"号分割
       String[] number = ((PolicyForm)form).getNumber();
       String  numberSet = Tools.getStringSet(number);

       //每道题的得分集合,之间以"#"号分割
       String[] perScore = ((PolicyForm)form).getPerScore();
       String  perScoreSet = Tools.getStringSet(perScore);

       //难度集合,之间以"#"号分割
       String[] degreeStr = ((PolicyForm)form).getDegree();
       String degreeSet = Tools.getStringSet(degreeStr);

       //测试手段集合,之间以"#"号分割
       String[] testMeansStr = ((PolicyForm)form).getTestMeans();
       String testMeansSet = Tools.getStringSet(testMeansStr);

       //使用级别,之间以"#"号分割
       String[] useLevelStr = ((PolicyForm)form).getUseLevel();
       String useLevelSet = Tools.getStringSet(useLevelStr);

       //类别编号集合,之间以"#"号分割
       String[] classIdStr = ((PolicyForm)form).getClassIds();
       String classIdSet= Tools.getStringSet(classIdStr);

       //定义连接的实例
       SysDbConn aplcoms = null;
       try
       {
           //得到一个连接的实例
           aplcoms = SysConnPool.getInstance().getAplComs();

           //调用存储过程P_Agt_PolicyAdd完成策略的添加
           aplcoms.preparedSP();
           aplcoms.setString(1 ,policyId);
           aplcoms.setString(2 ,title);
           aplcoms.setString(3 ,testTypeSet);
           aplcoms.setString(4 ,numberSet);
           aplcoms.setString(5 ,perScoreSet);
           aplcoms.setString(6 ,degreeSet);
           aplcoms.setString(7 ,testMeansSet);
           aplcoms.setString(8 ,useLevelSet);
           aplcoms.setString(9 ,classIdSet);

           SysDataSet ds = aplcoms.csCommonSP("P_Agt_PolicyMod");
           SysRecord rc = ds.getParamSet() ;
           if(rc ==null || rc.getInt(0) == OperatorFlagCode.OPERATOR_EORROR)
           {//修改策略失败
               //定向到错误页面,错误号为POLICY_MOD_ERROR;
               req.setAttribute("errorId",ErrorCode.POLICY_MOD_ERROR);
               return (mapping.findForward("error"));
           }
           //调用queryPolicy函数进行重新查询后返回到列表页面
           return queryPolicy(mapping,form,req,res);
       }
       catch (SysDbException aple)
       {//捕获CommonService系统异常,定向到出错页面
           //输出异常信息
           aple.printStackTrace();

⌨️ 快捷键说明

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