/* ==================================================================
* 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.Date;
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 com.jinhe.tss.core.exception.BusinessException;
import com.jinhe.tss.core.persistence.IEntity;
import com.jinhe.tss.core.util.DateUtil;
/**
* <p> PropertyEntry.java </p>
*
* @author Jon.King 2008/04/14 10:18:09
*
* 自定义属性值 (defId, entityId)允许对应多个值
*/
@Entity
@Table(name = "component_dyn_propertyEntry")
@SequenceGenerator(name = "dyn_entry_sequence", sequenceName = "dyn_entry_sequence", initialValue = 1000, allocationSize = 10)
public class PropertyEntry implements IEntity{
//动态属性值类型
@Transient public static final int VAL_VARCHER = 1;
@Transient public static final int VAL_DATE = 2;
@Transient public static final int VAL_NUMERIC = 3;
@Transient public static final int VAL_LONG = 4; //大字段值,java中对应是String型
@Transient public static final int VAL_FILE = 5; //文件路径类型值
@Transient public static final int VAL_PASSWORD = 6; //密码类型值
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "dyn_entry_sequence")
private Long id; // 序号
private Long defId; // 自定义属性ID
private Long entityId; // 对应实体ID
private String valVarchar; // 字符串
private Date valDate; // 日期
private Long valNumeric; // 数值
private String valLong; // 大字段
private String valFile; // 上传文件
private String valPassword; // 密码
/**
* 根据类型判断返回值
* @param type
* @return
*/
public Object getValue(int type) {
switch (type) {
case VAL_VARCHER:
return getValVarchar();
case VAL_DATE:
return getValDate();
case VAL_NUMERIC:
return getValNumeric();
case VAL_LONG:
return getValLong();
case VAL_FILE:
return getValFile();
case VAL_PASSWORD:
return getValPassword();
default:
throw new BusinessException("不支持该类型的自定义数据");
}
}
/**
* 根据类型给对象相应类型的字段设置值。
* @param type
* @param value
*/
public void setValue(int type, Object value){
if(value == null || (value instanceof String && "".equals(value))){
return;
}
switch(type){
case VAL_VARCHER:
this.setValVarchar((String)value);
break;
case VAL_DATE:
if(value instanceof String)
this.setValDate(DateUtil.parse((String)value));
if(value instanceof Date)
this.setValDate((Date)value);
break;
case VAL_NUMERIC:
if(value instanceof Long)
this.setValNumeric((Long)value);
else{
try{
this.setValNumeric(Long.valueOf((String)value));
}catch(Exception e){
throw new BusinessException("输入的值有误,数字类型的字段输入字符必须全部是数字");
}
}
break;
case VAL_LONG:
this.setValLong((String)value);
break;
case VAL_FILE:
this.setValFile((String)value);
break;
case VAL_PASSWORD:
this.setValPassword((String)value);
break;
default:
throw new BusinessException("不支持该类型的自定义数据");
}
}
/**
* 判断对象的各个类型字段的值是否都为空。
*
* @return
*/
public boolean isVauleNull() {
return getValDate() == null && getValLong() == null
&& getValNumeric() == null && getValVarchar() == null
&& getValFile() == null && getValPassword() == null;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getDefId() {
return defId;
}
public void setDefId(Long defId) {
this.defId = defId;
}
public Long getEntityId() {
return entityId;
}
public void setEntityId(Long entityId) {
this.entityId = entityId;
}
public String getValVarchar() {
return valVarchar;
}
public void setValVarchar(String valVarchar) {
this.valVarchar = valVarchar;
}
public Date getValDate() {
return valDate;
}
public void setValDate(Date valDate) {
this.valDate = valDate;
}
public Long getValNumeric() {
return valNumeric;
}
public void setValNumeric(Long valNumeric) {
this.valNumeric = valNumeric;
}
public String getValLong() {
return valLong;
}
public void setValLong(String valLong) {
this.valLong = valLong;
}
public String getValFile() {
return valFile;
}
public void setValFile(String valFile) {
this.valFile = valFile;
}
public String getValPassword() {
return valPassword;
}
public void setValPassword(String valPassword) {
this.valPassword = valPassword;
}
}