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