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

import java.io.Serializable;
import java.util.List;

import javax.annotation.Nullable;

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 interface WusZulassungPrueferCache extends Serializable {

  boolean isZulassenErlaubtKandidaturCacheContainsKey(Kandidatur kandidatur);

  void putIsZulassenErlaubtKandidaturCache(Kandidatur kandidatur, Boolean value);

  Boolean getIsZulassenErlaubtKandidaturCache(Kandidatur kandidatur);

  @Nullable
  List<String> getGruendeFuerVerweigerungDerZulassungKandidaturCache(Kandidatur kandidatur);

  void putGruendeFuerVerweigerungDerZulassungKandidaturCache(Kandidatur kandidatur, List<String> gruende);

  boolean isZulassenErlaubtWahlvorschlagCacheContainsKey(Wahlvorschlag wahlvorschlag);

  Boolean getIsZulassenErlaubtWahlvorschlagCache(Wahlvorschlag wahlvorschlag);

  void putIsZulassenErlaubtWahlvorschlagCache(Wahlvorschlag wahlvorschlag, Boolean result);

  @Nullable
  List<String> getGruendeFuerVerweigerungDerZulassungWahlvorschlagCache(Wahlvorschlag wahlvorschlag);

  void putGruendeFuerVerweigerungDerZulassungWahlvorschlagCache(Wahlvorschlag wahlvorschlag, List<String> gruende);

  @Nullable
  EntityAufStimmzettelDatenFactory getEntityAufStimmzettelDatenFactoryCache(Wahl wahl);

  void putEntityAufStimmzettelDatenFactoryCache(Wahl wahl, EntityAufStimmzettelDatenFactory entityAufStimmzettelDatenFactory);
}
