package com.fernandocejas.frodo.internal; import com.fernandocejas.frodo.internal.observable.ObservableInfo; public class MessageManager { private final MessageBuilder messageBuilder; private final DebugLog debugLog; public MessageManager() { this(new MessageBuilder(), new DebugLog()); } public MessageManager(MessageBuilder messageBuilder, DebugLog debugLog) { this.messageBuilder = messageBuilder; this.debugLog = debugLog; } private void printMessage(String tag, String message) { debugLog.log(tag, message); } public void printObservableInfo(ObservableInfo observableInfo) { final String message = messageBuilder.buildObservableInfoMessage(observableInfo); this.printMessage(observableInfo.getClassSimpleName(), message); } public void printObservableOnSubscribe(ObservableInfo observableInfo) { final String message = messageBuilder.buildObservableOnSubscribeMessage(observableInfo); this.printMessage(observableInfo.getClassSimpleName(), message); } public <T> void printObservableOnNextWithValue(ObservableInfo observableInfo, T value) { final String message = messageBuilder.buildObservableOnNextWithValueMessage(observableInfo, value); this.printMessage(observableInfo.getClassSimpleName(), message); } public void printObservableOnNext(ObservableInfo observableInfo) { final String message = messageBuilder.buildObservableOnNextMessage(observableInfo); this.printMessage(observableInfo.getClassSimpleName(), message); } public void printObservableOnError(ObservableInfo observableInfo, Throwable throwable) { final String message = messageBuilder.buildObservableOnErrorMessage(observableInfo, throwable.getMessage()); this.printMessage(observableInfo.getClassSimpleName(), message); } public void printObservableOnCompleted(ObservableInfo observableInfo) { final String message = messageBuilder.buildObservableOnCompletedMessage(observableInfo); this.printMessage(observableInfo.getClassSimpleName(), message); } public void printObservableOnTerminate(ObservableInfo observableInfo) { final String message = messageBuilder.buildObservableOnTerminateMessage(observableInfo); this.printMessage(observableInfo.getClassSimpleName(), message); } public void printObservableOnUnsubscribe(ObservableInfo observableInfo) { final String message = messageBuilder.buildObservableOnUnsubscribeMessage(observableInfo); this.printMessage(observableInfo.getClassSimpleName(), message); } public void printSubscriberOnStart(String subscriberName) { final String message = messageBuilder.buildSubscriberOnStartMessage(subscriberName); this.printMessage(subscriberName, message); } public void printSubscriberOnNext(String subscriberName, Object value, String threadName) { final String message = messageBuilder.buildSubscriberOnNextMessage(subscriberName, value, threadName); this.printMessage(subscriberName, message); } public void printSubscriberOnError(String subscriberName, String error, long executionTimeMillis, int receivedItems) { final String itemTimeMessage = messageBuilder.buildSubscriberItemTimeMessage(subscriberName, executionTimeMillis, receivedItems); final String onErrorMessage = messageBuilder.buildSubscriberOnErrorMessage(subscriberName, error); this.printMessage(subscriberName, itemTimeMessage); this.printMessage(subscriberName, onErrorMessage); } public void printSubscriberOnCompleted(String subscriberName, long executionTimeMillis, int receivedItems) { final String itemTimeMessage = messageBuilder.buildSubscriberItemTimeMessage(subscriberName, executionTimeMillis, receivedItems); final String onCompleteMessage = messageBuilder.buildSubscriberOnCompletedMessage(subscriberName); this.printMessage(subscriberName, itemTimeMessage); this.printMessage(subscriberName, onCompleteMessage); } public void printSubscriberRequestedItems(String subscriberName, long requestedItems) { final String message = messageBuilder.buildSubscriberRequestedItemsMessage(subscriberName, requestedItems); this.printMessage(subscriberName, message); } public void printSubscriberUnsubscribe(String subscriberName) { final String message = messageBuilder.buildSubscriberUnsubscribeMessage(subscriberName); this.printMessage(subscriberName, message); } public void printObservableItemTimeInfo(ObservableInfo observableInfo) { final String message = messageBuilder.buildObservableItemTimeInfoMessage(observableInfo); this.printMessage(observableInfo.getClassSimpleName(), message); } public void printObservableThreadInfo(ObservableInfo observableInfo) { if (observableInfo.getSubscribeOnThread().isPresent() || observableInfo.getObserveOnThread().isPresent()) { final String message = messageBuilder.buildObservableThreadInfoMessage(observableInfo); this.printMessage(observableInfo.getClassSimpleName(), message); } } }