001package ca.cdr.api.transactionlog;
002
003import java.util.List;
004
005/**
006 * Provides configured settings for the transaction log services. Sources of transaction log events
007 * can use this to determine whether to include specific elements in their transaction log entries
008 * for optimization purposes.
009 */
010public interface ITransactionLogCommonSettings {
011
012        boolean isPersistStorageOutcomeDetails();
013
014        static ITransactionLogCommonSettings composite(List<ITransactionLogCommonSettings> theSettings) {
015                return new CompositeSettings(theSettings);
016        }
017
018        class CompositeSettings implements ITransactionLogCommonSettings {
019
020                private final boolean myPersistStorageOutcomeDetails;
021
022                public CompositeSettings(List<ITransactionLogCommonSettings> theSettingsList) {
023                        boolean persistStorageOutcomeDetails = false;
024                        for (ITransactionLogCommonSettings settings : theSettingsList) {
025                                persistStorageOutcomeDetails |= settings.isPersistStorageOutcomeDetails();
026                        }
027                        myPersistStorageOutcomeDetails = persistStorageOutcomeDetails;
028                }
029
030                @Override
031                public boolean isPersistStorageOutcomeDetails() {
032                        return myPersistStorageOutcomeDetails;
033                }
034        }
035}