
package de.ivu.elect.business.personenregister.entity;

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

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.CurrentCustomer;
import de.ivu.elect.business.version.boundary.AbstractVersion;
import de.ivu.elect.jee.entity.Meta;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.protokollierung.ProtokollThreadLocal;
import de.ivu.elect.util.ManifestVersionParser;

@Named(PersonenregisterMeta.COMPONENT_NAME)
public class PersonenregisterMeta implements Meta {

  private static final long serialVersionUID = 1L;

  protected static final String COMPONENT_NAME = "personenregisterMeta";

  @Inject
  private transient Messages messages;

  public PersonenregisterMeta() {
    super();
  }

  @Override
  public String getEinzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_ENTITY_EINZAHL;
  }

  @Override
  public String getMehrzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_ENTITY_MEHRZAHL;
  }

  @Override
  public String getEinzahlMessage() {
    return getMessage(getEinzahlMessageKey());
  }

  @Override
  public String getMehrzahlMessage() {
    return getMessage(getMehrzahlMessageKey());
  }

  public String getKurznameEinzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_KURZNAME_EINZAHL;
  }

  public String getKurznameMehrzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_KURZNAME_MEHRZAHL;
  }

  public String getKurznameEinzahlMessage() {
    return getMessage(getKurznameEinzahlMessageKey());
  }

  public String getKurznameMehrzahlMessage() {
    return getMessage(getKurznameMehrzahlMessageKey());
  }

  public String getServiceUrlEinzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_SERVICE_URL_EINZAHL;
  }

  public String getServiceUrlMehrzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_SERVICE_URL_MEHRZAHL;
  }

  public String getServiceUrlEinzahlMessage() {
    return getMessage(getServiceUrlEinzahlMessageKey());
  }

  public String getServiceUrlMehrzahlMessage() {
    return getMessage(getServiceUrlMehrzahlMessageKey());
  }

  public String getServiceBenutzerEinzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_SERVICE_BENUTZER_EINZAHL;
  }

  public String getServiceBenutzerMehrzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_SERVICE_BENUTZER_MEHRZAHL;
  }

  public String getServiceBenutzerEinzahlMessage() {
    return getMessage(getServiceBenutzerEinzahlMessageKey());
  }

  public String getServiceBenutzerMehrzahlMessage() {
    return getMessage(getServiceBenutzerMehrzahlMessageKey());
  }

  public String getServicePasswortEinzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_SERVICE_PASSWORT_EINZAHL;
  }

  public String getServicePasswortMehrzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_SERVICE_PASSWORT_MEHRZAHL;
  }

  public String getServicePasswortEinzahlMessage() {
    return getMessage(getServicePasswortEinzahlMessageKey());
  }

  public String getServicePasswortMehrzahlMessage() {
    return getMessage(getServicePasswortMehrzahlMessageKey());
  }

  public String getErreichbarkeitEinzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_ERREICHBARKEIT_EINZAHL;
  }

  public String getErreichbarkeitMehrzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_ERREICHBARKEIT_MEHRZAHL;
  }

  public String getErreichbarkeitEinzahlMessage() {
    return getMessage(getErreichbarkeitEinzahlMessageKey());
  }

  public String getErreichbarkeitMehrzahlMessage() {
    return getMessage(getErreichbarkeitMehrzahlMessageKey());
  }

  public String getServiceMandantEinzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_SERVICE_MANDANT_EINZAHL;
  }

  public String getServiceMandantMehrzahlMessageKey() {
    return PersonenregisterConstants.MESSAGE_KEY_SERVICE_MANDANT_MEHRZAHL;
  }

  public String getServiceMandantEinzahlMessage() {
    return getMessage(getServiceMandantEinzahlMessageKey());
  }

  public String getServiceMandantMehrzahlMessage() {
    return getMessage(getServiceMandantMehrzahlMessageKey());
  }

  public String getElectAppName(CurrentCustomer currentCustomer) {
    return "elect iT " + currentCustomer.getCustomer().getBezeichnung();
  }

  public String getElectAppVersion() {
    return new ManifestVersionParser(getClass(), AbstractVersion.ELECT_GROUP_ID, "elect-base-jar").getVersion();
  }

  public String getElectAppAnwenderkennung() {
    return defaultIfBlank(ProtokollThreadLocal.getBenutzerKennung(), getDatenAbrufendeStelleKennung());
  }

  public String getDatenAbrufendeStelleKennung() {
    return "admin"; // LEGACY!!!
  }

  public String getDatenAbrufendeStelleAktenzeichen() {
    return getDatenAbrufendeStelleKennung() + "@" + System.currentTimeMillis();
  }

  public String getDatenAbrufendeStelleAnlassDesAbrufs() {
    return "Personendatenabgleich";
  }

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