/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.script.base;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.ecore.EObject;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.model.Constants;
import com.hundsun.ares.studio.core.model.CoreFactory;
import com.hundsun.ares.studio.core.model.ExtensibleModel;
import com.hundsun.ares.studio.core.model.UserExtensibleProperty;
import com.hundsun.ares.studio.core.model.util.EMFJSONUtil;
import com.hundsun.ares.studio.jres.script.api.model.IScriptModelWrap;
import com.hundsun.ares.studio.jres.script.internal.util.IJSONUtil;
import com.hundsun.ares.studio.jres.script.util.IJRESScript;
/**
* @author lvgao
*
*/
public abstract class ScriptModelWrapBase<T> implements IScriptModelWrap,IJRESScript{
protected IARESResource resource;
public ScriptModelWrapBase(IARESResource resource){
this.resource = resource;
}
public String toJSON() {
try {
Object obj = getOriginalInfo();
if (obj instanceof EObject) {
return EMFJSONUtil.write((EObject)obj);
}
} catch (Exception e) {
console.error(String.format("����Դ[%s]ģ��ת��ΪJSONʧ��,��ϸ��Ϣ:%s" , resource.getPath().toOSString(),e.getMessage()));
}
return "";
}
public String getExtendsValue(String key){
String value = IJSONUtil.instance.getStringFromJSON(toJSON(),key);//ȡϵͳ��չ����
if(StringUtils.isBlank(value)){
if(!StringUtils.startsWith(key, "user_")){
key="user_"+key;
}
value = IJSONUtil.instance.getStringFromJSON(toJSON(),key);//ȡ�û���չ����
}
return value;
}
public void setExtendsValue(String key , String value){
Object obj = getOriginalInfo();
if (obj instanceof ExtensibleModel) {
UserExtensibleProperty userProperty = (UserExtensibleProperty) ((ExtensibleModel)obj).getData2().get(Constants.USER_DATA2_KEY);
if (userProperty != null){
userProperty.getMap().put(key, value);
}else {
UserExtensibleProperty uep = CoreFactory.eINSTANCE.createUserExtensibleProperty();
((ExtensibleModel)obj).getData2().put(Constants.USER_DATA2_KEY, uep);
uep.getMap().put(key, value);
}
}
}
@Override
public String getType() {
return resource.getType();
}
@Override
public String getName() {
return resource.getName();
}
public IARESResource getResource() {
return resource;
}
public abstract T getOriginalInfo();
}