Skip to content

Commit

Permalink
Merge branch 'develop' into feature/competencies/refactor-competencie…
Browse files Browse the repository at this point in the history
…s-management-page-to-signals
  • Loading branch information
JohannesWt authored Nov 13, 2024
2 parents 71fbdce + 054476c commit d115fac
Show file tree
Hide file tree
Showing 389 changed files with 12,426 additions and 3,471 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ Refer to [Using JHipster in production](http://www.jhipster.tech/production) for
The following command can automate the deployment to a server. The example shows the deployment to the main Artemis test server (which runs a virtual machine):

```shell
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-7.7.0.war
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-7.7.1.war
```

## Architecture
Expand Down
18 changes: 11 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ plugins {
}

group = "de.tum.cit.aet.artemis"
version = "7.7.0"
version = "7.7.1"
description = "Interactive Learning with Individual Feedback"

java {
Expand Down Expand Up @@ -55,11 +55,15 @@ idea {
}

spotless {

// allows to execute the code formatting commands ./gradlew spotlessApply and ./gradlew spotlessCheck
java {
target {
fileTree(rootDir) {
include "**/*.java"
include (
"src/main/java/**/*.java",
"src/test/java/**/*.java",
)
exclude(
"**/src/test/resources/test-data/repository-export/EncodingISO_8559_1.java",
"**/node_modules/**",
Expand All @@ -71,7 +75,6 @@ spotless {
"**/src/main/resources/templates/**",
"/docker/**",
"checked-out-repos/**",
"**/src/main/java/org/eclipse/**",
"supporting_scripts/**"
)
}
Expand Down Expand Up @@ -249,6 +252,7 @@ dependencies {

implementation "de.jplag:c:${jplag_version}"
implementation "de.jplag:cpp:${jplag_version}"
implementation "de.jplag:csharp:${jplag_version}"
implementation "de.jplag:java:${jplag_version}"
implementation "de.jplag:javascript:${jplag_version}"
implementation "de.jplag:kotlin:${jplag_version}"
Expand Down Expand Up @@ -313,15 +317,15 @@ dependencies {
implementation "ch.qos.logback:logback-classic:${logback_version}"
implementation "ch.qos.logback:logback-core:${logback_version}"
// required by eureka client
implementation "com.thoughtworks.xstream:xstream:1.4.20"
implementation "com.thoughtworks.xstream:xstream:1.4.21"
// required by JPlag
implementation "xerces:xercesImpl:2.12.2"
// required by JPlag
implementation "xalan:xalan:2.7.3"
// required by JPlag
implementation "xalan:serializer:2.7.3"
// required by Saml2
implementation "org.apache.santuario:xmlsec:4.0.2"
implementation "org.apache.santuario:xmlsec:4.0.3"

implementation "org.jsoup:jsoup:1.18.1"
implementation "commons-codec:commons-codec:1.17.1" // needed for spring security saml2
Expand Down Expand Up @@ -373,7 +377,7 @@ dependencies {
implementation "javax.cache:cache-api:1.1.1"
implementation "org.hibernate.orm:hibernate-core:${hibernate_version}"

implementation "com.zaxxer:HikariCP:6.0.0"
implementation "com.zaxxer:HikariCP:6.1.0"

implementation "org.apache.commons:commons-text:1.12.0"
implementation "org.apache.commons:commons-math3:3.6.1"
Expand Down Expand Up @@ -421,7 +425,7 @@ dependencies {
implementation "org.springframework.security:spring-security-oauth2-core:${spring_security_version}"
implementation "org.springframework.security:spring-security-oauth2-client:${spring_security_version}"
// use newest version of nimbus-jose-jwt to avoid security issues through outdated dependencies
implementation "com.nimbusds:nimbus-jose-jwt:9.45"
implementation "com.nimbusds:nimbus-jose-jwt:9.46"

implementation "org.springframework.security:spring-security-oauth2-jose:${spring_security_version}"
implementation "org.springframework.security:spring-security-crypto:${spring_security_version}"
Expand Down
47 changes: 47 additions & 0 deletions docs/admin/cleanup-service.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
.. _cleanup:

Cleanup Service
===============

Artemis provides a feature to delete data from older courses.

.. _cleanup-menu:

.. figure:: cleanup/cleanup-menu.png
:align: center
:alt: Cleanup view

As shown in the image, administrators can delete the following data types:

* Plagiarism results with an undecided outcome
* Orphaned data
* Non-rated results from older courses
* Rated results from older courses

Since orphaned data has no connections to other data by nature, it is deleted without considering specific dates.
For other types, administrators can track the related exercises and courses.
When a cleanup operation is performed with specified "from" and "to" dates, all data associated with that type and related to courses that started after the "from" date and ended before the "to" date is deleted.

Data Deletion by Operation Type
------------------------------------------

1. **Orphaned Data**:
- Long Feedback Text with feedback that has no results
- Text Block with feedback that has no results
- Feedback records without results
- Student and team scores where either a student or a team is specified
- Long Feedback Text where both participation and submission are missing
- Text Block where the referenced feedback has no associated participation or submission
- Feedback with no associated participation or submission
- All Ratings where the related result has no associated participation or submission
- Results without associated participation or submission

2. **Plagiarism Results with an Undecided Outcome**:
- All plagiarism comparisons related to courses within the specified dates and marked as undecided.

3. **Rated and Non-rated Results**:
- Both types follow the same logic, except for the rating status of results (rated vs. non-rated).
- For each type, only the latest valid result within a participation is retained, while all others are deleted.
- Because direct result deletion is restricted due to data integrity reasons, Artemis first removes associated data for results scheduled for deletion, including Long Feedback Text, Text Block, Feedback, Student Score, and Team Score.

Artemis also records the date of the last cleanup operation, as seen in the last column of the table shown in the image.
Binary file added docs/admin/cleanup/cleanup-menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ All these exercises are supposed to be run either live in the lecture with insta
admin/knownIssues
admin/benchmarking-tool
admin/telemetry
admin/cleanup-service


.. toctree::
Expand Down
3 changes: 1 addition & 2 deletions docs/user/adaptive-learning/adaptive-learning-instructor.rst
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,10 @@ Create/Edit Competencies
Besides a title and description, they can set a `taxonomy <https://en.wikipedia.org/wiki/Bloom%27s_taxonomy>`_.
| The mastery threshold describes the minimum mastery required for a student to consider the competency as mastered.
The current average mastery shown on this page can be used as a basis for defining a reasonable threshold value.
| Instructors can link competencies to lecture units on this page by first choosing a lecture and then selecting desired lecture units.
|instructor-competency-edit|

Alternatively, instructors can also link competencies to an exercise or lecture unit on the respective management page using the selection box shown below.
Instructors can link competencies to an exercise or lecture unit on the respective management page using the selection box shown below.

|instructor-competency-link|

Expand Down
Binary file modified docs/user/adaptive-learning/instructor/competency-edit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exams/instructor/programming_assessment.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/modeling/create-modeling-exercise-form-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/user/exercises/programming-exercise-features.inc
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ Instructors can still use those templates to generate programming exercises and
+----------------------+----------+---------+
| TypeScript | yes | yes |
+----------------------+----------+---------+
| C# | yes | yes |
+----------------------+----------+---------+

- Not all ``templates`` support the same feature set and supported features can also change depending on the continuous integration system setup.
Depending on the feature set, some options might not be available during the creation of the programming exercise.
Expand Down Expand Up @@ -83,6 +85,8 @@ Instructors can still use those templates to generate programming exercises and
+----------------------+----------------------+----------------------+---------------------+--------------+------------------------------------------+------------------------------+----------------------------+------------------------+
| TypeScript | no | no | yes | no | n/a | no | no | L: yes, J: no |
+----------------------+----------------------+----------------------+---------------------+--------------+------------------------------------------+------------------------------+----------------------------+------------------------+
| C# | no | no | yes | no | n/a | no | no | L: yes, J: no |
+----------------------+----------------------+----------------------+---------------------+--------------+------------------------------------------+------------------------------+----------------------------+------------------------+

- *Sequential Test Runs*: ``Artemis`` can generate a build plan which first executes structural and then behavioral tests. This feature can help students to better concentrate on the immediate challenge at hand.
- *Static Code Analysis*: ``Artemis`` can generate a build plan which additionally executes static code analysis tools.
Expand Down
Binary file modified docs/user/exercises/programming/CodeEditor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/programming/instructor-editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/programming/online-editor-assessment.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/programming/online-editor-feedback.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/programming/programming-edit-status.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/quiz/drag-and-drop-question.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/quiz/multiple-choice-question.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/quiz/short-answer-question.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exercises/text/create-text-exercise-form-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/icl/local-vc/commit-diff-view.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/icl/local-vc/current-repository-content-view.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 15 additions & 15 deletions docs/user/lectures.rst
Original file line number Diff line number Diff line change
Expand Up @@ -154,44 +154,44 @@ See :ref:`Adaptive Learning <adaptive-learning>` for more information.


.. |lectures-overview| image:: lectures/lectures-overview.png
:width: 800
:width: 1000
.. |lecture-details| image:: lectures/lecture-details.png
:width: 800
:width: 1000
.. |lectures-management| image:: lectures/lectures-management.png
:width: 800
:width: 1000
.. |lectures-management-btn| image:: lectures/lectures-management-button.png
:width: 80
.. |create-lecture| image:: lectures/create-lecture.png
:width: 800
:width: 1000
.. |create-lecture-btn| image:: lectures/create-lecture-button.png
:width: 120
.. |switch-to-guided-mode-btn| image:: lectures/switch-to-guided-mode-button.png
:width: 160
.. |create-attachment| image:: lectures/create-attachment.png
:width: 800
:width: 1000
.. |import-lecture| image:: lectures/import-lecture.png
:width: 800
:width: 1000
.. |import-lecture-btn| image:: lectures/import-lecture-button.png
:width: 120
.. |units-management-empty| image:: lectures/units-management-empty.png
:width: 800
:width: 1000
.. |units-management| image:: lectures/units-management.png
:width: 800
:width: 1000
.. |create-online-unit| image:: lectures/create-online-unit.png
:width: 800
:width: 1000
.. |create-text-unit| image:: lectures/create-text-unit.png
:width: 800
:width: 1000
.. |create-video-unit| image:: lectures/create-video-unit.png
:width: 800
:width: 1000
.. |create-attachment-unit| image:: lectures/create-attachment-unit.png
:width: 800
:width: 1000
.. |create-exercise-unit| image:: lectures/create-exercise-unit.png
:width: 800
:width: 1000
.. |process-units-checkbox| image:: lectures/process-units-checkbox.png
:width: 120
.. |process-units-btn| image:: lectures/process-units-btn.png
:width: 120
.. |processed-lecture-units| image:: lectures/processed-lecture-units.png
:width: 800
:width: 1000
.. |automatic-unit-processing| image:: lectures/automatic-unit-processing.png
:width: 800
:width: 1000
Binary file modified docs/user/lectures/automatic-unit-processing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/lectures/create-attachment-unit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/lectures/create-exercise-unit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/lectures/create-lecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/lectures/create-online-unit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/lectures/create-text-unit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/lectures/create-video-unit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/markdown-support/markdown-lecture-example.png
Binary file modified docs/user/markdown-support/markdown-lecture-preview.png
Binary file modified docs/user/markdown-support/markdown-post-extensions-preview.png
Binary file modified docs/user/markdown-support/markdown-post-extensions.png
Binary file modified docs/user/tutorialgroups/instructors-tutorial-group-form.png
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,18 @@ hazelcast_version=5.5.0
fasterxml_version=2.18.1
jgit_version=7.0.0.202409031743-r
sshd_version=2.14.0
checkstyle_version=10.20.0
checkstyle_version=10.20.1
jplag_version=5.1.0
# not really used in Artemis, nor Jplag, nor the used version of Stanford CoreNLP, but we use the latest to avoid security vulnerabilities
# NOTE: we do not need to use the latest version 9.x here as long as Stanford CoreNLP does not reference it
lucene_version=8.11.4
slf4j_version=2.0.16
sentry_version=7.16.0
liquibase_version=4.29.2
liquibase_version=4.30.0
docker_java_version=3.4.0
logback_version=1.5.12
java_parser_version=3.26.2
byte_buddy_version=1.15.9
byte_buddy_version=1.15.10

# testing
# make sure both versions are compatible
Expand All @@ -43,7 +43,7 @@ mockito_version=5.14.2
gradle_node_plugin_version=7.1.0
apt_plugin_version=0.21
liquibase_plugin_version=2.1.1
modernizer_plugin_version=1.9.3
modernizer_plugin_version=1.10.0

org.gradle.jvmargs=-Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en \
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
Expand Down
11 changes: 7 additions & 4 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,15 @@ const esModules = [
'd3-array',
'd3-brush',
'd3-color',
'd3-dispatch',
'd3-drag',
'd3-ease',
'd3-force',
'd3-format',
'd3-hierarchy',
'd3-interpolate',
'd3-path',
'd3-quadtree',
'd3-scale',
'd3-selection',
'd3-shape',
Expand Down Expand Up @@ -102,10 +105,10 @@ module.exports = {
coverageThreshold: {
global: {
// TODO: in the future, the following values should increase to at least 90%
statements: 87.53,
branches: 73.62,
functions: 82.09,
lines: 87.59,
statements: 87.67,
branches: 73.81,
functions: 82.17,
lines: 87.72,
},
},
coverageReporters: ['clover', 'json', 'lcov', 'text-summary'],
Expand Down
15 changes: 1 addition & 14 deletions linting.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,3 @@
#!/bin/sh
join_by () {
local IFS="$1";
shift;
echo "$*";
}

FILES=$(join_by "," "$@")

if [[ "$OSTYPE" == "msys" ]]; then
# replace backslashes with double backslashes in Windows file paths when
# using MinGW (msys = lightweight shell and GNU utilities compiled for Windows (part of MinGW)
FILES=$(echo $FILES | sed 's/\\/\\\\/g')
fi

./gradlew spotlessApply -PspotlessFiles="${FILES}"
./gradlew spotlessApply -PratchetFrom='develop'
Loading

0 comments on commit d115fac

Please sign in to comment.