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

import static org.apache.commons.lang3.StringUtils.isNotBlank;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.presentation.person.PersonendatenFormatter;

public class PersonendatenKuenstlernameOrdensnameColumn<E extends Personendaten> extends AbstractPersonendatenFormattedColumn<E> {

  private static final long serialVersionUID = 1L;

  public PersonendatenKuenstlernameOrdensnameColumn(Messages messages, PersonendatenFormatter personendatenFormatter) {
    super("Personendaten-KuenstlernameOrdensname", messages, personendatenFormatter);
  }

  @Override
  public ColumnType getType() {
    return ColumnType.STRING;
  }

  @Override
  public String getHeader() {
    return getMessage("personendaten.kuenstlername.ordensname");
  }

  @Override
  public Object getValue(E personendaten) {
    if (personendaten == null) {
      return "";
    }

    return getFormatter().bestimmeKuenstlernameUndOrdensname(personendaten);
  }

  @Override
  public Object getSortByValue(E personendaten) {
    if (personendaten == null) {
      return super.getSortByValue(personendaten);
    }

    String kuenstlername = personendaten.getKuenstlername();
    String ordensname = personendaten.getOrdensname();

    if (isNotBlank(kuenstlername)) {
      return kuenstlername;
    }

    if (isNotBlank(ordensname)) {
      return ordensname;
    }

    return "";
  }
}
