Class BasePluginManagerService

java.lang.Object
at.letto.plugins.restclient.BasePluginManagerService
All Implemented Interfaces:
PluginConnectionService, PluginManagerService

public class BasePluginManagerService extends Object implements PluginManagerService
Implementierung welche lokale Plugins und auch externe Plugin-Services verwalten kann
  • Field Details

  • Constructor Details

    • BasePluginManagerService

      public BasePluginManagerService()
  • Method Details

    • registerPluginConnectionService

      public void registerPluginConnectionService(PluginConnectionService connection)
      Registriert eine PluginConnectionService im PluginManagerService
      Specified by:
      registerPluginConnectionService in interface PluginManagerService
      Parameters:
      connection - PluginConnection zu einem Plugin-Service
    • saveJsLibs

      public void saveJsLibs()
      speichert alle registrierten JS-Libraries in einer Datei
    • isPublicJs

      public boolean isPublicJs()
      Specified by:
      isPublicJs in interface PluginManagerService
      Returns:
      liefert eine Information, ob die JavaScript- und Css Dateien in ein lokales Verzeichnis gespeichert werden
    • getPluginList

      public List<String> getPluginList()
      Specified by:
      getPluginList in interface PluginConnectionService
      Specified by:
      getPluginList in interface PluginManagerService
      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
    • getPluginConnectionService

      public PluginConnectionService getPluginConnectionService(String typ)
      Specified by:
      getPluginConnectionService in interface PluginManagerService
      Parameters:
      typ - Plugin Typ
      Returns:
      liefert das zugehörige Connectionsservice zu einem Plugin-Typ
    • getPluginGeneralInfo

      public PluginGeneralInfo getPluginGeneralInfo(String typ)
      Specified by:
      getPluginGeneralInfo in interface PluginConnectionService
      Parameters:
      typ - Plugin Typ
      Returns:
      liefert die allgemeinen Konfigurationsinformationen zu einem 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
    • getPluginImageDescription

      public String getPluginImageDescription(String typ, String name, String config, String params, PluginQuestionDto q)
      Liefert einen String welcher die Parameter eines Plugins exakt beschreibt um eine Prüfsumme davon zu bilden
      Specified by:
      getPluginImageDescription in interface PluginManagerService
      Parameters:
      typ - Typ des Plugins
      name - Name des Plugins
      config - Konfigurationsparameter-String
      params - Parameter des PIG-Tags
      q - Frage in der das Plugin eingebettet ist
      Returns:
      String als Kombination aus alle den Parametern
    • 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
    • getImage

      public ImageBase64Dto getImage(ImageService imageService, String typ, String name, String config, String params, PluginQuestionDto q)
      Liefert ein Base64 codiertes Bild mit den angegebenen Parametern und speichert es in einem ImageService
      Specified by:
      getImage in interface PluginManagerService
      Parameters:
      imageService - ImageService mit dem das Bild gespeichert wird
      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
    • 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)
      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
    • loadPluginDto

      public PluginDto loadPluginDto(ImageService imageService, 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 PluginManagerService
      Parameters:
      imageService - ImageService für den persistenten Bild-Cache
      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:
      Fehlermeldung wenn etwas nicht korrekt funktioniert hat
    • 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