
package de.ivu.elect.presentation.personenpruefung;

import javax.annotation.PreDestroy;

import org.apache.deltaspike.core.api.scope.ViewAccessScoped;

import de.ivu.elect.business.personenpruefung.entity.PersonenKonflikt;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonfliktPK;
import de.ivu.elect.business.personenpruefung.entity.PersonenKonfliktStatus;
import de.ivu.elect.presentation.edit.AbstractViewScopeStore;

@ViewAccessScoped
public class PersonenKonfliktAufloesenViewViewAccessScopedStateStore extends AbstractViewScopeStore<PersonenKonflikt, PersonenKonfliktPK> {

  private static final long serialVersionUID = 1L;

  private PersonenKonfliktStatus personenKonfliktStatus;

  public PersonenKonfliktAufloesenViewViewAccessScopedStateStore() {
    super();
  }

  @Override
  public void setEntity(PersonenKonflikt personenKonflikt) {
    super.setEntity(personenKonflikt);

    setKonfliktStatus(personenKonflikt == null ? null : personenKonflikt.getPersonenKonfliktStatus());
  }

  @Override
  @PreDestroy
  public void cleanUp() {
    super.cleanUp();

    setKonfliktStatus(null);
  }

  private void setKonfliktStatus(PersonenKonfliktStatus personenKonfliktStatus) {
    if (this.personenKonfliktStatus != null && personenKonfliktStatus != null && !this.personenKonfliktStatus.equals(personenKonfliktStatus)) {
      addWarnMessage("personen.konflikt.aufloesen.status.geaendert", getMessage(this.personenKonfliktStatus), getMessage(personenKonfliktStatus));
    }

    this.personenKonfliktStatus = personenKonfliktStatus;
  }
}
