if (manageablePortfolio == null) {
s_logger.error("Portfolio " + portfolioName + " was not found");
System.exit(1);
}
s_logger.info("Reloading portfolio from position source...");
Portfolio portfolio = positionSource.getPortfolio(manageablePortfolio.getUniqueId(), VersionCorrection.LATEST);
if (portfolio == null) {
s_logger.error("Portfolio " + portfolioName + " was not found from PositionSource");
System.exit(1);
}
s_logger.info("Done.");
ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(20);
s_logger.info("Resolving portfolio positions and securities...");
Portfolio resolvedPortfolio = PortfolioCompiler.resolvePortfolio(portfolio, newFixedThreadPool, secSource);
if (resolvedPortfolio == null) {
s_logger.error("Portfolio " + portfolioName + " was not correctly resolved by PortfolioCompiler");
System.exit(1);
}
s_logger.info("Resolution Complete.");
PortfolioAggregator aggregator = new PortfolioAggregator(aggregationFunctions);
s_logger.info("Beginning aggregation");
Portfolio aggregatedPortfolio = aggregator.aggregate(resolvedPortfolio);
s_logger.info("Aggregation complete, about to persist...");
if (aggregatedPortfolio == null) {
s_logger.error("Portfolio " + portfolioName + " was not correctly aggregated by the Portfolio Aggregator");
System.exit(1);
}
SavePortfolio savePortfolio = new SavePortfolio(newFixedThreadPool, portfolioMaster, positionMaster);
if (split) {
for (PortfolioNode portfolioNode : aggregatedPortfolio.getRootNode().getChildNodes()) {
String splitPortfolioName = portfolioName + " (" + aggregationName + " " + portfolioNode.getName() + ")";
SimplePortfolioNode root = new SimplePortfolioNode("root");
root.addChildNode(portfolioNode);
Portfolio splitPortfolio = new SimplePortfolio(splitPortfolioName, root);
splitPortfolio.setAttributes(aggregatedPortfolio.getAttributes());
s_logger.info("Saving split portfolio " + portfolioName + "...");
savePortfolio.savePortfolio(splitPortfolio, true);
}
} else {