package com.hundsun.ares.studio.jres.script.util.impl; import org.apache.commons.lang.StringUtils; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESModule; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.model.ICommonModel; import com.hundsun.ares.studio.core.model.ModuleProperty; import com.hundsun.ares.studio.core.util.ARESElementUtil; import com.hundsun.ares.studio.jres.script.api.biz.IBizObjectWrap; import com.hundsun.ares.studio.jres.script.api.biz.IBizServiceWrap; import com.hundsun.ares.studio.jres.script.api.biz.cres.ILogicFunctionWrap; import com.hundsun.ares.studio.jres.script.api.biz.cres.ILogicModuleWrap; import com.hundsun.ares.studio.jres.script.api.biz.cres.ILogicServiceWrap; import com.hundsun.ares.studio.jres.script.api.factory.IScriptPoxyFactory; import com.hundsun.ares.studio.jres.script.api.wrap.IARESModuleWrap; import com.hundsun.ares.studio.jres.script.api.wrap.IBizModuleWrap; import com.hundsun.ares.studio.jres.script.api.wrap.IObjectModuleWrap; import com.hundsun.ares.studio.jres.script.wrap.ModelScriptWrapManager; public class ARESModuleWrap implements IARESModuleWrap, IObjectModuleWrap, IBizModuleWrap, ILogicModuleWrap{ private IARESModule module; IBizModuleWrap bizProxy; IObjectModuleWrap objProxy; ILogicModuleWrap logicProxy; public ARESModuleWrap(IARESModule module) { this.module = module; IScriptPoxyFactory factory = ModelScriptWrapManager.getInstance().getScriptPoxyFactory("jres.biz"); if (factory != null) { bizProxy = (IBizModuleWrap) factory.createModuleProxy(module); } factory = ModelScriptWrapManager.getInstance().getScriptPoxyFactory("jres.obj"); if (factory != null) { objProxy = (IObjectModuleWrap) factory.createModuleProxy(module); } factory = ModelScriptWrapManager.getInstance().getScriptPoxyFactory("cres.logic"); if (factory != null) { logicProxy = (ILogicModuleWrap) factory.createModuleProxy(module); } } @Override public String getName() { return this.module.getShortName(); } @Override public String getFullyQualifiedName() { return this.module.getElementName(); } @Override public String getCName() { IARESResource pro = module.getARESResource(IARESModule.MODULE_PROPERTY_FILE); if (pro != null && pro.exists()) { try { ModuleProperty property = pro.getInfo(ModuleProperty.class); if (property != null) { String cname = property.getString(ICommonModel.CNAME); return cname == null ? StringUtils.EMPTY : cname; } } catch (ARESModelException e) { e.printStackTrace(); } } return StringUtils.EMPTY; } @Override public IARESModuleWrap getParent() { IARESModule parentModule = module.getParentModule(); return new ARESModuleWrap(parentModule); } // @Override // public IARESModuleWrap[] getSubModules() { // for (IARESModule sub : module.get) // return null; // } @Override public IARESModuleWrap getTopModule() { if (ARESElementUtil.isTopModule(module)) return this; IARESModule top = null; while ((top = module.getParentModule()) != null) { if (ARESElementUtil.isTopModule(top)) break; } if (top != null) return new ARESModuleWrap(top); // should not happen return null; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((module == null) ? 0 : module.hashCode()); return result; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ARESModuleWrap other = (ARESModuleWrap) obj; if (module == null) { if (other.module != null) return false; } else if (!module.equals(other.module)) return false; return true; } @Override public IBizServiceWrap[] getServices(boolean recursive) { if (bizProxy != null) { return bizProxy.getServices(recursive); } return new IBizServiceWrap[0]; } @Override public IBizObjectWrap[] getObjects(boolean recursive) { if (objProxy != null) { return objProxy.getObjects(recursive); } return new IBizObjectWrap[0]; } @Override public ILogicServiceWrap[] getLogicServices(boolean recursive) { if (logicProxy != null) { return logicProxy.getLogicServices(recursive); } return null; } @Override public ILogicFunctionWrap[] getLogicFunctions(boolean recursive) { if (logicProxy != null) return logicProxy.getLogicFunctions(recursive); return null; } }