Java tutorial
/** * PureInfo Command * @(#)ProjectBatchFinishAction.java 1.0 2007-3-21 * * Copyright(c) 2004-2005, PureInfo Information Technology Corp. Ltd. * All rights reserved, see the license file. * * www.pureinfo.com.cn */ package com.pureinfo.srm.project.action.finish; import java.util.Date; import org.apache.commons.lang.ArrayUtils; import org.apache.struts.action.ActionForward; import com.pureinfo.ark.ArkActionTypes; import com.pureinfo.ark.auth2.Auth2Helper; import com.pureinfo.ark.content.ArkContentHelper; import com.pureinfo.ark.content.domain.IContentMgr; import com.pureinfo.ark.interaction.ActionBase; import com.pureinfo.ark.interaction.content.AddEditForm; import com.pureinfo.ark.interaction.util.ActionFormUtil; import com.pureinfo.force.exception.PureException; import com.pureinfo.srm.project.ProjectConstants; import com.pureinfo.srm.project.domain.IProjectMgr; import com.pureinfo.srm.project.model.Project; import com.pureinfo.srm.project.model.ProjectFinish; /** * <P> * Created on 2007-3-21 02:30:26<BR> * Last modified on 2007-3-21 * </P> * ProjectBatchFinishAction * * @author sunjie * @version 1.0, 2007-3-21 * @since Command 1.0 */ public class ProjectBatchFinishAction extends ActionBase { private IProjectMgr prjMgr; private IContentMgr projectFinishMgr; private String[] msgs; private final static int[] PRJ_STATUSES_CANNOT_FINISH = { ProjectConstants.STATUS_APPLY_FINISH_AUDIT, // ProjectConstants.STATUS_APPLY_FINISHED, // ProjectConstants.STATUS_CANCELED, // ProjectConstants.STATUS_FINISHED, // ProjectConstants.STATUS_STOPED // }; /** * @see com.pureinfo.ark.interaction.ActionBase#executeAction() */ public ActionForward executeAction() throws PureException { String sProjectIds = request.getParameter("projectIds"); finishProject(sProjectIds); request.setAttribute("msg", msgs); return mapping.findForward("success"); } /** * finish project * * @param _sProjectIds * @return * @throws PureException */ private void finishProject(String _sProjectIds) throws PureException { int nProjectId = 0; ProjectFinish obj; String[] sArrProjectIds = _sProjectIds.split(","); int[] nProjectIds = ActionFormUtil.Strings2Ints(sArrProjectIds); msgs = new String[nProjectIds.length]; prjMgr = (IProjectMgr) ArkContentHelper.getContentMgrOf(Project.class); projectFinishMgr = ArkContentHelper.getContentMgrOf(ProjectFinish.class); ProjectFinish transObj = (ProjectFinish) ((AddEditForm) form).getObj(); Date dPrjTime = transObj.getPrjTime(); Date dFinishTime = transObj.getFinishTime(); String sProductModel = transObj.getProductModel(); String sRemark = transObj.getRemark(); for (int i = 0; i < nProjectIds.length; i++) { try { nProjectId = nProjectIds[i]; obj = new ProjectFinish(); obj.setProjectId(nProjectId); obj.setPrjTime(dPrjTime); obj.setFinishTime(dFinishTime); obj.setProductModel(sProductModel); obj.setRemark(sRemark); if (!checkCanFinish(obj, i)) { continue; } projectFinishMgr.save(obj); updateProject(obj); } catch (Exception e) { msgs[i] = (i + 1) + " <font color='red'></font>" + nProjectId; continue; } Project project = (Project) prjMgr.lookupById(nProjectId); msgs[i] = (i + 1) + " :" + project.getProjectName() + ""; } } /** * * * @param _nProjectId * @throws PureException */ private void updateProject(ProjectFinish _prjFinish) throws PureException { Project project = (Project) prjMgr.lookupById(_prjFinish.getProjectId()); // check user has finish rights if (Auth2Helper.getManager().hasRight(loginUser, _prjFinish, ArkActionTypes.AUDIT, false)) { project.setLStatus(ProjectConstants.STATUS_FINISHED); } else { project.setLStatus(ProjectConstants.STATUS_APPLY_FINISHED); } project.setEndDate(_prjFinish.getFinishTime()); prjMgr.save(project); } /** * * * @param _prjFinish * * @param _nIndex * * @return * @throws PureException */ private boolean checkCanFinish(ProjectFinish _prjFinish, int _nIndex) throws PureException { int nProjectId = _prjFinish.getProjectId(); // projectId if (nProjectId < 0) { msgs[_nIndex] = (_nIndex + 1) + " <font color='red'>,</font>" + nProjectId; return false; } Project project = (Project) prjMgr.lookupById(nProjectId); // project if (project == null) { msgs[_nIndex] = (_nIndex + 1) + " <font color='red'>,</font>" + nProjectId; return false; } // if (ArrayUtils.indexOf(PRJ_STATUSES_CANNOT_FINISH, project.getLStatus()) >= 0) { msgs[_nIndex] = (_nIndex + 1) + " <font color='red'>,:</font>" + project.getProjectName() + ""; return false; } // if (!Auth2Helper.getManager().hasRight(loginUser, _prjFinish, ArkActionTypes.ADD, false)) { msgs[_nIndex] = (_nIndex + 1) + " <font color='red'>,:</font>" + project.getProjectName() + ""; return false; } return true; } }