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}