/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.component.dynproperty.entity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.UniqueConstraint;
import org.dom4j.Element;
import com.jinhe.tss.component.dynproperty.DynConstants;
import com.jinhe.tss.core.persistence.IEntity;
import com.jinhe.tss.core.util.XMLDocUtil;
import com.jinhe.tss.core.web.dispaly.tree.ITreeNode;
import com.jinhe.tss.core.web.dispaly.tree.TreeAttributesMap;
import com.jinhe.tss.core.web.dispaly.xform.IXForm;
/**
* <p> XFormTemplateTab.java </p>
*
* 唯一索引:xformTemplateId, code
*/
@Entity
@Table(name = "component_dyn_tab", uniqueConstraints = {
@UniqueConstraint(name="MULTI_CODE_XFORM_TAB_TEMPLATE", columnNames = { "xformTemplateId", "code" }),
@UniqueConstraint(name="MULTI_NAME_XFORM_TAB_TEMPLATE", columnNames = { "xformTemplateId", "name" })
})
@SequenceGenerator(name = "dyn_xtab_sequence", sequenceName = "dyn_xtab_sequence", initialValue = 1000, allocationSize = 10)
public class XFormTemplateTab implements IEntity, IXForm, ITreeNode{
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "dyn_xtab_sequence")
private Long id; //主键
private String name; //表单页名称
private String code; //表单页code, 当只有当前动态属性实体存在多个表单时有用
private Integer seqNo; //排序号
@Column(length = 4000)
private String layout; //表单布局,生成的xform 模板<layout/>节点
private Long xformTemplateId; // tab页所属的XForm表单ID
@Transient
private String declare; //表单声明,生成的xform 模板<declare/>节点
@Transient
private List<Long> propertyIds = new ArrayList<Long>();
public List<Long> getPropertyIds(){
return this.propertyIds;
}
public String getDeclare() {
if(this.layout == null) return null;
Element declareNode = (Element) XMLDocUtil.dataXml2Doc(this.layout).selectSingleNode("//xform/declare");
this.declare = declareNode.asXML();
return this.declare;
}
public String getDeclareOnly() {
return this.declare;
}
public String getLayoutOnly() {
if (this.layout == null)
return null;
Element layoutNode = (Element) XMLDocUtil.dataXml2Doc(this.layout).selectSingleNode("//xform/layout");
StringBuffer sb = new StringBuffer();
for (Iterator<?> it = layoutNode.elementIterator(); it.hasNext();) {
Element node = (Element) it.next();
sb.append(node.asXML());
}
return sb.toString();
}
public TreeAttributesMap getAttributes() {
TreeAttributesMap map = new TreeAttributesMap(id, name);
map.put("code", this.code);
map.put("xformTemplateId", this.xformTemplateId);
map.put("type", "" + DynConstants.TAB_TYPE);
return map;
}
public Map<String, Object> getAttributesForXForm() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", this.id);
map.put("name", this.name);
map.put("code", this.code);
map.put("seqNo", this.seqNo);
map.put("layout", this.getLayout());
map.put("declare", this.getDeclare());
map.put("xformTemplateId", this.xformTemplateId);
return map;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getLayout() {
return layout;
}
public void setLayout(String layout) {
this.layout = layout;
}
public Integer getSeqNo() {
return seqNo;
}
public void setSeqNo(Integer seqNo) {
this.seqNo = seqNo;
}
public Long getXformTemplateId() {
return xformTemplateId;
}
public void setXformTemplateId(Long xformTemplateId) {
this.xformTemplateId = xformTemplateId;
}
public void setPropertyIds(List<Long> propertyIds) {
this.propertyIds = propertyIds;
}
}