
package de.ivu.elect.presentation.personenpruefung.table;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.personenpruefung.entity.PersonenKonflikt;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.presentation.person.PersonendatenFormatter;
import de.ivu.elect.presentation.person.table.PersonendatenFamiliennameAnzeigeColumn;
import de.ivu.elect.presentation.person.table.PersonendatenPersonStatusMitIconColumn;
import de.ivu.elect.presentation.person.table.PersonendatenVornamenAnzeigeColumn;

public abstract class AbstractPersonenKonfliktSearchColumnBuilder extends AbstractColumnBuilder<PersonenKonflikt> {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient PersonendatenFormatter personendatenFormatter;

  protected AbstractPersonenKonfliktColumn<PersonenKonflikt> personenKonfliktPersonendatenFamiliennameAnzeigeColumn;

  protected AbstractPersonenKonfliktColumn<PersonenKonflikt> personenKonfliktPersonendatenVornamenAnzeigeColumn;

  protected AbstractPersonenKonfliktColumn<PersonenKonflikt> personenKonfliktPersonendatenPersonStatusColumn;

  protected AbstractPersonenKonfliktColumn<PersonenKonflikt> personenKonfliktKonfliktArtColumn;

  protected AbstractPersonenKonfliktColumn<PersonenKonflikt> personenKonfliktKonfliktStatusColumn;

  protected AbstractPersonenKonfliktSearchColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    personenKonfliktPersonendatenFamiliennameAnzeigeColumn = new PersonenKonfliktPersonendatenColumn("PersonenKonflikt-Personendaten-FamiliennameAnzeige",
        new PersonendatenFamiliennameAnzeigeColumn<>(getMessages(), personendatenFormatter), getMessages());
    personenKonfliktPersonendatenVornamenAnzeigeColumn = new PersonenKonfliktPersonendatenColumn("PersonenKonflikt-Personendaten-VornamenAnzeige",
        new PersonendatenVornamenAnzeigeColumn<>(getMessages(), personendatenFormatter), getMessages());

    personenKonfliktPersonendatenPersonStatusColumn = new PersonenKonfliktPersonendatenColumn("PersonenKonflikt-Personendaten-Status",
        new PersonendatenPersonStatusMitIconColumn<>(getMessages(), getIcons()), getMessages());

    personenKonfliktKonfliktArtColumn = AbstractPersonenKonfliktColumn.createPersonenKonfliktPersonenKonfliktArtColumn(getMessages());
    personenKonfliktKonfliktStatusColumn = AbstractPersonenKonfliktColumn.createPersonenKonfliktPersonenKonfliktStatusColumn(getMessages());
  }

  @Override
  protected List<ColumnEntry< ? super PersonenKonflikt>> getColumnEntriesSorted() {
    List<ColumnEntry< ? super PersonenKonflikt>> result = new ArrayList<>();

    result.add(personenKonfliktPersonendatenFamiliennameAnzeigeColumn);
    result.add(personenKonfliktPersonendatenVornamenAnzeigeColumn);

    result.add(personenKonfliktPersonendatenPersonStatusColumn);

    result.add(personenKonfliktKonfliktArtColumn);
    result.add(personenKonfliktKonfliktStatusColumn);

    return result;
  }
}
