From 9aca99303dceb497789efd1337aa38fef1c4b1c1 Mon Sep 17 00:00:00 2001
From: Kurzenberger <01kuni1bif@hft-stuttgart.de>
Date: Fri, 11 Oct 2024 12:23:01 +0200
Subject: [PATCH] started with the changes for the recommendation-update

---
 Dockerfile                           |  25 ++++
 docker-compose.yaml                  |  47 ++++++++
 dta.zip                              | Bin 30136 -> 31473 bytes
 dta/README.md                        | 164 +++++++++++++++++++++++++++
 dta/classes/backend.php              |   2 +-
 dta/classes/database.php             |   1 +
 dta/classes/privacy/provider.php     |   2 +
 dta/db/install.xml                   |  91 +++++++--------
 dta/lang/en/assignsubmission_dta.php |   1 +
 dta/locallib.php                     |   2 +-
 dta/styles.css                       | 148 ++++++++++++------------
 teacher-dta.txt                      |   1 +
 12 files changed, 363 insertions(+), 121 deletions(-)
 create mode 100644 Dockerfile
 create mode 100644 docker-compose.yaml
 create mode 100644 dta/README.md
 create mode 100644 teacher-dta.txt

diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..f88e96b
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,25 @@
+FROM amazoncorretto:17.0.3-alpine as corretto-jdk
+
+ENV BASEDIR /data
+ENV TESTDIR $BASEDIR/test
+ENV SOURCEDIR $BASEDIR/src
+ENV RESULTDIR $BASEDIR/result
+ENV LIBSDIR $BASEDIR/libs
+
+RUN mkdir -p $TESTDIR \
+    && mkdir $SOURCEDIR \
+    && mkdir $RESULTDIR \
+    && mkdir -p /$LIBSDIR/additional
+
+ADD target/dta-jdk17-junit5-runner-jar-with-dependencies.jar /$BASEDIR/app.jar
+ADD https://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar /$LIBSDIR/
+ADD https://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-engine/5.10.0/junit-jupiter-engine-5.10.0.jar /$LIBSDIR/
+ADD https://repo1.maven.org/maven2/org/junit/platform/junit-platform-engine/1.10.0/junit-platform-engine-1.10.0.jar /$LIBSDIR/
+ADD https://repo1.maven.org/maven2/org/junit/platform/junit-platform-commons/1.10.0/junit-platform-commons-1.10.0.jar /$LIBSDIR/
+ADD https://repo1.maven.org/maven2/org/junit/platform/junit-platform-launcher/1.10.0/junit-platform-launcher-1.10.0.jar /$LIBSDIR/
+ADD https://repo1.maven.org/maven2/org/apiguardian/apiguardian-api/1.1.1/apiguardian-api-1.1.1.jar /$LIBSDIR/
+ADD https://repo1.maven.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar /$LIBSDIR/
+
+WORKDIR $BASEDIR
+
+ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /$BASEDIR/app.jar "$SOURCEDIR/src:$TESTDIR/test" "$LIBSDIR/*:$TESTDIR/libs/*" $RESULTDIR
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yaml
new file mode 100644
index 0000000..e6611c6
--- /dev/null
+++ b/docker-compose.yaml
@@ -0,0 +1,47 @@
+version: '2'
+services:
+services:
+  mariadb-dtt:
+    container_name: moodledb-dtt
+    image: docker.io/bitnami/mariadb:11.1
+    environment:
+      # ALLOW_EMPTY_PASSWORD is recommended only for development.
+      - ALLOW_EMPTY_PASSWORD=yes
+      - MARIADB_USER=bn_moodle
+      - MARIADB_DATABASE=bitnami_moodle
+      - MARIADB_CHARACTER_SET=utf8mb4
+      - MARIADB_COLLATE=utf8mb4_unicode_ci
+    volumes:
+      - 'mariadb_data_dtt:/bitnami/mariadb'
+  moodle-dtt:
+    container_name: moodle-dtt
+    image: docker.io/bitnami/moodle:4.3
+    ports:
+      - '81:8080'
+      - '444:8443'
+    environment:
+      - MOODLE_DATABASE_HOST=mariadb-dtt
+      - MOODLE_DATABASE_PORT_NUMBER=3306
+      - MOODLE_DATABASE_USER=bn_moodle
+      - MOODLE_DATABASE_NAME=bitnami_moodle
+      # ALLOW_EMPTY_PASSWORD is recommended only for development.
+      - ALLOW_EMPTY_PASSWORD=yes
+    volumes:
+      - 'moodle_data_dtt:/bitnami/moodle'
+      - 'moodledata_data_dtt:/bitnami/moodledata'
+    depends_on:
+      - mariadb-dtt
+  backend:
+    container_name: backendcomposedtt
+    image: hftstuttgart/dta-backend:beta
+    user: "${UID}:${GID}"
+    volumes: 
+      - /var/run/docker.sock:/var/run/docker.sock
+      - '/tmp/dta-tests:/tmp/dta-tests'
+volumes:
+  mariadb_data_dtt:
+    driver: local
+  moodle_data_dtt:
+    driver: local
+  moodledata_data_dtt:
+    driver: local
\ No newline at end of file
diff --git a/dta.zip b/dta.zip
index 01aa7904c3ee85d7f0d91d2f601f81b77e96df83..26b39cf40a3686ca39a9f8b767a05ad14afe7802 100644
GIT binary patch
literal 31473
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

literal 30136
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
CV^dWC

diff --git a/dta/README.md b/dta/README.md
new file mode 100644
index 0000000..c07b4cf
--- /dev/null
+++ b/dta/README.md
@@ -0,0 +1,164 @@
+# Moodle Dockerized Test Agent (MoDTA) Plugin
+
+This is the source code repository for the MoDTA plugin. It is an extended and enhanced version of the approved Moodle JUnit Exercise Corrector (MoJEC) plugin, and the Moodle Dockerized Code Testing (MoDoCoT) and Moodle Dockerized Test Tool (Moodle DTT) plugins - for which no approval was requested, which all still run up to Moodle 4.3. MoDTA can thus be considered MoJEC version 4, thought it can test code in any programming language for which a teacher provides a test runner docker image.
+
+The zip archive in the root directory contains the files from the dta directory for easy installation as long as it is unavailable via Moodle Plugins Directory. 
+
+## Goals
+
+MoDTA empowers teachers to provide programming Moodle assignments for their students, which are automatically corrected upon hand-in using teacher-provided tests and the results provided as extended submission feedback. 
+
+Corrections optionally include a pedagogic agent giving feedback on student competencies and in the next version recommending next exercises based on student competency levels and resilience. 
+
+Furthermore, MoDTA optionally provides the errors as tickets in supported ticketing systems to resemble current state-of-the-art software development workflows. 
+
+### Motivation
+
+Due to contact time constraints, assignments for a new topic typically include about three tasks (one easy introductory, one standard usage, and one advanced combination with previous topics). Students e.g. stuck at the standard level assignment may face frustration and only little opportunity for qualified feedback. Especially in beginners’ programming education,  many students struggle with the way of thinking and at the same time feel reluctant to ask teachers for help. 
+
+MoDTA allows for teachers to provide additional assignments at intermediate levels from their typically existing assignment collection. Teachers have to create automated tests for the assignments and place them in a git repository. Afterwards students can practice their skills 24/7 with a less steep learning curve and without having to overcome their potential reluctance to ask a teacher for help. They receive feedback consistent with other assignment results integrated into the Moodle environment.
+
+MoDTA supports beginners not educated in state-of-the-art repository-based workflows by offering hand-ins in a zip archive containing the code to lower the learning curve. It also supports hand-in via repository URL and optionally repository credentials for advanced students. 
+
+Optionally, if a teacher provides competency profiles and difficulties for tasks and tests, students also receive feedback about their achieved competencies by a pedagogic agent, which in the next version optionally recommends a learning path to the students based on their resilience. 
+
+Furthermore and independent of the other optional features, MoDTA optionally supports a state-of-the-art workflow by placing tickets for compile errors in a student-provided ticketing system link (currently supported: GitLab and Atlassian Jira).
+
+## Overview
+
+The MoDTA system comprises two key components:
+
+•	The MoDTA Moodle plugin, designed as an assignment submission tool.
+•	The DTA backend web service, which interfaces with the Moodle plugin through REST and employs the JSON file format for communication. 
+
+The plugin establishes communication with the external DTA backend REST web service offering the endpoints:
+
+•	POST /v1/unittest:** This endpoint requires the assignment ID and a text file containing the repository link (see usage below for an example). Optionally, it may include credentials, if the repository is private. Credentials should be formatted as "username:password" or "username:auth-token". Also optionally, the file may contain a link to a ticketing system in a new line of the same format. The results are returned in JSON format.
+
+•	POST /v1/tasks:** This API expects the assignment ID and a text file containing a repository link. Similar to the previous endpoint, it can also include an optional line for credentials when dealing with private repositories, using the same "username:password" or "username:auth-token" format. The results are provided in JSON format.
+
+•	DELETE /v1/unittest?assignmentId={id}:** Initiates the deletion of test files when provided with the assignment ID as a query parameter.
+
+## Installation & Configuration
+
+After approval, install the plugin directly from the Moodle Plugins Directory via Site Administration/Plugins/Install Plugins. 
+
+Before that or alternatively: zip the plugin code from https://transfer.hft-stuttgart.de/gitlab/HFTSoftwareProject/moodledta (here). The readily-zipped current version also sits in the repository’s main directory. Then install the plugin from zip via Site Administration/Plugins/Install Plugins, or by extracting the plugin archive to {Moodle_Root}/mod/assign/submission/dta and visiting the admins notifications page. 
+
+Visit Site Administration/Plugins/Plugin Overview and select Settings next to the Moodle Dockerized Test Agent (MoDTA) entry to enter the URI of your backend as shown in Fig. 1. ![Fig. 1: Plugin List](doc/install_conf_1.png) Finally, configure via Site Administration/Security/HTTP Security settings permitting communication with the backend URI and port as seen in Fig. 2. ![Fig. 2: DTA Configuration Dialog](doc/install_conf_2.png) The plugin requires the external DTA REST webservice backend.
+
+Notes: 
+
+The universal DTA REST webservice backend is available under the GPLv3 as well at https://transfer.hft-stuttgart.de/gitlab/HFTSoftwareProject/dtabackend and the docker image at https://hub.docker.com/r/hftstuttgart/dta-backend . See the documentation in the repository for the necessary setup.
+
+An example JDK 17 JUnit 5 test runner is available under GPLv3 as well at https://transfer.hft-stuttgart.de/gitlab/HFTSoftwareProject/dtatestrunner and the pre-built docker image at https://hub.docker.com/r/hftstuttgart/dta-jdk17-junit5-testrunner . The repository contains an example docker-compose.yaml for tests with a bitnami Moodle and MariaDB setup and the backend.
+
+## Usage
+
+With the MoDTA plugin installed and configured backend URI (including Moodle Security/HTTP Security settings permitting communication with that URI):
+
+### Teacher
+
+When creating an assignment, a teacher can select the MoDTA exercise as a new assignment type via an additional checkbox on the assignment creation page as shown at the bottom of Fig. 3. ![Fig. 3: Moodle DTA Activation Checkbox](doc/usage_teacher_1.png) A new standard file upload field appears  as indicated in Fig. 4. ![Fig. 4: Moodle DTA Upload File Area](doc/usage_teacher_2.png). There, the teacher must upload a text file with the git repository URI containing the tests  as shown in Fig. 5. ![Fig. 5: Moodle DTA Teacher Text File Upload](doc/usage_teacher_3.png) The text file has to adhere to the following format also given in the example repository:
+
+The text file has to contain the following, each separated by ::
+-	dtt as the URI-type
+-	\<git https repository URI>
+-	\<git user name or the fixed string “none” for publicly accessible repositories>
+-	\<git password for the given user, git read access token for the repository, or the fixed string “none” for publicly accessible repositories>
+-	\<docker hub image for the test runner>
+- optionally, an additional line of the same structure containing a ticketing system URI, user name and password or write access token
+
+An example text file content looks like this:
+dtt::https://transfer.hft-stuttgart.de/gitlab/dtt/example_openjdk11-junit5-calculator-test.git::none::none::hftstuttgart/dta-jdk17-junit5-testrunner:latest
+
+Students use the same format, just without the runner part at the end.
+
+### Student
+
+Students use an additional MoDTA standard file upload field in the standard submission processs in Moodle like in Fig. 6. [Fig. 6: Moodle DTA Student File Upload](doc/usage_student_1.png) There, they place either a zip archive or a text file adhering to the same format as the teacher’s file with their code repository URI and optionally credentials and/or a ticketing system URI as shown in Fig. 7. ![Fig. 7: Moodle DTA Student Text File Upload](doc/usage_student_2.png) 
+
+Upon completion, students see a summarized overview of their test results in an additional column of the submission feedback table like in Fig. 8. ![Fig. 8: Moodle DTA Submission Result Summay](doc/usage_student_3.png) Clicking on a new expansion icon in that column, they reach a detailed feedback dialog including stack traces of compile errors and test failures as in Fig. 9. ![Fig. 9: Moodle DTA Student Detail Result View](doc/usage_student_4.png) Optionally, the MoDTA backend creates tickets for compile failures in the ticketing system under the URI provided by the student upon hand-in.
+
+Note: Teachers have access to the Moodle submission result view to assess student results. However, teacher control and grading are not the focus of MoDTA.
+
+### Technical Workflow
+
+Assignment creation: The backend creates a temporary directory and checks out the test code from the given repository to that directory's subdirectory test. If the repository contains a file test-competencies.mft in its root directory with a structure described in the backend documentation, this enables the optional competency feedback. 
+
+Assignment submission: The MoDTA plugin passes the submission id and submitted text or zip file – no personal teacher student data – to the external DTA backend REST web service. The DTA backend REST web service fetches or extracts the code to the temporary directory's subdirectory src. It launches via docker a dedicated test runner based on the docker image provided in the teacher’s text file. This test runner compiles and executes the code, running the teacher-defined tests to evaluate the students' submission. 
+
+The runner returns the result in a file named result.json in the temporary directory's subdirectory result. The backend optionally enriches the result with competency feedback. It then returns the json result structure to the MoDTA moodle plugin. The MoDTA moodle plugin adds a new column to the submission result table and shows a result summary as well as an + button. Clicking on the + button, the student sees the detailed test results and, optionally, competency feedback.
+
+## Plugin Detail Documentation – MoDTA Assignment Submission Plugin
+
+The assignment submission plugin type was the most suitable choice with assignment feedback as another related option.  It empowers you to present customized form fields to students during the assignment submission process and to teachers when configuring assignment settings. Moreover, it grants complete control over how submitted assignments are displayed to both graders and students.
+
+The primary features of this plugin type include the ability to:
+
+•	Integrate additional settings into the module settings page for assignments.
+•	Provide a summary of the submission to students and teachers.
+•	Incorporate form fields into the student submission page for added flexibility and customization.
+
+### File Structure
+
+To ensure proper organization, all files related to the MoDTA assignment submission plugin reside in the directory path "mod/assign/submission/dta" within {Moodle_Root}. 
+
+### Language
+
+The language files for our plugin are found under "lang/<country_code>/assignsubmission_dta.php." These files are organized into different subfolders depending on the language to be supported. For instance:
+
+- English: "lang/en/assignsubmission_dta.php"
+
+The filename corresponds to the component name of the plugin, structured as <plugintype>_<pluginname>, which, in our case, is "assignsubmission_dta." The repository delivers only English as requested by the Moodle team.
+
+Each language file contains various key-value entries formatted as $string["key"] = "Value," with the key provided in English as the most widespread language remaining consistent across different language files, while the value varies according to the chosen language. Moodle incorporates a dedicated String API used In the plugin as required In the approval guidelines, allowing for easy value retrieval based on a given key and the selected language (e.g., get_string("key", "default value")).
+
+### version.php
+
+This file provides version information about the plugin to manage installation and upgrades.
+
+### settings.php
+
+The settings file defines two settings for the MoDTA plugin:
+
+1. Default: This setting offers a checkbox to determine whether the plugin should be enabled by default when creating a new assignment.
+
+2. Web Service Base URL: It features a text field where you can specify the base URL for the web service, facilitating file communication and actual testing.
+
+### db/upgrade.php
+
+This file is currently empty, as the data structure for the plugin has not changed so far.
+
+### db/install.xml
+
+This file defines the necessary database tables and rows for storing data associated with the MoDTA plugin. Moodle offers a specialized XML schema designed for modeling this information, featuring elements like TABLENAME, FIELDS, and KEY. The plugin utilizes two additional tables for cleanliness not to alter moodle standard tables: 
+assignsubmission_dta_summary which is related 1:1 to the submission and uses the assignment_id and submission_id as foreign keys, and assignsubmission_dta_result which stores the results of a submission as a 1:n relation to the assignsubmission_dta_summary. Whenever a new MoDTA assignment is submitted, the backend web service is engaged, returning one or more test results or compilation errors in the form of a JSON string. The front end parses this JSON string for the result summary and results and stores them in the appropriate tables.
+
+### locallib.php
+
+This is where all the functionality for this plugin is defined. All submission plugins must define a class with the component name of the plugin that extends assign_submission_plugin .
+
+That yields the following class hierarchy:
+
+The "assign_submission_plugin" class serves as an abstract foundation that all assignment submission plugins must build upon. It incorporates a limited set of supplementary functions tailored exclusively to submission plugins. On the other hand, the "assign_plugin" class is also an abstract class, but it functions as the fundamental class for all assignment plugins, encompassing both feedback and submission plugins. This class facilitates access to the assignment instance, represented as "$this->assignment." Collectively, these two classes offer a series of public functions, often referred to as "hooks," which are designed to be overridden to implement the required functionality.
+
+The following provides brief descriptions of a selection of functions to illustrate the types of hooks available:
+
+•	get_settings(): This function comes into play during the creation of the assignment settings page. For the MoDTA plugin, this involves adding a file manager that permits teachers to upload their test repo and docker Image URI as a textfile. This function is overridden from the assign_plugin class.
+
+•	save_settings(): The save_settings function is invoked when the assignment settings page is submitted, whether for a new assignment or the modification of an existing one. In the MoDTA plugin, this function is responsible for preserving the text file chosen by the teacher and transmitting the file to the backend web service. Like the previous function, this one is overridden from the assign_plugin class.
+
+•	get_form_elements_for_user(): During the construction of the submission form, this function plays a similar role to the get_settings() function for settings. In the context of the MoDTA plugin, it adds a file manager to enable students to upload their text or zip file. Once again, this function is overridden from the assign_plugin class.
+
+•	save():This function is invoked to save a user's submission. Within the MoDTA plugin, this function sends the student's submission to the backend and receives the result as the response. For details see the technical details section above.
+
+•	view_summary(): This function is called to display a summary of the submission to both teachers and students. For the students, this summary will be shown within the submission status table and for the teachers within a column of the grading table. In the MoDTA plugin this method returns a more compact view (only essential data) for the grading table and a detailed view for the students submission status table.
+
+### lib.php
+
+This file serves as the gateway to various standard Moodle APIs designed for plugins. In the content of the MoDTA plugin, this function is denoted as "assignsubmission_dta_pluginfile." 
+
+### util folder
+
+The folder contains various utility files, e.g. displaying the new test summary pages is delegated from the locallib.php for brevity of that source.
diff --git a/dta/classes/backend.php b/dta/classes/backend.php
index 7ca08f4..d0bc5bc 100644
--- a/dta/classes/backend.php
+++ b/dta/classes/backend.php
@@ -83,7 +83,7 @@ class DtaBackendUtils {
      * @param stdClass $file submission config file or archive with submission
      * @return string json string with testresults or null on error
      */
-    public static function sendsubmissiontobackend($assignment, $submissionid, $file): ?string {
+    public static function send_submission_to_backend($assignment, $submissionid, $file): ?string {
         $backendaddress = self::getbackendbaseurl();
         if (empty($backendaddress)) {
             return true;
diff --git a/dta/classes/database.php b/dta/classes/database.php
index 6f5c82a..a444dee 100644
--- a/dta/classes/database.php
+++ b/dta/classes/database.php
@@ -107,6 +107,7 @@ class DbUtils {
         $summaryrecord->global_stacktrace = $summary->globalstacktrace;
         $summaryrecord->successful_competencies = $summary->successfultestcompetencies;
         $summaryrecord->tested_competencies = $summary->overalltestcompetencies;
+        $summaryrecord->recommendations = $summary->recommendations;
 
         // Prepare results to persist to array.
         $resultrecords = [];
diff --git a/dta/classes/privacy/provider.php b/dta/classes/privacy/provider.php
index 9e36d5c..ca26121 100644
--- a/dta/classes/privacy/provider.php
+++ b/dta/classes/privacy/provider.php
@@ -57,6 +57,8 @@ class provider implements \core_privacy\local\metadata\provider,
                 'global_stacktrace' => 'privacy:metadata:assignsubmission_dta_summary:global_stacktrace',
                 'successful_competencies' => 'privacy:metadata:assignsubmission_dta_summary:successful_competencies',
                 'tested_competencies' => 'privacy:metadata:assignsubmission_dta_summary:tested_competencies',
+                'recommendations' => 'privacy:metadata:assignsubmission_dta_summary:recommendations',
+
             ],
             'privacy:metadata:assignsubmission_dta_summary'
         );
diff --git a/dta/db/install.xml b/dta/db/install.xml
index 1a0b3f0..4b74456 100644
--- a/dta/db/install.xml
+++ b/dta/db/install.xml
@@ -1,46 +1,47 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="mod/assign/submission/dta/db" VERSION="20210107" COMMENT="XMLDB file for Moodle mod/assign/submission/dta"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:noNamespaceSchemaLocation="../../../../../lib/xmldb/xmldb.xsd"
->
-  <TABLES>
-    <TABLE NAME="assignsubmission_dta_summary" COMMENT="DTA testrun summary">
-      <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
-        <FIELD NAME="assignment_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
-        <FIELD NAME="submission_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
-        <FIELD NAME="successful_competencies" TYPE="char" LENGTH="80" NOTNULL="false"/>
-        <FIELD NAME="tested_competencies" TYPE="char" LENGTH="80" NOTNULL="false"/>
-        <FIELD NAME="timestamp" TYPE="int" LENGTH="10"/>
-        <FIELD NAME="global_stacktrace" TYPE="text"/>
-      </FIELDS>
-      <KEYS>
-        <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
-        <KEY NAME="fk_assignment" TYPE="foreign" FIELDS="assignment_id" REFTABLE="assign" REFFIELDS="id" COMMENT="The assignment instance this summary relates to"/>
-        <KEY NAME="fk_submission" TYPE="foreign" FIELDS="submission_id" REFTABLE="assign_submission" REFFIELDS="id"  COMMENT="The submission this summary relates to."/>
-      </KEYS>
-    </TABLE>
-    <TABLE NAME="assignsubmission_dta_result" COMMENT="DTA testrun single test results">
-      <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
-        <FIELD NAME="assignment_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
-        <FIELD NAME="submission_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
-        <FIELD NAME="package_name" TYPE="char" LENGTH="255" NOTNULL="false"/>
-        <FIELD NAME="class_name" TYPE="char" LENGTH="255" NOTNULL="false"/>
-        <FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="true"/>
-        <FIELD NAME="state" TYPE="int" LENGTH="10" NOTNULL="true"/>
-        <FIELD NAME="failure_type" TYPE="char" LENGTH="255"/>
-        <FIELD NAME="failure_reason" TYPE="char" LENGTH="255"/>
-        <FIELD NAME="stacktrace" TYPE="text"/>
-        <FIELD NAME="column_number" TYPE="int" LENGTH="10"/>
-        <FIELD NAME="line_number" TYPE="int" LENGTH="10"/>
-        <FIELD NAME="position" TYPE="int" LENGTH="10"/>
-      </FIELDS>
-      <KEYS>
-        <KEY NAME="primary" TYPE="primary" FIELDS="id,assignment_id,submission_id"/>
-        <KEY NAME="fk_assignment" TYPE="foreign" FIELDS="assignment_id" REFTABLE="assign" REFFIELDS="id" COMMENT="The assignment instance this result relates to"/>
-        <KEY NAME="fk_submission" TYPE="foreign" FIELDS="submission_id" REFTABLE="assign_submission" REFFIELDS="id"  COMMENT="The submission this result relates to."/>
-      </KEYS>
-    </TABLE>
-  </TABLES>
+<?xml version="1.0" encoding="UTF-8" ?>
+<XMLDB PATH="mod/assign/submission/dta/db" VERSION="20210107" COMMENT="XMLDB file for Moodle mod/assign/submission/dta"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:noNamespaceSchemaLocation="../../../../../lib/xmldb/xmldb.xsd"
+>
+  <TABLES>
+    <TABLE NAME="assignsubmission_dta_summary" COMMENT="DTA testrun summary">
+      <FIELDS>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
+        <FIELD NAME="assignment_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
+        <FIELD NAME="submission_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
+        <FIELD NAME="successful_competencies" TYPE="char" LENGTH="80" NOTNULL="false"/>
+        <FIELD NAME="tested_competencies" TYPE="char" LENGTH="80" NOTNULL="false"/>
+        <FIELD NAME="recommendations" TYPE="char" LENGTH="160" NOTNULL="false"/>
+        <FIELD NAME="timestamp" TYPE="int" LENGTH="10"/>
+        <FIELD NAME="global_stacktrace" TYPE="text"/>
+      </FIELDS>
+      <KEYS>
+        <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
+        <KEY NAME="fk_assignment" TYPE="foreign" FIELDS="assignment_id" REFTABLE="assign" REFFIELDS="id" COMMENT="The assignment instance this summary relates to"/>
+        <KEY NAME="fk_submission" TYPE="foreign" FIELDS="submission_id" REFTABLE="assign_submission" REFFIELDS="id"  COMMENT="The submission this summary relates to."/>
+      </KEYS>
+    </TABLE>
+    <TABLE NAME="assignsubmission_dta_result" COMMENT="DTA testrun single test results">
+      <FIELDS>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/>
+        <FIELD NAME="assignment_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
+        <FIELD NAME="submission_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
+        <FIELD NAME="package_name" TYPE="char" LENGTH="255" NOTNULL="false"/>
+        <FIELD NAME="class_name" TYPE="char" LENGTH="255" NOTNULL="false"/>
+        <FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="true"/>
+        <FIELD NAME="state" TYPE="int" LENGTH="10" NOTNULL="true"/>
+        <FIELD NAME="failure_type" TYPE="char" LENGTH="255"/>
+        <FIELD NAME="failure_reason" TYPE="char" LENGTH="255"/>
+        <FIELD NAME="stacktrace" TYPE="text"/>
+        <FIELD NAME="column_number" TYPE="int" LENGTH="10"/>
+        <FIELD NAME="line_number" TYPE="int" LENGTH="10"/>
+        <FIELD NAME="position" TYPE="int" LENGTH="10"/>
+      </FIELDS>
+      <KEYS>
+        <KEY NAME="primary" TYPE="primary" FIELDS="id,assignment_id,submission_id"/>
+        <KEY NAME="fk_assignment" TYPE="foreign" FIELDS="assignment_id" REFTABLE="assign" REFFIELDS="id" COMMENT="The assignment instance this result relates to"/>
+        <KEY NAME="fk_submission" TYPE="foreign" FIELDS="submission_id" REFTABLE="assign_submission" REFFIELDS="id"  COMMENT="The submission this result relates to."/>
+      </KEYS>
+    </TABLE>
+  </TABLES>
 </XMLDB>
\ No newline at end of file
diff --git a/dta/lang/en/assignsubmission_dta.php b/dta/lang/en/assignsubmission_dta.php
index 4f3cf89..e0ddb29 100644
--- a/dta/lang/en/assignsubmission_dta.php
+++ b/dta/lang/en/assignsubmission_dta.php
@@ -151,6 +151,7 @@ $string["privacy:metadata:assignsubmission_dta_summary:timestamp"] = "Date and t
 $string["privacy:metadata:assignsubmission_dta_summary"] = "Stack trace of the compilation and test if major problems occur";
 $string["privacy:metadata:assignsubmission_dta_summary:successful_competencies"] = "List of the successfully tested competencies";
 $string["privacy:metadata:assignsubmission_dta_summary:tested_competencies"] = "List of the tested competencies";
+$string["privacy:metadata:assignsubmission_dta_summary:recommendations"] = "List of recommendations after submitting the code";
 $string["privacy:metadata:assignsubmission_dta_summary"] = "Summary of Dockerized Test Agent (DTA) results";
 $string["privacy:metadata:assignsubmission_dta_result:package_name"] = "Package name of individual test";
 $string["privacy:metadata:assignsubmission_dta_result:class_name"] = "Class name of individual test";
diff --git a/dta/locallib.php b/dta/locallib.php
index cff2b4e..1a3ab59 100644
--- a/dta/locallib.php
+++ b/dta/locallib.php
@@ -285,7 +285,7 @@ class assign_submission_dta extends assign_submission_plugin {
         $file = reset($files);
 
         // Send file to backend.
-        $response = DtaBackendUtils::sendsubmissiontobackend($this->assignment, $submission->id, $file);
+        $response = DtaBackendUtils::send_submission_to_backend($this->assignment, $submission->id, $file);
 
         // With a null response, return an error.
         if (is_null($response)) {
diff --git a/dta/styles.css b/dta/styles.css
index 0919503..9afdd31 100644
--- a/dta/styles.css
+++ b/dta/styles.css
@@ -1,74 +1,74 @@
-/* Prevent word breaking in the grading table */
-.dtaSubmissionSummary {
-    white-space: nowrap;
-}
-
-.dtaSubmissionSummary,
-.dtaSubmissionDetails {
-    margin-top: 15px;
-}
-
-/* empty div between summary and detail table */
-.dtaSpacer {
-    margin-top: 30px;
-}
-
-/****************************************************************
-* Layout for the Detail view
-****************************************************************/
-
-.dtaTable {
-    display: inline-block;
-    max-width: 100%;
-    overflow: auto;
-    background: white !important;
-    border-radius: .1rem;
-    box-shadow: 0 .2rem .5rem rgba(0,0,0,.05),0 0 .05rem rgba(0,0,0,.1);
-    overflow-x: hidden;
-}
-
-.dtaTableHeaderRow {
-    font-weight: bold;
-    color: white !important;
-    background-color: gray !important;
-}
-
-.dtaTableRow {
-    background-color: unset !important;
-    border-top: .05rem solid lightgray;
-}
-
-.dtaTableHeaderRow th,
-.dtaTableRow td {
-    padding: .9375em 1.25em;
-}
-
-.dtaStacktraceDetails {
-    max-height: 300px;
-    max-width: 70%;
-    overflow: auto;
-}
-
-.dtaResultUnknown {
-    border-left: 10px solid gray;
-}
-
-.dtaResultSuccess {
-    border-left: 10px solid green;
-}
-
-.dtaResultFailure {
-    border-left: 10px solid orange;
-}
-
-.dtaResultCompilationError {
-    border-left: 10px solid red;
-}
-
-.dtaTableRow:hover {
-    background-color: lightgray !important;
-}
-
-.dtaTableSpacer {
-    border-bottom: 2px solid darkgray;
-}
+/* Prevent word breaking in the grading table */
+.dtaSubmissionSummary {
+    white-space: nowrap;
+}
+
+.dtaSubmissionSummary,
+.dtaSubmissionDetails {
+    margin-top: 15px;
+}
+
+/* empty div between summary and detail table */
+.dtaSpacer {
+    margin-top: 30px;
+}
+
+/****************************************************************
+* Layout for the Detail view
+****************************************************************/
+
+.dtaTable {
+    display: inline-block;
+    max-width: 100%;
+    overflow: auto;
+    background: white !important;
+    border-radius: .1rem;
+    box-shadow: 0 .2rem .5rem rgba(0,0,0,.05),0 0 .05rem rgba(0,0,0,.1);
+    overflow-x: hidden;
+}
+
+.dtaTableHeaderRow {
+    font-weight: bold;
+    color: white !important;
+    background-color: gray !important;
+}
+
+.dtaTableRow {
+    background-color: unset !important;
+    border-top: .05rem solid lightgray;
+}
+
+.dtaTableHeaderRow th,
+.dtaTableRow td {
+    padding: .9375em 1.25em;
+}
+
+.dtaStacktraceDetails {
+    max-height: 300px;
+    max-width: 70%;
+    overflow: auto;
+}
+
+.dtaResultUnknown {
+    border-left: 10px solid gray;
+}
+
+.dtaResultSuccess {
+    border-left: 10px solid green;
+}
+
+.dtaResultFailure {
+    border-left: 10px solid orange;
+}
+
+.dtaResultCompilationError {
+    border-left: 10px solid red;
+}
+
+.dtaTableRow:hover {
+    background-color: lightgray !important;
+}
+
+.dtaTableSpacer {
+    border-bottom: 2px solid darkgray;
+}
diff --git a/teacher-dta.txt b/teacher-dta.txt
new file mode 100644
index 0000000..276c40c
--- /dev/null
+++ b/teacher-dta.txt
@@ -0,0 +1 @@
+dtt::https://transfer.hft-stuttgart.de/gitlab/dtt/example_openjdk11-junit5-calculator-test.git::none::none::hftstuttgart/dta-jdk17-junit5-testrunner:latest
-- 
GitLab