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

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

import org.apache.commons.lang3.StringUtils;

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 StringUtils.EMPTY;
    }
    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 EMPTY;
  }
}
