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

import static org.apache.commons.lang3.StringUtils.abbreviate;
import static org.apache.commons.lang3.StringUtils.length;

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.form.PersonendatenPersonStatusNichtGeeignetBemerkungProperty;

public class PersonendatenPersonStatusNichtGeeignetBemerkungColumn<E extends Personendaten> extends AbstractPersonendatenColumn<E> {

  private static final long serialVersionUID = 1L;

  private static final String HEADER_MSG_KEY = PersonendatenPersonStatusNichtGeeignetBemerkungProperty.LABEL_MSG_KEY;

  private static final int DISPLAY_VALUE_MAX_LENGTH = 200;

  public PersonendatenPersonStatusNichtGeeignetBemerkungColumn(Messages messages) {
    super("Personendaten-PersonStatusBemerkung", messages, HEADER_MSG_KEY, ColumnType.STRING,
        personendaten -> abbreviate(formatPersonStatusNichtGeeignetBemerkung(personendaten), DISPLAY_VALUE_MAX_LENGTH));
  }

  @Override
  public String getTooltip(E personendaten) {
    String result = formatPersonStatusNichtGeeignetBemerkung(personendaten);

    if (length(result) > DISPLAY_VALUE_MAX_LENGTH) {
      return result;
    }

    return super.getTooltip(personendaten);
  }

  private static String formatPersonStatusNichtGeeignetBemerkung(Personendaten personendaten) {
    return new PersonendatenPersonStatusNichtGeeignetBemerkungProperty<>(personendaten).getValue();
  }
}
