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

import de.ivu.elect.business.datei.entity.AbstractDateiFileNames;
import de.ivu.elect.business.exchange.control.FileFormat;
import de.ivu.elect.business.exchange.entity.DateiExportArt;
import de.ivu.elect.business.exchange.entity.DateiExportArtFileNames;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.Wahltermin;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.util.FileUtil;

public class DokumentFileNames extends AbstractDateiFileNames {

  public static final DateiExportArt DATEI_EXPORT_ART = DateiExportArt.GENERIERTES_DOKUMENT;

  private final DateiExportArt dateiExportArt;

  private final DokumentVorlageArt dokumentVorlageArt;

  private final String dokumentVorlageName;

  public DokumentFileNames(Messages messages, DokumentVorlage dokumentVorlage) {
    this(messages, dokumentVorlage.getDokumentVorlageArt(), dokumentVorlage.getName());
  }

  public DokumentFileNames(Messages messages, DokumentVorlageArt dokumentVorlageArt, String dokumentVorlageName) {
    this(messages, DATEI_EXPORT_ART, dokumentVorlageArt, dokumentVorlageName);
  }

  private DokumentFileNames(Messages messages, DateiExportArt dateiExportArt, DokumentVorlageArt dokumentVorlageArt, String dokumentVorlageName) {
    super(messages);

    this.dateiExportArt = dateiExportArt;

    this.dokumentVorlageArt = dokumentVorlageArt;
    this.dokumentVorlageName = dokumentVorlageName;
  }

  @Override
  public String getOriginalDateiname(FileFormat fileFormat, Wahl wahl, Wahltermin wahltermin) {
    return new DateiExportArtFileNames(getMessages(), dateiExportArt).getOriginalDateiname(fileFormat, wahl, wahltermin);
  }

  @Override
  public String getDateiname(FileFormat fileFormat, Wahl wahl, Wahltermin wahltermin) {
    return generateDateiname(fileFormat, generateDateinamePrefix(getMessages(), dokumentVorlageArt) + dokumentVorlageName, true);
  }

  public static String generateDateinamePrefix(Messages messages, DokumentVorlageArt dokumentVorlageArt) {
    return FileUtil.normalizeFileName(messages.lokalisiere(dokumentVorlageArt), false) + DELIMITER;
  }
}
