package com.eactive.eai.common.util;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.MDC;

public class TxSiftContext {

    /**
     * 거래 시작 시 SIFT discriminator를 MDC에 등록한다.
     * SIFT가 비활성화 상태이면 아무 작업도 하지 않는다.
     */
    public static boolean begin(String discriminatingValue) {
        if (!Logger.isSiftEnabled()) return false;
        if(MDC.get(Logger.DISCRIMINATOR) == null) {
		    MDC.put(Logger.DISCRIMINATOR, discriminatingValue);
		    return true;
		}
        return false;
    }

    /**
     * 거래 종료 시 MDC에 등록된 SIFT appender를 닫고 MDC를 정리한다.
     * begin() 에서 MDC가 설정되지 않았으면 아무 작업도 하지 않는다.
     */
    public static void end() {
        String discriminatingValue = MDC.get(Logger.DISCRIMINATOR);
        if (StringUtils.isBlank(discriminatingValue)) return;
        Logger.closeSiftAppender(discriminatingValue);
        MDC.remove(Logger.DISCRIMINATOR);
    }
}
