
package de.ivu.elect.business.pruefung.control;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.business.stimmzettel.entity.EntityAufStimmzettelDatenFactory;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;

public class WusZulassungPrueferCacheHashMap implements WusZulassungPrueferCache {

  private static final long serialVersionUID = 1L;

  private final Map<Kandidatur, Boolean> isZulassenErlaubtKandidaturCache = new HashMap<>();

  private final Map<Kandidatur, List<String>> gruendeFuerVerweigerungDerZulassungKandidaturCache = new HashMap<>();

  private final Map<Wahlvorschlag, Boolean> isZulassenErlaubtWahlvorschlagCache = new HashMap<>();

  private final Map<Wahlvorschlag, List<String>> gruendeFuerVerweigerungDerZulassungWahlvorschlagCache = new HashMap<>();

  private final Map<Wahl, EntityAufStimmzettelDatenFactory> entityAufStimmzettelDatenFactoryCache = new HashMap<>();

  public WusZulassungPrueferCacheHashMap() {
    super();
  }

  @Override
  public boolean isZulassenErlaubtKandidaturCacheContainsKey(Kandidatur kandidatur) {
    return isZulassenErlaubtKandidaturCache.containsKey(kandidatur);
  }

  @Override
  public void putIsZulassenErlaubtKandidaturCache(Kandidatur kandidatur, Boolean value) {
    isZulassenErlaubtKandidaturCache.put(kandidatur, value);
  }

  @Override
  public Boolean getIsZulassenErlaubtKandidaturCache(Kandidatur kandidatur) {
    return isZulassenErlaubtKandidaturCache.get(kandidatur);
  }

  @Override
  public List<String> getGruendeFuerVerweigerungDerZulassungKandidaturCache(Kandidatur kandidatur) {
    return gruendeFuerVerweigerungDerZulassungKandidaturCache.get(kandidatur);
  }

  @Override
  public void putGruendeFuerVerweigerungDerZulassungKandidaturCache(Kandidatur kandidatur, List<String> gruende) {
    gruendeFuerVerweigerungDerZulassungKandidaturCache.put(kandidatur, gruende);
  }

  @Override
  public boolean isZulassenErlaubtWahlvorschlagCacheContainsKey(Wahlvorschlag wahlvorschlag) {
    return isZulassenErlaubtWahlvorschlagCache.containsKey(wahlvorschlag);
  }

  @Override
  public Boolean getIsZulassenErlaubtWahlvorschlagCache(Wahlvorschlag wahlvorschlag) {
    return isZulassenErlaubtWahlvorschlagCache.get(wahlvorschlag);
  }

  @Override
  public void putIsZulassenErlaubtWahlvorschlagCache(Wahlvorschlag wahlvorschlag, Boolean result) {
    isZulassenErlaubtWahlvorschlagCache.put(wahlvorschlag, result);
  }

  @Override
  public List<String> getGruendeFuerVerweigerungDerZulassungWahlvorschlagCache(Wahlvorschlag wahlvorschlag) {
    return gruendeFuerVerweigerungDerZulassungWahlvorschlagCache.get(wahlvorschlag);
  }

  @Override
  public void putGruendeFuerVerweigerungDerZulassungWahlvorschlagCache(Wahlvorschlag wahlvorschlag, List<String> gruende) {
    gruendeFuerVerweigerungDerZulassungWahlvorschlagCache.put(wahlvorschlag, gruende);
  }

  @Override
  public EntityAufStimmzettelDatenFactory getEntityAufStimmzettelDatenFactoryCache(Wahl wahl) {
    return entityAufStimmzettelDatenFactoryCache.get(wahl);
  }

  @Override
  public void putEntityAufStimmzettelDatenFactoryCache(Wahl wahl, EntityAufStimmzettelDatenFactory entityAufStimmzettelDatenFactory) {
    entityAufStimmzettelDatenFactoryCache.put(wahl, entityAufStimmzettelDatenFactory);
  }
}
