package net.sourceforge.jabm.distribution;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Required;
import cern.jet.random.AbstractContinousDistribution;
import cern.jet.random.engine.RandomEngine;
public abstract class AbstractDelegatedDistribution
extends AbstractContinousDistribution implements InitializingBean {
protected RandomEngine prng;
protected AbstractContinousDistribution delegate;
protected boolean initialised = false;
@Override
public double nextDouble() {
return delegate.nextDouble();
}
public RandomEngine getPrng() {
return prng;
}
@Required
public void setPrng(RandomEngine prng) {
this.prng = prng;
}
@Override
public void afterPropertiesSet() throws Exception {
initialise();
this.initialised = true;
}
/**
* Initialise the delegate provided that the bean has
* already been configured. This should be called by
* setters after any moments are changed in case
* we are being configured by a PropertyOverrideConfigurator.
*/
public void reinitialise() {
if (initialised) {
initialise();
}
}
public abstract void initialise();
}