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

import java.util.Objects;

/**
 * Ergebnis, wenn das Dokument sich in einem ungültigen Zustand für eine manuelle
 * Kopie befindet.
 * <p>
 * Eine manuelle Kopie ist nur für Dokumente sinnvoll, deren Quelldatei noch nicht
 * erfolgreich ins Zielverzeichnis kopiert wurde. Dieses Ergebnis wird zurückgegeben,
 * wenn z.&nbsp;B.:
 * <ul>
 *   <li>der Dokumentstatus bereits {@code SUCCESS} ist (in diesem Fall ist eine
 *       Umbenennung der existierenden Zieldatei vorgesehen, keine neue Kopie), oder</li>
 *   <li>im Stammsatz keine verwertbare Quelldatei-Information hinterlegt ist.</li>
 * </ul>
 *
 * @param reason menschenlesbare Begründung für den ungültigen Zustand; nie null
 */
public record ManualFileCopyInvalidState(String reason) implements ManualFileCopyResult {

    /**
     * Kompakter Konstruktor zur Validierung des Pflichtfelds.
     *
     * @throws NullPointerException wenn {@code reason} null ist
     */
    public ManualFileCopyInvalidState {
        Objects.requireNonNull(reason, "reason must not be null");
    }
}
