
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.business.person.entity.PersonendatenConstants;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.presentation.person.PersonendatenFormatter;

/**
 * ELECT-12939, Familienname inklusive Namensbestandteil, falls gesetzt...
 */
public class PersonendatenFamiliennameAnzeigeColumn<E extends Personendaten> extends AbstractPersonendatenFormattedColumn<E> {

  private static final long serialVersionUID = 1L;

  public PersonendatenFamiliennameAnzeigeColumn(Messages messages, PersonendatenFormatter personendatenFormatter) {
    super("Personendaten-FamiliennameAnzeige", messages, personendatenFormatter);
  }

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

  @Override
  public String getHeader() {
    return getMessage(PersonendatenConstants.MESSAGE_KEY_FAMILIENNAME_EINZAHL);
  }

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

    if (personendaten != null) {
      result = personendaten.getFamilienname();

      if (isNotBlank(result)) {
        String familiennameBestandteil = personendaten.getFamiliennameBestandteil();

        if (isNotBlank(familiennameBestandteil)) {
          result = familiennameBestandteil + " " + result;
        }
      }
    }

    return result;
  }

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

    return personendaten.getFamilienname();
  }
}
