FieldDetailSaveAction.java
/*
* @ Copyright 2001 FA Software;
* All right reserved. No part of this program may be reproduced or
* transmitted in any form or by any means, electronic or
* mechanical, including photocopying, recording, or by any
* information storage or retrieval system without written
* permission from FA Software, except for inclusion of brief
* quotations in a review.
*/
package com.mycim.webapp.actions.setting.system.field;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.bas.Relation;
import com.mycim.valueobject.consts.LinkTypeList;
import com.mycim.valueobject.consts.SessionNames;
import com.mycim.valueobject.sys.Field;
import com.mycim.webapp.Constants;
import com.mycim.webapp.actions.SystemSetupAction;
import com.mycim.webapp.forms.system.FieldInfoForm;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Collection;
/**
* @author weike li
* @version 0.0.1
* @since 2019/8/19 9:30
**/
public class FieldDetailSaveAction extends SystemSetupAction {
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
FieldInfoForm theform = (FieldInfoForm) form;
Field field = new Field(theform.getInstanceId(),
getNamedSpace(ObjectList.FIELD_KEY, LocalContext.getFacilityRrn()),
ObjectList.FIELD_KEY);
field = (Field) getInstance(field);
field.setTransPerformedby(LocalContext.getUserId());
request.setAttribute(SessionNames.FIELD_KEY, field);
theform.setTransId(Constants.MODIFY_KEY);
return mapping.findForward(Constants.MEMBERS_KEY);
}
@Override
public ActionForward cancel(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
FieldInfoForm theform = (FieldInfoForm) form;
Field field = new Field(theform.getInstanceId(),
getNamedSpace(ObjectList.FIELD_KEY, LocalContext.getFacilityRrn()),
ObjectList.FIELD_KEY);
field = (Field) getInstance(field);
PropertyUtils.copyProperties(theform, field);
theform.setTransId(Constants.MODIFY_KEY);
field.setCheckRules(getCheckRules(field));
request.setAttribute(SessionNames.FIELD_KEY, field);
return new ActionForward(mapping.getInput());
}
public ActionForward delete(ActionMapping mapping, FieldInfoForm form,
HttpServletRequest request) throws Exception {
Field field = new Field(form.getInstanceId(),
getNamedSpace(ObjectList.FIELD_KEY, LocalContext.getFacilityRrn()),
ObjectList.FIELD_KEY);
field = (Field) getInstance(field);
Relation relation = new Relation();
relation.setFromRrn(new Long(field.getInstanceRrn()));
relation.setToRrn(form.getRuleNum());
relation.setAttributedata1(form.getParameter1());
relation.setAttributedata2(form.getParameter2());
relation.setAttributedata3(form.getGroupNum());
relation.setLinkType(LinkTypeList.FIELD_RULE_KEY);
relation.setTransId(Constants.DELETE_KEY);
processDetails(relation);
processScreens(field.getInstanceRrn(), getCheckRules(field));
field.setCheckRules(getCheckRules(field));
PropertyUtils.copyProperties(form, field);
form.setTransId(Constants.MODIFY_KEY);
request.setAttribute(SessionNames.FIELD_KEY, field);
return new ActionForward(mapping.getInput());
}
private void processDetails(Relation relation) {
String action = relation.getTransId();
if (action.equals(Constants.CREATE_KEY)) {
if (baseService.getRelation(relation) == null) {
baseService.insertRelation(relation);
}
} else if (action.equals(Constants.DELETE_KEY)) {
baseService.deleteRelation(relation);
} else if (action.equals(Constants.MODIFY_KEY)) {
baseService.updateRelationForAttribute(relation);
}
}
private void processScreens(long fieldRrn, Collection validators) {
sysService.batchUpdateScreensForField(fieldRrn, validators);
}
public ActionForward create(ActionMapping mapping, FieldInfoForm form,
HttpServletRequest request) throws Exception {
Field field = new Field(form.getInstanceId(),
getNamedSpace(ObjectList.FIELD_KEY, LocalContext.getFacilityRrn()),
ObjectList.FIELD_KEY);
field = (Field) getInstance(field);
Relation relation = new Relation();
relation.setFromRrn(new Long(field.getInstanceRrn()));
relation.setToRrn(form.getRuleNum());
relation.setAttributedata1(form.getParameter1());
relation.setAttributedata2(form.getParameter2());
relation.setAttributedata3(form.getGroupNum());
relation.setLinkType(LinkTypeList.FIELD_RULE_KEY);
relation.setTransId(Constants.CREATE_KEY);
processDetails(relation);
processScreens(field.getInstanceRrn(), getCheckRules(field));
field.setCheckRules(getCheckRules(field));
PropertyUtils.copyProperties(form, field);
form.setTransId(Constants.MODIFY_KEY);
request.setAttribute(SessionNames.FIELD_KEY, field);
return new ActionForward(mapping.getInput());
}
public ActionForward modify(ActionMapping mapping, FieldInfoForm form,
HttpServletRequest request) throws Exception {
Field field = new Field(form.getInstanceId(),
getNamedSpace(ObjectList.FIELD_KEY, LocalContext.getFacilityRrn()),
ObjectList.FIELD_KEY);
field = (Field) getInstance(field);
Relation relation = new Relation();
relation.setFromRrn(new Long(field.getInstanceRrn()));
relation.setToRrn(form.getRuleNum());
relation.setAttributedata1(form.getParameter1());
relation.setAttributedata2(form.getParameter2());
relation.setAttributedata3(form.getGroupNum());
relation.setLinkType(LinkTypeList.FIELD_RULE_KEY);
relation.setTransId(Constants.MODIFY_KEY);
processDetails(relation);
processScreens(field.getInstanceRrn(), getCheckRules(field));
field.setCheckRules(getCheckRules(field));
PropertyUtils.copyProperties(form, field);
form.setTransId(Constants.MODIFY_KEY);
request.setAttribute(SessionNames.FIELD_KEY, field);
return new ActionForward(mapping.getInput());
}
}