Class BasePlugin

java.lang.Object
at.letto.plugins.service.BasePlugin
All Implemented Interfaces:
PluginService
Direct Known Subclasses:
PluginUhr

public abstract class BasePlugin extends Object implements PluginService
  • Field Details

    • name

      protected String name
      Name des Elements
    • wikiHelp

      protected String wikiHelp
      Namen der Wiki-Seite wenn eine Doku am LeTTo-Wiki vorliegt
    • helpUrl

      protected String helpUrl
      Hilfe-URL für die Beschreibung des Plugins
    • defaultPluginConfig

      protected boolean defaultPluginConfig
      Gibt an ob die Standard-Plugin-Configuration verwendet werden soll
    • config

      protected String config
      Konfigurationsstring des Elements
    • typ

      protected String typ
      Typ des Plugins
    • width

      protected int width
      Breite des zu erzeugenden Bildes
    • height

      protected int height
      Höhe des zu erzeugenden Bildes
    • imageWidthProzent

      protected int imageWidthProzent
      Größe des Bildes in Prozent
    • math

      protected boolean math
      True wenn das Plugin CalcErgebnis und VarHash als JSON verarbeiten kann
    • version

      protected String version
      Version des Plugins
    • helpfiles

      protected String[] helpfiles
      Plugin Hilfe als HTML für den Plugin - Dialog
    • javascriptLibs

      protected String[] javascriptLibs
      Javascript Libraries für das Plugin
    • initPluginJS

      protected String initPluginJS
      Name der JAVA-Script Methode zur Plugin-Initialisierung für die interaktive Ergebniseingabe
    • javaScript

      protected boolean javaScript
      gibt an ob das Plugin eine Java-Script Schnittstelle bei der Beispieldarstellung hat
    • cacheable

      protected boolean cacheable
      Plugin ist stateless und liefert bei gleicher Angabe immer das gleiche Verhalten
    • useQuestion

      protected boolean useQuestion
      Gibt an ob im Plugin die Frage benötigt wird
    • useVars

      protected boolean useVars
      gibt an ob die Datensatz-Variable ohne Konstante benötigt werden
    • useCVars

      protected boolean useCVars
      gibt an ob die Datensatz-Variable mit Konstanten benötigt werden
    • useMaximaVars

      protected boolean useMaximaVars
      gibt an ob die Maxima-Durchrechnungen ohne eingesetzte Datensätze benötigt werden
    • useMVars

      protected boolean useMVars
      gibt an ob die Maxima-Durchrechnungen mit eingesetzten Datensätzen benötigt werden
    • configurationMode

      protected int configurationMode
      Konfigurations-Mode für die Konfiguration des Plugins
    • addDataSet

      protected boolean addDataSet
      Gibt an, ob im Plugin-Konfig-Dialog Datensätze hinzugefügt werden können. => Button AddDataset in Fußzeile des umgebenden Dialogs, (nicht vom Plugin)
    • externUrl

      protected boolean externUrl
      Gibt an, ob das Plugin über den Browser direkt erreichbar ist
    • calcMaxima

      protected boolean calcMaxima
      Gibt an ob im Plugin bei der Konfiguration die Maxima-Berechnung durchlaufen werden kann. => Button Maxima in Fußzeile des umgebenden Dialogs, (nicht vom Plugin)
    • configPluginJS

      protected String configPluginJS
      Name der JAVA-Script Methode zur Configuration des Plugins
    • pluginServiceURL

      protected String pluginServiceURL
      URL des Plugin-Services für die direkte Kommunikation
  • Constructor Details

    • BasePlugin

      public BasePlugin(String name, String params)
      Erzeugt ein Question Plugin
      Parameters:
      name - Name des Plugins
      params - Parameter des Plugins
  • Method Details

    • getPluginType

      public String getPluginType()
      Description copied from interface: PluginService
      Liefert den Typ des Plugins
      Specified by:
      getPluginType in interface PluginService
      Returns:
      Liefert den Typ des Plugins - Klasse des Plugins
    • getTag

      public String getTag()
      Specified by:
      getTag in interface PluginService
      Returns:
      Liefert den String welcher für die Definition des Plugins gespeichert wird [PI name typ "config"]
    • getPluginVersion

      public String getPluginVersion()
      Specified by:
      getPluginVersion in interface PluginService
      Returns:
      Liefert die aktuelle Version eines Plugins, ändert sich diese, so ändert sich auch die Prüfsumme jedes Plugin Bildes
    • getPluginGeneralInfo

      public PluginGeneralInfo getPluginGeneralInfo()
      Specified by:
      getPluginGeneralInfo in interface PluginService
      Returns:
      Alle globalen Informationen des Plugins
    • getHelp

      public String getHelp()
      Liefert eine HTML-Hilfe zu dem Plugin.
      Standardmäßig liegt die Hilfe in einer HTML-Datei welche gleich heisst wie die Klasse, im selben Verzeichnis sitzt und die Endung .html hat
      Specified by:
      getHelp in interface PluginService
      Returns:
      HTML Hilfe
    • loadHelpFile

      protected String loadHelpFile(String resource)
    • getHelpMessageFromResource

      protected final String getHelpMessageFromResource(String name)
      Lädt eine HTML-Hilfedatei aus den Resourcen
      Parameters:
      name - Pfad der Hilfedate
      Returns:
      Inhalt der Hilfedatei als String
    • getAngabe

      public String getAngabe(String params)
      Liefert einen Angabestring für die MoodleText Angabe und erzeugt gegebenenfalls fehlende Datasets in der Datasetliste
      Specified by:
      getAngabe in interface PluginService
      Parameters:
      params - Parameter für die Einstellungen
      Returns:
      String für das MoodleText-Feld
    • generateDatasets

      public List<PluginDatasetDto> generateDatasets()
      Liefert alle Datensätze, welche für das Plugin in der Frage vorhanden sein sollten
      als Feld [Name,Datasetdefinition,Einheit]
      Specified by:
      generateDatasets in interface PluginService
      Returns:
      Liefert alle Datensätze, welche für das Plugin in der Frage vorhanden sein sollten
    • getHTML

      public String getHTML(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 PluginService
      Parameters:
      params - Parameter für die Antworterzeugung
      q - Frage wo das Plugin eingebettet ist
      Returns:
      HTML Text
    • getMaxima

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

      public Vector<String> getVars()
      Liefert eine Liste aller Variablen welche als Dataset benötigt werden.
      Specified by:
      getVars in interface PluginService
      Returns:
      Liste aller Variablen des Plugins
    • parseDrawParamsTimer

      private String parseDrawParamsTimer(String params, PluginQuestionDto q, PluginImageResultDto pluginImageResultDto)
      parst die Parameter des Plugins
      Parameters:
      params - Parameterstring
      q - Frage
      Returns:
      Fehlermeldung oder Leerstring wenn alles ok ist
    • getPluginImageDescription

      public String getPluginImageDescription(String imageParams, PluginQuestionDto q)
      Bestimmt einen eindeutigen String, welcher ein Plugin-Bild beschreibt um daraus den Dateinamen bestimmen zu können.
      Specified by:
      getPluginImageDescription in interface PluginService
      Parameters:
      imageParams - Parameter des PIG-Tags
      q - Frage in der das Plugin eingebettet ist
      Returns:
      eindeutiger String der das Plugin-Bild eindeutig beschreibt.
    • errorMessageImage

      private BufferedImage errorMessageImage(String msg)
    • getImageDto

      public ImageBase64Dto getImageDto(String params, PluginQuestionDto q)
      Liefert ein Base64 codiertes Bild mit den angegebenen Parametern
      Specified by:
      getImageDto in interface PluginService
      Parameters:
      params - Parameter für die Bilderzeugung
      q - Frage wo das Plugin eingebettet ist
      Returns:
      Base64 kodiertes Bild in einem PluginFileDto
    • getAWTImage

      public BufferedImage getAWTImage(String params, PluginQuestionDto q, PluginImageResultDto pluginImageResultDto)
      Liefert ein java.awt.BufferedImage Bild mit den angegebenen Parametern
      Parameters:
      params - Parameter für die Bilderzeugung
      q - Frage wo das Plugin eingebettet ist
      pluginImageResultDto - nimmt alle Fehlermeldungen auf die beim Rendern des Bildes entstehen
      Returns:
      Bild als java.awt.BufferedImage
    • paint

      public abstract void paint(Graphics2D g, PluginImageResultDto pluginImageResultDto)
      Methode welche das Bild für die Ausgabe erzeugt
      Parameters:
      g - Graphikhandle
      pluginImageResultDto - Nimmt alle Fehlermeldungen auf, welche beim Rendern des Bildes entstehen
    • paintFehler

      public void paintFehler(Graphics g, String msg)
      Gibt eine Fehlermeldung im Graphics-Objekt aus
      Parameters:
      g - Graphics-Handler
      msg - Meldung
    • getImageTemplates

      public Vector<String[]> getImageTemplates()
      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 PluginService
      Returns:
      Liefert eine Liste aller möglichen Varianten von Bildern
    • parserPlugin

      public CalcErgebnisDto parserPlugin(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 PluginService
      Parameters:
      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... 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 PluginService
      Parameters:
      p - Einheiten der Parameter
      Returns:
      Recheneinheit des Ergebnisses
    • getInputElement

      public InputElement getInputElement()
      Methode definiert das Eingabeelement der Subquestion, die das Plugin verwendet
      Specified by:
      getInputElement in interface PluginService
      Returns:
      anzuzeigendes Eingabeelement, default: TextField
    • updatePluginstringJavascript

      public String updatePluginstringJavascript(String pluginDef, String jsResult)
      Passt die Plugindefinition an die Eingabe aus dem Javascipt-Result an. zB: Interaktive Karte
      Specified by:
      updatePluginstringJavascript in interface PluginService
      Parameters:
      pluginDef - akt. Plugin-Definition
      jsResult - Rückgabe von Javascript
      Returns:
      aktualiesierte Plugindefinition
    • javascriptLibraries

      public List<JavascriptLibrary> javascriptLibraries()
      Liefert eine Liste von Javascript-Libraries, die im Header der HTML-Seite eingebunden werden müssen. Es muss die vollständige URL angegeben werden!
      Specified by:
      javascriptLibraries in interface PluginService
      Returns:
      für das Plugin notwendige JS-Libraries
    • javascriptLibrariesLocal

      public List<JavascriptLibrary> javascriptLibrariesLocal()
      Liefert eine Liste von LOKALEN Javascript-Libraries, die im Header der HTML-Seite eingebunden werden müssen. Pfade werden relativ zum akt. Servernamen übergeben
      Specified by:
      javascriptLibrariesLocal in interface PluginService
      Returns:
      für das Plugin notwendige JS-Libraries
    • loadPluginDto

      public PluginDto loadPluginDto(String params, PluginQuestionDto q, int nr)
      Rendern des Plugin-Images, Aufbau eines DTOs zur späteren Javascript - Bearbeitung
      Specified by:
      loadPluginDto in interface PluginService
      Parameters:
      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(PluginDto pluginDto, String answer, String mode)
      Rendert ein Plugins für den Fragedruck als Latex-Sourcode
      Specified by:
      renderLatex in interface PluginService
      Parameters:
      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(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 PluginService
      Parameters:
      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 configurationID)
      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 PluginService
      Parameters:
      configurationID - eindeutige ID welche für die Verbindung zwischen Edit-Service, Browser und Plugin-Konfiguration verwendet wird
      Returns:
      alle notwendigen Konfig
    • setConfigurationData

      public PluginConfigDto setConfigurationData(String configuration, PluginQuestionDto questionDto)
      Sendet alle notwendigen (im ConfigurationInfo) angeforderten Daten im Mode CONFIGMODE_URL an die Plugin-Konfiguration
      Specified by:
      setConfigurationData in interface PluginService
      Parameters:
      configuration - aktueller Konfigurations-String des Plugins
      questionDto - Question-DTO mit Varhashes
      Returns:
      Liefert die Daten welche an JS weitergeleitet werden.
    • getConfiguration

      public String getConfiguration()
      Liefert die aktuelle Konfiguration eines Plugins welches sich gerade in einem CONFIGMODE_URL Konfigurationsdialog befindet
      Specified by:
      getConfiguration in interface PluginService
      Returns:
      Konfigurationsparameter oder "@ERROR: Meldung" wenn etwas nicht funktioniert hat
    • modifyAngabe

      public String modifyAngabe(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 PluginService
      Parameters:
      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 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 PluginService
      Parameters:
      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