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

de.svws_nrw.core.Service Maven / Gradle / Ivy

package de.svws_nrw.core;

import de.svws_nrw.core.logger.LogConsumerList;
import de.svws_nrw.core.logger.Logger;
import jakarta.validation.constraints.NotNull;

/**
 * Diese generische Klasse dient als Basisklasse für einfache Dienste bzw. Algorithmen,
 * die im SVWS-Core definiert werden und zu einem Input-Objekt vom Typ T_IN ein
 * Output-Objekt vom Typ T_OUT erzeugen.
 *
 * @param     die Klasse des Input-Objektes
 * @param    die Klasse des Output-Objektes
 */
public abstract class Service {

	/** Die Instanz des Logger, der von diesem Service genutzt wird */
	protected @NotNull Logger logger = new Logger();

	/** Die Instanz des Consumers von Log-Informationen. In diesem Fall ein einfacher Vektor */
	protected @NotNull LogConsumerList log = new LogConsumerList();

	/**
	 * Erstellt einen neuen Service, dessen Logger automatisch in einen ArrayList loggt.
	 */
	protected Service() {
		this.logger.addConsumer(log);
	}


	/**
	 * Diese Methode muss von dem erbenden Service implementiert werden
	 * und handhabt das übergebene Input-Objekt und erzeugt das zugehörige
	 * Output-Objekt.
	 *
	 * @param input   das Input-Objekt
	 *
	 * @return das Output-Objekt
	 */
	public abstract T_OUT handle(T_IN input);


	/**
	 * Gibt die Logger-Instanz von diesem Service zurück.
	 *
	 * @return die Logger-Instanz.
	 */
	public @NotNull Logger getLogger() {
		return logger;
	}


	/**
	 * Gibt das Log dieses Services zurück.
	 *
	 * @return das Log dieses Services
	 */
	public @NotNull LogConsumerList getLog() {
		return log;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy