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

de.svws_nrw.base.untis.UntisGPU005 Maven / Gradle / Ivy

package de.svws_nrw.base.untis;

import java.io.IOException;
import java.util.List;

import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;

import jakarta.validation.constraints.NotNull;

/**
 * Diese Klasse dient als DTO für die CSV-Datei {@code GPU005.txt} des
 * Untis-Datenaustausch-Formates und enthält damit eine Beschreibung der
 * Räume.
 */
public final class UntisGPU005 {

	/** Das Kürzel des Raumes (z.B. "TH3") */
	public String kuerzel;

	/** Die textuelle Bezeichnung des Raums (z.B. "Turnhalle 3") */
	public String bezeichnung;

	/** Das Kürzel eines Ausweichraumes (z.B. "TH2") */
	public String kuerzelAusweichraum;

	/** Kennzeichen (?) */
	public String kennzeichen;

	/** Ein leeres Feld, früher für die Farbe genutzt */
	public String leerfeld;

	/** Kennzeichen Disloz. (?) */
	public String kennzeichenDisloz;

	/** Die Gewichtung des Raumes */
	public Integer gewicht = null;

	/** Die Kapazität des Raumes */
	public Integer groesse = null;

	/** Die Abteilung zu der der Raum gehört. */
	public String abteilung;

	/** Gang 1 (?) */
	public String gang1;

	/** Gang 2 (?) */
	public String gang2;

	/** Ein Sondertext (?). */
	public String sondertext;

	/** Eine Beschreibung des Raumes (?) */
	public String beschreibung;

	/** Die Vordergrundfarbe für den Raum */
	public Integer farbeVordergrund = null;

	/** Die Hintergrundfarbe für den Raum */
	public Integer farbeHintergrund = null;

	/** Statistik 1 (?) */
	public String statistik1;

	/** Statistik 2 (?) */
	public String statistik2;

	/** Ignorieren - Dummy für das Einlesen der Daten */
	public String dummy;



	/** Die Instanz des Object-Readers für die CSV-Daten */
	private static final ObjectReader reader = new CsvMapper().readerFor(UntisGPU005.class).with(CsvSchema.builder()
			.addColumn("kuerzel")
			.addColumn("bezeichnung")
			.addColumn("kuerzelAusweichraum")
			.addColumn("kennzeichen")
			.addColumn("leerfeld")
			.addColumn("kennzeichenDisloz")
			.addNumberColumn("gewicht")
			.addNumberColumn("groesse")
			.addColumn("abteilung")
			.addColumn("gang1")
			.addColumn("gang2")
			.addColumn("sondertext")
			.addColumn("beschreibung")
			.addNumberColumn("farbeVordergrund")
			.addNumberColumn("farbeHintergrund")
			.addColumn("statistik1")
			.addColumn("statistik2")
			.addColumn("dummy")
			.build()
			.withColumnSeparator(';')
			.withQuoteChar('\"')
			.withNullValue("")
			.withoutHeader());

	/**
	 * Erstellt aus den übergebenen CSV-Daten eine Liste der GPU005-Datensätze
	 *
	 * @param csvData   die Daten des CSV-Datei als String
	 *
	 * @return eine Liste mit den GPU005-Datensätzen
	 *
	 * @throws IOException falls die CSV-Datei nicht korrekt gelesen werden kann
	 */
	public static @NotNull List readCSV(final String csvData) throws IOException {
		try (MappingIterator it = reader.readValues(csvData)) {
			return it.readAll();
		}
	}

	@Override
	public String toString() {
		return "Raum [kuerzel=" + kuerzel + ", bezeichnung=" + bezeichnung + ", groesse=" + groesse + "]";
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy