package de.ivu.elect.jee.protokollierung;

import javax.transaction.Status;
import javax.transaction.Synchronization;

import de.ivu.elect.jee.cdi.BeanManagerUtil;

public class ProtokollSynchronization implements Synchronization {

  @Override
  public void beforeCompletion() {
    if (!ProtokollAktiv.isIsProtokollierungAsynchron()) {
      Protokoll protokoll = ProtokollThreadLocal.get();
      BeanManagerUtil.getBeanByClass(ProtokollSchreibBean.class).schreibe(protokoll, false);
    }
  }

  @Override
  public void afterCompletion(int i) {
    Protokoll protokoll = ProtokollThreadLocal.remove(); // hier definitiv aus dem ThreadLocal entfernen, egal, was mit der Transaktion passiert ist!
    if (Status.STATUS_COMMITTED == i) {
      if (ProtokollAktiv.isIsProtokollierungAsynchron()) {
        BeanManagerUtil.getBeanByClass(ProtokollSchreibBean.class).schreibe(protokoll, true);
      }
    }
  }
}
