From 7fcdc1c788725f866de71fc9dfd8c4d1cb132b57 Mon Sep 17 00:00:00 2001 From: Orangerot Date: Fri, 24 May 2024 17:42:08 +0200 Subject: Initial commit --- 31-qualitaetsheft-kolloquium/.gitignore | 303 ++ 31-qualitaetsheft-kolloquium/.gitlab-ci.yml | 37 + 31-qualitaetsheft-kolloquium/CHANGELOG.md | 34 + 31-qualitaetsheft-kolloquium/Makefile | 19 + 31-qualitaetsheft-kolloquium/README.md | 118 + 31-qualitaetsheft-kolloquium/assets/.gitignore | 3 + 31-qualitaetsheft-kolloquium/assets/.gitingnore | 3 + .../assets/commits-dashboard.png | Bin 0 -> 44171 bytes .../assets/commits-server.png | Bin 0 -> 36705 bytes .../assets/contributors-dashboard.png | Bin 0 -> 193750 bytes .../assets/contributors-server.png | Bin 0 -> 222521 bytes .../assets/coverage/authenticationService.png | Bin 0 -> 26274 bytes .../assets/coverage/episodeActionService.png | Bin 0 -> 14649 bytes .../assets/coverage/server.png | Bin 0 -> 42666 bytes .../assets/coverage/subscriptionsService.png | Bin 0 -> 14334 bytes .../assets/coverage/util.png | Bin 0 -> 17510 bytes .../assets/diagrams/backendComponentDiagram.puml | 61 + .../diagrams/classdiagram-authentication.puml | 112 + .../diagrams/classdiagram-episode-actions.puml | 84 + .../assets/diagrams/classdiagram-model.puml | 109 + .../diagrams/classdiagram-subscriptions.puml | 75 + .../assets/diagrams/classdiagram-util.puml | 43 + .../assets/diagrams/classdiagram.puml | 68 + .../assets/diagrams/componentdiagram.puml | 53 + .../assets/diagrams/db.puml | 78 + .../assets/diagrams/deployment.puml | 59 + .../diagrams/sequencediagram-forgotAndResetPW.puml | 41 + .../sequencediagram-getEpisodeActions.puml | 38 + ...ncediagram-getEpisodeActionsOfPodcastSince.puml | 32 + .../diagrams/sequencediagram-getSubscriptions.puml | 38 + .../assets/diagrams/sequencediagram-register.puml | 26 + .../sequencediagram-uploadEpisodeActions.puml | 38 + .../sequencediagram-uploadSubscriptions.puml | 32 + 31-qualitaetsheft-kolloquium/assets/episode.png | Bin 0 -> 10778 bytes .../assets/gantt-plan.puml | 31 + .../assets/gantt-reality.puml | 39 + 31-qualitaetsheft-kolloquium/assets/help.png | Bin 0 -> 14423 bytes .../assets/lasttest/goodSpecsApdex.png | Bin 0 -> 20917 bytes .../assets/lasttest/goodSpecsResponse.png | Bin 0 -> 22682 bytes .../assets/lasttest/goodSpecsTable.png | Bin 0 -> 46496 bytes .../assets/lasttest/minimumSpecsApdex.png | Bin 0 -> 22565 bytes .../assets/lasttest/minimumSpecsResponse.png | Bin 0 -> 21284 bytes .../assets/lasttest/minimumSpecsTable.png | Bin 0 -> 46556 bytes 31-qualitaetsheft-kolloquium/assets/lastupdate.png | Bin 0 -> 9363 bytes 31-qualitaetsheft-kolloquium/assets/logo.svg | 211 + 31-qualitaetsheft-kolloquium/assets/navbar.png | Bin 0 -> 8940 bytes .../assets/password-margin.png | Bin 0 -> 8701 bytes 31-qualitaetsheft-kolloquium/assets/password.png | Bin 0 -> 8781 bytes .../assets/sources/checkstyle-after-processed.txt | 1 + .../assets/sources/checkstyle-after.txt | 22 + .../assets/sources/checkstyle-before-processed.txt | 23 + .../assets/sources/checkstyle-before.txt | 820 +++ .../sources/linter-dashboard-after-processed.txt | 1 + .../assets/sources/linter-dashboard-after.txt | 10 + .../sources/linter-dashboard-before-processed.txt | 22 + .../assets/sources/linter-dashboard-before.txt | 358 ++ .../assets/subscription.png | Bin 0 -> 79929 bytes .../logos/banner_2020_kit.jpg | Bin 0 -> 96829 bytes .../logos/kitlogo_de_rgb.pdf | Bin 0 -> 11304 bytes .../logos/kitlogo_en_rgb.pdf | Bin 0 -> 6459 bytes 31-qualitaetsheft-kolloquium/logos/pse_logo.pdf | Bin 0 -> 11797 bytes 31-qualitaetsheft-kolloquium/notizen | 40 + 31-qualitaetsheft-kolloquium/presentation.tex | 62 + 31-qualitaetsheft-kolloquium/sdqbeamer.cls | 975 ++++ 31-qualitaetsheft-kolloquium/slides/changes.tex | 146 + .../slides/classdiagram.tex | 36 + 31-qualitaetsheft-kolloquium/slides/codestyle.tex | 179 + 31-qualitaetsheft-kolloquium/slides/components.tex | 7 + 31-qualitaetsheft-kolloquium/slides/coverage.tex | 23 + .../slides/difficulties.tex | 34 + .../slides/einf\303\274hrung.tex" | 40 + 31-qualitaetsheft-kolloquium/slides/features.tex | 37 + 31-qualitaetsheft-kolloquium/slides/gantt.tex | 11 + .../slides/integrationstrategie.tex | 82 + 31-qualitaetsheft-kolloquium/slides/pattern.tex | 12 + .../slides/performance.tex | 56 + 31-qualitaetsheft-kolloquium/slides/problems.tex | 59 + .../slides/requirements.tex | 58 + 31-qualitaetsheft-kolloquium/slides/statistics.tex | 85 + .../slides/synchronisation.tex | 36 + 31-qualitaetsheft-kolloquium/slides/testing.tex | 59 + .../slides/zielsetzung.tex | 39 + 31-qualitaetsheft-kolloquium/tikz-uml.sty | 5377 ++++++++++++++++++++ 83 files changed, 10495 insertions(+) create mode 100644 31-qualitaetsheft-kolloquium/.gitignore create mode 100644 31-qualitaetsheft-kolloquium/.gitlab-ci.yml create mode 100644 31-qualitaetsheft-kolloquium/CHANGELOG.md create mode 100644 31-qualitaetsheft-kolloquium/Makefile create mode 100644 31-qualitaetsheft-kolloquium/README.md create mode 100644 31-qualitaetsheft-kolloquium/assets/.gitignore create mode 100644 31-qualitaetsheft-kolloquium/assets/.gitingnore create mode 100644 31-qualitaetsheft-kolloquium/assets/commits-dashboard.png create mode 100644 31-qualitaetsheft-kolloquium/assets/commits-server.png create mode 100644 31-qualitaetsheft-kolloquium/assets/contributors-dashboard.png create mode 100644 31-qualitaetsheft-kolloquium/assets/contributors-server.png create mode 100644 31-qualitaetsheft-kolloquium/assets/coverage/authenticationService.png create mode 100644 31-qualitaetsheft-kolloquium/assets/coverage/episodeActionService.png create mode 100644 31-qualitaetsheft-kolloquium/assets/coverage/server.png create mode 100644 31-qualitaetsheft-kolloquium/assets/coverage/subscriptionsService.png create mode 100644 31-qualitaetsheft-kolloquium/assets/coverage/util.png create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/backendComponentDiagram.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-authentication.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-episode-actions.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-model.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-subscriptions.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-util.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/componentdiagram.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/db.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/deployment.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-forgotAndResetPW.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getEpisodeActions.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getEpisodeActionsOfPodcastSince.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getSubscriptions.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-register.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-uploadEpisodeActions.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-uploadSubscriptions.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/episode.png create mode 100644 31-qualitaetsheft-kolloquium/assets/gantt-plan.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/gantt-reality.puml create mode 100644 31-qualitaetsheft-kolloquium/assets/help.png create mode 100644 31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsApdex.png create mode 100644 31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsResponse.png create mode 100644 31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsTable.png create mode 100644 31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsApdex.png create mode 100644 31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsResponse.png create mode 100644 31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsTable.png create mode 100644 31-qualitaetsheft-kolloquium/assets/lastupdate.png create mode 100644 31-qualitaetsheft-kolloquium/assets/logo.svg create mode 100644 31-qualitaetsheft-kolloquium/assets/navbar.png create mode 100644 31-qualitaetsheft-kolloquium/assets/password-margin.png create mode 100644 31-qualitaetsheft-kolloquium/assets/password.png create mode 100644 31-qualitaetsheft-kolloquium/assets/sources/checkstyle-after-processed.txt create mode 100644 31-qualitaetsheft-kolloquium/assets/sources/checkstyle-after.txt create mode 100644 31-qualitaetsheft-kolloquium/assets/sources/checkstyle-before-processed.txt create mode 100644 31-qualitaetsheft-kolloquium/assets/sources/checkstyle-before.txt create mode 100644 31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-after-processed.txt create mode 100644 31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-after.txt create mode 100644 31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-before-processed.txt create mode 100644 31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-before.txt create mode 100644 31-qualitaetsheft-kolloquium/assets/subscription.png create mode 100644 31-qualitaetsheft-kolloquium/logos/banner_2020_kit.jpg create mode 100644 31-qualitaetsheft-kolloquium/logos/kitlogo_de_rgb.pdf create mode 100644 31-qualitaetsheft-kolloquium/logos/kitlogo_en_rgb.pdf create mode 100644 31-qualitaetsheft-kolloquium/logos/pse_logo.pdf create mode 100644 31-qualitaetsheft-kolloquium/notizen create mode 100644 31-qualitaetsheft-kolloquium/presentation.tex create mode 100644 31-qualitaetsheft-kolloquium/sdqbeamer.cls create mode 100644 31-qualitaetsheft-kolloquium/slides/changes.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/classdiagram.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/codestyle.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/components.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/coverage.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/difficulties.tex create mode 100644 "31-qualitaetsheft-kolloquium/slides/einf\303\274hrung.tex" create mode 100644 31-qualitaetsheft-kolloquium/slides/features.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/gantt.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/integrationstrategie.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/pattern.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/performance.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/problems.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/requirements.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/statistics.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/synchronisation.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/testing.tex create mode 100644 31-qualitaetsheft-kolloquium/slides/zielsetzung.tex create mode 100644 31-qualitaetsheft-kolloquium/tikz-uml.sty (limited to '31-qualitaetsheft-kolloquium') diff --git a/31-qualitaetsheft-kolloquium/.gitignore b/31-qualitaetsheft-kolloquium/.gitignore new file mode 100644 index 0000000..595d70a --- /dev/null +++ b/31-qualitaetsheft-kolloquium/.gitignore @@ -0,0 +1,303 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +*.eps +*.pdf +# !assets/*.pdf +!logos/*.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs +*.lzo +*.lzs +*.slg +*.slo +*.sls + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +*.ist + +# gnuplot +*.gnuplot +*.table + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# svg +svg-inkscape/ + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# titletoc +*.ptc + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib diff --git a/31-qualitaetsheft-kolloquium/.gitlab-ci.yml b/31-qualitaetsheft-kolloquium/.gitlab-ci.yml new file mode 100644 index 0000000..c4ad5e0 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/.gitlab-ci.yml @@ -0,0 +1,37 @@ +plantuml: + stage: .pre + image: + name: eclipse-temurin:17-alpine + entrypoint: [""] + script: + - java -jar plantuml.jar -tpdf assets/diagrams/*.puml + - java -jar plantuml.jar -teps assets/*.puml + artifacts: + paths: + - assets + +tex: + stage: build + image: texlive/texlive + script: + - mkdir public + - make tex + - mv *.pdf public + artifacts: + paths: + - public + dependencies: + - plantuml + +pages: + stage: deploy + script: + - echo Hello, World! + artifacts: + paths: + - public + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + dependencies: + - tex + diff --git a/31-qualitaetsheft-kolloquium/CHANGELOG.md b/31-qualitaetsheft-kolloquium/CHANGELOG.md new file mode 100644 index 0000000..7671a41 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/CHANGELOG.md @@ -0,0 +1,34 @@ +# Changelog +Alle Änderungen an diesem Projekt werden in dieser Datei dokumentiert. +Die Versionsnummern folgt der Syntax in `sdqbeamer.cls`. + +## [2022-05-03 v3.1.3] +- Die Breite des Gruppennamens in der Fußzeile kann nun über `\groupnamewidth{}` gesteuert werden +- FIX: zweizeilige Fußzeilen haben nun gleichmäßigen vertikalen Abstand (Issue #16 in Gitlab) + +## [2021-08-10 v3.1.2] +- FIX: framesubtitle wird nun angezeigt (Issue #6 in Gitlab) + +## [2020-12-08 v3.1.1] +- FIX: Titelbild (Issue #4 in Gitlab) + +## [2020-12-07 v3.1] +- Umgebung ``contentblock`` (farbloser Block mit fetter Überschrift) hinzugefügt +- Farbboxen (``greenblock``, ``blueblock``, …) hinzugefügt +- Abstufungen der KIT-Farben in 10er-Schritten entsprechend der Gestaltungsrichtlinien eingeführt +- FIX: Navigationspunkte für Subsections in eine Zeile gesetzt, um vertikal Platz zu sparen +- FIX: ``inputenc`` an den Anfang von ``sdqbeamer.cls`` verschoben + +## [2020-11-16 v3.0] +- Seitenformat 16:10 hinzugefügt +- Umstellung auf KIT-Design vom 1. August 2020 + - Anpassung auf neues Farbschema und Maße + - neues Titelbild aus der KIT-Bildwelt +- Neue Optionen: + - durch `smallfoot` und `bigfoot` kann die Schriftgröße der Fußzeile gesteuert werden + - durch `navbarkit` kann eine Fußzeile nach KIT-Vorgaben erzwungen werden +- Deutsch (`de`) ist nun die Standard-Option +- Ordner `templates` wurde gelöscht und die Inhalte in `sdqbeamer.cls` integriert +- Globale Größe auf 10 pt verringert (vorher: 11 pt), da der beschreibbare Bereich im Vergleich zur 2009er Version kleiner geworden ist +- SDQ-spezifische Logos und Titelbilder entfernt. Diese sind ab sofort im Branch »sdq« verfügbar. +- Fix: Zeilenumbruch bei Titel in der Fußzeile repariert \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/Makefile b/31-qualitaetsheft-kolloquium/Makefile new file mode 100644 index 0000000..3e1e58a --- /dev/null +++ b/31-qualitaetsheft-kolloquium/Makefile @@ -0,0 +1,19 @@ +MAIN = presentation +FLAGS = -pdf + +all: clean compile +compile: diagram tex +clean: clean-diagram clean-tex + +dev: + latexmk $(FLAGS) -pvc $(MAIN) +tex: + latexmk $(FLAGS) $(MAIN) +diagram: + java -jar plantuml.jar -tpdf assets/diagrams/*.puml + java -jar plantuml.jar -teps assets/*.puml +clean-tex: + latexmk -C +clean-diagram: + find assets/diagrams -type f -not -name '*.puml' -delete + diff --git a/31-qualitaetsheft-kolloquium/README.md b/31-qualitaetsheft-kolloquium/README.md new file mode 100644 index 0000000..6a5e9ea --- /dev/null +++ b/31-qualitaetsheft-kolloquium/README.md @@ -0,0 +1,118 @@ +LaTeX-Vorlage für Präsentationen +================================ + +Das vorliegende Paket dient als Vorlage für Präsentationen im [Corporate Design des KIT](https://intranet.kit.edu/gestaltungsrichtlinien.php) (Fassung vom 1. August 2020). + +Es wird an der Forschungsgruppe [DSiS](https://dsis.kastel.kit.edu) an der KIT-Fakultät für Informatik entwickelt und basiert auf [LaTeX Beamer](https://ctan.org/pkg/beamer). + +Autor: [Dr.-Ing. Erik Burger](https://dsis.kastel.kit.edu/staff_erik_burger.php) +mit Beiträgen von Christian Hammer, Klaus Krogmann und Maximilian Schambach + +Siehe https://sdqweb.ipd.kit.edu/wiki/Dokumentvorlagen + +Hinweise, Verbesserungsvorschläge +================================= + +Bitte verwenden Sie das [Issue-Tracking-System von Gitlab](https://git.scc.kit.edu/i43/dokumentvorlagen/praesentationen/beamer/-/issues), um auf Probleme mit der Vorlage hinzuweisen oder Erweiterungswünsche zu äußern. Sie können gerne auch eine Änderung per Merge-Request vorschlagen. + +Verwendung +========== + +Optionen der Dokumentklasse `sdqbeamer` +----------------------------------------- +Durch die folgenden Optionen kann das Seitenverhältnis der Folien bestimmt werden: + +| Seitenverhältnis | Option | +| ---------------- | ------------------- | +| 16:9 | `16:9` (Standard) | +| 16:10 | `16:10` | +| 4:3 | `4:3` | + +Die Schriftgröße in der Fußzeile ist standardmäßig größer gewählt, als in den Gestaltungsrichtlinien vorgegeben. Diese Vorgabe kann durch die Option `smallfoot` erzwungen werden. + +| Schriftgröße Fußzeile | Option | +| ----------------------| -------------------- | +| etwas größer (12pt) | `bigfoot` (Standard) | +| KIT-Vorgabe (9pt) | `smallfoot` | + +Die Plazierung der Navigationsleiste kann durch folgende Optionen beeinflußt werden: + +| Position | Option | Bemerkung | +| ------------------------ | ---------------- | ------------------------------------------ | +| oberhalb der Trennlinie | `navbarinline` | Standard | +| unterhalb der Trennlinie | `navbarinfooter` | keine Subsection-Punkte, Größe `smallfoot` | +| Seitenleiste links | `navbarside` | keine Subsection-Punkte | +| keine Navigationsleiste | `navbaroff` | | +| KIT-Vorgabe | `navbarkit` | entspricht `navbaroff` und `smallfoot` | + +Als Sprache sind Deutsch und Englisch verfügbar. Durch die Sprachwahl werden automatisch die passenden Logos und Formate (z.B. Datum) gewählt. + +| Sprache | | +| -------- |---------------- | +| Deutsch | `de` (Standard) | +| Englisch | `en` | + +Beispiel: `\documentclass[de,16:9,navbarinline]{sdqbeamer}` + +Titelbild +--------- + +Das Bild auf der Titelfolie kann mit dem Befehl + +`\titleimage{myimage}` (ohne Dateiendung) + +gesetzt werden. Um ein eigenes Bild zu verwenden, bitte die Datei (z.B. `myimage.jpg`) ins `logos/`-Verzeichnis legen und den Befehl anpassen. Mitgeliefert wird ein generisches Bild aus der KIT-Bildwelt (https://intranet.kit.edu/gestaltungsrichtlinien.php) in der Datei `logos/banner_2020_kit.jpg`. Falls kein Titelbild eingefügt werden soll, bitte `\titleimage{}` setzen. + +Für 16:9-Folien sollte das Verhältnis des Bildes 160:37 betragen, für 4:3-Folien 63:20. Es können auch breitere Bilder verwendet werden, da das Titelbild auf die Höhe des Rahmens skaliert und zentriert wird. + +Logo und Name Abteilung/KIT-Fakultät/Institut +--------------------------------------------- + +Das Logo rechts oben auf der Titelfolie kann mit dem folgenden Befehl gesetzt werden: + +`\grouplogo{mylogo}` (ohne Dateiendung) + +Um ein eigenes Logo zu verwenden, bitte die Datei (z.B. `mylogo.pdf`) in das Verzeichnis `logos/` legen und den Befehl anpassen. Falls kein Logo eingefügt werden soll, bitte `\grouplogo{}` setzen. + +Der Gruppenname kann mit folgendem Befehl gesetzt werden: + +`\groupname{Software Design and Quality}` + +Der Gruppenname erscheint in der Fußzeile rechts unten. Lange Namen werden in zwei Zeilen umgebrochen. Falls der Gruppenname leer gelassen wird (`\groupname{}`), wird die volle Breite der Fußzeile für Autornamen und Titel verwendet. + +Die Standardbreite des Gruppennamens sind 50 mm. Sie kann mit + +`\groupnamewidth{80mm}` + +verändert werden, wodurch sich auch die Breite des Textfeldes mit Autor und Titel entsprechend ändert. Umbrüche sind mit `\\` möglich. Statt zweizeiliger Fußzeilen empfiehlt sich eventuell die Option `smallfoot`. + +LaTeX allgemein +--------------- +Siehe https://sdqweb.ipd.kit.edu/wiki/LaTeX + +Dateistruktur +============ +`presentation.tex` +------------------ +Hauptdatei des LaTeX-Dokuments. + +`presentation.bib` +------------- +Beispieldatei für BibTeX-Referenzen +https://sdqweb.ipd.kit.edu/wiki/BibTeX-Literaturlisten + +`sdqbeamer.cls` +----------------- +Dokumentklasse für Präsentationen im KIT-Design. + +`logos/` +-------- +In diesem Verzeichnis befinden das KIT-Logo als PDF sowie das Hintergrundbild der Titelfolie als JPG. + +`CHANGELOG.md` +-------------- +Dokumentation der Änderungen in den jeweiligen Versionen. + +`README.md` +----------- +Dieser Text. diff --git a/31-qualitaetsheft-kolloquium/assets/.gitignore b/31-qualitaetsheft-kolloquium/assets/.gitignore new file mode 100644 index 0000000..16252a4 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/.gitignore @@ -0,0 +1,3 @@ +diagrams/* +!diagrams/*.puml + diff --git a/31-qualitaetsheft-kolloquium/assets/.gitingnore b/31-qualitaetsheft-kolloquium/assets/.gitingnore new file mode 100644 index 0000000..16252a4 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/.gitingnore @@ -0,0 +1,3 @@ +diagrams/* +!diagrams/*.puml + diff --git a/31-qualitaetsheft-kolloquium/assets/commits-dashboard.png b/31-qualitaetsheft-kolloquium/assets/commits-dashboard.png new file mode 100644 index 0000000..89672d6 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/commits-dashboard.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/commits-server.png b/31-qualitaetsheft-kolloquium/assets/commits-server.png new file mode 100644 index 0000000..a9d1a5c Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/commits-server.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/contributors-dashboard.png b/31-qualitaetsheft-kolloquium/assets/contributors-dashboard.png new file mode 100644 index 0000000..3621c31 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/contributors-dashboard.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/contributors-server.png b/31-qualitaetsheft-kolloquium/assets/contributors-server.png new file mode 100644 index 0000000..500bb43 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/contributors-server.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/coverage/authenticationService.png b/31-qualitaetsheft-kolloquium/assets/coverage/authenticationService.png new file mode 100644 index 0000000..4ad91e1 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/coverage/authenticationService.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/coverage/episodeActionService.png b/31-qualitaetsheft-kolloquium/assets/coverage/episodeActionService.png new file mode 100644 index 0000000..c81f26f Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/coverage/episodeActionService.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/coverage/server.png b/31-qualitaetsheft-kolloquium/assets/coverage/server.png new file mode 100644 index 0000000..d28917a Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/coverage/server.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/coverage/subscriptionsService.png b/31-qualitaetsheft-kolloquium/assets/coverage/subscriptionsService.png new file mode 100644 index 0000000..fdb7c9b Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/coverage/subscriptionsService.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/coverage/util.png b/31-qualitaetsheft-kolloquium/assets/coverage/util.png new file mode 100644 index 0000000..823cd9e Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/coverage/util.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/backendComponentDiagram.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/backendComponentDiagram.puml new file mode 100644 index 0000000..e382351 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/backendComponentDiagram.puml @@ -0,0 +1,61 @@ +@startuml +' skinparam linetype ortho + +'######################################################################### +'SubscriptionsAPI +component SubscriptionsAPI { + + component SubscriptionService + component SubscriptionController + component SubscriptionDataAccessLayer + + portout "Webserver" as wSub + portin "Database" as dSub + } + +dSub --0)- SubscriptionDataAccessLayer +SubscriptionDataAccessLayer --0)- SubscriptionService +SubscriptionService --0)- SubscriptionController +SubscriptionController --0)- wSub + +'######################################################################### + + +'######################################################################### +'EpisodeActionsAPI + +component EpisodeActionsAPI { + component EpisodeActionService + component EpisodeActionController + component EpisodeActionDataAccessLayer + + portout "Webserver" as wEpisode + portin "Database" as dEpisode +} + +dEpisode --0)- EpisodeActionDataAccessLayer +EpisodeActionController --0)- wEpisode +EpisodeActionDataAccessLayer --0)- EpisodeActionService +EpisodeActionService --0)- EpisodeActionController + +'######################################################################### + + +'######################################################################### +'AuthenticationAPI + +component AuthenticationAPI { + component AuthenticationService + component AuthenticationController + component AuthenticationDataAccessLayer + + portout "Webserver" as wAuth + portin "Database" as dAuth +} + +dAuth --0)- AuthenticationDataAccessLayer +AuthenticationController --0)- wAuth +AuthenticationDataAccessLayer --0)- AuthenticationService +AuthenticationService --0)- AuthenticationController + +@enduml diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-authentication.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-authentication.puml new file mode 100644 index 0000000..a2b3518 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-authentication.puml @@ -0,0 +1,112 @@ +@startuml + +package authenticationAPI <> { + package authenticationDataAccessLayer <> { + ' interface AuthenticationDao { + ' String login(String username) + ' int logout(String username) + ' } + + ' class AuthenticationDataAccessService <<@Respository>> { + ' <> AuthenticationDataAccessService(JpaTemplate jpaTemplate) + ' String login(String username) + ' int logout(String username) + ' } + + interface UserDetailsManager { + void createUser(UserDetails userDetails) + void changePassword(String oldPassword, String newPassword) + void deleteUser(String username) + void updateUser(UserDetails user) + boolean userExists(String username) + } + note left + Aus org.springframework.security.provisioning + - liefert Methoden zum Erstellen neuer User + und zum Aktualisieren bestehender. + end note + + class JdbcUserDetailsManager <<@Repository>> { + <> JdbcUserDetailsManager(DataSource dataSource) + void createUser(UserDetails user) + void changePassword(String oldPassword, String newPassword) + void deleteUser(String username) + void updateUser(UserDetails user) + boolean userExists(String username) + } + note right + User Management Service aus dem Paket + org.springframework.security.provisioning + der CRUD Operationen für User bereitstellt. + Hier sind nur die relevanten Methoden modelliert. + end note + } + + package authenticationService <> { + class AuthenticationService <<@Service>> { + -- + <> AuthenticationService(UserDetailsManager userDetailsManager) + List verifyLogin(String username) + int logout(String username) + int forgotPassword(ForgotPasswordRequest forgotPasswordRequest) + .. via JdbcUserDetailsManager .. + int resetPassword(String username, RequestWithPassword requestWithPassword) + int registerUser(UserDetails user) + int changePassword(String username, ChangePasswordRequest changePasswordRequest) + int deleteUser(String username, RequestWithPassword requestWithPassword) + } + + class JavaMailSenderImpl {} + note left + Aus org.springframework.mail.javamail. + Implementierung des JavaMailSender Interfaces, + welches das MailSender Interface durch Unterstützung + von MIME Nachrichten erweitert. + Das MailSender Interface definiert dabei eine + Strategie zum Versenden einfacher Mails. + Unterstützt sowohl JavaMail MimeMessages und + Spring SimpleMailMessages. + end note + } + + package authenticationController <> { + class AuthenticationController <<@Controller>> { + <> AuthenticationController(AuthenticationService authenticationService) + ResponseEntity> verifyLogin(String username) + ResponseEntity logout(String username) + ResponseEntity forgotPassword(ForgotPasswordRequest forgotPasswordRequest) + ResponseEntity resetPassword(String username, RequestWithPassword requestWithPassword) + ResponseEntity registerUser(UserDetails user) + ResponseEntity changePassword(String username, ChangePasswordRequest changePasswordRequest) + ResponseEntity deleteUser(String username, RequestWithPassword requestWithPassword) + } + + class ChangePasswordRequest { + <> ChangePasswordRequest(String oldPassword, String newPassword) + String getOldPassword() + String getNewPassword() + } + + class ForgotPasswordRequest { + <> ForgotPasswordRequest(String email) + String getEmail() + } + + class RequestWithPassword { + <> ResetPasswordRequest(String password) + String getPassword() + } + } +} + +' User <.. AuthenticationDataAccessService: DB +' User <.. JdbcUserDetailsManager: DB +UserDetailsManager <.. AuthenticationService: <> +' AuthenticationDao <.. AuthenticationService: <> +AuthenticationService --o AuthenticationController +' AuthenticationDao <|. AuthenticationDataAccessService: <> +UserDetailsManager <|. JdbcUserDetailsManager: <> +JavaMailSenderImpl <. AuthenticationService: <> + +@enduml + diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-episode-actions.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-episode-actions.puml new file mode 100644 index 0000000..7a4530e --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-episode-actions.puml @@ -0,0 +1,84 @@ +@startuml + +package episodeActionsAPI <> { + package episodeActionDataAccessLayer <> { + class EpisodeActionDataAccessService <<@Repository>> { + <> EpisodeActionDataAccessService (JpaTemplate jpaTemplate) + long addEpisodeActions(String username, List episodeActionPosts) + List getEpisodeActions(String username) + List getEpisodeActionsOfPodcast(String username, String podcastURL) + List getEpisodeActionsSince(String username, LocalDateTime since) + List getEpisodeActionsOfPodcastSince(String username, String podcastURL, LocalDateTime since) + } + + interface EpisodeActionDao { + long addEpisodeActions(String username, List episodeActionPosts) + List getEpisodeActions(String username) + List getEpisodeActionsOfPodcast(String username, String podcastURL) + List getEpisodeActionsSince(String username, LocalDateTime since) + List getEpisodeActionsOfPodcastSince(String username, String podcastURL, LocalDateTime since) + } + } + + package episodeActionService <> { + class EpisodeActionService <<@Service>> { + <> EpisodeActionService (EpisodeActionDao episodeActionDao) + LocalDateTime addEpisodeActions(String username, List episodeActionPosts) + List getEpisodeActions(String username) + List getEpisodeActionsOfPodcast(String username, String podcastURL) + List getEpisodeActionsSince(String username, LocalDateTime since) + List getEpisodeActionsOfPodcastSince(String username, String podcastURL, LocalDateTime since) + } + } + + package episodeActionController <> { + class EpisodeActionController <<@Controller>>{ + <> EpisodeActionController (EpisodeActionService episodeActionService) + ResponseEntity addEpisodeActions(String username, EpisodeActionPostRequest episodeActionPostRequest) + ResponseEntity getEpisodeActions(String username, String deviceID, boolean aggregated) + ResponseEntity getEpisodeActionsOfPodcast(String username, String podcastURL, String deviceID, boolean aggregated) + ResponseEntity getEpisodeActionsSince(String username, String deviceID, long since, boolean aggregated) + ResponseEntity getEpisodeActionsOfPodcastSince(String username, String podcastURL, String deviceID, long since, boolean aggregated) + } + + class EpisodeActionPostResponse { + <> EpisodeActionPostResponse(List> updateURLs) + long getTimestamp() + List> getUpdatedURLs() + } + + class EpisodeActionPost { + <> EpisodeActionPost(String podcastURL, String episodeURL, Action action, LocalDateTime timestamp, int started, int position) + String getPodcastURL() + String getEpisodeURL() + int getGUID() + Action getAction() + LocalDateTime getTimestamp() + int getStarted() + int getPosition() + EpisodeAction getEpisodeAction() + } + + class EpisodeActionPostRequest { + <> EpisodeActionPostRequest(List episodeActionPosts) + List getEpisodeActionPosts() + } + + class EpisodeActionGetResponse { + <> EpisodeActionGetResponse(List episodeActionPosts) + List getEpisodeActionPosts() + long getTimestamp() + } + } +} + +EpisodeActionPost -o EpisodeActionGetResponse +EpisodeActionPost -o EpisodeActionPostRequest +' EpisodeAction <.. EpisodeActionDataAccessService: DB +' Episode <.. EpisodeActionDataAccessService: DB +EpisodeActionDao <.. EpisodeActionService: <> +EpisodeActionService --o EpisodeActionController +EpisodeActionDao <|. EpisodeActionDataAccessService: <> + +@enduml + diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-model.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-model.puml new file mode 100644 index 0000000..72ad49f --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-model.puml @@ -0,0 +1,109 @@ +@startuml + +package model <> { + class Subscription { + <> Subscription(String url, String title) + int getID() + String getURL() + long getLastActionTimestamp() + String getTitle() + } + + class SubscriptionAction { + <> SubscriptionAction(int userID, int subscriptionID) + int getID() + int getUserID() + int getSubscriptionID() + long getTimestamp() + boolean getAdded() + } + + class Episode { + <> Episode(int subscriptionID, int id, String url, String title, String thumbnailURL, int total) + int getSubscriptionID() + int getID() + int getGUID() + String getURL() + String getTitle() + int getTotal() + } + + enum Action { + Download + Play + Delete + New + Flattr + String getJsonProperty() + } + + class EpisodeAction { + <> EpisodeAction(Action action, LocalDateTime timestamp, int started, int position) + int getEpisodeID() + Action getAction() + long getTimestamp() + int getStarted() + int getPosition() + void setEpisodeID() + EpisodeActionPost getEpisodeActionPost(String podcastURL, String episodeURL) + } + + interface UserDetails { + String getUsername() + String getPassword() + Collection getAuthorities() + boolean isAccountExpired() + boolean isAccountLocked() + boolean isCredentialsNonExpired() + boolean isEnabled() + } + note left + Aus org.springframework.security.core.userdetails. + Wird für die Schnittstelle UserDetailsManager benötigt. + Stellt wichtige Informationen eines Users bereit. + Diese werden nur indirekt von Spring Security + benutzt, indem sie vorher in Authentication Objekten + gekapselt werden. + end note + + class User { + -- + <> User(String username, String password) + int getID() + String getSessionToken() + boolean getEmailIsValidated() + .. interface methods .. + String getUsername() + String getPassword() + Collection getAuthorities() + boolean isAccountExpired() + boolean isAccountLocked() + boolean isCredentialsNonExpired() + boolean isEnabled() + } + + interface GrantedAuthority { + String getAuthority() + } + note right + Aus org.springframework.security.core. + Wird für die Schnittstelle UserDetails benötigt. + Repräsentiert eine Autorisierung, die einem + Authentication Objekt gewährt wird. + end note + + class Authority { + <> Authority() + String getAuthority() + } +} + +Subscription <. SubscriptionAction: ID +Action <-- EpisodeAction +EpisodeAction .> Episode: ID +UserDetails <|.. User: <> +User -> Authority +GrantedAuthority <|.. Authority: <> + +@enduml + diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-subscriptions.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-subscriptions.puml new file mode 100644 index 0000000..432f185 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-subscriptions.puml @@ -0,0 +1,75 @@ +@startuml + +package subscriptionsAPI <> { + package subscriptionDataAccessLayer <> { + class SubscriptionDataAccessService <<@Repository>> { + <> SubscriptionDataAccessService(JpaTemplate jpaTemplate) + int uploadSubscriptions(String username, List subscriptions) + List getSubscriptions(String username) + List getSubscriptionsSince(String username, LocalDateTime time) + int addSubscriptions(String username, List addedSubscriptions) + int removeSubscriptions(String username, List removedSubscriptions) + List getTitles(String username) + } + + interface SubscriptionDao { + int uploadSubscriptions(String username, List subscriptions) + List getSubscriptions(String username) + List getSubscriptionsSince(String username, LocalDateTime time) + int addSubscriptions(String username, List addedSubscriptions) + int removeSubscriptions(String username, List removedSubscriptions) + List getTitles(String username) + } + } + + package subscriptionService <> { + class SubscriptionService <<@Service>> { + <> SubscriptionService(SubscriptionDao subscriptionDao) + int uploadSubscriptions(String username, List subscriptions) + List getSubscriptions(String username) + List getSubscriptionsSince(String username, LocalDateTime time) + int addSubscriptions(String username, List addedSubscriptions) + int removeSubscriptions(String username, List removedSubscriptions) + List getTitles(String username) + } + } + + package subscriptionController <> { + class SubscriptionController <<@Controller>>{ + ' @Autowired + <> SubscriptionController(SubscriptionService subscriptionService) + ' @GetMapping + ResponseEntity> getSubscriptions(String username, String deviceID, String functionJSONP) + ' @PutMapping + ResponseEntity uploadSubscriptions(String username, String deviceID, List subscriptions) + ' @PostMapping + ResponseEntity applySubscriptionDelta(String username, String deviceID, SubscriptionDelta delta) + ' @GetMapping + ResponseEntity getSubscriptionDelta(String username, String deviceID, long since) + ResponseEntity> getTitles(String username, String deviceID) + } + + class SubscriptionTitles { + <> SubscriptionTitles(Subscription subscription, List episodeTitles) + Subscription getSubscription() + List getEpisodesTitles() + } + + class SubscriptionDelta { + <> SubscriptionDelta(List add, List remove) + List getRemove() + LocalDate getTimestamp() + List> getUpdate_urls() + } + } + +} + +' Subscription <.. SubscriptionDataAccessService: DB +' SubscriptionAction <.. SubscriptionDataAccessService: DB +SubscriptionService --o SubscriptionController +SubscriptionDao <.. SubscriptionService: <> +SubscriptionDao <|. SubscriptionDataAccessService: <> + +@enduml + diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-util.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-util.puml new file mode 100644 index 0000000..03dfc9a --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram-util.puml @@ -0,0 +1,43 @@ +@startuml + +package util <> { + class RSSParser { + <> RSSParser(String subscriptionURL) + String getSubscriptionTitle() + List getEpisodes() + Episode getEpisodeForURL(String episodeURL) + } + note bottom + Verwendet intern Spring um + HTTP-Anfragen zu erstellen. + end note + + class CleanCronJob { + <> CleanCronJob(JdbcUserDetailsManager jdbcUserDetailsManager) + void cleanInvalidUsers() + } + note bottom + Hintergrundservice, der in periodischen Abständen + Nutzer, die ihre E-Mail-Adresse nicht nach 24 Stunden + bestätigt haben, wieder aus der Datenbank löscht. + (Auf die Assoziation zu JdbcUserDetailsManager wird + im Sinne der Übersichtlichkeit verzichtet.) + end note + + class ResponseEntity { + <> ResponseEntity(T body, HttpStatusCode status) + T getBody() + HttpStatusCode getStatusCode() + } + note bottom + Aus org.springframework.http. + Erweitert die Klasse HttpEntity, welche + ein HTTP Anfrage- oder Antwort-Objekt + repräsentiert, durch einen HttpStatusCode. + Wird von den Controller-Methoden als + Rückgabewert verwendet. + end note +} + +@enduml + diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram.puml new file mode 100644 index 0000000..f833aa2 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/classdiagram.puml @@ -0,0 +1,68 @@ +@startuml +' skinparam linetype ortho +' skinparam groupInheritance 2 +allowmixing + +!include classdiagram-authentication.puml +!include classdiagram-episode-actions.puml +!include classdiagram-model.puml +!include classdiagram-subscriptions.puml +!include classdiagram-util.puml + +class SecurityConfigurationBasicAuth { + <> SecurityConfigurationBasicAuth() + PasswordEncoder encoder() + UserDetailsManager userDetailsService() + SecuryFilterChain fiterChain(HTTPSecurity http) throws Excpetion +} +note top + Erstellt einen Servlet Filter (springSecurityFilterChain) + der für die gesamte Sicherheit zuständig ist (Schutz der URLs, + Validierung von Anmeldedaten, Weiterleitung zur Anmeldung, etc.). +end note + +class PSEApplication { + <> PSEApplication() + void main(String[] args) +} + +database Datenbank +Datenbank <-[hidden]d- subscriptionsAPI +Datenbank <-[hidden]d- episodeActionsAPI +Datenbank <-[hidden]d- authenticationAPI +() SQL as SQLSub +() SQL as SQLAuth +() SQL as SQLEpisode + +Datenbank -- SQLSub +Datenbank -- SQLAuth +Datenbank -- SQLEpisode + +Subscription --o SubscriptionTitles +EpisodeActionPost -o SubscriptionTitles +UserDetailsManager <.. SecurityConfigurationBasicAuth: <> + +SubscriptionController ..o PSEApplication +AuthenticationController ..o PSEApplication +EpisodeActionController ..o PSEApplication +SecurityConfigurationBasicAuth ..o PSEApplication + +PSEApplication --() HTTP + +SQLSub )-- SubscriptionDataAccessService: JPA +' SQLAuth )-- AuthenticationDataAccessService: JPA +SQLAuth )-- JdbcUserDetailsManager: JDBC +SQLEpisode )-- EpisodeActionDataAccessService: JPA + +RSSParser <. SubscriptionDataAccessService: <> +RSSParser <. EpisodeActionDataAccessService: <> +' JdbcUserDetailsManager <-- CleanCronJob + +model .o Datenbank: ORM (User, SubscriptionAction, Subscription, EpisodeAction, Episode) +' Datenbank o.. Subscription: ORM +' Datenbank o.. SubscriptionAction: ORM +' Datenbank o.. Episode: ORM +' Datenbank o.. EpisodeAction: ORM +' Datenbank o.. User: ORM + +@enduml diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/componentdiagram.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/componentdiagram.puml new file mode 100644 index 0000000..dea4a1d --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/componentdiagram.puml @@ -0,0 +1,53 @@ +@startuml + +[App] as app +[VueRouter] as router +[NavbarComponent] as navbar +[LoginPage] as login_page +[SubscriptionsPage] as abo_page +[EpisodesPage] as episodes_page +[SettingsPage] as settings_page +[ForgotPasswordPage] as forgot_page +[ResetPasswordPage] as reset_page +note top + Wird in der E-Mail zum Zurücksetzen des Passworts mit dem JWT-Token verlinkt. + Sendet das alte und neue Passwort und den JWT an die API. +end note +[RegistrationPage] as registration_page + +[SubscriptionComponent] as sub +[EpisodeComponent] as episode +[LastUpdateComponent] as last_update +[PasswordValidatorComponent] as password + +app --> router + +app --> navbar +router --> login_page +router --> forgot_page +router --> reset_page +router --> registration_page +router --> abo_page +router --> episodes_page +router --> settings_page + +navbar -[hidden] router + +episodes_page -[hidden] abo_page +login_page -[hidden] forgot_page +registration_page -[hidden] reset_page +abo_page -[hidden] settings_page +forgot_page -[hidden] episodes_page +' forgot_page -[hidden] settings_page + +abo_page --> sub +episodes_page --> episode + +sub --> last_update +episode --> last_update + +settings_page --> password +reset_page --> password +registration_page --> password + +@enduml diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/db.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/db.puml new file mode 100644 index 0000000..bdefaea --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/db.puml @@ -0,0 +1,78 @@ +@startuml +' Type Symbol +' Zero or One |o-- +' Exactly One ||-- +' Zero or Many }o-- +' One or Many }|-- + +skinparam linetype ortho + +entity User { + * int id <> + * String email + * String password + * boolean verified + * long created_at +} + +entity SubscriptionAction { + * int id <> + * int user_id + * long timestamp + * int subscription_id + * boolean added +} + +entity Subscription { + * int id <> + * String url + * long timestamp + * String title +} + +entity Episode { + * int id <> + * int guid <> + * String url + * String title + * int total + * int subscription_id +} +note right + Wenn der Client eine GUID aus dem Feed mitsendet, wird + diese statt der URL verwendet um die Episode zu finden. + So wird die Episode auch noch gefunden, nachdem sich + die URL geändert hat. +end note +note bottom of Episode + Wenn für die Episoden-URL einer EpisodeAction noch keine Episode in der Datenbank steht, + dann schreibe dafür ein Dummy-Objekt in Datenbank und lade asynchron die Episoden der Subscription. + Ersetze dann die Dummy-Objekte durch die Episoden und setze den Timestamp der Subscription auf + die aktuelle Zeit. + Um DoS-Angriffe auf den Backend-Server abzuwenden, können die Episoden einer Subscription erst + nach einer Stunde erneut gefetched werden. Bis dahin werden für EpisodeActions, die sich auf noch + nicht geladene Episoden beziehen, nur Dummy-Objekte für die Episoden in die Datenbank geschrieben. + Es sei noch darauf hingewiesen, dass diese Dummy-Episoden bei Anfragen nicht mit ausgegeben werden. +end note + +entity EpisodeAction { + * int id <> + * int user_id + * int episode_id + * long timestamp + * int action + * int started + * int position +} +note right + Speichere für jede Episode + nur letzte Play-Action. +endnote + +User ||--o{ EpisodeAction +User ||--o{ SubscriptionAction +SubscriptionAction }|--|| Subscription +EpisodeAction }|--|| Episode +Subscription ||-right-|{ Episode + +@enduml diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/deployment.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/deployment.puml new file mode 100644 index 0000000..b8d0491 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/deployment.puml @@ -0,0 +1,59 @@ +@startuml + +node "<> \nBackend Server" as backendServer{ + database " <> \n MariaDB Server 10.6" as database { + rectangle rectangle1 [ + <> + User + ] + rectangle rectangle2 [ + <> + SubscriptionAction + ] + rectangle rectangle3 [ + <> + EpisodeAction + ] + rectangle rectangle4 [ + <> + Subscription + ] + rectangle rectangle5 [ + <> + Episode + ] + } + + node "<> \nJava Spring" as javaSpring{ + node " <> \n Tomcat Webserver" + } +} + +node "<> \nFrontend" as frontendServer { + +} + +node "<> \nEndgerät" as terminal { + node "<> \nBrowser" as browser + node "<> \nPodcatcher" as podcatcher +} + +backendServer "1" - "*" podcatcher + +node "<> \nFrontend Server" as frontendServer{ + node "<> \nVue.js" as vuejs { + + } +} + +podcatcher -[hidden] browser + +backendServer - "1" frontendServer + +database "1" -- "1" javaSpring + +browser "*" -- frontendServer + + + +@enduml diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-forgotAndResetPW.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-forgotAndResetPW.puml new file mode 100644 index 0000000..603130c --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-forgotAndResetPW.puml @@ -0,0 +1,41 @@ +@startuml + +skinparam ParticipantPadding 30 + +participant AuthenticationController << (C, #ADD1B2) @Controller >> +-> AuthenticationController: ""POST /api/2/auth/forgot.json"" \n//@RequestBody ForgotPasswordRequest forgotPasswordRequest// \n\n-> forgotPassword(//forgotPasswordRequest//) +activate AuthenticationController +participant AuthenticationService << (C, #ADD1B2) @Service >> +AuthenticationController -> AuthenticationService: forgotPassword(//forgotPasswordRequest//) +activate AuthenticationService +participant JavaMailSenderImpl << (C, #ADD1B2) >> +AuthenticationService -> JavaMailSenderImpl: create link to reset password with JWT as URL parameter \n-> send(SimpleMailMessage simpleMessage) with link +activate JavaMailSenderImpl +<<- JavaMailSenderImpl: sends email with link containing a JWT to reset password +JavaMailSenderImpl --> AuthenticationService +deactivate JavaMailSenderImpl +AuthenticationService --> AuthenticationController: int indicating status +deactivate AuthenticationService +<-- AuthenticationController: ResponseEntity indicating status \n\n-> ""HTTP status code"" +deactivate AuthenticationController +||60|| +-> AuthenticationController: ""PUT /api/2/auth/{username}/resetpassword.json"" \n//@RequestParam String jwt// \n//@RequestBody ResetPasswordRequest resetPasswordRequest// \n\n-> login user (""username"") via JWT (//jwt//) \n-> resetPassword(""username"", //resetPasswordRequest//) +activate AuthenticationController +AuthenticationController -> AuthenticationService: resetPassword(""username"", //resetPasswordRequest//) +activate AuthenticationService +participant JdbcUserDetailsManager << (C, #ADD1B2) @Repository >> +AuthenticationService -> JdbcUserDetailsManager: String oldPassword = //resetPasswordRequest//.getOldPassword() \nString newPassword = //resetPasswordRequest//.getNewPassword() \n-> changePassword(newPassword, oldPassword) +activate JdbcUserDetailsManager +database Database +JdbcUserDetailsManager -> Database: change password of logged in user +activate Database +Database --> JdbcUserDetailsManager +deactivate Database +JdbcUserDetailsManager --> AuthenticationService: int indicating status +deactivate JdbcUserDetailsManager +AuthenticationService --> AuthenticationController: int indicating status +deactivate AuthenticationService +<-- AuthenticationController: ResponseEntity indicating status \n\n-> ""HTTP status code"" +deactivate AuthenticationController + +@enduml \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getEpisodeActions.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getEpisodeActions.puml new file mode 100644 index 0000000..47497d5 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getEpisodeActions.puml @@ -0,0 +1,38 @@ +@startuml + +' title =**Get All Episode Actions** + +participant EpisodeActionController << (C, #ADD1B2) @Controller >> +-> EpisodeActionController: ""GET /api/2/episodes/{username}.json"" \n//@RequestParam("device") String deviceID// \n//@RequestParam("aggregated") boolean aggregated// \n\n-> getEpisodeActions(""username"", //deviceID//, //aggregated//) +note right + Die Parameter //deviceID// und //aggregated// werden ignoriert, + da nicht zwischen Geräten unterschieden und für jede + Episode sowieso nur die letzte Play-Action gespeichert + wird. Dies gilt für alle GET-Anfragen der Episode Actions API. +end note +activate EpisodeActionController +participant EpisodeActionService << (C, #ADD1B2) @Service >> +EpisodeActionController -> EpisodeActionService: getEpisodeActions(""username"") +activate EpisodeActionService +participant EpisodeActionDataAccessService << (C, #ADD1B2) @Repository >> +EpisodeActionService -> EpisodeActionDataAccessService: getEpisodeActions(""username"") +activate EpisodeActionDataAccessService +EpisodeActionDataAccessService -> EpisodeActionDataAccessService: getEpisodeActionsSince(""username"", \nLocalDateTime.MIN.toEpochSecond(ZoneOffset.UTC)) +database Database +activate EpisodeActionDataAccessService +EpisodeActionDataAccessService -> Database: get all EpisodeActions for all subscribed podcasts +activate Database +Database --> EpisodeActionDataAccessService: List selectedEpisodeActions \n-> then remove all older than LocalDateTime.MIN (none) +EpisodeActionDataAccessService -> Database: join EpisodeActions in selectedEpisodeActions with episodeURL of Episode +Database --> EpisodeActionDataAccessService +deactivate Database +EpisodeActionDataAccessService --> EpisodeActionDataAccessService: List episodeActionPosts +deactivate EpisodeActionDataAccessService +EpisodeActionDataAccessService --> EpisodeActionService: List episodeActionPosts +deactivate EpisodeActionDataAccessService +EpisodeActionService --> EpisodeActionController: List episodeActionPosts +deactivate EpisodeActionService +<-- EpisodeActionController: ResponseEntity response \n\n-> ""HTTP status code"" \n-> ""JSON"" +deactivate EpisodeActionController + +@enduml \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getEpisodeActionsOfPodcastSince.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getEpisodeActionsOfPodcastSince.puml new file mode 100644 index 0000000..d8797d1 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getEpisodeActionsOfPodcastSince.puml @@ -0,0 +1,32 @@ +@startuml + +' title =**Get Episode Actions of Podcast Since** + +participant EpisodeActionController << (C, #ADD1B2) @Controller >> +-> EpisodeActionController: ""GET /api/2/episodes/{username}.json"" \n//@RequestParam("podcast") String podcastURL// \n//@RequestParam("device") String deviceID// \n//@RequestParam("since") long since// \n//@RequestParam("aggregated") boolean aggregated// \n\n-> getEpisodeActionsOfPodcastSince(""username"", //podcastURL//, //deviceID//, //since//, //aggregated//) +note right + Die Parameter //deviceID// und //aggregated// werden ignoriert. + Siehe Notiz in Sequenzdiagramm **Get All Episode Actions**. +end note +activate EpisodeActionController +participant EpisodeActionService << (C, #ADD1B2) @Service >> +EpisodeActionController -> EpisodeActionService: getEpisodeActionsOfPodcastSince(""username"", //podcastURL//, //since//) +activate EpisodeActionService +participant EpisodeActionDataAccessService << (C, #ADD1B2) @Repository >> +EpisodeActionService -> EpisodeActionDataAccessService: getEpisodeActionsOfPodcastSince(""username"", //podcastURL//, //since//) +activate EpisodeActionDataAccessService +database Database +EpisodeActionDataAccessService -> Database: get all EpisodeActions the given podcast (//podcastURL//) +activate Database +Database --> EpisodeActionDataAccessService: List selectedEpisodeActions \n-> then remove all older than //since// +EpisodeActionDataAccessService -> Database: join EpisodeActions in selectedEpisodeActions with episodeURL of Episode +Database --> EpisodeActionDataAccessService +deactivate Database +EpisodeActionDataAccessService --> EpisodeActionService: List episodeActionPosts +deactivate EpisodeActionDataAccessService +EpisodeActionService --> EpisodeActionController: List episodeActionPosts +deactivate EpisodeActionService +<-- EpisodeActionController: ResponseEntity response \n\n-> ""HTTP status code"" \n-> ""JSON"" +deactivate EpisodeActionController + +@enduml \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getSubscriptions.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getSubscriptions.puml new file mode 100644 index 0000000..4d8ab90 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-getSubscriptions.puml @@ -0,0 +1,38 @@ +@startuml + +' title =**Get All Subscriptions** + +participant SubscriptionController << (C, #ADD1B2) @Controller >> +-> SubscriptionController: ""GET /subscriptions/{username}.json"" \n"" /subscriptions/{username}/{deviceid}.json"" \n//@RequestParam("jsonp") String functionJSONP// \n\n-> getSubscriptions(""username"", ""deviceid"", //functionJSONP//) +activate SubscriptionController +note right + Die Parameter ""deviceid"" und + //functionJSONP// werden ignoriert, + da nicht zwischen Geräten unterschieden + und JSONP nicht unterstützt wird. +end note +participant SubscriptionService << (C, #ADD1B2) @Service >> +SubscriptionController -> SubscriptionService: getSubscriptions(""username"") +activate SubscriptionService +participant SubscriptionDataAccessService << (C, #ADD1B2) @Repository >> +SubscriptionService -> SubscriptionDataAccessService: getSubscriptions(""username"") +activate SubscriptionDataAccessService +SubscriptionDataAccessService -> SubscriptionDataAccessService: getSubscriptionsSince(""username"", LocalDateTime.MIN) +database Database +activate SubscriptionDataAccessService +SubscriptionDataAccessService -> Database: get all Subscriptions for ""username"" +activate Database +Database --> SubscriptionDataAccessService: List subscriptions +SubscriptionDataAccessService -> Database: get Podcasts from Subscriptions +Database --> SubscriptionDataAccessService: List subscribedPodcasts +deactivate Database +SubscriptionDataAccessService --> SubscriptionDataAccessService: List podcastURLs +deactivate SubscriptionDataAccessService +SubscriptionDataAccessService --> SubscriptionService: List podcastURLs +deactivate SubscriptionDataAccessService +SubscriptionService --> SubscriptionController: List podcastURLs +deactivate SubscriptionService +<-- SubscriptionController: ResponseEntity> podcastURLs \n \n-> ""HTTP status code"" \n-> ""JSON"" +deactivate SubscriptionController + +@enduml \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-register.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-register.puml new file mode 100644 index 0000000..b7b7aa1 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-register.puml @@ -0,0 +1,26 @@ +@startuml + +' title =**Register** + +participant AuthenticationController << (C, #ADD1B2) @Controller >> +-> AuthenticationController: ""POST /api/2/auth/register.json"" \n//@RequestBody UserDetails user// \n\n-> registerUser(//user//) +activate AuthenticationController +participant AuthenticationService << (C, #ADD1B2) @Service >> +AuthenticationController -> AuthenticationService: registerUser(//user//) +activate AuthenticationService +participant JdbcUserDetailsManager << (C, #ADD1B2) @Repository >> +AuthenticationService -> JdbcUserDetailsManager: createUser(//user//) +activate JdbcUserDetailsManager +database Database +JdbcUserDetailsManager -> Database: create new User with given UserDetails (//user//) +activate Database +Database --> JdbcUserDetailsManager +deactivate Database +JdbcUserDetailsManager --> AuthenticationService: int indicating status +deactivate JdbcUserDetailsManager +AuthenticationService --> AuthenticationController: int indicating status +deactivate AuthenticationService +<-- AuthenticationController: ResponseEntity indicating status \n\n-> ""HTTP status code"" +deactivate AuthenticationController + +@enduml \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-uploadEpisodeActions.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-uploadEpisodeActions.puml new file mode 100644 index 0000000..d3dac57 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-uploadEpisodeActions.puml @@ -0,0 +1,38 @@ +@startuml + +' title =**Upload Episode Actions** + +participant EpisodeActionController << (C, #ADD1B2) @Controller >> +-> EpisodeActionController: ""POST /api/2/episodes/{username}.json"" \n//@RequestBody EpisodeActionPostRequest episodeActionPostRequest// \n\n-> addEpisodeActions(""username"", //episodeActionPostRequest//) +activate EpisodeActionController +participant EpisodeActionService << (C, #ADD1B2) @Service >> +EpisodeActionController -> EpisodeActionService: addEpisodeActions(""username"", \nepisodeActionPosts = //episodeActionPostRequest//.getEpisodeActionPosts()) +activate EpisodeActionService +participant EpisodeActionDataAccessService << (C, #ADD1B2) @Repository >> +EpisodeActionService -> EpisodeActionDataAccessService: addEpisodeActions(""username"", episodeActionPosts) +database Database +activate EpisodeActionDataAccessService +loop for each EpisodeActionPost in episodeActionPosts -> episodeAction = episodeActionPost.getEpisodeAction() +opt episodeAction.getAction().equals(Action.PLAY) +EpisodeActionDataAccessService -> Database: set episodeID field of episodeAction for this ""username"" via podcastURL and episodeURL +activate Database +Database --> EpisodeActionDataAccessService +EpisodeActionDataAccessService -> Database: get last EpisodeAction with this episodeID if present +Database --> EpisodeActionDataAccessService: Optional lastEpisodeAction +opt lastEpisodeAction.isPresent() +EpisodeActionDataAccessService -> Database: replace lastEpisodeAction with episodeAction +else else +EpisodeActionDataAccessService -> Database: add episodeAction to DB as new entry +end +Database --> EpisodeActionDataAccessService +deactivate Database +end +end +EpisodeActionDataAccessService --> EpisodeActionService: long latestTimestamp +deactivate EpisodeActionDataAccessService +EpisodeActionService --> EpisodeActionController: LocalDateTime timestamp = LocalDateTime.ofEpochSecond(latestTimestamp, 0, ZoneOffset.UTC) +deactivate EpisodeActionService +<-- EpisodeActionController: ResponseEntity \n(with empty list for updateURLs) \n\n-> ""HTTP status code"" \n-> ""JSON"" +deactivate EpisodeActionController + +@enduml \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-uploadSubscriptions.puml b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-uploadSubscriptions.puml new file mode 100644 index 0000000..1edc8cf --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/diagrams/sequencediagram-uploadSubscriptions.puml @@ -0,0 +1,32 @@ +@startuml + +' title =**Upload Subscriptions** + +participant SubscriptionController << (C, #ADD1B2) @Controller >> +-> SubscriptionController: ""PUT /subscriptions/{username}/{deviceid}.json"" \n//@RequestBody List subscriptions// \n\n-> uploadSubscriptions(""username"", ""deviceid"", //subscriptions//) +activate SubscriptionController +participant SubscriptionService << (C, #ADD1B2) @Service >> +SubscriptionController -> SubscriptionService: uploadSubscriptions(""username"", //subscriptions//) +activate SubscriptionService +participant SubscriptionDataAccessService << (C, #ADD1B2) @Repository >> +SubscriptionService -> SubscriptionDataAccessService: uploadSubscriptions(""username"", //subscriptions//) +activate SubscriptionDataAccessService +database Database +SubscriptionDataAccessService -> Database: delete all subsciptions of ""username"" +activate Database +Database --> SubscriptionDataAccessService +SubscriptionDataAccessService -> SubscriptionDataAccessService: addSubscriptions(""username"", //subscriptions//) +activate SubscriptionDataAccessService +SubscriptionDataAccessService -> Database: upload all subscriptions (//subscriptions//) for ""username"" +Database --> SubscriptionDataAccessService +deactivate Database +SubscriptionDataAccessService --> SubscriptionDataAccessService: int indicating status +deactivate SubscriptionDataAccessService +SubscriptionDataAccessService --> SubscriptionService: int indicating status +deactivate SubscriptionDataAccessService +SubscriptionService --> SubscriptionController: int indicating status +deactivate SubscriptionService +<-- SubscriptionController: ResponseEntity with empty String for success \n\n-> ""HTTP status code"" \n-> ""JSON"" +deactivate SubscriptionController + +@enduml \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/episode.png b/31-qualitaetsheft-kolloquium/assets/episode.png new file mode 100644 index 0000000..c0db4a2 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/episode.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/gantt-plan.puml b/31-qualitaetsheft-kolloquium/assets/gantt-plan.puml new file mode 100644 index 0000000..0e90aa2 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/gantt-plan.puml @@ -0,0 +1,31 @@ +@startgantt + +printscale daily zoom 5 +project starts on 2023-01-30 + +-- Backend -- +[Controller-Schicht] on {Immanuel} lasts 2 days +[Service-Schicht (Daten durchreichen)] on {Daniel} lasts 2 days +[Authentifizierung] on {Gero} lasts 4 days +[Model-Paket] on {Daniel} lasts 1 days +[Datenbank aufsetzen] on {Immanuel} lasts 4 days +[Util-Paket (RSSParser)] on {Daniel} {Lukas} lasts 6 days +[DataAccess-Schicht] on {Immanuel} {Julius} lasts 8 days +[Service-Schicht (Geschäftslogik)] on {Daniel} {Immanuel} lasts 8 days +[Util-Paket (CleanCronJob)] on {Julius} lasts 2 days +-- Frontend -- +[Komponenten] on {Gero} {Julius} {Lukas} lasts 15 days +[API-Anbindung] on {Gero} {Lukas} lasts 4 days + +'Backend +[Service-Schicht (Daten durchreichen)] starts at [Controller-Schicht]'s end +[Datenbank aufsetzen] starts at [Model-Paket]'s end +[Authentifizierung] starts at [Controller-Schicht]'s end +[DataAccess-Schicht] starts at [Datenbank aufsetzen]'s end +[Util-Paket (RSSParser)] starts at [Datenbank aufsetzen]'s end +[Service-Schicht (Geschäftslogik)] starts at [DataAccess-Schicht]'s end +[Util-Paket (CleanCronJob)] starts at [DataAccess-Schicht]'s end +'Frontend +[API-Anbindung] starts at [DataAccess-Schicht]'s end + +@endgantt \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/gantt-reality.puml b/31-qualitaetsheft-kolloquium/assets/gantt-reality.puml new file mode 100644 index 0000000..f726c56 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/gantt-reality.puml @@ -0,0 +1,39 @@ +@startgantt + +printscale daily zoom 5 +project starts on 2023-01-30 + +-- Backend -- +[Controller-Schicht] on {Immanuel} lasts 3 days +[Model-Paket] on {Daniel} lasts 3 days +[Datenbank aufsetzen] on {Immanuel} lasts 6 days +[Util-Paket (RSSParser)] on {Daniel} {Lukas} lasts 32 days +[DAO-Interfaces] on {Julius} {Immanuel} lasts 6 days +[Authentifizierung] on {Immanuel} lasts 13 days +[Service-Schicht mit Datenzugriff] on {Julius} lasts 14 days +[Util-Paket (CleanCronJob)] on {Daniel} lasts 2 days +[Docker] on {Daniel} lasts 12 days +[EMailService] on {Gero} lasts 1 days +-- Frontend -- +[Komponenten] on {Gero} {Julius} lasts 15 days +[Mehrsprachigkeit] on {Lukas} lasts 5 days +[Router] on {Gero} lasts 1 days +[API-Anbindung] on {Gero} {Lukas} lasts 28 days +[Error-Handling] on {Gero} lasts 5 days + +'Backend +[Datenbank aufsetzen] starts at [Model-Paket]'s end +[Util-Paket (RSSParser)] starts at [Datenbank aufsetzen]'s end +[DAO-Interfaces] starts at [Datenbank aufsetzen]'s end +[Authentifizierung] starts at [DAO-Interfaces]'s end +[Service-Schicht mit Datenzugriff] starts at [DAO-Interfaces]'s end +[Util-Paket (CleanCronJob)] starts at [DAO-Interfaces]'s end +[Docker] starts at [Util-Paket (CleanCronJob)]'s end +[EMailService] starts 2023-02-14 +'Frontend +[Mehrsprachigkeit] starts 2023-02-01 +[Router] starts at [Mehrsprachigkeit]'s end +[API-Anbindung] starts at [Router]'s end +[Error-Handling] starts 2023-02-05 + +@endgantt \ No newline at end of file diff --git a/31-qualitaetsheft-kolloquium/assets/help.png b/31-qualitaetsheft-kolloquium/assets/help.png new file mode 100644 index 0000000..39a1b84 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/help.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsApdex.png b/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsApdex.png new file mode 100644 index 0000000..17a7031 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsApdex.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsResponse.png b/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsResponse.png new file mode 100644 index 0000000..ca737f4 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsResponse.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsTable.png b/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsTable.png new file mode 100644 index 0000000..c247933 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/lasttest/goodSpecsTable.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsApdex.png b/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsApdex.png new file mode 100644 index 0000000..f326e01 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsApdex.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsResponse.png b/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsResponse.png new file mode 100644 index 0000000..c6d27ff Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsResponse.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsTable.png b/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsTable.png new file mode 100644 index 0000000..db077cd Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/lasttest/minimumSpecsTable.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/lastupdate.png b/31-qualitaetsheft-kolloquium/assets/lastupdate.png new file mode 100644 index 0000000..e9b7f5c Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/lastupdate.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/logo.svg b/31-qualitaetsheft-kolloquium/assets/logo.svg new file mode 100644 index 0000000..1609066 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/logo.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Podcast Synchronisation made Efficient + + + + diff --git a/31-qualitaetsheft-kolloquium/assets/navbar.png b/31-qualitaetsheft-kolloquium/assets/navbar.png new file mode 100644 index 0000000..dd9f8e8 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/navbar.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/password-margin.png b/31-qualitaetsheft-kolloquium/assets/password-margin.png new file mode 100644 index 0000000..d9d4fa3 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/password-margin.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/password.png b/31-qualitaetsheft-kolloquium/assets/password.png new file mode 100644 index 0000000..68248a0 Binary files /dev/null and b/31-qualitaetsheft-kolloquium/assets/password.png differ diff --git a/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-after-processed.txt b/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-after-processed.txt new file mode 100644 index 0000000..8bb59fa --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-after-processed.txt @@ -0,0 +1 @@ +1 (design) HideUtilityClassConstructor diff --git a/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-after.txt b/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-after.txt new file mode 100644 index 0000000..cec00d5 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-after.txt @@ -0,0 +1,22 @@ +[INFO] Scanning for projects... +[INFO] +[INFO] -----------------------< org.pse-squared:server >----------------------- +[INFO] Building server 0.0.1-SNAPSHOT +[INFO] --------------------------------[ jar ]--------------------------------- +[INFO] +[INFO] --- maven-checkstyle-plugin:3.2.1:check (default-cli) @ server --- +[INFO] There is 1 error reported by Checkstyle 9.3 with sun_checks.xml ruleset. +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[12,1] (design) HideUtilityClassConstructor: Hilfsklassen sollten keinen Standard-Konstruktur und keinen als public deklarierten Konstruktor haben. +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD FAILURE +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 14.432 s +[INFO] Finished at: 2023-03-18T08:30:11+01:00 +[INFO] ------------------------------------------------------------------------ +[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.2.1:check (default-cli) on project server: You have 1 Checkstyle violation. -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException diff --git a/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-before-processed.txt b/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-before-processed.txt new file mode 100644 index 0000000..3a5af1a --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-before-processed.txt @@ -0,0 +1,23 @@ +285 (sizes) LineLength +143 (misc) FinalParameters +101 (javadoc) JavadocVariable +83 (javadoc) JavadocStyle +43 (design) DesignForExtension +39 (javadoc) MissingJavadocMethod +26 (regexp) RegexpSingleline +15 (whitespace) WhitespaceAround +13 (javadoc) JavadocPackage +10 (whitespace) OperatorWrap +10 (javadoc) JavadocType +7 (imports) AvoidStarImport +6 (coding) MagicNumber +4 (javadoc) JavadocMethod +3 (coding) HiddenField +2 (javadoc) InvalidJavadocPosition +2 (design) HideUtilityClassConstructor +2 (blocks) RightCurly +1 (whitespace) WhitespaceAfter +1 (whitespace) FileTabCharacter +1 (misc) NewlineAtEndOfFile +1 (misc) ArrayTypeStyle +1 (imports) UnusedImports diff --git a/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-before.txt b/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-before.txt new file mode 100644 index 0000000..abc9f4f --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/sources/checkstyle-before.txt @@ -0,0 +1,820 @@ +[INFO] Scanning for projects... +[INFO] +[INFO] -----------------------< org.pse-squared:server >----------------------- +[INFO] Building server 0.0.1-SNAPSHOT +[INFO] --------------------------------[ jar ]--------------------------------- +[INFO] +[INFO] --- maven-checkstyle-plugin:3.2.1:check (default-cli) @ server --- +[INFO] There are 799 errors reported by Checkstyle 9.3 with sun_checks.xml ruleset. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[15,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[17,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[18,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[20,5] (design) DesignForExtension: Klasse 'AuthenticationValidatorInterceptor' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'preHandle' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationValidatorInterceptor' final oder die Methode 'preHandle' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[21,30] (misc) FinalParameters: Der Parameter request sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[22,13] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[23,13] (misc) FinalParameters: Der Parameter handler sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[25] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[26] (sizes) LineLength: Zeile ist 113 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[44,48] (misc) FinalParameters: Der Parameter request sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[45] (sizes) LineLength: Zeile ist 117 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[46] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/AuthenticationValidatorInterceptor.java:[49] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfigProperties.java:[6] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfigProperties.java:[6,86] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfigProperties.java:[6,87] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/config/EMailConfigProperties.java:[6] (sizes) LineLength: Zeile ist 108 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/EMailConfigProperties.java:[6,107] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/config/EMailConfigProperties.java:[6,108] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[22,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[23,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[24] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[24,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[25] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[25,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[27,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[30,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[30,5] (design) DesignForExtension: Klasse 'SecurityConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'securityFilterChain' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'SecurityConfig' final oder die Methode 'securityFilterChain' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[31] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[31,52] (misc) FinalParameters: Der Parameter http sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[48] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[56,5] (design) DesignForExtension: Klasse 'SecurityConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'corsConfigurationSource' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'SecurityConfig' final oder die Methode 'corsConfigurationSource' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/SecurityConfig.java:[63] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[3,23] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - io.jsonwebtoken.*. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[21,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[22] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[22,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[24,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[26,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[26,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'extractUsername' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'extractUsername' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[26,35] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[30,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[30,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'extractClaim' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'extractClaim' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[30,31] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[30,45] (misc) FinalParameters: Der Parameter claimsResolver sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[36] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41] (sizes) LineLength: Zeile ist 122 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'generateTokenString' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'generateTokenString' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,39] (misc) FinalParameters: Der Parameter additionalClaims sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,77] (misc) FinalParameters: Der Parameter userDetails sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[41,102] (misc) FinalParameters: Der Parameter tokenLifespan sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[46] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[51,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[51,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'generateAccessTokenString' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'generateAccessTokenString' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[53] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[56,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[56,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'generateUrlTokenString' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'generateUrlTokenString' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[57] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[60,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[60,5] (design) DesignForExtension: Klasse 'JwtService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'isTokenValid' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtService' final oder die Methode 'isTokenValid' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[60,33] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[60,47] (misc) FinalParameters: Der Parameter userDetails sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[62] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[65,36] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[69,36] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[73,37] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtService.java:[88] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[26,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[27,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[28] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[29] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[29,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[33,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[35,5] (design) DesignForExtension: Klasse 'JwtAuthenticationFilter' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'doFilterInternal' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'JwtAuthenticationFilter' final oder die Methode 'doFilterInternal' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[36,37] (misc) FinalParameters: Der Parameter request sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[37,37] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[38,37] (misc) FinalParameters: Der Parameter filterChain sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[45] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[54] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[54,38] (misc) FinalParameters: Der Parameter cookie sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[54,53] (misc) FinalParameters: Der Parameter request sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[68] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[69,13] (whitespace) WhitespaceAfter: Nach 'if' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[70] (sizes) LineLength: Zeile ist 104 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/JwtAuthenticationFilter.java:[76] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[32] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[36,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[36,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'userDetailsService' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'userDetailsService' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[39] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[42,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[42,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'authenticationProvider' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'authenticationProvider' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[44] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[50,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[50,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'passwordEncoder' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'passwordEncoder' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[55,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[55,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'authenticationManager' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'authenticationManager' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[56] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[56,56] (misc) FinalParameters: Der Parameter config sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[60,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[60,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'corsConfigurer' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'corsConfigurer' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[64,41] (misc) FinalParameters: Der Parameter registry sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[73,5] (design) DesignForExtension: Klasse 'ApplicationConfig' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'addInterceptors' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'ApplicationConfig' final oder die Methode 'addInterceptors' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/config/ApplicationConfig.java:[74,33] (misc) FinalParameters: Der Parameter registry sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[24] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[33] (sizes) LineLength: Zeile ist 105 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[36] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[45] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[51] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[57] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[63,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[68] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[75,9] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[75,9] (design) DesignForExtension: Klasse 'Subscription' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'addEpisode' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'Subscription' final oder die Methode 'addEpisode' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/model/Subscription.java:[75,32] (misc) FinalParameters: Der Parameter episode sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/model/Role.java:[3] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Role.java:[8] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Role.java:[12] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Role.java:[17,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[22] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[33] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[42] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[49] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[56] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[64] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[73] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[80] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[88] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[92] (javadoc) JavadocMethod: @return-Tag sollte vorhanden sein und eine Beschreibung haben. +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[93] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/model/EpisodeAction.java:[98] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[16] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[27] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[36] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[42] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[50] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/SubscriptionAction.java:[56] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[6,27] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - jakarta.persistence.*. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[15] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[26] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[35] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[44] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[52] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[59] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[66] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[74] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[81] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[88] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[95,5] (design) DesignForExtension: Klasse 'User' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getAuthorities' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'User' final oder die Methode 'getAuthorities' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[100,5] (design) DesignForExtension: Klasse 'User' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'isAccountNonExpired' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'User' final oder die Methode 'isAccountNonExpired' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[105,5] (design) DesignForExtension: Klasse 'User' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'isAccountNonLocked' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'User' final oder die Methode 'isAccountNonLocked' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/model/User.java:[110,5] (design) DesignForExtension: Klasse 'User' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'isCredentialsNonExpired' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'User' final oder die Methode 'isCredentialsNonExpired' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[5] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[7] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[10] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[11,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[12,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[13,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[14,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[15,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/Action.java:[17,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[19] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[30] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[38] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[44] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[50] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[56] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[62] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/model/Episode.java:[68] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[10] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[15,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[18] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[26,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[26,5] (design) DesignForExtension: Klasse 'UpdateURLsWrapper' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getTimestamp' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'UpdateURLsWrapper' final oder die Methode 'getTimestamp' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[30,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/UpdateURLsWrapper.java:[30,5] (design) DesignForExtension: Klasse 'UpdateURLsWrapper' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getUpdateURLs' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'UpdateURLsWrapper' final oder die Methode 'getUpdateURLs' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[10] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[19] (sizes) LineLength: Zeile ist 137 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[24] (sizes) LineLength: Zeile ist 126 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[24,112] (coding) MagicNumber: Die magische Zahl '24' sollte als Konstante definiert werden. +[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[24,117] (coding) MagicNumber: Die magische Zahl '60' sollte als Konstante definiert werden. +[ERROR] src/main/java/org/psesquared/server/util/Scheduler.java:[24,122] (coding) MagicNumber: Die magische Zahl '60' sollte als Konstante definiert werden. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[38,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[40,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[41,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[43,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[43,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'validate' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'validate' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[44,5] (javadoc) InvalidJavadocPosition: Javadoc-Kommentar ist an der falschen Stelle platziert. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[48] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[51] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[54,26] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[66] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[73] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[87] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[87,56] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[126] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[126,34] (misc) FinalParameters: Der Parameter syndEntry sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[126,55] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[158] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[161] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[161,45] (misc) FinalParameters: Der Parameter episodeURL sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[161,64] (misc) FinalParameters: Der Parameter episodes sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[168,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'saveEpisodes' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'saveEpisodes' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[169,33] (misc) FinalParameters: Der Parameter episodes sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[173,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteEpisodes' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'deleteEpisodes' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[174,35] (misc) FinalParameters: Der Parameter episodes sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[179,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'saveSubscription' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'saveSubscription' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[180,37] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[184,5] (design) DesignForExtension: Klasse 'RSSParser' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteSubscription' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'RSSParser' final oder die Methode 'deleteSubscription' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[185,39] (misc) FinalParameters: Der Parameter subscription sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[190,43] (misc) FinalParameters: Der Parameter time sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/util/RSSParser.java:[208,31] (misc) ArrayTypeStyle: Array-Klammern an ungültiger Position. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationResponse.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationResponse.java:[7,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param token. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationResponse.java:[7,52] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationResponse.java:[7,53] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[9,47] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.springframework.web.bind.annotation.*. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[15] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[23,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[25,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[26,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[29] (sizes) LineLength: Zeile ist 117 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[30] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[31] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[34] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[41,36] (misc) FinalParameters: Der Parameter userInfo sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[46] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[47] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[51] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[56] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[60,42] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[61,42] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[62] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[62,42] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[63] (sizes) LineLength: Zeile ist 86 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[69] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[71] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[74] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[81,29] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[82,29] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[87] (sizes) LineLength: Zeile ist 120 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[89] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[92] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[99,30] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[100,30] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[100,68] (whitespace) WhitespaceAround: Vor '{' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[105] (sizes) LineLength: Zeile ist 119 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[108] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[115,38] (misc) FinalParameters: Der Parameter email sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[119,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[119,5] (design) DesignForExtension: Klasse 'AuthenticationController' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'resetPassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationController' final oder die Methode 'resetPassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[120,37] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[121,37] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[122,37] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[123] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[126,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[126,5] (design) DesignForExtension: Klasse 'AuthenticationController' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'changePassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationController' final oder die Methode 'changePassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[127,38] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[128] (sizes) LineLength: Zeile ist 86 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[128,38] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[132,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[132,5] (design) DesignForExtension: Klasse 'AuthenticationController' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteUser' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationController' final oder die Methode 'deleteUser' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[133,34] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[134,34] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[138,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[138,5] (design) DesignForExtension: Klasse 'AuthenticationController' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getDeviceList' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationController' final oder die Methode 'getDeviceList' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[139] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[139,62] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[140] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[140,62] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/AuthenticationController.java:[142] (sizes) LineLength: Zeile ist 107 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[5] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[8] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[8,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param email. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[8,82] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ForgotPasswordRequest.java:[8,83] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[3,8] (imports) UnusedImports: Nicht verwendeter Import - jakarta.servlet.http.HttpServletResponse. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[14] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[17,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[18,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[19,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/DeviceWrapper.java:[21,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[5] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[9] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param newPassword. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param oldPassword. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/ChangePasswordRequest.java:[10] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param email. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param password. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param username. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[11,79] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/UserInfoRequest.java:[11,80] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/PasswordRequest.java:[9,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param password. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/PasswordRequest.java:[9,79] (whitespace) WhitespaceAround: Nach '{' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/controller/PasswordRequest.java:[9,80] (whitespace) WhitespaceAround: Vor '}' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[6,59] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.psesquared.server.authentication_api.controller.*. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[25,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[26,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[27,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[29,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[33,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[35,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[36,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[37,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[39,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[39,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'registerUser' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'registerUser' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[39,36] (misc) FinalParameters: Der Parameter userInfo sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[55] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[56] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[66] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[75,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[75,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'verifyRegistration' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'verifyRegistration' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[75,42] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[75,59] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[95,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[95,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'login' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'login' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[95,29] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[96,36] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[110,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[110,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'logout' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'logout' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[110,30] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[111,30] (misc) FinalParameters: Der Parameter response sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[112,58] (whitespace) WhitespaceAround: Vor '{' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[122,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[122,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'forgotPassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'forgotPassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[122,38] (misc) FinalParameters: Der Parameter email sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[124] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[128,11] (whitespace) WhitespaceAround: Nach 'catch' fehlt ein Leerzeichen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[133,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[133,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'resetPassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'resetPassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[133,37] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[134,31] (misc) FinalParameters: Der Parameter token sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[135,31] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[144] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[153,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[153,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'changePassword' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'changePassword' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[153,38] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[154,38] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[158] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[168,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[168,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteUser' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'deleteUser' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[168,34] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[169,34] (misc) FinalParameters: Der Parameter requestBody sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[173] (sizes) LineLength: Zeile ist 86 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[183,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[183,5] (design) DesignForExtension: Klasse 'AuthenticationService' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'deleteInvalidUsersOlderThan' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'AuthenticationService' final oder die Methode 'deleteInvalidUsersOlderThan' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[183,45] (misc) FinalParameters: Der Parameter timestamp sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/AuthenticationService.java:[184] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[8,1] (design) HideUtilityClassConstructor: Hilfsklassen sollten keinen Standard-Konstruktur und keinen als public deklarierten Konstruktor haben. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[9] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[9,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[9,43] (misc) FinalParameters: Der Parameter path sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/ResourceReader.java:[10] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[17,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[18,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[20,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[23,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[24] (sizes) LineLength: Zeile ist 110 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[25,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[26] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[29] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[29,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[30] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[33,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[35,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[37] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[37,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[37,83] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[41] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[41,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[41,83] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[46] (sizes) LineLength: Zeile ist 119 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[47] (sizes) LineLength: Zeile ist 134 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[52,27] (misc) FinalParameters: Der Parameter to sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[52,38] (misc) FinalParameters: Der Parameter mailSubject sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[52,58] (misc) FinalParameters: Der Parameter body sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[52,65] (javadoc) JavadocMethod: Erwartetes Tag @param für 'body'. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[53] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[62] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[62,43] (misc) FinalParameters: Der Parameter template sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[62,60] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[62,78] (misc) FinalParameters: Der Parameter url sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[69] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[71] (sizes) LineLength: Zeile ist 115 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[76] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[79,58] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[80,54] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[81,33] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[82,32] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[83,43] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[84,33] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[85,29] (whitespace) OperatorWrap: '+' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[91] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[92] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[95,34] (misc) FinalParameters: Der Parameter to sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[95,41] (javadoc) JavadocMethod: Erwartetes Tag @param für 'to'. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[95,45] (misc) FinalParameters: Der Parameter userDetails sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[97] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[103] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[104] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[107,35] (misc) FinalParameters: Der Parameter to sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[107,42] (javadoc) JavadocMethod: Erwartetes Tag @param für 'to'. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[107,46] (misc) FinalParameters: Der Parameter userDetails sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EMailServiceImpl.java:[109] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[18,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[21] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[26,36] (misc) FinalParameters: Der Parameter email sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[29] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[34] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[34,53] (coding) MagicNumber: Die magische Zahl '0xff' sollte als Konstante definiert werden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[34,61] (coding) MagicNumber: Die magische Zahl '0x100' sollte als Konstante definiert werden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[34,68] (coding) MagicNumber: Die magische Zahl '16' sollte als Konstante definiert werden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[44] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/EncryptionService.java:[49] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[14,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[15,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[24] (sizes) LineLength: Zeile ist 101 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[44] (sizes) LineLength: Zeile ist 124 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[49] (sizes) LineLength: Zeile ist 174 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[59] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[60] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[63] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[65] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[66] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[67] (sizes) LineLength: Zeile ist 177 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[69] (sizes) LineLength: Zeile ist 157 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[71] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[72] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[73] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[77] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[79,37] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[87] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[89] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[91,34] (misc) FinalParameters: Der Parameter email sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[93] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[101] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[102] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[106] (sizes) LineLength: Zeile ist 104 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[107] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[109] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/service/InputCheckService.java:[111,37] (misc) FinalParameters: Der Parameter password sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[18] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[27] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[40] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/authentication_api/data_access/AuthenticationDao.java:[42] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[7,47] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.springframework.web.bind.annotation.*. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[12] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[21,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[24] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[25] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[31] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[31,64] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[32] (sizes) LineLength: Zeile ist 121 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[32,64] (misc) FinalParameters: Der Parameter episodeActionPosts sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[37] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[38] (sizes) LineLength: Zeile ist 113 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[39] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[40] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[41] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[44] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[44,71] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[45] (sizes) LineLength: Zeile ist 127 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[49] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[50] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[51] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[52] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[54] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[57] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[57,80] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[58] (sizes) LineLength: Zeile ist 103 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[58,59] (misc) FinalParameters: Der Parameter podcastURL sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[59] (sizes) LineLength: Zeile ist 148 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[63] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[64] (sizes) LineLength: Zeile ist 116 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[65] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[66] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[67] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[68] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[71] (sizes) LineLength: Zeile ist 105 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[71,76] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[72] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[72,60] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[73] (sizes) LineLength: Zeile ist 139 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[77] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[78] (sizes) LineLength: Zeile ist 132 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[79] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[80] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[82] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[83] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[86] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[86,85] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[87] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[87,64] (misc) FinalParameters: Der Parameter podcastURL sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[88] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[88,64] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionController.java:[89] (sizes) LineLength: Zeile ist 160 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[13,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[14,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[19,37] (misc) FinalParameters: Der Parameter actions sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[19,61] (coding) HiddenField: Die Variable 'actions' verbirgt ein Feld. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[24,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[24,5] (design) DesignForExtension: Klasse 'EpisodeActionGetResponse' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getActions' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'EpisodeActionGetResponse' final oder die Methode 'getActions' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[28,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionGetResponse.java:[28,5] (design) DesignForExtension: Klasse 'EpisodeActionGetResponse' sieht wie zur Erweiterung entworfen aus (kann subclassed werden), aber die Methode 'getTimestamp' besitzt keinen Javadoc-Kommentar, der erklärt, wie Sie das sicher tun. Wenn die Klasse nicht für Erweiterungen ausgelegt ist, sollten sie die Klasse 'EpisodeActionGetResponse' final oder die Methode 'getTimestamp' static/final/abstract/empty machen oder die zugelassene Annotation für die Methode hinzufügen. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[14] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[22,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[26,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/controller/EpisodeActionPost.java:[36,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[30,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[32,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[34,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[36,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[38,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[40,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[42,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[44] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[45] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[50] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[53] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[53,35] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[53,52] (misc) FinalParameters: Der Parameter episodeActionPosts sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[55] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[59,68] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[60,13] (misc) FinalParameters: Der Parameter episodeActionPosts sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[63] (sizes) LineLength: Zeile ist 90 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[68] (sizes) LineLength: Zeile ist 108 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[68,60] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[68,71] (misc) FinalParameters: Der Parameter episodeActionPost sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[75] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[82] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[83] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[87] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[96] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[96,44] (misc) FinalParameters: Der Parameter episodeActionPost sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[103,9] (blocks) RightCurly: '}' an Position 9 sollte in der gleichen Zeile stehen wie der nächste Teil der Multi-Block-Anweisung (eine Anweisung, die mehrere Blöcke enthält: if/else-if/else, do/while oder try/catch/finally). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[112,9] (blocks) RightCurly: '}' an Position 9 sollte in der gleichen Zeile stehen wie der nächste Teil der Multi-Block-Anweisung (eine Anweisung, die mehrere Blöcke enthält: if/else-if/else, do/while oder try/catch/finally). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[120,35] (misc) FinalParameters: Der Parameter episodeActionPost sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[125] (sizes) LineLength: Zeile ist 105 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[134] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[134,46] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[134,57] (misc) FinalParameters: Der Parameter episodeActions sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[140] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[140,45] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[140,56] (misc) FinalParameters: Der Parameter episodeAction sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[141] (sizes) LineLength: Zeile ist 106 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[149] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[149,51] (misc) FinalParameters: Der Parameter user sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[149,62] (misc) FinalParameters: Der Parameter episodeAction sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[150] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[153] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[159] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[163] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[164] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[166,54] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[167] (sizes) LineLength: Zeile ist 91 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[175] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[177] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[179] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[179,63] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[179,80] (misc) FinalParameters: Der Parameter podcastURL sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[180] (sizes) LineLength: Zeile ist 115 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[185] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[186] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[189] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[192] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[194] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[194,59] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[194,76] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[195] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[196] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[201] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[202] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[206] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[210] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[212] (sizes) LineLength: Zeile ist 116 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[212,68] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[212,85] (misc) FinalParameters: Der Parameter podcastURL sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[212,104] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[213] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[215] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[220] (sizes) LineLength: Zeile ist 108 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/service/EpisodeActionService.java:[220,72] (misc) FinalParameters: Der Parameter episodeActions sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[16] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[22] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[30] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[31] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[36] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[38] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[40] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[40,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[42] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[42,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[44] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[44,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[46] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[50] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[54] (sizes) LineLength: Zeile ist 113 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[56] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[57] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[60] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[64] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[67] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeActionDao.java:[72,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[9] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[15] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[23] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[31] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/episode_actions_api/data_access/EpisodeDao.java:[39] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[9] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[12] (sizes) LineLength: Zeile ist 110 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[12,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param episodes. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionTitles.java:[12,1] (javadoc) JavadocType: Im Javadoc des Typs fehlt das Tag @param subscription. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[7,47] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.springframework.web.bind.annotation.*. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[12] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[13] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[20,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[22,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[25] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[27] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[29] (sizes) LineLength: Zeile ist 127 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[30] (sizes) LineLength: Zeile ist 111 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[34] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[34,55] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[35,48] (misc) FinalParameters: Der Parameter deviceID sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[36] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[36,48] (misc) FinalParameters: Der Parameter subscriptions sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[43] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[44] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[45] (sizes) LineLength: Zeile ist 113 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[47] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[48] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[50] (sizes) LineLength: Zeile ist 103 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[51] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[51,58] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[52] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[52,51] (misc) FinalParameters: Der Parameter deviceID sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[53] (sizes) LineLength: Zeile ist 122 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[53,51] (misc) FinalParameters: Der Parameter functionJSONP sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[54] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[59] (sizes) LineLength: Zeile ist 128 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[61] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[62] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[63] (sizes) LineLength: Zeile ist 121 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[64] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[65] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[65] (sizes) LineLength: Zeile ist 100 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[68] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[68,69] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[69] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[69,69] (misc) FinalParameters: Der Parameter deviceID sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[70] (sizes) LineLength: Zeile ist 107 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[70,69] (misc) FinalParameters: Der Parameter delta sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[76] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[77] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[78] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[79] (sizes) LineLength: Zeile ist 120 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[80] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[81] (sizes) LineLength: Zeile ist 105 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[84] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[84,67] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[85] (sizes) LineLength: Zeile ist 96 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[85,67] (misc) FinalParameters: Der Parameter deviceID sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[86] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[86,67] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[87] (sizes) LineLength: Zeile ist 92 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[93] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[94] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[95] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[96] (sizes) LineLength: Zeile ist 100 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[99] (sizes) LineLength: Zeile ist 94 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[99,63] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionController.java:[100] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[10] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[11] (sizes) LineLength: Zeile ist 114 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[16,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[20,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[24,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[28] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[29] (sizes) LineLength: Zeile ist 89 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[31,30] (misc) FinalParameters: Der Parameter add sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[31,43] (coding) HiddenField: Die Variable 'add' verbirgt ein Feld. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[31,48] (misc) FinalParameters: Der Parameter remove sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[31,61] (coding) HiddenField: Die Variable 'remove' verbirgt ein Feld. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[37] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[39] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[46] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[48] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[55] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/controller/SubscriptionDelta.java:[57] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[12,35] (imports) AvoidStarImport: Stern-Importe der Form '.*' sollten vermieden werden - org.psesquared.server.model.*. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[28,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[29,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[31,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[33,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[35,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[37,5] (javadoc) JavadocVariable: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[47] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[49] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[52] (sizes) LineLength: Zeile ist 87 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[52,36] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[52,53] (misc) FinalParameters: Der Parameter subscriptionStrings sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[60] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[65] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[67] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[70] (sizes) LineLength: Zeile ist 98 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[71] (sizes) LineLength: Zeile ist 85 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[76] (sizes) LineLength: Zeile ist 102 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[80] (sizes) LineLength: Zeile ist 99 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[89] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[90] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[92] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[97,42] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[98] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[106] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[108] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[109] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[110] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[114] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[114,39] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[114,56] (misc) FinalParameters: Der Parameter delta sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[121,56] (whitespace) OperatorWrap: '&&' sollte in einer neuen Zeile stehen. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[122] (sizes) LineLength: Zeile ist 112 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[125] (sizes) LineLength: Zeile ist 93 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[132] (sizes) LineLength: Zeile ist 100 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[139] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[142] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[143] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[145] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[147] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[149,51] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[149,68] (misc) FinalParameters: Der Parameter since sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[154] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[167] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[169] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[172] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[175,47] (misc) FinalParameters: Der Parameter username sollte als 'final' deklariert sein. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[176] (sizes) LineLength: Zeile ist 118 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/service/SubscriptionService.java:[189] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[12] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[16] (sizes) LineLength: Zeile ist 88 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[34] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[37] (sizes) LineLength: Zeile ist 97 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[45] (sizes) LineLength: Zeile ist 84 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[49] (sizes) LineLength: Zeile ist 109 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[54] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[60] (sizes) LineLength: Zeile ist 83 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[63] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[64] (sizes) LineLength: Zeile ist 82 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[68] (sizes) LineLength: Zeile ist 104 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionActionDao.java:[70] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[10] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[16,5] (javadoc) MissingJavadocMethod: Es fehlt ein Javadoc-Kommentar. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[17,5] (javadoc) InvalidJavadocPosition: Javadoc-Kommentar ist an der falschen Stelle platziert. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[25] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/subscriptions_api/data_access/SubscriptionDao.java:[26] (sizes) LineLength: Zeile ist 81 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[1] (javadoc) JavadocPackage: Es fehlt eine package-info.java. +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[9] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[12,1] (design) HideUtilityClassConstructor: Hilfsklassen sollten keinen Standard-Konstruktur und keinen als public deklarierten Konstruktor haben. +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[13] (sizes) LineLength: Zeile ist 95 Zeichen lang (Obergrenze ist 80). +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[16] (javadoc) JavadocStyle: Der erste Satz sollte mit einem Punkt enden. +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[16,1] (whitespace) FileTabCharacter: Die Datei enthält Tabulatorzeichen (dies ist das erste Vorkommen). +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[18] (regexp) RegexpSingleline: Line has trailing spaces. +[ERROR] src/main/java/org/psesquared/server/ServerApplication.java:[21,33] (misc) FinalParameters: Der Parameter args sollte als 'final' deklariert sein. +[ERROR] src/main/resources/security.properties:[1] (misc) NewlineAtEndOfFile: Datei endet nicht mit einem Zeilenumbruch. +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD FAILURE +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 13.946 s +[INFO] Finished at: 2023-03-18T08:10:57+01:00 +[INFO] ------------------------------------------------------------------------ +[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.2.1:check (default-cli) on project server: You have 799 Checkstyle violations. -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException diff --git a/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-after-processed.txt b/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-after-processed.txt new file mode 100644 index 0000000..cab82f3 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-after-processed.txt @@ -0,0 +1 @@ +1 warning vue/no-v-html diff --git a/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-after.txt b/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-after.txt new file mode 100644 index 0000000..f9bda3b --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-after.txt @@ -0,0 +1,10 @@ + +> pse-dashboard@0.0.0 lint +> eslint 'src/**/*.{js,vue}' + + +/home/gero/documents/uni/pse/pse-dashboard/src/components/HelpModal.vue + 25:21 warning 'v-html' directive can lead to XSS attack vue/no-v-html + +✖ 1 problem (0 errors, 1 warning) + diff --git a/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-before-processed.txt b/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-before-processed.txt new file mode 100644 index 0000000..150ea46 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-before-processed.txt @@ -0,0 +1,22 @@ +26 error vue/html-indent +17 error vue/script-indent +6 error vue/require-v-for-key +5 error vue/multi-word-component-names +1 error vue/valid-v-for +1 error vue/valid-template-root +125 warning vue/max-attributes-per-line +34 warning vue/attributes-order +26 warning vue/singleline-html-element-content-newline +12 warning vue/require-default-prop +12 warning vue/html-self-closing +11 warning vue/first-attribute-linebreak +10 warning vue/html-closing-bracket-newline +8 warning vue/multiline-html-element-content-newline +5 warning vue/html-closing-bracket-spacing +3 warning vue/require-prop-types +3 warning vue/attribute-hyphenation +2 warning vue/html-self-closing +1 warning vue/v-on-event-hyphenation +1 warning vue/no-v-html +1 warning vue/mustache-interpolation-spacing + diff --git a/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-before.txt b/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-before.txt new file mode 100644 index 0000000..04a8317 --- /dev/null +++ b/31-qualitaetsheft-kolloquium/assets/sources/linter-dashboard-before.txt @@ -0,0 +1,358 @@ + +> pse-dashboard@0.0.0 lint +> eslint 'src/**/*.{js,vue}' + + +/home/gero/documents/uni/pse/pse-dashboard/src/components/Episode.vue + 1:1 error Component name "Episode" should always be multi-word vue/multi-word-component-names + 5:5 warning Prop 'action' requires default value to be set vue/require-default-prop + 5:5 warning Prop "action" should define at least its type vue/require-prop-types + 20:17 warning 'class' should be on a new line vue/max-attributes-per-line + 20:69 warning 'aria-current' should be on a new line vue/max-attributes-per-line + 23:67 warning 'style' should be on a new line vue/max-attributes-per-line + 38:51 warning 'style' should be on a new line vue/max-attributes-per-line + 39:17 warning Require self-closing on HTML elements (
) vue/html-self-closing + 39:43 warning ':style' should be on a new line vue/max-attributes-per-line + +/home/gero/documents/uni/pse/pse-dashboard/src/components/ErrorLog.vue + 14:1 error Expected indentation of 8 spaces but found 4 spaces vue/html-indent + 15:1 error Expected indentation of 12 spaces but found 8 spaces vue/html-indent + 15:9 error Elements in iteration expect to have 'v-bind:key' directives vue/require-v-for-key + 15:14 warning Expected a linebreak before this attribute vue/first-attribute-linebreak + 15:43 warning 'class' should be on a new line vue/max-attributes-per-line + 16:29 warning ':class' should be on a new line vue/max-attributes-per-line + 16:58 warning Expected 1 line break before closing bracket, but no line breaks found vue/html-closing-bracket-newline + 17:1 error Expected indentation of 16 spaces but found 12 spaces vue/html-indent + 17:13 warning Require self-closing on HTML elements (`), but no line breaks found vue/singleline-html-element-content-newline + +/home/gero/documents/uni/pse/pse-dashboard/src/components/LastUpdate.vue + 12:5 warning Prop 'iso' requires default value to be set vue/require-default-prop + 13:5 warning Prop 'unix' requires default value to be set vue/require-default-prop + 36:1 error Expected indentation of 4 spaces but found 0 spaces vue/html-indent + +/home/gero/documents/uni/pse/pse-dashboard/src/components/Loading.vue + 1:1 error Component name "Loading" should always be multi-word vue/multi-word-component-names + 9:30 warning Attribute "v-else" should go before "class" vue/attributes-order + 9:30 warning 'v-else' should be on a new line vue/max-attributes-per-line + +/home/gero/documents/uni/pse/pse-dashboard/src/components/LogEntry.vue + 3:1 error The template requires child element vue/valid-template-root + 3:1 warning Require self-closing on HTML elements (