All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.svws_nrw.asd.validate.ValidatorKontext Maven / Gradle / Ivy

Go to download

Diese Bibliothek stellt grundlegende Datenypen und Algorithmen für die Prüfung der amtlichen Schuldaten in NRW bereit

There is a newer version: 1.0.0
Show newest version
package de.svws_nrw.asd.validate;

import java.util.HashMap;
import java.util.Map;

import de.svws_nrw.asd.data.CoreTypeException;
import de.svws_nrw.asd.data.schule.SchuleStammdaten;
import de.svws_nrw.asd.data.schule.Schuljahresabschnitt;
import de.svws_nrw.asd.types.schule.Schulform;
import de.svws_nrw.asd.utils.CoreTypeDataManager;
import jakarta.validation.constraints.NotNull;

/**
 * Diese Klasse stellt den Kontext dar, in welchem die Validatoren
 * arbeiten. Alle Validatoren bekommen im Konstruktor ihren jeweiligen
 * Kontext übergeben.
 */
public class ValidatorKontext {

	/** Die Stammdaten der Schule */
	private final @NotNull SchuleStammdaten _schuleStammdaten;

	/** Die Laufeigenschaften der Validatoren */
	private final @NotNull ValidatorManager _validatorManager;

	/** Die Schuljahresabschnitte der Schule, welche ihrer ID zugeordnet werden */
	private final @NotNull Map _mapSchuljahresabschnitte = new HashMap<>();


	/**
	 * Erzeugt einen neuen Kontext für Validatoren. Prüfe auch, ob die Stammdaten der Schule eine Valiadierung möglich machen
	 * oder aufgrund gravierender Fehler eine Prüfungen unmöglich machen.
	 *
	 * @param schuleStammdaten   die Stammdaten der Schule für den Kontext
	 * @param zebras             die Umgebung, in der gerade validiert wird: true: ZeBrAS, false: SVWS
	 */
	public ValidatorKontext(final @NotNull SchuleStammdaten schuleStammdaten, final boolean zebras) {
		this._schuleStammdaten = schuleStammdaten;
		for (final Schuljahresabschnitt entry : schuleStammdaten.abschnitte)
			_mapSchuljahresabschnitte.put(entry.id, entry);
		final Schulform schulform = CoreTypeDataManager.getManager(Schulform.class).getWertByBezeichner(schuleStammdaten.schulform);
		this._validatorManager = ValidatorManager.getManager(schulform, zebras);
	}


	/**
	 * Gibt die Stammdaten der Schule zurück.
	 *
	 * @return die Stammdaten der Schule
	 */
	public SchuleStammdaten getSchuleStammdaten() {
		return _schuleStammdaten;
	}


	/**
	 * Gibt die Schulnummer der Schule zurück.
	 *
	 * @return die Schulnummer der Schule
	 */
	public long getSchulnummer() {
		return _schuleStammdaten.schulNr;
	}


	/**
	 * Gibt die Schulform der Schule anhand der Information aus den
	 * Stammdaten der Schule zurück.
	 *
	 * @return die Schulform als Core-Type
	 */
	public @NotNull Schulform getSchulform() {
		final Schulform schulform = Schulform.data().getWertByKuerzel(_schuleStammdaten.schulform);
		if (schulform != null)
			return schulform;
		//sollte nie erreicht werden!
		throw new CoreTypeException("Die Schulform " + _schuleStammdaten.schulform + " existiert nicht in 'Schulform.json'.");
	}


	/**
	 * Gibt das aktuelle Schuljahr der Schule zurück.
	 *
	 * @return das aktuelle Schuljahr
	 */
	public int getSchuljahr() {
		final Schuljahresabschnitt abschnitt = this.getSchuljahresabschnitt();
		if (abschnitt != null)
			return abschnitt.schuljahr;
		//sollte nie erreicht werden!
		throw new ValidatorException("Es ist kein gültiger Schuljahresabschnitt in den SchuleStammdaten gesetzt");
	}


	/**
	 * Gibt den aktuellen Schuljahresabschnitt der Schule zurück.
	 *
	 * @return der Schuljahresabschnitt oder null, wenn dieser nicht korrekt gesetzt ist
	 */
	public Schuljahresabschnitt getSchuljahresabschnitt() {
		return _mapSchuljahresabschnitte.get(_schuleStammdaten.idSchuljahresabschnitt);
	}


	/**
	 * Gibt den Schuljahresabschnitt der Schule für die übergebene ID zurück.
	 *
	 * @param id   die ID des Schuljahresabschnitts
	 *
	 * @return der Schuljahresabschnitt oder null, falls die id ungültig ist
	 */
	public Schuljahresabschnitt getSchuljahresabschnittByID(final long id) {
		return _mapSchuljahresabschnitte.get(id);
	}

	/**
	 * Gibt den ValidatorManager zurück.
	 *
	 * @return der ValidatorManager
	 */
	public @NotNull ValidatorManager getValidatorManager() {
		return _validatorManager;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy