blob: 489366e473f450271e2c158782d69e5c7d393790 [file] [log] [blame]
// SPDX-FileCopyrightText: 2020 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
// SPDX-License-Identifier: AGPL-3.0-or-later
package eu.mulk.aendggner.synopse;
import eu.mulk.aendggner.anwendung.BefehlAnwender.AngewandteAenderung;
import eu.mulk.aendggner.gesetz.Gesetz;
import eu.mulk.aendggner.gesetz.Gliederung;
import eu.mulk.aendggner.gesetz.Norm;
import java.util.List;
import org.jspecify.annotations.Nullable;
/** Eine Gegenüberstellung alter und neuer Fassung, normweise. */
public record Synopse(
Gesetz alt,
Gesetz neu,
List<Eintrag> eintraege,
List<GliederungsAenderung> gliederungsAenderungen,
List<AngewandteAenderung> manuellZuPruefen,
List<String> warnungen) {
/** Eine geänderte Gliederungs-Überschrift (Teil/Abschnitt/…); {@code alt == null} bei neuen. */
public record GliederungsAenderung(@Nullable Gliederung alt, Gliederung neu) {}
public enum Aenderungsart {
UNVERAENDERT,
GEAENDERT,
NEU,
AUFGEHOBEN
}
/**
* @param altNorm die Norm in der alten Fassung; {@code null} bei neu eingefügten Normen.
* @param neuNorm die Norm in der neuen Fassung.
*/
public record Eintrag(
@Nullable Norm altNorm, Norm neuNorm, Aenderungsart art, List<AngewandteAenderung> ursachen) {
public String enbez() {
return neuNorm.enbez();
}
}
}