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

import java.util.Objects;

/**
 * Ergebnis einer technisch fehlgeschlagenen Umbenennung einer Zieldatei.
 * <p>
 * Gibt an, dass beim Umbenennen ein nicht klassifizierbarer technischer Fehler
 * aufgetreten ist, z. B. fehlende Schreibrechte, gesperrte Datei durch einen anderen
 * Prozess oder ein nicht erreichbares Netzlaufwerk.
 *
 * @param message menschenlesbare Beschreibung des aufgetretenen Fehlers; nie null
 */
public record TargetFileRenameTechnicalFailure(String message) implements TargetFileRenameResult {

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