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

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import de.ivu.elect.business.konfiguration.control.AbstractKonfigurationInit;
import de.ivu.elect.business.konfiguration.entity.ElectKonfigurationWerte;
import de.ivu.elect.business.konfiguration.entity.Konfiguration;
import de.ivu.elect.business.konfiguration.entity.KonfigurationInitContext;
import de.ivu.elect.business.konfiguration.entity.MandantKonfigurationWerte;
import de.ivu.elect.business.personenregister.entity.PersonenregisterSource;

public class PersonenregisterKonfigurationInit extends AbstractKonfigurationInit {

  private static final String PERSONENREGISTER_KEY_STORE_ABLAGE_VERZEICHNIS_DISPLAY_NAME = "Key-Store Ablageverzeichnis";

  @Override
  protected Collection<Konfiguration> createDefaultParameters(KonfigurationInitContext konfigurationInitContext) {
    List<Konfiguration> konfigurationen = new ArrayList<>();
    add(konfigurationen, MandantKonfigurationWerte.PERSONENREGISTER_SOURCE, getDefaultSource());
    add(konfigurationen, MandantKonfigurationWerte.PERSONENREGISTER_CACHE_SIZE, getDefaultCacheSize());
    add(konfigurationen, MandantKonfigurationWerte.PERSONENREGISTER_KEYSTORE_LOCATION); // OK
    add(konfigurationen, MandantKonfigurationWerte.PERSONENREGISTER_KEYSTORE_PASSWORD);
    add(konfigurationen, MandantKonfigurationWerte.PERSONENREGISTER_KEYSTORE_TYPE, "PKCS12");
    add(konfigurationen, ElectKonfigurationWerte.PERSONENREGISTER_KEYSTORE_ABLAGE_VERZEICHNIS, tryCreateUserHomeDirectory(PERSONENREGISTER_KEY_STORE_ABLAGE_VERZEICHNIS_DISPLAY_NAME, "keystore" + File.separator + "personenregister").getVerzeichnisName());
    return konfigurationen;
  }

  private Long getDefaultCacheSize() {
    return 0L; // deaktiviert
  }

  protected PersonenregisterSource getDefaultSource() {
    return PersonenregisterSource.NONE;
  }
}
