/* ================================================================== * 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.List; import java.util.Map; 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 com.jinhe.tss.component.dynproperty.DynConstants; import com.jinhe.tss.core.persistence.IEntity; import com.jinhe.tss.core.web.dispaly.tree.ILevelTreeNode; import com.jinhe.tss.core.web.dispaly.tree.TreeAttributesMap; import com.jinhe.tss.core.web.dispaly.xform.IXForm; /** * <p> DynableEntity.java </p> * * 动态实体注册类。 * 需要扩展为动态实体的实体类需要在本类里注册,声明为动态实体类。 */ @Entity @Table(name = "component_dyn_DynableEntity", uniqueConstraints = { @UniqueConstraint(name="MULTI_NAME_DYN_ENTITY", columnNames = { "parentId", "name" }) }) @SequenceGenerator(name = "dyn_sequence", sequenceName = "dyn_sequence", initialValue = 1, allocationSize = 20) public class DynableEntity implements IEntity, ILevelTreeNode, IXForm { public static final Long DYN_ROOT_ID = new Long(0); @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "dyn_sequence") private Long id; private Long parentId = DYN_ROOT_ID; private Integer seqNo ; // 顺序号:用于排序 private String className; //可配置动态属性类的类名(包括package路径);如果是组,该项为空 private String entityCode; //对应的实体Entity的code,用来唯一标识不同动态实体;如果是组,该项为空 private String name; //可配置动态属性类的类的中文名字 /** 属于该动态实体的所有Grid模板 */ @Transient private List<PropertyDef> properties = new ArrayList<PropertyDef>(); /** 属于该动态实体的所有XForm模板 */ @Transient private List<XFormTemplate> xformTemplates = new ArrayList<XFormTemplate>(); /** 属于该动态实体的所有Grid模板 */ @Transient private List<GridTemplate> gridTemplates = new ArrayList<GridTemplate>(); public List<GridTemplate> getGridTemplates() { return gridTemplates; } public List<PropertyDef> getProperties() { return properties; } public List<XFormTemplate> getXformTemplates() { return xformTemplates; } public boolean isGroup(){ return this.entityCode == null; } public TreeAttributesMap getAttributes() { TreeAttributesMap map = new TreeAttributesMap(id, name); map.put("parentId", this.parentId); map.put("className", this.className); map.put("entityCode", this.entityCode); map.put("type", "" + (entityCode == null ? DynConstants.GROUP_TYPE : DynConstants.ENTITY_TYPE)); map.put("icon", "images/entity" + (entityCode == null ? "_group" : "") + ".gif"); 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("parentId", this.parentId); map.put("className", this.className); map.put("entityCode", this.entityCode); return map; } public Class<?> getParentClass() { return getClass(); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getParentId() { return parentId; } public void setParentId(Long parentId) { this.parentId = parentId; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getEntityCode() { return entityCode; } public void setEntityCode(String entityCode) { this.entityCode = entityCode; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getSeqNo() { return seqNo; } public void setSeqNo(Integer seqNo) { this.seqNo = seqNo; } }