package com.hundsun.ares.studio.logic.script; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import org.apache.log4j.Logger; import com.hundsun.ares.studio.core.IARESProject; 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.ILogicServiceWrap; import com.hundsun.ares.studio.jres.script.api.wrap.ILogicScriptWrap; import com.hundsun.ares.studio.logic.constants.ILogicRefType; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; /** * @author sundl * */ public class LogicScriptWrap implements ILogicScriptWrap{ private static final Logger logger = Logger.getLogger(LogicScriptWrap.class); private IARESProject project; public LogicScriptWrap(IARESProject project) { this.project = project; } @Override public ILogicServiceWrap[] getLogicServices() { List<ILogicServiceWrap> services = new ArrayList<ILogicServiceWrap>(); long t0 = System.currentTimeMillis(); ReferenceManager manager = ReferenceManager.getInstance(); List<ReferenceInfo> refList = manager.getReferenceInfos(project, ILogicRefType.LOGIC_SERVICE, true); for (ReferenceInfo ref : refList) { try { services.add(new LogicServiceWrap(ref.getResource())); } catch (Exception e) { e.printStackTrace(); } } long t1 = System.currentTimeMillis(); Collections.sort(services, new Comparator<ILogicServiceWrap>() { @Override public int compare(ILogicServiceWrap o1, ILogicServiceWrap o2) { try { String id1 = o1.getId(); String id2 = o2.getId(); return id1 == null ? 1 : id1.compareTo(id2); } catch (Exception e) { e.printStackTrace(); } return 0; } }); long t2 = System.currentTimeMillis(); if (logger.isDebugEnabled()) logger.debug(String.format("��ȡ������ʱ��%s, ������ʱ %s", (t1-t0), (t2-t1))); return services.toArray(new ILogicServiceWrap[0]); } @Override public ILogicFunctionWrap[] getLogicFunctions() { List<ILogicFunctionWrap> services = new ArrayList<ILogicFunctionWrap>(); long t0 = System.currentTimeMillis(); ReferenceManager manager = ReferenceManager.getInstance(); List<ReferenceInfo> refList = manager.getReferenceInfos(project, ILogicRefType.LOGIC_FUNCTION, true); for (ReferenceInfo ref : refList) { services.add(new LogicFunctionWrap(ref.getResource())); } long t1 = System.currentTimeMillis(); Collections.sort(services, new Comparator<IBizServiceWrap>() { @Override public int compare(IBizServiceWrap o1, IBizServiceWrap o2) { return o1.getId().compareTo(o2.getId()); } }); long t2 = System.currentTimeMillis(); if (logger.isDebugEnabled()) logger.debug(String.format("��ȡ������ʱ��%s, ������ʱ %s", (t1-t0), (t2-t1))); return services.toArray(new ILogicFunctionWrap[0]); } @Override public ILogicServiceWrap getLSByCName(String name) { ReferenceManager manager = ReferenceManager.getInstance(); ReferenceInfo ref = manager.getFirstReferenceInfo(project, ILogicRefType.LOGIC_SERVICE_CNAME, name, true); if (ref != null) { return new LogicServiceWrap(ref.getResource()); } return null; } @Override public ILogicFunctionWrap getLFByCName(String name) { ReferenceManager manager = ReferenceManager.getInstance(); ReferenceInfo ref = manager.getFirstReferenceInfo(project, ILogicRefType.LOGIC_FUNCTION_CNAME, name, true); if (ref != null) { return new LogicFunctionWrap(ref.getResource()); } return null; } }