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

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

import javax.inject.Named;

import de.ivu.elect.business.staat.entity.Staat;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(StaatColumnBuilder.COMPONENT_NAME)
public class StaatColumnBuilder extends AbstractColumnBuilder<Staat> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "staatColumnBuilder";

  private AbstractStaatColumn<Staat> staatNameStaatColumn;

  private AbstractStaatColumn<Staat> staatNameStaatsangehoerigkeitColumn;

  private AbstractStaatColumn<Staat> staatIso3166Alpha2Column;

  private AbstractStaatColumn<Staat> staatIso3166NumerischColumn;

  private AbstractStaatColumn<Staat> staatCustomCodeStaatColumn;

  private AbstractStaatColumn<Staat> staatCustomCodeStaatsangehoerigkeitColumn;

  public StaatColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    staatNameStaatColumn = AbstractStaatColumn.createStaatNameStaatColumn(getMessages());
    staatNameStaatsangehoerigkeitColumn = AbstractStaatColumn.createStaatNameStaatsangehoerigkeitColumn(getMessages());

    staatIso3166Alpha2Column = AbstractStaatColumn.createStaatIso3166Alpha2Column(getMessages());
    staatIso3166NumerischColumn = AbstractStaatColumn.createStaatIso3166NumerischColumn(getMessages());

    staatCustomCodeStaatColumn = AbstractStaatColumn.createStaatCustomCodeStaatColumn(getMessages());
    staatCustomCodeStaatsangehoerigkeitColumn = AbstractStaatColumn.createStaatCustomCodeStaatsangehoerigkeitColumn(getMessages());
  }

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

    result.add(staatNameStaatColumn);
    result.add(staatNameStaatsangehoerigkeitColumn);

    result.add(staatIso3166Alpha2Column);
    result.add(staatIso3166NumerischColumn);

    result.add(staatCustomCodeStaatColumn);
    result.add(staatCustomCodeStaatsangehoerigkeitColumn);

    return result;
  }
}
