📄 form.java
字号:
// Source file:
// C:\\Java\\workspace\\SmartWeb3\\src\\com\\cyberway\\dynaform\\form\\ejb\\Form.java
package cn.myapps.core.dynaform.form.ejb;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import cn.myapps.base.action.ParamsTable;
import cn.myapps.base.dao.ValueObject;
import cn.myapps.core.deploy.application.ejb.ApplicationVO;
import cn.myapps.core.deploy.module.ejb.ModuleVO;
import cn.myapps.core.dynaform.PermissionType;
import cn.myapps.core.dynaform.document.ejb.Document;
import cn.myapps.core.dynaform.document.ejb.Item;
import cn.myapps.core.macro.runner.JavaScriptRunner;
import cn.myapps.core.page.ejb.Page;
import cn.myapps.core.style.repository.ejb.StyleRepositoryVO;
import cn.myapps.core.user.action.WebUser;
import cn.myapps.core.user.ejb.UserVO;
import cn.myapps.core.workflow.element.Element;
import cn.myapps.core.workflow.element.FlowDiagram;
import cn.myapps.core.workflow.element.ManualNode;
import cn.myapps.core.workflow.engine.StateMachine;
import cn.myapps.core.workflow.engine.StateMachineHelper;
import cn.myapps.core.workflow.storage.definition.ejb.BillDefiVO;
import cn.myapps.core.workflow.storage.runtime.ejb.NodeRT;
import cn.myapps.core.workflow.utility.CommonUtil;
import cn.myapps.core.workflow.utility.FieldPermissionList;
import cn.myapps.util.StringList;
import cn.myapps.util.StringUtil;
import cn.myapps.util.sequence.Sequence;
/**
* 模板
*
* @hibernate.class table="T_DYNAFORM_FORM"
*
*/
public class Form extends ValueObject implements Cloneable {
public static final int FORM_TYPE_NORMAL = 0x0000001;
public static final int FORM_TYPE_SUBFORM = 0x0000010;
public static final int FORM_TYPE_SEARCHFORM = 0x0000100;
public static final int FORM_TYPE_HOMEPAGE = 0x0001000;
private final int[] formType = new int[] { FORM_TYPE_NORMAL,
FORM_TYPE_SUBFORM, FORM_TYPE_SEARCHFORM, FORM_TYPE_HOMEPAGE };
private final String[] formTypeName = new String[] { "NORMAL", "SUBFORM",
"SEARCHFORM", "HOMEPAGE" };
private Map _fields;
private Collection _textparts;
protected Collection _elements;
private Collection _compiledElements;
/**
* Form在模版内容
*/
private String templatecontext;
/**
* 描述
*/
private String discription;
/**
* Form类型
*/
private int type;
private String id;
/**
* 是否编辑模式,当为非编辑模式时,Form只读。
*/
private boolean editmodal = true;
private ApplicationVO application;
private ModuleVO module;
private boolean changed;
private UserVO lastmodifier;
private Date lastmodifytime;
/**
* Form名称
*/
private String name;
/**
* 打开Form之前执行脚本 当返回值非空时打开失败
*/
private String beforopenscript;
/**
* 打开Form之后执行脚本
*/
private String afteropenscript;
/**
* 保存Form之前执行脚本 当返回值非空时保存失败
*/
private String beforsavescript;
/**
* 保存Form之后执行脚本
*/
private String aftersavescript;
/**
* 退出时执行脚本 当返回值非空时退出失败
*/
private String onexitscript;
private String titlescript;
public StyleRepositoryVO style;
private Set activitys;
private Set relatedViews;
private Set relatedActivitys;
private int version;
/**
* @hibernate.property column="VERSIONS"
* @return
*/
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
/**
* @hibernate.set name="activitys" inverse="true" cascade="delete"
* order-by="ORDERNO"
* @hibernate.collection-key column="FORM_ID"
*
* @hibernate.collection-one-to-many class="cn.myapps.core.dynaform.activity.ejb.Activity"
* @return
*/
public Set getActivitys() {
if (this.activitys == null)
this.activitys = new HashSet();
return activitys;
}
public void setActivitys(Set activitys) {
this.activitys = activitys;
}
/**
* @hibernate.property column="AFTEROPENSCRIPT"
*/
public String getAfteropenscript() {
return afteropenscript;
}
public void setAfteropenscript(String afteropenscript) {
this.afteropenscript = afteropenscript;
}
/**
* @hibernate.property column="AFTERSAVESCRIPT"
*/
public String getAftersavescript() {
return aftersavescript;
}
public void setAftersavescript(String aftersavescript) {
this.aftersavescript = aftersavescript;
}
/**
* @hibernate.property column="BEFOROPENSCRIPT"
*/
public String getBeforopenscript() {
return beforopenscript;
}
public void setBeforopenscript(String beforopenscript) {
this.beforopenscript = beforopenscript;
}
/**
* @hibernate.property column="BEFORSAVESCRIPT"
*/
public String getBeforsavescript() {
return beforsavescript;
}
public void setBeforsavescript(String beforsavescript) {
this.beforsavescript = beforsavescript;
}
/**
* @hibernate.property column="ONEXITSCRIPT"
*/
public String getOnexitscript() {
return onexitscript;
}
public void setOnexitscript(String onexitscript) {
this.onexitscript = onexitscript;
}
/**
* @roseuid 41ECB66B0306
*/
public Form() {
_fields = new HashMap(20);
_textparts = new ArrayList(20);
_elements = new ArrayList(40);
_compiledElements = new ArrayList(50);
}
public String toCalctext(Document doc, ParamsTable params, WebUser user,
JavaScriptRunner runner, Collection errors) throws Exception {
return toCalctext(doc, params, user, runner, errors, null, true);
}
public String toCalctext(Document doc, ParamsTable params, WebUser user,
JavaScriptRunner runner, Collection errors, BillDefiVO flowVO,
boolean bRefreshScript) throws Exception {
StringBuffer template = new StringBuffer();
// show error info.
if (errors != null && errors.size() > 0) {
template
.append("<table class=dybody width='100%'><tr><td align='right' width='1%' valign='top' nowrap><font color='red'><b>提示信息:</b></font></td><td align='left' width='99%'><font color='red'><b>");
Iterator iter = errors.iterator();
while (iter.hasNext()) {
ValidateMessage error = (ValidateMessage) iter.next();
template.append(error.getErrmessage());
}
template.append("</font><b></td></tr></table>");
}
// show element html tags.
Iterator iter = _elements.iterator();
while (iter.hasNext()) {
FormElement fld = (FormElement) iter.next();
if (fld != null) {
if (fld instanceof FormField) {
FormField ff = (FormField) fld;
if (!isEditmodal()) {
ff.setDisplayType(PermissionType.DISABLED);
}
try {
if (!ff.runHiddenScript(runner, doc)) {
template.append("<SPAN id='" + ff.getName()
+ "_divid'>");
String content = "";
if (fld instanceof IncludeField
&& ((IncludeField) fld).isIntegratePage()) {
content = ((IncludeField) fld).toHtmlTxt(
params, user, runner);
} else {
content = fld.toHtmlTxt(params, user, runner,
doc);
}
if (content != null && content.trim().length() > 0) {
template.append(content);
}
template.append("</SPAN>");
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
template.append(fld.toHtmlTxt(params, user, runner, doc)); // doc为null时是page
}
}
}
if (this instanceof Page) { // page模式不生成script
return template.toString();
}
if (bRefreshScript) {
template.append(addScript(doc, user, flowVO));
}
return template.toString();
}
/**
* 添加script
*
* @param doc
* @param user
* @param flowVO
* @return
* @throws Exception
*/
public String addScript(Document doc, WebUser user, BillDefiVO flowVO)
throws Exception {
StringBuffer template = new StringBuffer();
template.append("<script>");
template.append("var dy_token = true;");
template
.append("function dy_lock(){document.all('loadingDiv').style.top=document.body.scrollTop;document.all('loadingDiv').style.left=document.body.scrollLeft;document.all('loadingDiv').style.display='';}");
template
.append("function dy_unlock(){document.all('loadingDiv').style.display='none';}");
template.append("function dy_getFormid(){").append("return '").append(
getId()).append("';}");
template.append("function dy_getValuesMap(withParentid){");
template.append("var valuesMap = {};");
for (Iterator iter2 = deepSearchFields(getFields()).iterator(); iter2
.hasNext();) {
Object obj = iter2.next();
if (obj instanceof FormField) {
FormField field = (FormField) obj;
if (field instanceof InputField
|| field instanceof TextareaField) {
template.append("if(document.all('" + field.getName()
+ "')){valuesMap['" + field.getName()
+ "']=document.all('" + field.getName()
+ "').value;}");
} else if (field instanceof RadioField) {
template
.append("if(document.all('"
+ field.getName()
+ "')){valuesMap['"
+ field.getName()
+ "']=(function(){var fields=document.getElementsByName('"
+ field.getName()
+ "');for(var i=0;i<fields.length;i++){if(fields[i].checked)return fields[i].value}}).call();}");
} else if (field instanceof SelectField) {
// template.append("if(document.all('" + field.getName()
// + "')&&document.all('" + field.getName()
// + "').options.length>0){valuesMap['"
// + field.getName() + "']=document.all('"
// + field.getName() + "').options[document.all('"
// + field.getName() + "').selectedIndex].value;}");
template.append("if(document.all('" + field.getName()
+ "')){valuesMap['" + field.getName()
+ "']=document.all('" + field.getName()
+ "').value;}");
} else if (field instanceof CheckboxField) {
template
.append("if(document.all('"
+ field.getName()
+ "')){valuesMap['"
+ field.getName()
+ "']=(function(){var rtn='';var fields=document.getElementsByName('"
+ field.getName()
+ "');for(var i=0;i < fields.length;i++){if(fields[i].checked)rtn+=fields[i].value+';';};return rtn;}).call();}");
}
}
}
template
.append("if(document.all('parentid') && withParentid){valuesMap['parentid']=document.all('parentid').value;}");
template
.append("if(document.all('application')){valuesMap['application']=document.all('application').value;}");
template.append("return valuesMap;");
template.append("}");
String flowid = "";
if (flowVO != null) {
flowid = flowVO.getId();
}
template.append("function dy_refresh(actfield){");
template.append("if (dy_token){");
template.append("dy_token=false;");
template.append("dy_lock();");
template.append("FormHelper.refresh('" + this.getId() + "',actfield,'"
+ doc.getId() + "','" + user.getId()
+ "' , dy_getValuesMap(true) , '" + flowid
+ "' , function(str){eval(str);dy_token=true;dy_unlock();});");
template.append("}}");
template.append("</script>");
return template.toString();
}
public Collection sortFields() {
// Field 排序
ArrayList tFields = new ArrayList();
Collection fields = this.getFields();
Iterator iter3 = fields.iterator();
while (iter3.hasNext()) {
FormField field = (FormField) iter3.next();
if (field.getName().lastIndexOf("$") > 0) {
tFields.add(field);
}
}
for (int i = 0; i < tFields.size(); i++) {
for (int j = i + 1; j < tFields.size(); j++) {
FormField f1 = (FormField) tFields.get(i);
FormField f2 = (FormField) tFields.get(j);
if (f1.getSeq() > f2.getSeq()) {
Object tmp = tFields.get(i);
tFields.set(i, tFields.get(j));
tFields.set(j, tmp);
}
}
}
return tFields;
}
public Collection compileCalctext(String content) {
// _compiledElements.clear();
// StringBuffer ready = new StringBuffer();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -