package org.openbravo.base;

import javax.enterprise.event.Observes;

import org.openbravo.base.model.Entity;
import org.openbravo.base.model.ModelProvider;
import org.openbravo.client.kernel.event.EntityNewEvent;
import org.openbravo.client.kernel.event.EntityPersistenceEventObserver;
import org.openbravo.client.kernel.event.EntityUpdateEvent;
import org.openbravo.client.kernel.event.TransactionBeginEvent;
import org.openbravo.client.kernel.event.TransactionCompletedEvent;
import org.openbravo.model.common.invoice.Invoice;
import org.openbravo.model.common.order.Order;
import org.openbravo.model.financialmgmt.payment.FIN_PaymentSchedule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class InterceptorBugTest extends EntityPersistenceEventObserver {
  private static final Entity orderEntity = ModelProvider.getInstance()
      .getEntity(Order.ENTITY_NAME);
  private static final Entity paymentScheduleEntity = ModelProvider.getInstance()
      .getEntity(FIN_PaymentSchedule.ENTITY_NAME);
  private static final Entity invoiceEntity = ModelProvider.getInstance()
      .getEntity(Invoice.ENTITY_NAME);
  private static final Entity[] entities = { orderEntity, paymentScheduleEntity, invoiceEntity };
  private static final Logger logger = LoggerFactory.getLogger(InterceptorBugTest.class);

  @Override
  protected Entity[] getObservedEntities() {
    return entities;
  }

  public void onTransactionBegin(@Observes TransactionBeginEvent event) {
    logger.info("beginning tx: " + event.getTransaction());
  }

  public void onCreate(@Observes EntityNewEvent event) {
    if (!isValidEvent(event)) {
      return;
    }
  }

  public void onUpdate(@Observes EntityUpdateEvent event) {
    if (!isValidEvent(event)) {
      return;
    }
  }

  public void onTransactionCompleted(@Observes TransactionCompletedEvent event) {
    logger.info("completed tx: " + event.getTransaction());
  }

}
