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

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

import javax.annotation.Nullable;

public enum TagStatus {

  AKTIV {

    @Override
    public boolean isAktiv() {
      return true;
    }

    @Override
    public boolean isNameAenderbar() {
      return false;
    }

    @Override
    public String getFinalName(Tag tag) {
      if (tag == null) {
        return null;
      }

      return tag.getName();
    }
  },

  GELOESCHT {

    @Override
    public boolean isAktiv() {
      return false;
    }

    @Override
    public boolean isNameAenderbar() {
      return false;
    }

    @Override
    public String getFinalName(Tag tag) {
      return null;
    }
  },

  UMBENANNT {

    @Override
    public boolean isAktiv() {
      return false;
    }

    @Override
    public boolean isNameAenderbar() {
      return true;
    }

    @Override
    public String getFinalName(Tag tag) {
      if (tag == null) {
        return null;
      }

      return defaultIfBlank(tag.getNeuerName(), tag.getName());
    }
  };

  public abstract boolean isAktiv();

  public abstract boolean isNameAenderbar();

  @Nullable
  public abstract String getFinalName(Tag tag);
}
