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

import java.util.Objects;

/**
 * Ergebnis, wenn keine Umbenennung notwendig ist, weil die Zieldatei mit dem
 * gewünschten Namen bereits vorhanden ist und denselben Inhalt hat (gleicher Fingerprint).
 * <p>
 * Dieses Ergebnis tritt auf, wenn:
 * <ul>
 *   <li>der gewünschte neue Dateiname bereits dem aktuellen {@code lastTargetFileName}
 *       entspricht, oder</li>
 *   <li>{@link de.gecheckt.pdf.umbenenner.application.port.out.TargetFolderPort#resolveUniqueFilename}
 *       einen {@link de.gecheckt.pdf.umbenenner.application.port.out.ExistingIdenticalTargetFile}
 *       zurückliefert (identischer Fingerprint im Zielordner).</li>
 * </ul>
 * Weder Dateisystem noch Persistenz werden in diesem Fall verändert.
 *
 * @param existingFileName der Dateiname (ohne Pfad) der bereits vorhandenen identischen
 *                         Datei; nie null
 */
public record ManualFileRenameNoOpIdenticalTarget(String existingFileName) implements ManualFileRenameResult {

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