class MongoEventSourceSettings {

    public static MongoEventSourceSettings fromConfig(final Config config,
            final String persistenceIdPrefix,
            final boolean supportsNamespaces,
            final String journalPluginId,
            final String snapshotPluginId) {

        checkNotNull(config, "config");
        checkNotNull(journalPluginId, "journal plugin ID");
        checkNotNull(snapshotPluginId, "snapshot plugin ID");

        final String metadataCollectionName = getCollectionName(config, journalPluginId, "metadata");
        final String journalCollectionName = getCollectionName(config, journalPluginId, "journal");
        final String snapshotCollectionName = getCollectionName(config, snapshotPluginId, "snaps");

        return new MongoEventSourceSettings(persistenceIdPrefix, supportsNamespaces, metadataCollectionName,
                journalCollectionName, snapshotCollectionName);
    }

    private  MongoEventSourceSettings(final String persistenceIdPrefix,
            final boolean supportsNamespaces,
            final String metadataCollectionName,
            final String journalCollectionName,
            final String snapshotCollectionName);

}