package dials; import com.codahale.metrics.MetricRegistry; import dials.execution.ExecutionContextRecorder; import javax.persistence.EntityManagerFactory; public class DialsSystemInitializer { private static DialsSystemInitializer initializer = new DialsSystemInitializer(); private DialsSystemConfiguration configuration; private DialsSystemInitializer() { configuration = new DialsSystemConfiguration(); } public static DialsSystemInitializer getInstance() { return initializer; } public DialsSystemInitializer withEntityManagerFactory(EntityManagerFactory entityManagerFactory) { configuration.setEntityManagerFactory(entityManagerFactory); return this; } public DialsSystemInitializer withExecutionContextRecorder(ExecutionContextRecorder executionContextRecorder) { configuration.setExecutionContextRecorder(executionContextRecorder); return this; } public DialsSystemInitializer withFailFastEnabled(boolean failFastEnabled) { configuration.setFailFastEnabled(failFastEnabled); return this; } public DialsSystemInitializer withMetricRegistry(MetricRegistry metricRegistry) { configuration.setMetricRegistry(metricRegistry); return this; } public void initializeSystem() { if (configuration.validate()) { Dials.init(configuration); } } }