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}