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

import static org.apache.commons.lang3.StringUtils.contains;
import static org.apache.commons.lang3.StringUtils.isNoneBlank;

import de.ivu.elect.business.person.entity.AbstractPersonendaten;
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;

/**
 * Vornamen (vollständig) inklusive Rufname, falls nicht in Vornamen enthalten...
 */
public class PersonendatenVornamenAnzeigeColumn<E extends Personendaten> extends AbstractPersonendatenFormattedColumn<E> {

  private static final long serialVersionUID = 1L;

  public PersonendatenVornamenAnzeigeColumn(Messages messages, PersonendatenFormatter personendatenFormatter) {
    super("Personendaten-VornamenVollstaendigAnzeige", messages, personendatenFormatter);
  }

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

  @Override
  public String getHeader() {
    return getMessage(AbstractPersonendaten.MESSAGE_KEY_VORNAME_MEHRZAHL);
  }

  @Override
  public Object getValue(E personendaten) {
    String result = getValueInternal(personendaten);

    String vornamenNormalisiert = personendaten.getVornamenNormalisiert();
    String rufnameNormalisiert = personendaten.getRufnameNormalisiert();

    if (isNoneBlank(vornamenNormalisiert, rufnameNormalisiert) && !contains(vornamenNormalisiert, rufnameNormalisiert)) {
      result += " (" + personendaten.getRufname() + ")";
    }

    return result;
  }

  @Override
  public Object getSortByValue(E personendaten) {
    return getValueInternal(personendaten);
  }

  private String getValueInternal(E personendaten) {
    return getFormatter().getVornamenVollstaendigAnzeige(personendaten);
  }
}
