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

import static java.util.Objects.nonNull;

import de.ivu.elect.business.lokalisierung.control.LokalisierungStore;

public abstract class AbstractLokalisierung implements LokalisierungBase {

  private static final long serialVersionUID = 1L;

  public AbstractLokalisierung() {
    super();
  }

  public String getWertGespeichert() {
    if (hasWertGeaendert()) {
      return getWertGeaendert();
    }

    return getWertPropertydatei();
  }

  public String getWertVerwendet() {
    return LokalisierungStore.getPropertyForKeyAndLocale(getSchluessel(), getLocale());
  }

  public boolean hasWertGeaendert() {
    return nonNullAndNotEmptyString(getWertGeaendert());
  }

  protected String preProcessWertGeaendert(String neuerWert) {
    if (nonNullAndNotEmptyString(neuerWert)) {
      return neuerWert;
    }

    return null;
  }

  protected void preSetWertGeaendert(String alterWert, String neuerWert) {
    // Do nothing.
  }

  protected void postSetWertGeaendert(String alterWert, String neuerWert) {
    // Do nothing.
  }

  private static boolean nonNullAndNotEmptyString(String value) {
    return nonNull(value) && !value.isEmpty();
  }
}
