package com.citicbank.vipfund.webapp.utilTest;
import java.util.concurrent.Semaphore;
import com.citicbank.vipfund.webapp.util.PortfolioUtils;
/**
* @author jgao1 用法:PortfolioManager
* portfolioManager=PortfolioManager.getInstance();
* portfolioManager.calculateMvoByXMLString(configXml,inputXml);
*/
public class PortfolioManager {
private static PortfolioManager instance; // 唯一实例
private static Semaphore semp = null;
/**
* 单例模式建构私有函数以防止其它对象创建本类实例
*/
private PortfolioManager() {
semp = new Semaphore(10);// 设置互斥的访问个数
}
/**
* 采用单例模式,返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return 唯一实例
*/
public static synchronized PortfolioManager getInstance() {
if (instance == null) {
instance = new PortfolioManager();
}
return instance;
}
public String getCalculateMvoByXMLString(String configXml, String inputXml) {
try {
semp.acquire();
return calculateMvoByXMLString(configXml, inputXml);
} catch (InterruptedException e) {
return null;
} finally {
semp.release();
}
}
/**
* 计算MVO
*
* @param configXml
* @param inputXml
* @param timOut
* @return
*/
public String calculateMvoByXMLString(String configXml,
String inputXml) {
return PortfolioUtils.calculateMvoByXMLString(configXml, inputXml);
}
}