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

import java.util.Objects;

/**
 * Ergebnis einer fehlgeschlagenen Umbenennung, weil der gewünschte neue Dateiname im
 * Zielordner bereits existiert und nicht die gleiche Datei ist.
 * <p>
 * Dieser Zustand sollte durch eine vorherige Auflösung via
 * {@link TargetFolderPort#resolveUniqueFilename(String, de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint)}
 * normalerweise verhindert werden. Das Ergebnis dient der defensiven Fehlerbehandlung
 * für Race-Conditions oder unvorhergesehene Konkurrenz durch andere Prozesse.
 *
 * @param newFileName der Dateiname (ohne Pfad), der bereits im Zielordner existiert;
 *                    nie null
 */
public record TargetFileRenameFailureTargetExists(String newFileName) implements TargetFileRenameResult {

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