/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.generator; import com.opengamma.core.position.Portfolio; import com.opengamma.core.position.PortfolioNode; import com.opengamma.core.position.impl.SimplePortfolio; import com.opengamma.core.position.impl.SimplePortfolioNode; import com.opengamma.util.ArgumentChecker; /** * Utility class for constructing a random, but reasonable, portfolio. */ public class PortfolioGenerator { private final PortfolioNodeGenerator _rootNodeGenerator; private final NameGenerator _nameGenerator; public PortfolioGenerator(final PortfolioNodeGenerator rootNodeGenerator, final NameGenerator nameGenerator) { ArgumentChecker.notNull(rootNodeGenerator, "rootNodeGenerator"); ArgumentChecker.notNull(nameGenerator, "nameGenerator"); _rootNodeGenerator = rootNodeGenerator; _nameGenerator = nameGenerator; } protected PortfolioNodeGenerator getRootNodeGenerator() { return _rootNodeGenerator; } protected NameGenerator getNameGenerator() { return _nameGenerator; } public Portfolio createPortfolio() { final PortfolioNode root = getRootNodeGenerator().createPortfolioNode(); final SimplePortfolioNode rootNode; if (root instanceof SimplePortfolioNode) { rootNode = (SimplePortfolioNode) root; } else { rootNode = new SimplePortfolioNode(root); } return new SimplePortfolio(getNameGenerator().createName(), rootNode); } }