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

import java.util.Objects;

/**
 * Ergebnis, wenn die Kopie der Quelldatei ins Zielverzeichnis im Dateisystem
 * fehlgeschlagen ist.
 * <p>
 * Gibt an, dass ein technischer Fehler beim Dateisystemzugriff aufgetreten ist,
 * z.&nbsp;B. fehlende Schreibrechte, gesperrte Datei durch einen anderen Prozess oder
 * ein nicht erreichbares Netzlaufwerk. Ebenfalls verwendet, wenn der Zielordner-Port
 * einen technischen Fehler meldet.
 * <p>
 * Gemäß dem Alles-oder-Nichts-Prinzip wird in diesem Fall die Persistenz nicht
 * aktualisiert.
 *
 * @param message menschenlesbare Beschreibung des aufgetretenen Fehlers; nie null
 */
public record ManualFileCopyFileSystemFailure(String message) implements ManualFileCopyResult {

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