Compare commits

...

50 Commits

Author SHA1 Message Date
e10a184fd3 Added documenation pdfs 2022-02-11 10:01:48 +01:00
bf4759d744 Added associations to client class diagramm 2022-02-09 20:32:17 +01:00
d4b2851b86 Added associations at server class diagramm 2022-02-09 19:54:27 +01:00
3381fb57ef Fixed dia 2022-02-08 08:53:14 +01:00
5f089650e0 Added class dia for server 2022-02-07 15:02:34 +01:00
68f12b02b5 Added all diagrams 2022-02-07 13:07:46 +01:00
4b563e136c Added classes from app 2022-02-07 12:16:59 +01:00
4e59993e0b Added directory structure for diagramms 2022-02-07 10:35:56 +01:00
a0408983b1 Added png 2022-02-05 18:53:04 +01:00
be96f9efc2 Update diagrams 2022-02-05 18:51:41 +01:00
63bd63d124 Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2022-02-01 10:23:04 +01:00
e174da799f Update activity diagram 2022-02-01 10:22:50 +01:00
62384a33b3 Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2022-01-25 10:43:20 +01:00
390095c276 Updated API-ref 2022-01-25 10:43:01 +01:00
90676be5ec Updated DB-docs 2022-01-25 10:40:15 +01:00
28cb0bd664 Update 'Docs/testcases.md' 2022-01-17 09:19:23 +01:00
f700c79f16 Updated testcaseses 2022-01-11 10:03:42 +01:00
b98bad7a76 Added postman savefile 2022-01-10 13:01:38 +01:00
8bfded7e97 added testcases 2022-01-10 11:22:33 +01:00
8897cada7f Fixed testcase 4 2021-12-21 10:32:45 +01:00
cd245f19c3 Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2021-12-21 10:32:12 +01:00
416e9a9a0a Updated required date format 2021-12-21 10:32:08 +01:00
4efb5154df Updated db-schema 2021-12-20 19:43:00 +01:00
29bc01fb42 Added testcases for creating event 2021-12-20 13:03:35 +01:00
e3bdfee519 Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2021-12-20 12:43:19 +01:00
d55211eda5 Updated prototype login and settings 2021-12-20 12:43:01 +01:00
87514c664c added API Reference 2021-11-30 10:17:09 +01:00
f2847e9454 Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2021-11-29 15:49:10 +01:00
59f3728d6f updated DB docs 2021-11-29 15:49:07 +01:00
0bfd6efd4a updated coding guide 2021-11-29 09:50:43 +01:00
e1124df99d updated coding guide 2021-11-28 19:38:20 +01:00
be3896b992 changed name from 'ui_stylguide' to 'ui guide' 2021-11-22 10:17:30 +01:00
e7aa7ce59b changed image from html to markdown in styleguide 2021-11-17 21:14:56 +01:00
390845a54c removed bakups 2021-11-17 15:10:14 +01:00
2d8bdf410c updated wireframe and created prototype 2021-11-17 15:07:57 +01:00
87e6db6a6b Update 'Docs/coding guide.md' 2021-11-16 12:22:17 +01:00
0787eff1d7 updated coding guide 2021-11-16 12:21:49 +01:00
d829aa101a moved ui styleguide src 2021-11-16 11:17:43 +01:00
e8444dfe44 Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2021-11-16 11:14:20 +01:00
480a047e01 added ui styleguide 2021-11-16 11:14:17 +01:00
ce2d6a2442 Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2021-11-16 11:03:10 +01:00
6fe4eb0bbd added new naming conventions 2021-11-16 11:03:05 +01:00
5c715a6814 Formatting settings General and Arrays 2021-11-16 11:01:40 +01:00
701040606e Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2021-11-16 10:46:42 +01:00
52e0f486ad added code guide 2021-11-16 10:46:07 +01:00
ad3bd3312d updated wireframe 2021-11-15 10:22:07 +01:00
4c28946b5a added wireframes 2021-11-11 15:15:12 +01:00
f9dec340cd added id to iser stories 2021-11-08 10:10:50 +01:00
664786caf8 Merge branch 'master' of git.bib.de:MAM/VPR-Docs 2021-11-07 19:05:04 +01:00
1db6f0c6ee Updated DB schema 2021-11-07 19:04:54 +01:00
35 changed files with 512 additions and 42 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*.bak*
*.lck

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,26 +1,38 @@
Table "User" {
"UID" NUMBER(3) [pk]
"name" VARCHAR(20)
"forename" VARCHAR(20)
"password" VARCHAR(20)
"token" VARCHAR(20)
"isAdmin" boolean
https://dbdiagram.io/d/
Table "event" {
"id" bigint(20) [pk, not null, increment]
"name" varchar(255) [default: NULL]
"start" time [default: NULL]
"end" time [default: NULL]
"is_full_day" bit(1) [not null]
"is_private" bit(1) [not null]
"priority" int(11) [default: NULL]
}
Table "Event" {
"EID" NUMBER(3) [pk]
"name" VARCHAR(20)
"priority" NUMBER(1)
"isFullDay" boolean
"start" datetime
"end" datetime
Table "user" {
"id" bigint(20) [pk, not null, increment]
"login" varchar(255) [default: NULL]
"forename" varchar(255) [default: NULL]
"name" varchar(255) [default: NULL]
"is_admin" bit(1) [not null]
"password" tinyblob [default: NULL]
"salt" tinyblob [default: NULL]
"token" varchar(255) [default: NULL]
}
Table "EventList" {
"UID" NUMBER(3)
"EID" NUMBER(3)
"date" date
Table "user_event" {
"date" date [not null, default: `curdate()`]
"event_id" bigint(20) [not null]
"user_id" bigint(20) [not null]
Indexes {
event_id [name: "FKspe8srtv69gubpphvrnd7wekt"]
user_id [name: "FKk3smcqwou8absq8qjt3wk4vy9"]
(date, event_id, user_id) [pk]
}
}
Ref:"EventList"."UID" < "User"."UID"
Ref:"EventList"."EID" < "Event"."EID"
Ref:"event"."id" < "user_event"."event_id"
Ref:"user"."id" < "user_event"."user_id"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

View File

@@ -0,0 +1,113 @@
# API Reference
The vpr Api ist created around REST. Our Api has several different endpoint, that are URL based and accept standard form-encoded request bodies.
It returns JSON-encoded responses and uses standard HTTP response codes.
---
## The Endpoints at "/vpr/"
GET:
- /all-users
POST:
- /all-events
- /add-user
- /add-event
- /del-event
---
## Status-codes dan HTTP-responses
| STATUS | meaning |
| --- | --- |
| 200 | OK. The Request was successful |
| 400 | Bad request. Check if you send all parameter |
| 404 | endpoint not found. The Url might contain a spelling mistake |
| 405 | Request-Method not allowed. Check if the endpoint requires an GET or POST request |
| 500 | Internal Server error. The request failed due to an exception at the server, the Request-parameter might be in a wrong format, or the database might be unreachable |
---
## /all-users
Request (GET):
curl localhost:8080/vpr/all-users | python3 -m json.tool
Response:
[
[
userId: int,
forename: string,
name: string
]
]
---
## /all-events
Request (POST):
curl localhost:8080/vpr/all-events -X POST -d "userId=<int>"
Response:
[
[
eventId: int,
name: string,
start: string,
priority: int,
isFullDay: boolean,
date: string,
userId: int,
forename: string,
name: string
]
]
---
## /add-user
Request (POST):
curl localhost:8080/vpr/add-user -X POST -d "name=<string>&forename=<string>&password=<string>&isAdmin=<boolean>"
Response:
status 200 if request is ok
And String "Saved"
---
## /add-event
Request (POST):
curl localhost:8080/vpr/add-event -X POST -d "userId=<String>&date=<String>&name=<String>&start=<String>&end=<String>&prority=<int>&isFullDay=<boolean>&isPrivate=<boolean>"
Response:
status 200 if request is ok
And String "Saved"
---
## /del-event
Request (POST):
curl localhost:8080/vpr/del-event -X POST -d "eventId=<int>"
Response:
status 200 if request is ok
And String "Deleted"

View File

@@ -0,0 +1,216 @@
{
"info": {
"_postman_id": "d73d7eb9-ee3c-4fb4-af6f-baeba6db7f78",
"name": "VPR Collection",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "User",
"item": [
{
"name": "add user",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "http://localhost:8080/user/add?name=Alex&forename=Rechtin&password=pw&isAdmin=true&login=alex",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"user",
"add"
],
"query": [
{
"key": "name",
"value": "Alex"
},
{
"key": "forename",
"value": "Rechtin"
},
{
"key": "password",
"value": "pw"
},
{
"key": "isAdmin",
"value": "true"
},
{
"key": "login",
"value": "alex"
}
]
}
},
"response": []
},
{
"name": "login",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "http://localhost:8080/user/add?name=Alex&forename=Rechtin&password=pw&isAdmin=true&login=alex",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"user",
"add"
],
"query": [
{
"key": "name",
"value": "Alex"
},
{
"key": "forename",
"value": "Rechtin"
},
{
"key": "password",
"value": "pw"
},
{
"key": "isAdmin",
"value": "true"
},
{
"key": "login",
"value": "alex"
}
]
}
},
"response": []
},
{
"name": "delete user",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "http://localhost:8080/user/del?userId=1",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"user",
"del"
],
"query": [
{
"key": "userId",
"value": "1"
}
]
}
},
"response": []
},
{
"name": "all user",
"request": {
"method": "GET",
"header": [],
"url": null
},
"response": []
}
]
},
{
"name": "Event",
"item": [
{
"name": "add event",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "localhost:8080/event/add?userId=1&date=2021-12-24&name=TestEvent&start=&end=&prority=1&isFullDay=true&isPrivate=true",
"host": [
"localhost"
],
"port": "8080",
"path": [
"event",
"add"
],
"query": [
{
"key": "userId",
"value": "1"
},
{
"key": "date",
"value": "2021-12-24"
},
{
"key": "name",
"value": "TestEvent"
},
{
"key": "start",
"value": ""
},
{
"key": "end",
"value": ""
},
{
"key": "prority",
"value": "1"
},
{
"key": "isFullDay",
"value": "true"
},
{
"key": "isPrivate",
"value": "true"
}
]
}
},
"response": []
}
]
},
{
"name": "Other",
"item": [
{
"name": "status test",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8080/vpr/status-test",
"protocol": "http",
"host": [
"localhost"
],
"port": "8080",
"path": [
"vpr",
"status-test"
]
}
},
"response": []
}
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

46
Docs/coding guide.md Normal file
View File

@@ -0,0 +1,46 @@
# 1 Formatting
## 1.1 General
Maximal 80-100 letters in one line
We use the default build in Formatter from 'IntelliJ IDEA' (Ctr+Alt+L)
## 1.2 Brackets
Brackets will be used like this:
public void example() {
}
## 1.3 Arrays
String[] array = new String[]{"1", "2", "3", "4"}
or
String[] array = new String[]{
"1",
"2",
"3",
"4"
}
# 2 Naming
## 2.1 General
Names should only include ASCII letters and digits. They should never begin with a digit.
All names should _ALWAYS_ be in english.
## 2.2 Class names
Class names are written in UpperCamelCase.
## 2.3 Method names
Method names are written in lowerCamelCase.
They are often verbs describing the function of the method e.g. _startProcess_ or _log_.
## 2.4 Constant names
Constant names are written in UPPER_CASE.
## 2.5 Variable names
Variable names are written in lowerCamelCase.
The names should _ALWAYS_ be words that are descriptive.
## 2.6 File names
File names are written in lowerCameCase.

View File

@@ -0,0 +1,32 @@
# Eingabe eines Termins
Beim Anlegen eines Termins wird die Eingabe geprüft.
Folgende Regeln müssen zutreffen:
- Der Name muss mindestens 3 Zeichen haben.
- Er darf nur folgende Zeichen enthalten: __[A-Za-zÄÖÜäöü0-9 =!?+*/$%€.:,;_<>()-]__
- Das Datum muss valide sein
- Das Datum muss das Format MM/TT/JJJJ haben
- Das Datum darf nicht in der Vergangenheit liegen
<br/><br/>
## Äquivalenzklassen:
ID | Beschreibung | Eingabe | Erwartetes Ergebniss
---|---|---|---
0 | Name < 3 | le | Fehler
1 | Name > 3, verbotenes Zeichen |Einkaufen\ | Fehler
2 | Datum falsches Format | 20/12/2021 | Fehler
3 | Datum in Vergangenheit | 12/20/2021 | Fehler
4 | Datum nicht valide | 02/31/2021 | Fehler
5 | Name > 3, kein verbotenes Zeichen, Datum richtiges Format, Datum nicht in der Vergangenheit, Datum Valide | Einkaufen!, 12/23/2021 | Erfolg
<br/><br/>
## Grenzfälle:
ID | Beschreibung | Eingabe | Erwartetes Ergebniss
---|---|---|---
0 | Name == 3 | SEN | Erfolg
1 | Datum == Heute | 12/20/2021 | Erfolg

BIN
Docs/src/colorTemplate.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
Docs/src/colorTemplate2.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
Docs/src/palette.pdf Normal file

Binary file not shown.

26
Docs/testcases.md Normal file
View File

@@ -0,0 +1,26 @@
# Testfälle
</br>
## 1. Termin anlegen
</br>
__Zweck:__
&nbsp;&nbsp;&nbsp;&nbsp; Testet Fehlerhafte Eingaben
__Vorbereitung:__
&nbsp;&nbsp;&nbsp;&nbsp; Login mit Username: "testUser" und Passwort "pw"
__Aufräumarbeiten:__
&nbsp;&nbsp;&nbsp;&nbsp; Keine
__Hinweis:__
&nbsp;&nbsp;&nbsp;&nbsp; Um einen Termin zu erstellen muss man den ersten Button der linken Navigationsleiste klicken
</br>
</br>
## 1.1 Testsequenz: Fehlerhafte Eingabe
ID | Eingabe | Erwartetes Ergebniss | Befund
--- | --- | --- | ---
1.1.1 | Keine Eingabe | Fehlermeldung: "Der Name muss eine Länge von 3 haben" | _befund eintragen_
1.1.2 | Name: "Test\Termin" | Fehlermeldung: "Der Name Darf nur aus Zahlen, Buchstaben </br> und folgenden Sonderzeichen bestehen: =!?+*/$%€.:,;_ <>()-“" | _befund eintragen_
1.1.3 | Name: "TestTermin" | Fehlermeldung: "Bitte eine Priorität wählen." | _befund eintragen_
1.1.4 | Name: "Test Termin" </br> Priorität: "gering" | Fehlermeldung: "Das Datum muss in der Zukunft liegen." | _befund eintragen_
1.1.5 | Name: "Test Termin" </br> Priorität: "gering" </br> Datum"02-10-1996" | Fehlermeldung: "Das Datum muss in der Zukunft liegen." |_befund eintragen_

23
Docs/ui guide.md Normal file
View File

@@ -0,0 +1,23 @@
# 01 Typographie
## Font: Segoe UI
### Header 1
Font size: 35
Font Weight: Bold
### Header 2
Font size: 30
Font Weight: Regular
### Text
Font size: 25
Font Weight: Regular
# 02 Colors
![colorTemplate](src/colorTemplate.PNG)
![colorTemplate](src/colorTemplate2.PNG)

View File

@@ -1,77 +1,77 @@
# User
#0 Termine anzeigen
#0100 Termine anzeigen
Als User möchte ich meine Termine angezeigt bekommen.
#0 Öffentliche Termine anzeigen
#0200 Öffentliche Termine anzeigen
Als User möchte ich Termine der Anderen sehen können.
#0 Kalender
#0300 Kalender
Als User möchte ich einen haben durch den ich blättern kann.
#0 Wochen / Monatsanischt
#0400 Wochen / Monatsanischt
Als User möchte ich zwishcen wochen und Monatskalender wechseln können.
<br/>
#0 Termine anlegen
#0500 Termine anlegen
Als User möchte ich neue Termine anlegen können.
#0 Uhrzeiten für Termine
#0600 Uhrzeiten für Termine
Als User möchte ich meinen Terminen optional eine Start-/Enduhrzeit geben.
#0 Multi-Tage Termine
#0700 Multi-Tage Termine
Als User möchte ich Termine auch über mehrere Tage anlegen können.
#0 Wiederholende Termine
#0800 Wiederholende Termine
Als User möchte ich wiederhohlende Termine anlegen können.
#0 Private Termine
#0900 Private Termine
Als User möchte ich meinen Terminen privat oder öffentlich anlegen.
#0 Typ Festlegen
#1000 Typ Festlegen
Als User möchte ich meinem Termin einen Typ geben, um die Prorität berechnen zu lassen und den Termin besonders kennzeichnen.
#0 Priorität angeben
#1100 Priorität angeben
Als User möchte ich die Priorität des Termins angeben, damit gegenfalls andere Termine mit niedriger prorität verschoben werden.
<br/>
#0 Termine bearbeiten
#1200 Termine bearbeiten
Als User möchte ich Termine bearbeiten können.
#0 Termine löschen
#1300 Termine löschen
Als User möchte ich Termine wieder Löschen können.
#0 Termine priorisieren
#1400 Termine priorisieren
Als User möchte ich meine Termine priorisieren können.
<br/>
#0 Angemeldet bleiben
#1500 Angemeldet bleiben
Als User möchte ich angemeldet bleiben können, um beim Login nicht jedes mal meine Daten ein zu geben.
#0 Offline Speicher
#1600 Offline Speicher
Als User möchte ich meine Termine auch ohne Verbindung zur DB sehen, um die Anwendung auch offline zu nutzen.
# Admin
#0 User anlegen
#1700 User anlegen
Als Admin möchte ich neue User anlegen können.
#0 User bearbeiten
#1800 User bearbeiten
Als Admin möchte ich User bearbeiten können.
#0 User löschen
#1900 User löschen
Als Admin möchte ich User löschen können.
<br/>
#0 Admin Termine bearbeiten
#2000 Admin Termine bearbeiten
Als Admin möchte ich alle öffentlichen Termine bearbeiten können.
#0 Admin Termine löschen
#2100 Admin Termine löschen
Als Admin möchte ich alle öffentlichen Termine löschen können.
#0 Admin Termine anlegen
#2200 Admin Termine anlegen
Als Admin möchte ich öffentlichen Termine für jeden User anlegen können.