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

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

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.benutzerverwaltung.boundary.BenutzerExtendedDAO;
import de.ivu.elect.business.benutzerverwaltung.entity.Benutzer;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(BenutzerColumnBuilder.COMPONENT_NAME)
public class BenutzerColumnBuilder extends AbstractColumnBuilder<Benutzer> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "benutzerColumnBuilder";

  @Inject
  private transient BenutzerExtendedDAO benutzerExtendedDAO;

  protected AbstractBenutzerColumn<Benutzer> benutzerBenutzerkennungColumn;

  private AbstractBenutzerColumn<Benutzer> benutzerVornameColumn;

  private AbstractBenutzerColumn<Benutzer> benutzerFamiliennameColumn;

  protected AbstractBenutzerColumn<Benutzer> benutzerLetzteAnmeldungColumn;

  protected AbstractBenutzerColumn<Benutzer> benutzerLoginVersucheColumn;

  protected AbstractBenutzerColumn<Benutzer> benutzerGesperrtColumn;

  private AbstractBenutzerColumn<Benutzer> benutzerBemerkungColumn;

  protected AbstractBenutzerColumn<Benutzer> benutzerRollenColumn;

  public BenutzerColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    benutzerBenutzerkennungColumn = AbstractBenutzerColumn.createBenutzerBenutzerkennungColumn(getMessages());
    benutzerVornameColumn = AbstractBenutzerColumn.createBenutzerVornameColumn(getMessages());
    benutzerFamiliennameColumn = AbstractBenutzerColumn.createBenutzerFamiliennameColumn(getMessages());
    benutzerLetzteAnmeldungColumn = AbstractBenutzerColumn.createBenutzerLetzteAnmeldungColumn(getMessages());
    benutzerLoginVersucheColumn = AbstractBenutzerColumn.createBenutzerLoginVersucheColumn(getMessages());
    benutzerGesperrtColumn = AbstractBenutzerColumn.createBenutzerGesperrtColumn(getMessages());
    benutzerBemerkungColumn = AbstractBenutzerColumn.createBenutzerBemerkungColumn(getMessages());

    benutzerRollenColumn = new BenutzerRollenColumn(getMessages(), benutzerExtendedDAO);
  }

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

    result.add(benutzerBenutzerkennungColumn);
    result.add(benutzerRollenColumn);
    result.add(benutzerVornameColumn);
    result.add(benutzerFamiliennameColumn);
    result.add(benutzerGesperrtColumn);
    result.add(benutzerLetzteAnmeldungColumn);
    result.add(benutzerLoginVersucheColumn);
    result.add(benutzerBemerkungColumn);

    return result;
  }
}
