/** * */ package com.hundsun.ares.studio.jres.script.base; import org.apache.log4j.Logger; import org.eclipse.core.runtime.NullProgressMonitor; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.ConsoleHelper; import com.hundsun.ares.studio.core.IARESModule; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.util.ARESElementUtil; import com.hundsun.ares.studio.jres.script.api.model.IResourceModelWrap; import com.hundsun.ares.studio.jres.script.api.wrap.IARESModuleWrap; import com.hundsun.ares.studio.jres.script.util.impl.ARESModuleWrap; /** * @author yanwj06282 * */ public abstract class ResourceWrapBase<T> extends ScriptModelWrapBase<T> implements IResourceModelWrap{ private static Logger logger = Logger.getLogger(ResourceWrapBase.class); private boolean isWorkingCopy = false; private T info; public ResourceWrapBase(IARESResource resource) { super(resource); } public void becomeWorkingCopy() { isWorkingCopy = true; } public abstract Class<T> getInfoClass(); @Override public T getOriginalInfo() { if (info == null) { try { if (isWorkingCopy) { info = resource.getWorkingCopy(getInfoClass()); }else { info = resource.getInfo(getInfoClass()); } } catch (ARESModelException e) { e.printStackTrace(); } } return info; } public void save(){ try { resource.save(getOriginalInfo(), true, new NullProgressMonitor()); } catch (ARESModelException e) { ConsoleHelper.getLogger().error("������Դ[" + resource.getPath() + "]ʱ�������󣬿�������Դ�����ڻ�ֻ����", e); } } public String getFullyQualifiedName() { return resource.getFullyQualifiedName(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.script.api.model.IResourceModelWrap#getTopModule() */ @Override public IARESModuleWrap getTopModule() { IARESModule top = ARESElementUtil.getTopModule(resource); return new ARESModuleWrap(top); } }