package edu.sjtu.infosec.ismp.manager.AM.web.actions; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import edu.sjtu.infosec.ismp.manager.AM.comm.AssetConstant; import edu.sjtu.infosec.ismp.manager.AM.comm.MessageOut; import edu.sjtu.infosec.ismp.manager.AM.model.AssetToHardwareBO; import edu.sjtu.infosec.ismp.manager.AM.model.AssetToHardwareForComm; import edu.sjtu.infosec.ismp.manager.AM.service.AssetToHardwareService; import edu.sjtu.infosec.ismp.manager.AM.web.form.HardwareRaletingForm; import edu.sjtu.infosec.ismp.manager.AM.web.reports.AssetSenderWrapper; public class HardwareRaletingAction extends DispatchAction { private AssetToHardwareService assetToHardwareService; //通讯接口 private AssetSenderWrapper assetSenderWrapper; public void setAssetSenderWrapper(AssetSenderWrapper assetSenderWrapper) { this.assetSenderWrapper = assetSenderWrapper; } public void setAssetToHardwareService( AssetToHardwareService assetToHardwareService) { this.assetToHardwareService = assetToHardwareService; } // 添加硬件的关联方法 public ActionForward addHardwareRaleting(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.setAttribute("operation", "添加硬件与资产的关联"); HardwareRaletingForm softrelatingForm = (HardwareRaletingForm) form; String assetStr[] = request.getParameterValues("asscheckbox"); // 在不等于null的时候并且长度大于一的情况循环关联 if (null != assetStr && assetStr.length > 0) { List<AssetToHardwareBO> list = new ArrayList<AssetToHardwareBO>(); for (int i = 0; i < assetStr.length; i++) { AssetToHardwareBO hardwarevo = new AssetToHardwareBO(); hardwarevo.setAssetId(Integer.parseInt(assetStr[i])); hardwarevo.setDescription(softrelatingForm .getHardwareraletingvo().getDescription()); hardwarevo.setHardwareId(softrelatingForm .getHardwareraletingvo().getHardwareId()); assetToHardwareService.saveAssetToHardware(hardwarevo); list.add(hardwarevo); } //发送添加设备硬件关系信息 sendAssetToHardware(list, AssetConstant.ASSET_ADD); } //判断如果是查询界面的请求就跳转至查询界面 if (request.getParameter("search") != null && request.getParameter("search").equals("1")) { return mapping.findForward("searchHardware"); } else { MessageOut.println(response,"关联成功"); } return mapping.findForward(""); } // 取消硬件的关联方法 public ActionForward cancelHardwareRaleting(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.setAttribute("operation", "取消硬件与资产的关联"); HardwareRaletingForm softrelatingForm = (HardwareRaletingForm) form; String assetStr[] = request.getParameterValues("asscheckbox"); Integer hid = null; if (request.getParameter("hid") != null) { hid = Integer.parseInt(request.getParameter("hid")); } if (request.getParameter("hid") != null) { if (assetStr != null && assetStr.length > 0) { // 循环关联 for (int i = 0; i < assetStr.length; i++) { AssetToHardwareBO hardwarevo = new AssetToHardwareBO(); hardwarevo.setAssetId(Integer.parseInt(assetStr[i])); hardwarevo.setHardwareId(hid); List<AssetToHardwareBO> list = assetToHardwareService .getListByAssetToHardware(hardwarevo); for (AssetToHardwareBO assetToHardwareBO : list) { assetToHardwareService.deleteAssetToHardware(assetToHardwareBO); } //发送删除设备硬件关系信息 sendAssetToHardware(list, AssetConstant.ASSET_DELETE); } } } MessageOut.println(response, "取消成功"); return null; } //传送设备硬件关联信息 private void sendAssetToHardware(List<AssetToHardwareBO> beans, String method) { if(assetSenderWrapper == null) { log.info("发送器对象为Null,终止服务!"); return; } AssetToHardwareForComm comm = new AssetToHardwareForComm(); comm.setMethod(method); comm.setAssetToHardwares(beans); try { assetSenderWrapper.executeSend(comm); } catch (Exception e) { e.printStackTrace(); } } }