/******************************************************************************* * Copyright (c) 2015 QUANTICOL EU Project. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Michele Loreti (University of Firenze) - initial API and implementation *******************************************************************************/ package org.cmg.ml.sam.sim.sampling; import java.util.Collection; import java.util.LinkedList; /** * @author loreti * */ public class SamplingCollection<S> implements SamplingFunction<S> { private LinkedList<SamplingFunction<S>> functions; public SamplingCollection() { this.functions = new LinkedList<SamplingFunction<S>>(); } @SafeVarargs public SamplingCollection(SamplingFunction<S>... functions) { this(); for (SamplingFunction<S> f : functions) { this.functions.add(f); } } public SamplingCollection(Collection<SamplingFunction<S>> functions) { this(); this.functions = new LinkedList<>(); this.functions.addAll(functions); } public void addSamplingFunction(SamplingFunction<S> function) { functions.add(function); } @Override public void sample(double time, S context) { for (SamplingFunction<S> f : functions) { f.sample(time, context); } } @Override public void end(double time) { for (SamplingFunction<S> f : functions) { f.end(time); } } @Override public void start() { for (SamplingFunction<S> f : functions) { f.start(); } } public int size(){ return this.functions.size(); } public SamplingFunction<S> get(int i){ return this.functions.get(i); } @Override public LinkedList<SimulationTimeSeries> getSimulationTimeSeries( int replications ) { LinkedList<SimulationTimeSeries> toReturn = new LinkedList<>(); for (SamplingFunction<S> f : functions) { toReturn.addAll(f.getSimulationTimeSeries( replications )); } return toReturn; } }