/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.generator; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import com.opengamma.master.security.ManageableSecurity; /** * Source of security instances from a selection of underlying generators. * * @param <T> common security super-type. */ public class CombiningSecurityGenerator<T extends ManageableSecurity> extends SecurityGenerator<T> { private final List<SecurityGenerator<? extends T>> _generators; public CombiningSecurityGenerator(final SecurityGenerator<? extends T>... generators) { _generators = Arrays.asList(generators); } public CombiningSecurityGenerator(final Collection<SecurityGenerator<? extends T>> generators) { _generators = new ArrayList<SecurityGenerator<? extends T>>(generators); } protected List<SecurityGenerator<? extends T>> getGenerators() { return _generators; } @Override public T createSecurity() { return getGenerators().get(getRandom(getGenerators().size())).createSecurity(); } }