Class BasePluginConnectionService

java.lang.Object
at.letto.plugins.restclient.BasePluginConnectionService
All Implemented Interfaces:
PluginConnectionService
Direct Known Subclasses:
PluginConnectionServiceIntern

public class BasePluginConnectionService extends Object implements PluginConnectionService
Implementierung eines Basis-Services für die Plugins
  • Field Details

  • Constructor Details

    • BasePluginConnectionService

      public BasePluginConnectionService()
  • Method Details

    • registerPlugin

      protected void registerPlugin(String typ, String classname)
      Registriert ein Plugin im Services,
      Parameters:
      typ - Name des Plugins
      classname - Klassenpfad des Plugins
    • getPluginList

      public List<String> getPluginList()
      Specified by:
      getPluginList in interface PluginConnectionService
      Returns:
      liefert eine Liste aller Plugins (Pluginnamen) , welche mit diesem Service verwaltet werden
    • getPluginGeneralInfoList

      public List<PluginGeneralInfo> getPluginGeneralInfoList()
      Specified by:
      getPluginGeneralInfoList in interface PluginConnectionService
      Returns:
      liefert eine Liste aller globalen Informationen über alle Plugins des verwalteten Services
    • getPluginGeneralInfo

      public PluginGeneralInfo getPluginGeneralInfo(String typ)
      Specified by:
      getPluginGeneralInfo in interface PluginConnectionService
      Parameters:
      typ - Plugin Typ
      Returns:
      liefert die allgemeinen Konfigurationsinformationen zu einem Plugin
    • createPluginService

      public PluginService createPluginService(String typ, String name, String params)
      Erzeugt aus dem Plugin-Typ und den Parametern ein PluginService Objekt
      Sollte nur intern im SpringBoot-Service verwendet werden!
      Bis der Plugin-Config-Dialog umgestellt ist wird die Funktion auch von JSF für den Konfigurationsdialog verwendet, sollte später aber auf private gesetzt werden!!
      Parameters:
      typ - Typ des Plugins
      name - Namen des Plugins in der Frage
      params - Parameterstring des Plugins für die Konfiguration
      Returns:
      erzeugtes Plugin
    • getHTML

      public String getHTML(String typ, String name, String config, String params, PluginQuestionDto q)
      Berechnet den Fragetext für das Fragefeld des Webservers für die angegebenen Parameter für die Verwendung in einem PIT Tag
      Specified by:
      getHTML in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      params - Parameter für die Antworterzeugung
      q - Frage wo das Plugin eingebettet ist
      Returns:
      HTML Text
    • getAngabe

      public String getAngabe(String typ, String name, String config, String params)
      Liefert einen Angabestring für die MoodleText Angabe
      Specified by:
      getAngabe in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      params - Parameter für die Einstellungen
      Returns:
      String für das MoodleText-Feld
    • generateDatasets

      public List<PluginDatasetDto> generateDatasets(String typ, String name, String config)
      Liefert alle Datensätze, welche für das Plugin in der Frage vorhanden sein sollten
      Specified by:
      generateDatasets in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      Returns:
      Liste der Datensatzdefinitionen welche vom Plugin in der Frage angefordert werden
    • getMaxima

      public String getMaxima(String typ, String name, String config, String params, PluginQuestionDto q, PluginMaximaCalcModeDto pluginMaximaCalcMode)
      Liefert einen Maxima-Berechnungsstring für die Berechnung des Plugins
      Specified by:
      getMaxima in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      params - Parameter
      q - Frage wo das Plugin eingebettet ist
      pluginMaximaCalcMode - Art der Berechnung
      Returns:
      Maxima Berechnungs-String
    • getImage

      public ImageBase64Dto getImage(String typ, String name, String config, String params, PluginQuestionDto q)
      Liefert ein Base64 codiertes Bild mit den angegebenen Parametern
      Specified by:
      getImage in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      params - Parameter für die Bilderzeugung
      q - Frage wo das Plugin eingebettet ist
      Returns:
      Base64 kodiertes Bild in einem MoodleFile
    • getImageTemplates

      public Vector<String[]> getImageTemplates(String typ, String name, String config)
      Liefert eine Liste aller möglichen Varianten von Bildern Element 0 : beschreibender Text Element 1 : PIG Tag Element 2 : Hilfetext
      Specified by:
      getImageTemplates in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      Returns:
      Liefert eine Liste aller möglichen Varianten von Bildern
    • parserPlugin

      public CalcErgebnisDto parserPlugin(String typ, String name, String config, VarHashDto vars, CalcParamsDto cp, CalcErgebnisDto... p)
      Wird verwendet wenn im Lösungsfeld die Funktion plugin("pluginname",p1,p2,p3) verwendet wird
      Specified by:
      parserPlugin in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      vars - Alle Variablen der Frage
      cp - Berechnungsparameter
      p - Liste von CalcErgebnis-Werten, welche an das Plugin von der Question aus übergeben werden können
      Returns:
      Ergebnis der Funktion
    • parserPluginEinheit

      public String parserPluginEinheit(String typ, String name, String config, String... p)
      Bestimmt die Recheneinheit, welche bei der Methode parserPlugin als Ergebnis herauskomment wenn die Parameter die Einheiten wie in der Liste p haben
      Specified by:
      parserPluginEinheit in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      p - Einheiten der Parameter als Recheneinheiten
      Returns:
      Recheneinheit des Ergebnisses
    • score

      public PluginScoreInfoDto score(String typ, String name, String config, PluginDto pluginDto, String antwort, ToleranzDto toleranz, VarHashDto varsQuestion, PluginAnswerDto answerDto, double grade)
      Prüft die Eingabe eines Schülers
      Specified by:
      score in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      pluginDto - PluginDto welches für die Java-Script aktive Eingabe aufbereitet wurde
      antwort - Antwort die der Schüler eingegeben hat
      toleranz - Toleranz für die Lösung
      varsQuestion - Referenz auf VarHash, wird dynamisch nachgeladen
      answerDto - Antwort des Schülers
      grade - Maximale Punktanzahl für die richtige Antwort
      Returns:
      Bewertung
    • getVars

      public Vector<String> getVars(String typ, String name, String config)
      Description copied from interface: PluginConnectionService
      Liefert eine Liste aller Variablen welche als Dataset benötigt werden.
      Specified by:
      getVars in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      Returns:
      Liste aller Variablen des Plugins
    • modifyAngabe

      public String modifyAngabe(String typ, String name, String config, String text, PluginQuestionDto q)
      verändert einen Angabetext, der in der Angabe in PI Tags eingeschlossen wurde
      Die Funktion wird vor dem Darstellen der Frage ausgeführt.
      Specified by:
      modifyAngabe in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      text - Text der innerhalb der PI Tags gestanden ist
      q - Frage innerhalb der, der Text sich befindet, die Frage sollte vom Plugin nicht verändert werden!!
      Returns:
      veränderter Text
    • modifyAngabeTextkomplett

      public String modifyAngabeTextkomplett(String typ, String name, String config, String text, PluginQuestionDto q)
      verändert den kompletten Angabetext der Frage. Dieser muss als Parameter übergeben werden!
      Die Funktion wird vor dem Darstellen der Frage ausgeführt.
      Specified by:
      modifyAngabeTextkomplett in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      text - Angabetext der Frage
      q - Frage innerhalb der, der Text sich befindet, die Frage sollte vom Plugin nicht verändert werden!!
      Returns:
      veränderter AngabeText
    • updatePluginstringJavascript

      public String updatePluginstringJavascript(String typ, String name, String config, String pluginDef, String jsResult)
      Passt die Plugindefinition an die Eingabe aus dem Javascipt-Result an. zB: Interaktive Karte
      Specified by:
      updatePluginstringJavascript in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      pluginDef - akt. Plugin-Definition
      jsResult - Rückgabe von Javascript
      Returns:
      aktualiesierte Plugindefinition
    • loadPluginDto

      public PluginDto loadPluginDto(String typ, String name, String config, String params, PluginQuestionDto q, int nr)
      Rendern des Plugin-Images, Aufbau eines DTOs zur späteren Javascript - Bearbeitung
      Specified by:
      loadPluginDto in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      params - Plugin-Parameter
      q - Question, in die das Plugin eingebettet ist
      nr - Laufende Nummer für alle PIG-Tags und Question-Plugins
      Returns:
      PluginDto
    • renderLatex

      public PluginRenderDto renderLatex(String typ, String name, String config, PluginDto pluginDto, String answer, String mode)
      Rendert ein Plugins für den Fragedruck als Latex-Sourcode
      Specified by:
      renderLatex in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      pluginDto - Das PluginDto welches am Webserver an das Java-Script des Plugins zum Rendern gesandt wird
      answer - Inhalt des Antwortfeldes welches der Schüler eingegeben hat
      mode - Druckmode
      Returns:
      Latexsourcode und zugehörige Bilder in einer Hashmap
    • renderPluginResult

      public PluginRenderDto renderPluginResult(String typ, String name, String config, boolean tex, PluginDto pluginDto, String antwort, ToleranzDto toleranz, VarHashDto varsQuestion, PluginAnswerDto answerDto, double grade)
      Rendert das Plugin inklusive der Schülereingabe und korrekter Lösung
      Es wird dabei entweder direkt ein HTML-Code oder LaTeX-Code erzeugt
      Specified by:
      renderPluginResult in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      tex - true für LaTeX-Code, false für html-Code
      pluginDto - PluginDto welches für die Java-Script aktive Eingabe aufbereitet wurde
      antwort - Antwort die der Schüler eingegeben hat
      toleranz - Toleranz für die Lösung
      varsQuestion - Referenz auf VarHash, wird dynamisch nachgeladen
      answerDto - Antwort des Schülers
      grade - Maximale Punktanzahl für die richtige Antwort
      Returns:
      HTML-Code oder LaTeX-Code mit Bildern
    • configurationInfo

      public PluginConfigurationInfoDto configurationInfo(String typ, String name, String config, String configurationID, long timeout)
      Liefert die Informationen welche notwendig sind um einen Konfigurationsdialog zu starten
      Ist die configurationID gesetzt wird eine Konfiguration gestartet und damit auch die restlichen Endpoints für die Konfiguration aktiviert.
      Specified by:
      configurationInfo in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins in der Frage
      config - Konfigurationsstring des Plugins
      configurationID - eindeutige ID welche für die Verbindung zwischen Edit-Service, Browser und Plugin-Konfiguration verwendet wird
      timeout - maximale Gültigkeit der Konfigurations-Verbindung in Sekunden ohne Verbindungsanfragen, Notwendig um bei Verbindungsabbruch die Daten am Plugin-Service auch wieder zu löschen
      Returns:
      alle notwendigen Konfig
    • setConfigurationData

      public PluginConfigDto setConfigurationData(String typ, String configurationID, String configuration, PluginQuestionDto questionDto)
      Sendet alle notwendigen (im ConfigurationInfo) angeforderten Daten im Mode CONFIGMODE_URL an die Plugin-Konfiguration
      Specified by:
      setConfigurationData in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      configurationID - zu verwendende Konfigurations-ID (muss am Plugin-Service zuvor angelegt worden sein mit configurationInfo)
      configuration - aktueller Konfigurations-String des Plugins
      questionDto - Question-DTO mit Varhashes
      Returns:
      Liefert die Daten welche an JS weitergeleitet werden.
    • getConfiguration

      public String getConfiguration(String typ, String configurationID)
      Liefert die aktuelle Konfiguration eines Plugins welches sich gerade in einem CONFIGMODE_URL Konfigurationsdialog befindet
      Specified by:
      getConfiguration in interface PluginConnectionService
      Parameters:
      typ - Typ des Plugins
      configurationID - zu verwendende Konfigurations-ID
      Returns:
      Konfigurationsparameter oder "@ERROR: Meldung" wenn etwas nicht funktioniert hat
    • getConfigurationConnection

      public PluginConfigurationConnection getConfigurationConnection(String typ, String configurationID)
    • addConnection

      private static PluginConfigurationConnection addConnection(String typ, String name, String config, String configurationID, PluginService pluginService, long timeout)
    • removeOutdatedConnections

      private static void removeOutdatedConnections()
    • getConnection

      private static PluginConfigurationConnection getConnection(String configurationID)