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

import java.util.Collection;
import java.util.Map;

import de.ivu.elect.business.konfiguration.entity.CustomParameter;


import static java.util.Arrays.asList;
import static java.util.Objects.nonNull;

public abstract class AbstractWahlParameter implements WahlParameterBase, CustomParameter<WahlParameterWerte> {

  private static final long serialVersionUID = 1L;

  public AbstractWahlParameter() {
    super();
  }

  @Override
  public Collection<WahlParameterWerte> getTemplates() {
    return asList(WahlParameterWerte.values());
  }

  @Override
  public void setKey(String key) {
    setSchluessel(key);
  }

  @Override
  public String getKey() {
    return getSchluessel();
  }

  protected void preSetWahl(Wahl from, Wahl to) {
    if (nonNull(to)) {
      setWahltermin(to.getWahltermin());
    }
  }

  protected void postSetWahl(Wahl from, Wahl to) {
    // Do nothing.
  }

  @Override
  public Map<String, Object> getTransientContextConfig() {
    return getTransientContext();
  }

}
