package com.hundsun.ares.studio.jres.service.core; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.hundsun.ares.studio.biz.constants.IBizRefType; import com.hundsun.ares.studio.core.IARESModule; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.util.ARESElementUtil; import com.hundsun.ares.studio.jres.script.api.biz.IBizScriptWrap; import com.hundsun.ares.studio.jres.script.api.biz.IBizServiceWrap; import com.hundsun.ares.studio.jres.service.Service; import com.hundsun.ares.studio.jres.service.script.BizServiceWrap; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; /** * @author sundl * */ public class BizWrap implements IBizScriptWrap { private static final Logger logger = Logger.getLogger(BizWrap.class); private IARESProject project; public BizWrap(IARESProject project) { this.project = project; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.script.api.biz.IBizScriptWrap#getServices() */ @Override public IBizServiceWrap[] getServices() { List<IBizServiceWrap> services = new ArrayList<IBizServiceWrap>(); long t0 = System.currentTimeMillis(); ReferenceManager manager = ReferenceManager.getInstance(); List<ReferenceInfo> refList = manager.getReferenceInfos(project, IBizRefType.Service, true); for (ReferenceInfo ref : refList) { services.add(new BizServiceWrap(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 IBizServiceWrap[0]); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.script.api.biz.IBizScriptWrap#getServiceByName(java.lang.String) */ @Override public IBizServiceWrap getServiceByName(String name) { ReferenceInfo ref = ReferenceManager.getInstance().getFirstReferenceInfo(project, IBizRefType.Service, name, true); if (ref != null) return new BizServiceWrap(ref.getResource()); return null; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.script.api.biz.IBizScriptWrap#getServiceByCName(java.lang.String) */ @Override public IBizServiceWrap getServiceByCName(String name) { ReferenceManager manager = ReferenceManager.getInstance(); List<ReferenceInfo> refList = manager.getReferenceInfos(project, IBizRefType.Service, true); for (ReferenceInfo ref : refList) { Service service = (Service) ref.getObject(); if (service != null && StringUtils.equals(name, service.getChineseName())) return new BizServiceWrap(ref.getResource()); } return null; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.script.api.biz.IBizScriptWrap#getServicesBySubsys(java.lang.String) */ @Override public IBizServiceWrap[] getServicesBySubsys(String subsysName) { List<IBizServiceWrap> services = new ArrayList<IBizServiceWrap>(); ReferenceManager manager = ReferenceManager.getInstance(); List<ReferenceInfo> refList = manager.getReferenceInfos(project, IBizRefType.Service, true); for (ReferenceInfo ref : refList) { IARESResource res = ref.getResource(); IARESModule module = ARESElementUtil.getTopModule(res); if (module.getElementName().equals(subsysName)) { services.add(new BizServiceWrap(res)); } } return services.toArray(new IBizServiceWrap[0]); } public IBizServiceWrap[] getServicesByModule(String moduleName) { List<IBizServiceWrap> services = new ArrayList<IBizServiceWrap>(); ReferenceManager manager = ReferenceManager.getInstance(); List<ReferenceInfo> refList = manager.getReferenceInfos(project, IBizRefType.Service, true); for (ReferenceInfo ref : refList) { IARESResource res = ref.getResource(); if (StringUtils.equals(res.getModule().getElementName(), moduleName)) { services.add(new BizServiceWrap(res)); } } return services.toArray(new IBizServiceWrap[0]); } }