
package de.ivu.elect.presentation.gebietsbaum.action;

import javax.annotation.Nonnull;
import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.boundary.GebietChangeEvent;
import de.ivu.elect.business.gebietsbaum.boundary.GebietConversationSelect;
import de.ivu.elect.business.gebietsbaum.boundary.GebietExtendedDAO;
import de.ivu.elect.business.gebietsbaum.boundary.GebietSessionSelect;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.presentation.menu.AbstractActionEntry;

public abstract class AbstractGebietAction extends AbstractActionEntry<Gebiet> {

  private static final long serialVersionUID = 1L;

  @Inject
  protected transient GebietExtendedDAO gebietExtendedDao;

  @Inject
  protected transient GebietSessionSelect gebietSessionSelect;

  @Inject
  protected transient GebietConversationSelect gebietConversationSelect;

  @Inject
  protected transient GebietChangeEvent gebietChangeEvent;

  public AbstractGebietAction() {
    super();
  }

  @Override
  public boolean isDisabledInternal(@Nonnull Gebiet gebiet) {
    return false;
  }

  @Override
  protected boolean isFireChangeEvent() {
    return false;
  }

  @Override
  protected void fireChangeEvent() {
    gebietChangeEvent.sendChangeEvent();
  }

  @Override
  protected Gebiet attach(Gebiet gebiet) {
    // ELECTSL-32.
    return gebietExtendedDao.attach(gebiet);
  }
}
