import {DataTypeEnum} from '../lang/DataTypeEnum'; import {StringUtil} from '../lang/StringUtil'; import {Annotation} from './Annotation'; import {AnnotationEnum} from './AnnotationEnum'; //============================================================ // 属性描述类。 // // @property // @param name:String 名称 // @param linker:String 关联名称 // @author maocy // @version 141231 //============================================================ export class PropertyAnnotation extends Annotation { // 数据名称 public dataName: string; // 数据类型 public dataCd: DataTypeEnum; // 数据默认 public dataDefault: any; // 数据对象 public dataClass: Function; // 数据转换器 public dataConverter: Function; // 数据持久化 public dataPersistent: Function; //============================================================ // 构造处理。 // // @param name 名称 //============================================================ public constructor(name: string, dataName: String = null, dataCd: DataTypeEnum = DataTypeEnum.Unknown, dataDefault: any = null, dataClass: any = null, dataConverter: any = null, dataPersistent: any = null) { super(name); // 设置属性 this._annotationCd = AnnotationEnum.Property; this._inherit = true; // 设置数据名称 var code = null; if (dataName == null) { if (StringUtil.startsWith(name, '_')) { code = name.substring(1); } else { code = name; } code = StringUtil.toUnderline(code); } else { code = dataName; } this.dataName = code; this.dataCd = dataCd; this.dataDefault = dataDefault; this.dataClass = dataClass; this.dataConverter = dataConverter; this.dataPersistent = dataPersistent; } //============================================================ // 获得代码。 // // @return String 代码 //============================================================ public get code(): string { return this.dataName; } //============================================================ // 构建处理。 //============================================================ public build() { } //============================================================ // 加载属性值。 // // @param value 对象 // @param config 配置 //============================================================ public load(value, config) { value[this._name] = config.get(this.dataName); } //============================================================ // 存储属性值。 // // @param value 对象 // @param config 配置 //============================================================ public save(value, config) { config.set(this.dataName, value[this._name]); } //============================================================ // 获得字符串。 // // @method // @return String 字符串 //============================================================ public toString() { return '<' + this._annotationCd + ',data_name=' + this.dataName + '>'; } }