
package de.ivu.elect.presentation.person;

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

import java.io.Serializable;

import javax.annotation.Nullable;
import javax.inject.Inject;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.person.entity.PersonendatenArt;
import de.ivu.elect.jee.faces.Messages;

public class PersonendatenArtFormatter implements Serializable {

  private static final long serialVersionUID = 1L;

  public static final String MSG_KEY_PREFIX = PersonendatenArt.MSG_KEY_PREFIX;

  @Inject
  private transient Messages messages;

  public PersonendatenArtFormatter() {
    super();
  }

  public String getPersonendatenArtName(@Nullable Personendaten personendaten) {
    if (personendaten != null) {
      return getPersonendatenArtName(personendaten.getDiscriminator());
    }

    return "";
  }

  public String getPersonendatenArtName(PersonendatenArt personendatenArt) {
    return getPersonendatenArtName(personendatenArt.getTechnicalName());
  }

  private String getPersonendatenArtName(String personendatenArtTechnicalName) {
    return getMessage(generateMessageKey(personendatenArtTechnicalName));
  }

  private String generateMessageKey(String personendatenArtTechnicalName) {
    if (isBlank(personendatenArtTechnicalName) || Personendaten.DISCRIMINATOR_VALUE.equalsIgnoreCase(personendatenArtTechnicalName)) {
      return MSG_KEY_PREFIX + "unbekannt";
    }

    return MSG_KEY_PREFIX + personendatenArtTechnicalName;
  }

  protected String getMessage(String msgKey, Object... params) {
    return messages.getMessageForMessageKey(msgKey, params);
  }
}
