/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.metadata.core.script.impl;
import org.apache.commons.lang.StringUtils;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.metadata.service.IBusinessDataType;
import com.hundsun.ares.studio.jres.metadata.service.IDictionaryType;
import com.hundsun.ares.studio.jres.metadata.service.IStandardField;
import com.hundsun.ares.studio.jres.model.metadata.BusinessDataType;
import com.hundsun.ares.studio.jres.model.metadata.DictionaryType;
import com.hundsun.ares.studio.jres.model.metadata.MetadataItem;
import com.hundsun.ares.studio.jres.model.metadata.StandardField;
import com.hundsun.ares.studio.jres.model.metadata.decrypt.DeBusinessDataType;
import com.hundsun.ares.studio.jres.model.metadata.decrypt.DeMetadataItem;
import com.hundsun.ares.studio.jres.script.api.metadata.IBizDataTypeItemScriptWrap;
import com.hundsun.ares.studio.jres.script.api.metadata.IDictEntryScriptWrap;
import com.hundsun.ares.studio.jres.script.api.metadata.IStandardFieldScriptWrap;
import com.hundsun.ares.studio.jres.script.api.metadata.ITypeDefaultValueItemScriptWrap;
import com.hundsun.ares.studio.jres.script.base.ScriptModelWrapBase;
/**
* @author lvgao
*
*/
public class StandardFieldScriptWrapImpl extends ScriptModelWrapBase implements IStandardFieldScriptWrap{
protected IStandardField proxy;
public StandardFieldScriptWrapImpl(IStandardField poxy ,IARESResource resource) {
super(resource);
this.proxy = poxy;
}
@Override
public IBizDataTypeItemScriptWrap getBizDataType() {
IBusinessDataType ibusType = proxy.getDataType();
if (ibusType instanceof DeBusinessDataType) {
BusinessDataType busType = ((DeBusinessDataType) ibusType).getProxyItem();
if (busType != null) {
return new BusDataTypeItemScriptWrapImpl(busType, resource);
}
}
return null;
}
@Override
public String getRealType(String type) {
return proxy.getDataType().getRealType(type);
}
@Override
public int getLength() {
int length = 0;
IBusinessDataType bdt = proxy.getDataType();
if(StringUtils.isNotBlank(bdt.getLength())){
try{
length = Integer.parseInt(bdt.getLength());
}catch (Exception e) {
}
}
return length;
}
@Override
public int getPrecision() {
int precision = 0;
IBusinessDataType bdt = proxy.getDataType();
if(StringUtils.isNotBlank(bdt.getPrecision())){
try {
precision = Integer.parseInt(bdt.getPrecision());
} catch (Exception e) {
}
}
return precision;
}
public IDictEntryScriptWrap getDictInfo(){
IDictionaryType dt = proxy.getDictionaryType();
if (dt instanceof DeMetadataItem) {
MetadataItem item = ((DeMetadataItem) dt).getProxyItem();
if (item != null) {
return new DictScriptWrapImpl((DictionaryType)item, resource);
}
}
return null;
}
@Override
public String getName() {
return proxy.getName();
}
@Override
public String getChineseName() {
return proxy.getChineseName();
}
@Override
public StandardField getOriginalInfo() {
if (proxy instanceof DeMetadataItem) {
return (StandardField) ((DeMetadataItem) proxy).getProxyItem();
}
return null;
}
public String getDescription(){
return proxy.getDescription();
}
public void setName(String name){
StandardField std = getOriginalInfo();
if (std != null) {
std.setName(name);
}
}
public void setChineseName(String chinaeseName){
StandardField std = getOriginalInfo();
if (std != null) {
std.setChineseName(chinaeseName);
}
}
public void setDescription(String description){
StandardField std = getOriginalInfo();
if (std != null) {
std.setDescription(description);
}
}
public void setDictInfo(String dictId){
StandardField std = getOriginalInfo();
if (std != null) {
std.setDictionaryType(dictId);
}
}
public void setDataType(String dataType){
StandardField std = getOriginalInfo();
if (std != null) {
std.setDataType(dataType);
}
}
@Override
public String getTrueDefaultValue(String type) {
IBizDataTypeItemScriptWrap bizType = getBizDataType();
if (bizType != null) {
ITypeDefaultValueItemScriptWrap defaultValue = bizType.getDefaultValue();
if (defaultValue != null) {
return defaultValue.getValue(type);
}
}
return StringUtils.EMPTY;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.api.metadata.IStandardFieldScriptWrap#getStrBizDataType()
*/
@Override
public String getStrBizDataType() {
return proxy.getDataTypeId();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.api.metadata.IStandardFieldScriptWrap#getStrDictInfo()
*/
@Override
public String getStrDictInfo() {
return proxy.getDictionaryTypeId();
}
public IStandardField getProxy() {
return proxy;
}
}