package de.gecheckt.pdf.umbenenner.application.port.in;

import java.util.Objects;

/**
 * Ergebnis einer erfolgreich abgeschlossenen manuellen Dateikopie.
 * <p>
 * Die Quelldatei wurde unter dem (ggf. mit Suffix versehenen) Zieldateinamen ins
 * Zielverzeichnis kopiert und der Dokument-Stammsatz wurde auf
 * {@link de.gecheckt.pdf.umbenenner.domain.model.ProcessingStatus#SUCCESS} aktualisiert.
 *
 * @param appliedFileName       der tatsächlich angewendete Dateiname (ohne Pfad) der
 *                              Zielkopie; kann bei Konflikten ein Suffix wie {@code (1)}
 *                              enthalten; nie null
 * @param conflictSuffixApplied {@code true} wenn dem gewünschten Basisdateinamen ein
 *                              Konflikt-Suffix angehängt wurde, weil der Wunschname bereits
 *                              durch eine andere Datei belegt war
 */
public record ManualFileCopySuccess(
        String appliedFileName,
        boolean conflictSuffixApplied) implements ManualFileCopyResult {

    /**
     * Kompakter Konstruktor zur Validierung der Pflichtfelder.
     *
     * @throws NullPointerException wenn {@code appliedFileName} null ist
     */
    public ManualFileCopySuccess {
        Objects.requireNonNull(appliedFileName, "appliedFileName must not be null");
    }
}
