/**
* <p>Copyright: Copyright (c) 2014</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.procedure.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.cres.IProcedureWrap;
import com.hundsun.ares.studio.jres.script.api.wrap.IProcedureScriptWrap;
import com.hundsun.ares.studio.model.reference.ReferenceInfo;
import com.hundsun.ares.studio.procdure.constants.IProcedureRefType;
import com.hundsun.ares.studio.reference.ReferenceManager;
/**
* @author qinyuan
*
*/
public class ProcedureScriptWrap implements IProcedureScriptWrap{
private static final Logger logger = Logger.getLogger(ProcedureScriptWrap.class);
private IARESProject project;
/**
* @param project
*/
public ProcedureScriptWrap(IARESProject project) {
this.project = project;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.api.wrap.IProcedureScriptWrap#getProcedure()
*/
@Override
public IProcedureWrap[] getProcedures() {
List<IProcedureWrap> services = new ArrayList<IProcedureWrap>();
long t0 = System.currentTimeMillis();
ReferenceManager manager = ReferenceManager.getInstance();
List<ReferenceInfo> refList = manager.getReferenceInfos(project, IProcedureRefType.PROCEDURE, true);
for (ReferenceInfo ref : refList) {
try {
services.add(new ProcedureWrap(ref.getResource()));
} catch (Exception e) {
e.printStackTrace();
}
}
long t1 = System.currentTimeMillis();
Collections.sort(services, new Comparator<IProcedureWrap>() {
@Override
public int compare(IProcedureWrap o1, IProcedureWrap 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 IProcedureWrap[0]);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.script.api.wrap.IProcedureScriptWrap#getProcedureByCName(java.lang.String)
*/
@Override
public IProcedureWrap getProcedureByCName(String name) {
ReferenceManager manager = ReferenceManager.getInstance();
ReferenceInfo ref = manager.getFirstReferenceInfo(project, IProcedureRefType.PROCEDURE_CNAME, name, true);
if (ref != null) {
return new ProcedureWrap(ref.getResource());
}
return null;
}
}