📄 fieldbean.java
字号:
package com.primeton.eos.fbframe.fbmetadata.metadata;
import java.util.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.primeton.tp.common.xml.XmlUtil;
/**
*@author wkq
* @version 1.0
* @date 2006-5-2
* @class_displayName FieldBean
* 这个类用于维护实体字段的元数据信息
*/
public class FieldBean implements Comparable {
public FieldBean()
{
}
/**
* 把字段元数据定义转换为XML节点对象
* @param e
*/
public void toXmlNode(Element e)
{
Document doc = e.getOwnerDocument();
Node n = doc.createElement("FIELDNAME");
XmlUtil.setNodeValue(n, FIELDNAME);
e.appendChild(n);
n = doc.createElement("ENTITYNAME");
XmlUtil.setNodeValue(n, ENTITYNAME);
e.appendChild(n);
n = doc.createElement("FK_TABLENAME");
XmlUtil.setNodeValue(n, FK_TABLENAME);
e.appendChild(n);
n = doc.createElement("FK_COLUMNNAME");
XmlUtil.setNodeValue(n, FK_COLUMNNAME);
e.appendChild(n);
n = doc.createElement("FK_FIELDDESC");
XmlUtil.setNodeValue(n, FK_FIELDDESC);
e.appendChild(n);
n = doc.createElement("COLUMNNAME");
XmlUtil.setNodeValue(n, COLUMNNAME);
e.appendChild(n);
n = doc.createElement("FIELDDESC");
XmlUtil.setNodeValue(n, FIELDDESC);
e.appendChild(n);
n = doc.createElement("DISPLAYORDER");
XmlUtil.setNodeValue(n, String.valueOf(DISPLAYORDER));
e.appendChild(n);
n = doc.createElement("FIELDTYPE");
XmlUtil.setNodeValue(n, FIELDTYPE);
e.appendChild(n);
n = doc.createElement("REFTYPE");
XmlUtil.setNodeValue(n, REFTYPE);
e.appendChild(n);
n = doc.createElement("CHECKBOXVALUE");
XmlUtil.setNodeValue(n, CHECKBOXVALUE);
e.appendChild(n);
n = doc.createElement("DOCLISTCODE");
XmlUtil.setNodeValue(n, DOCLISTCODE);
e.appendChild(n);
n = doc.createElement("DISPLAYFORMAT");
XmlUtil.setNodeValue(n, DISPLAYFORMAT);
e.appendChild(n);
n = doc.createElement("WIDTH");
XmlUtil.setNodeValue(n, String.valueOf(WIDTH));
e.appendChild(n);
n = doc.createElement("DEFAULTVALUE");
XmlUtil.setNodeValue(n, DEFAULTVALUE);
e.appendChild(n);
n = doc.createElement("MINVALUE");
if (MINVALUE != null)
XmlUtil.setNodeValue(n, MINVALUE.toString());
e.appendChild(n);
n = doc.createElement("MAXVALUE");
if (MAXVALUE != null)
XmlUtil.setNodeValue(n, MAXVALUE.toString());
e.appendChild(n);
n = doc.createElement("LENGTH");
XmlUtil.setNodeValue(n, String.valueOf(LENGTH));
e.appendChild(n);
n = doc.createElement("PRECISION");
XmlUtil.setNodeValue(n, String.valueOf(PRECISION));
e.appendChild(n);
n = doc.createElement("VALIDATETYPE");
XmlUtil.setNodeValue(n, VALIDATETYPE);
e.appendChild(n);
n = doc.createElement("ISMODIFY");
XmlUtil.setNodeValue(n, ISMODIFY);
e.appendChild(n);
n = doc.createElement("ISDISPLAY");
XmlUtil.setNodeValue(n, ISDISPLAY);
e.appendChild(n);
n = doc.createElement("ISPK");
XmlUtil.setNodeValue(n, ISPK);
e.appendChild(n);
n = doc.createElement("ISAUTOKEY");
XmlUtil.setNodeValue(n, ISAUTOKEY);
e.appendChild(n);
n = doc.createElement("ISLOCK");
XmlUtil.setNodeValue(n, ISLOCK);
e.appendChild(n);
n = doc.createElement("FK_INPUTURL");
XmlUtil.setNodeValue(n, FK_INPUTURL);
e.appendChild(n);
}
String FIELDNAME;
String ENTITYNAME;
String FK_TABLENAME;
String FK_COLUMNNAME;
String FK_FIELDDESC;
String FK_INPUTURL;
String DESC_FIELDNAME;
String COLUMNNAME;
String FIELDDESC;
int DISPLAYORDER;
String FIELDTYPE;
String REFTYPE;
String CHECKBOXVALUE;
String DOCLISTCODE;
String DISPLAYFORMAT;
int WIDTH;
String DEFAULTVALUE;
String MINVALUE;
String MAXVALUE;
int LENGTH;
int PRECISION;
String VALIDATETYPE;
String ISMODIFY;
String ISDISPLAY;
String ISINPUT;
String ISPK;
String ISAUTOKEY;
String ISLOCK;
FieldBean descField = null;
boolean isDesc = false;
public String getDataCellEditor() {
return getDataCellEditor(null, false);
}
/**
* 根据元数据定义输出字段对应的编辑器datacell的html文本,产生的数据形如:
* <td eos_displayname="生日" width="80" name="BIRTH" eos_isnull="true" format="yyyyMMdd" editor="calendarEditor"></td>
* <td eos_displayname="性别" width="80" name="SEX" eos_isnull="true" editor="CUST_SEX_select"></td>
* <td eos_displayname="地址" width="80" eos_maxsize="100" name="ADDRESS" eos_isnull="true" editor="textEditor"></td>
* 0 字符串
* 1 整数
* 2 小数
* 3 日期
* 4 日期时间
* 5 CHECKBOX
* 6 引用
* @param session sessionEntity
* @param isLock 是否为固定字段通常为表格最左边的标识列如编号,姓名等
* @return
*/
public String getDataCellEditor(Node session, boolean isLock)
{
StringBuffer buff = new StringBuffer("");
String lock = "";
if (isLock)
lock = "background:buttonface; border-bottom:1px solid buttonshadow; LEFT: expression(this.parentElement.offsetParent.parentElement.scrollLeft); POSITION: relative;";
int type = 0;
if (FIELDTYPE != null && !FIELDTYPE.equals(""))
type = Integer.parseInt(FIELDTYPE.trim());
buff.append("<td nowrap style=\"white-space: nowrap;").append(lock).append("\" name=\"").append(FIELDNAME).append("\"");
buff.append(" eos_displayname=\"").append(FIELDDESC).append("\"");
buff.append(" width=\"").append(WIDTH).append("\"");
if (notNull())
buff.append(" eos_isnull=\"false\"");
else
buff.append(" eos_isnull=\"true\"");
switch (type) {
case 3:
case 4:
buff.append(" editor=\"calendarEditor\"");
buff.append(" format=\"").append(DISPLAYFORMAT).append("\"");
break;
case 1:
buff.append(" editor=\"textEditor\"");
if (MAXVALUE == null || MAXVALUE.equals("") || MINVALUE == null || MINVALUE.equals(""))
buff.append(" eos_datatype=\"integer\"");
else {
buff.append(" eos_datatype=\"interval(");
if (MINVALUE == null || MINVALUE.equals(""))
buff.append("-");
else
buff.append(MINVALUE);
buff.append(",");
if (MAXVALUE == null || MAXVALUE.equals(""))
buff.append("+");
else
buff.append(MAXVALUE);
buff.append(")\"");
}
break;
case 5:
buff.append(" editor=\"checkBoxEditor(").append(CHECKBOXVALUE).append(")\"");
break;
case 2:
buff.append(" editor=\"textEditor\"");
buff.append(" eos_datatype=\"double(").append(LENGTH).append(",").append(PRECISION).append(")\"");
break;
case 6:
if (REFTYPE != null && REFTYPE.equals("0")) { // 引用类型是业务字典
buff.append(" editor=\"").append(FIELDNAME).append("_dict_select\"");
break;
}
default:
buff.append(" editor=\"textEditor\"");
buff.append(" eos_datatype=\"").append(VALIDATETYPE).append("\"");
buff.append(" eos_maxsize=\"").append(LENGTH).append("\"");
break;
}
if (DEFAULTVALUE != null && !DEFAULTVALUE.equals(""))
buff.append(" defaultValue=\"").append(DEFAULTVALUE).append("\"");
if (session != null) {
if (!isModify(session))
buff.append(" modify=\"false\"");
} else {
if (!isModify())
buff.append(" modify=\"false\"");
}
buff.append("></td>\n");
return buff.toString();
}
/**
* 输出字段对应的datacell的html文本
* @param session
* @param isLock
* @return
*/
public String getDataCellTableCell(Node session, boolean isLock)
{
StringBuffer td = new StringBuffer("");
String lock = "";
if (isLock)
lock = "background:buttonface; border-bottom:1px solid buttonshadow; LEFT: expression(this.parentElement.offsetParent.parentElement.scrollLeft); POSITION: relative;";
if (isFK()) { // 如果是外键引用的字段
if (hasDescField()) { //表中包含了当前字段的描述字段
td.append(getDescField().getDataCellEditor(session, isLock));
if (isModify(session)) // 当前字段是否可以修改
td.append("<td name=\"").append(FIELDNAME).append("\"></td>\n");
} else {
if (FK_FIELDDESC != null && !FK_FIELDDESC.equals("")) { //如果是外键字段是否有外键引用表的描述字段
td.append("<td nowrap style=\"white-space: nowrap;").append(lock).append("\" width=\"").append(getWIDTH()).append("\"");
td.append(" name=\"").append(getFK_FIELDDESC_ALIAS()).append("\" modify=\"false\"></td>\n");
if (isModify(session)) // 当前字段是否可以修改
td.append("<td name=\"").append(FIELDNAME).append("\"></td>\n");
} else {
td.append(getDataCellEditor(session, isLock));
}
}
} else {
td.append(getDataCellEditor(session, isLock));
}
return td.toString();
}
public String getDataCellTableHead(Node session, boolean isLock)
{
StringBuffer buff = new StringBuffer("");
String lock = "";
if (isLock)
lock = " background:buttonface; LEFT: expression(this.parentElement.offsetParent.scrollLeft-1); POSITION: relative;";
if (isFK()) { // 如果是外键引用的字段
if (hasDescField()) { //表中包含了当前字段的描述字段
buff.append("<th nowrap style=\"white-space: nowrap;").append(lock).append("\" name=\"").append(getDescField().getFIELDNAME()).append("\"");
buff.append(" width=\"").append(WIDTH).append("\" class=\"fb_result_head\">").append(FIELDDESC).append("</th>\n");
if (isModify(session)) // 当前字段是否可以修改
buff.append("<th class=\"fb_result_head\" width=\"22\" style=\"white-space: nowrap;").append(lock).append("\" name=\"").append(FIELDNAME).append("\"> </th>");
} else {
if (FK_FIELDDESC != null && !FK_FIELDDESC.equals("")) { //如果是外键字段是否有外键引用表的描述字段
buff.append("<th nowrap style=\"white-space: nowrap;").append(lock).append("\" name=\"").append(getFK_FIELDDESC_ALIAS()).append("\"");
buff.append(" width=\"").append(WIDTH).append("\" class=\"fb_result_head\">").append(FIELDDESC).append("</th>\n");
if (isModify(session)) // 当前字段是否可以修改
buff.append("<th class=\"fb_result_head\" width=\"22\" style=\"white-space: nowrap;").append(lock).append("\" name=\"").append(FIELDNAME).append("\"> </th>");
} else {
buff.append("<th nowrap style=\"white-space: nowrap;").append(lock).append("\" name=\"").append(FIELDNAME).append("\"");
buff.append(" width=\"").append(WIDTH).append("\" class=\"fb_result_head\">").append(FIELDDESC).append("</th>\n");
}
}
} else {
buff.append("<th nowrap style=\"white-space: nowrap;").append(lock).append("\" name=\"").append(FIELDNAME).append("\"");
buff.append(" width=\"").append(WIDTH).append("\" class=\"fb_result_head\">").append(FIELDDESC).append("</th>\n");
}
return buff.toString();
}
public String getDataCellJS(Node session)
{
StringBuffer buff = new StringBuffer("");
if (isFK()) { // 如果是外键引用的字段
if (hasDescField()) { //表中包含了当前字段的描述字段
if (isModify(session)) { // 当前字段是否可以修改
buff.append("case \"").append(getFIELDNAME()).append("\":\n");
buff.append(" var rIndex = cell.parentNode.rowIndex;\n");
buff.append(" var cIndex = cell.cellIndex;\n");
buff.append(" cell.innerHTML = \"<input type=button value='..' style='width:20px' onclick=\\\"javascript:showSelect(\"+rIndex+\",\"+cIndex+\",'");
buff.append(FIELDNAME).append("', '").append(getDescField().getFIELDNAME()).append("', '").append(FK_INPUTURL).append("')\\\">\";\n");
buff.append(" break;\n");
}
} else {
if (FK_FIELDDESC != null && !FK_FIELDDESC.equals("")) { //如果是外键字段是否有外键引用表的描述字段
if (isModify(session)) { // 当前字段是否可以修改
buff.append("case \"").append(getFIELDNAME()).append("\":\n");
buff.append(" var rIndex = cell.parentNode.rowIndex;\n");
buff.append(" var cIndex = cell.cellIndex;\n");
buff.append(" cell.innerHTML = \"<input type=button value='..' style='width:20px' onclick=\\\"javascript:showSelect(\"+rIndex+\",\"+cIndex+\",'");
buff.append(FIELDNAME).append("', '").append(getFK_FIELDDESC_ALIAS()).append("', '").append(FK_INPUTURL).append("')\\\">\";\n");
buff.append(" break;\n");
}
}
}
}
return buff.toString();
}
/**
* 创建时间: 2006-06-13
* 创建人: caisy
* 获取session中的角色列表
* @param session
* @return ArrayList
*/
private ArrayList getRoleList(Node session){
ArrayList roleList = new ArrayList();
try {
NodeList nl = XmlUtil.findNodes(session, "SessionEntity/rolelist/EOSOperatorRole/roleID");
for (int i=0; i<nl.getLength(); i++) {
Node n = nl.item(i);
if (n.getNodeType() == Node.ELEMENT_NODE) {
String role = XmlUtil.getNodeValue(n);
if (role != null && !role.equals("")) {
roleList.add(role);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return roleList;
}
/**
*
* 根据session中的角色列表判断当前登陆人员是否对这个字段有修改的权限
* 修改日期 2006-06-13
* 修改人 caisy
* 修改原因 提取获取rolelist的为一个通用方法
*
*/
public boolean isModify(Node session) {
return isModify(getRoleList(session));
}
/**
* 根据session中的角色列表判断当前登陆人员是否对这个字段有查看的权限
* 修改日期 2006-06-13
* 修改人 caisy
* 修改原因 提取获取rolelist的为一个通用方法
*
*/
public boolean isDisplay(Node session) {
return isDisplay(getRoleList(session));
}
public boolean isModify(List roleList) {
MetaDataSet entitySet = MetaDataSet.getInstance();
Iterator iter = roleList.iterator();
boolean hasRole = false;
while (iter.hasNext()) {
String role = (String) iter.next();
RoleField roleField = entitySet.getRoleField(role, ENTITYNAME, FIELDNAME);
if (roleField != null) {
hasRole = true;
if (roleField.isModify())
return true;
}
}
if (hasRole)
return false;
if (!entitySet.getEntity(ENTITYNAME).isModify(roleList))
return false;
return isModify();
}
public boolean isDisplay(List roleList) {
MetaDataSet entitySet = MetaDataSet.getInstance();
Iterator iter = roleList.iterator();
boolean hasRole = false;
while (iter.hasNext()) {
String role = (String) iter.next();
RoleField roleField = entitySet.getRoleField(role, ENTITYNAME, FIELDNAME);
if (roleField != null) {
hasRole = true;
if (roleField.isView())
return true;
}
}
if (hasRole)
return false;
if (!entitySet.getEntity(ENTITYNAME).isView(roleList))
return false;
return isDisplay();
}
/**
* 字段是否运行修改
* @return
*/
public boolean isModify()
{
return (ISMODIFY != null && ISMODIFY.equalsIgnoreCase("Y"));
}
/**
* 字段是否显示
* @return
*/
public boolean isDisplay()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -