From ff8013e91405bd8408e9bfc721a5fb522381268f Mon Sep 17 00:00:00 2001 From: Denis Natusch Date: Wed, 15 Nov 2023 18:14:45 +0100 Subject: [PATCH] Update documentation for package users Closes #19 --- .../asciidoc/developer_documentation.adoc | 18 +---- src/main/asciidoc/models/design/customer.puml | 80 ------------------- src/main/asciidoc/models/design/customer.svg | 3 - .../asciidoc/models/design/seq_users.puml | 70 ++++++++++++---- src/main/asciidoc/models/design/seq_users.svg | 4 +- src/main/asciidoc/models/design/user.puml | 62 +++++++++++--- src/main/asciidoc/models/design/user.svg | 4 +- src/main/tex/interim-presentation/Makefile | 2 +- src/main/tex/interim-presentation/main.tex | 11 --- 9 files changed, 112 insertions(+), 142 deletions(-) delete mode 100644 src/main/asciidoc/models/design/customer.puml delete mode 100644 src/main/asciidoc/models/design/customer.svg diff --git a/src/main/asciidoc/developer_documentation.adoc b/src/main/asciidoc/developer_documentation.adoc index fd532df..3e46583 100644 --- a/src/main/asciidoc/developer_documentation.adoc +++ b/src/main/asciidoc/developer_documentation.adoc @@ -271,8 +271,9 @@ image:models/design/user.svg[class design diagram - User] |Usercontroller |A Spring MVC Controller to handle profile management. |UserDataInitalizer |An Initializer with primary purpose to add the admin. |UserManagement |A class that manages the UserRepository. -|UserRepository |An extension of 'CrudRepository' to save Users. +|UserRepository |An extension of 'CrudRepository' to store Users. |User |A class that allows a person to associate system data with themselves. +|RegistrationForm |A Form to cache a user input that was made while registration. |=== === Staff @@ -288,21 +289,6 @@ image:models/design/staff.svg[class design diagram - Staff] |StaffRepository |An extension of 'CrudRepository' to perform add, save, count, remove, and find by id operations specific to staff objects. |=== -=== Customer - -image:models/design/customer.svg[class design diagram - Customer] - -[options="header"] -|=== -|Class/Enumeration |Description -|Customer |A class that represents the customer's information. It includes the customer names and surnames. -|CustomerController |A Spring MVC Controller for managing customer-related operations such as removing, and updating customer data. -|CustomerDataInitializer |An Initalizer with primary purpose to create dummy data on application startup. -|CustomerRepository |An extension of 'CrudRepository' to perform add, save, count, remove, and find by id operations specific to customer objects. -|RegistrationForm |A class to handle the data input for new customer registration. It provides methods to retrieve the information and validate the data provided through forms. -|=== - - === Link between analysis and design diff --git a/src/main/asciidoc/models/design/customer.puml b/src/main/asciidoc/models/design/customer.puml deleted file mode 100644 index 7b9fe27..0000000 --- a/src/main/asciidoc/models/design/customer.puml +++ /dev/null @@ -1,80 +0,0 @@ -@startuml - -skinparam linetype ortho -skinparam groupInheritance 2 - -package java.util { - class ArrayList - class Collection - class HashSet - class Optional - class Set -} - -package catering { -package customer { - - class Customer { - - id: int - - surname: String - - name: String - + Customer(name: String, surname: String) - + getId(): int - + getSurname(): String - + getName(): String - + setId(): void - + setSurname(): void - + setName(): void - } - - class CustomerController { - + CustomerController(customerRepository: CustomerRepository) - + getCustomer(model Model): String - + removeCustomer(customerID: int, model Model): String - + editCustomer(id: int, model Model): String - + updateCustomer(customer: Customer): String - } - - class CustomerDataInitializer { - + CustomerDataInitializer(customerRepository: CustomerRepository) - + initialize(): void - } - - class CustomerRepository { - + CustomerRepository() - + addCustomer(customer: Customer): boolean - + save(customer: Customer): void - + count(): long - + removeCustomer(customerID: int) boolean - + getCustomers(): Collection - + findById(id: int): Optional - } - - class RegistrationForm { - - name: String - - password: String - - address: String - + RegistrationForm(String name, String password, String address) - + getName(): String - + getPassword(): String - + getAddress(): String - + validate(errors Errors): void - } - -} -} - -CustomerRepository *-- Customer : -customer -CustomerRepository --> CustomerController : -customerRepository -CustomerDataInitializer --> CustomerRepository : -customerRepository -RegistrationForm --> CustomerController : use -CustomerRepository --> Set : -customers -CustomerRepository --> HashSet : use -CustomerRepository --> Collection : use -CustomerRepository --> Optional : use -CustomerRepository --> ArrayList : use - -RegistrationForm -[hidden]- Customer - - -@enduml diff --git a/src/main/asciidoc/models/design/customer.svg b/src/main/asciidoc/models/design/customer.svg deleted file mode 100644 index 4af1493..0000000 --- a/src/main/asciidoc/models/design/customer.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5ae14d39988d7d43c163e3d44198497a64612d99fd30bb4036e8a3953344334e -size 30126 diff --git a/src/main/asciidoc/models/design/seq_users.puml b/src/main/asciidoc/models/design/seq_users.puml index b25b9f6..dd4c669 100644 --- a/src/main/asciidoc/models/design/seq_users.puml +++ b/src/main/asciidoc/models/design/seq_users.puml @@ -3,11 +3,13 @@ participant User participant "User:customer" as User_customer participant "User:admin" as User_admin +participant "UserAccount:userAccount" as userAccount participant UserController participant UserManagement participant UserRepository participant UserDataInitializier participant Spring +participant RegistrationForm == Create Admin == @@ -24,62 +26,91 @@ deactivate UserManagement deactivate UserDataInitializier deactivate User_admin -== Create Customer == +== Register Customer == -UserDataInitializier -> UserManagement : createCustomer(String,String,String) -activate UserDataInitializier +Spring -> UserController : register +activate UserController +activate RegistrationForm +activate Spring +UserController -> RegistrationForm : getUsername() +UserController <-- RegistrationForm : String +UserController -> RegistrationForm : getPassword() +UserController <-- RegistrationForm : String +UserController -> RegistrationForm : getAddress() +UserController <-- RegistrationForm : String +UserController -> UserManagement : createCustomer(String,String,String) activate UserManagement UserManagement -> UserRepository : "save(User:customer)" activate User_customer activate UserRepository UserManagement <-- UserRepository : User deactivate UserRepository -UserDataInitializier <-- UserManagement : User +UserController <-- UserManagement : User deactivate UserManagement -deactivate UserDataInitializier +Spring <-- UserController : "redirect:/login" +deactivate UserController deactivate User_customer +deactivate RegistrationForm +deactivate Spring -== Delete User (Customer) == +== Disable Customer by Customer == -Spring -> UserController : deleteUser() +Spring -> UserController : disableUser() activate User_customer activate Spring activate UserController -UserController -> UserManagement : deleteUser(UserIdentifier) +UserController -> UserManagement : disableUserAccount(UserAccount:userAccount) activate UserManagement -UserManagement -> UserRepository : deleteById(UserIdentifier) +UserManagement -> userAccount : getId() +activate userAccount +UserManagement -> userAccount : UserIdentifier +deactivate userAccount +UserManagement -> UserRepository : disable(UserIdentifier) activate UserRepository UserManagement <-- UserRepository deactivate UserRepository UserController <-- UserManagement deactivate UserManagement -destroy User_customer UserController <-- Spring: "redirect:/" deactivate UserController deactivate Spring +deactivate User_customer == View Profile == -Spring -> UserController : index(Model) +Spring -> UserController : viewProfile(Model:model,UserAccount:userAccount) activate User activate Spring activate UserController -UserController -> Spring : model.addAttribute("user",User) +UserController -> UserManagement : getUserByAccount(UserAccount:userAccount) +activate UserManagement +UserManagement -> UserRepository : findAll() +activate UserRepository +UserManagement <-- UserRepository : Streamble +deactivate UserRepository +UserController <-- UserManagement : Optional +deactivate UserManagement +UserController -> Spring : model.addAttribute("user",User:user) UserController <-- Spring : Model Spring <-- UserController : "profile" deactivate Spring deactivate UserController -'technically spring is sending requests to User -'but i wrote these requests in profile.html -'so i'm not sure if i should add them deactivate User == Edit Profile == -Spring -> UserController : editProfile(String:password,String:address,String:username) +Spring -> UserController : editProfile(UserAccount:LoggedIn,String:password,String:address,String:username) activate User activate Spring activate UserController +UserController -> UserManagement : getUserByAccount(UserAccount:LoggedIn) +activate UserManagement +UserManagement -> UserRepository : findAll() +activate UserRepository +UserManagement <-- UserRepository : Streamble +deactivate UserRepository +UserController <-- UserManagement : Optional +deactivate UserManagement UserController -> User : [!String:username.isBlank()] setUsername(String:username) UserController <-- User : boolean UserController -> User : [!String:address.isBlank()] setAddress(String:address) @@ -87,8 +118,15 @@ UserController <-- User : boolean UserController -> User : [!String:password.isBlank()] setPassword(String:password) UserController <-- User : boolean UserController -> UserManagement : save(User:LoggedIn) +UserManagement -> UserRepository : "save(User:LoggedIn)" +activate UserRepository +UserManagement <-- UserRepository : User +deactivate UserRepository +UserController <-- UserManagement : User activate UserManagement UserController <-- UserManagement : User +deactivate UserManagement +Spring <-- UserController : [!username.isBlank()] "redirect:/profile" Spring <-- UserController : "redirect:/profile" deactivate Spring deactivate UserController diff --git a/src/main/asciidoc/models/design/seq_users.svg b/src/main/asciidoc/models/design/seq_users.svg index 025ceb4..c80d4c4 100644 --- a/src/main/asciidoc/models/design/seq_users.svg +++ b/src/main/asciidoc/models/design/seq_users.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b2b81cd4fd86312c761b0f6b3998d21b3b99e5854fe7c939fc2fefb37b0f939 -size 24408 +oid sha256:e26f666700ba205672f26fddf3151f6ba044123f7ecc1f2ede119be3e3347cd8 +size 36951 diff --git a/src/main/asciidoc/models/design/user.puml b/src/main/asciidoc/models/design/user.puml index 69c7238..36d1126 100644 --- a/src/main/asciidoc/models/design/user.puml +++ b/src/main/asciidoc/models/design/user.puml @@ -7,7 +7,13 @@ package Salespoint { interface UserAccountManagement interface DataInitalizer class UserAccount + class AbstractAggregateRoot + class Role +} + +package Spring { class CrudRepository + class Streamable } package catering.users { @@ -16,29 +22,50 @@ package catering.users { + User(userAccount : UserAccount, address : String) + User() + getAddress() : String - + setAddress() : String + + setAddress(address:String) : String + getUsername() : String - + setUsername() : boolean + + setUsername(username:String) : boolean + getUserAccount() : UserAccount + getId() : UserIdentifier + + isEnabled() : boolean + + hasRole(role:String) : boolean } + User ..> Role : "<>" User --> UserAccount : "-userAccount" + User --|> AbstractAggregateRoot : <> class UserController { + UserController(userManagement: UserManagement) - + index(): String - + editProfile(name: String, password: String, address: String): String - + deleteUser(): String + + unauthorized() : String + + register() : String + + register(form:RegistrationForm,result:Erros) : String + + loginPage() : String + + viewProfile(model:Model,userAccount:UserAccount) : String + + editProfile(userAccount:UserAccount,username:String,password:String,address:String) : String + + disableUser(userAccount:UserAccount) : String + + getCustomer(model:Model) : String + + removeCustomer(user:User,model:Model) : String + + editCustomer(user:User,model:Model) : String + + updateCustomer(user:User,username:String,address:String,model:Model) } UserController --> UserManagement : "-userManagement" + UserController ..> User : "<>" + UserController ..> UserAccount : "<>" + UserController ..> Role : "<>" + UserController ..> RegistrationForm : "<>" class UserManagement { - + UserManagement(users : UserRepository, userAccounts : UserAccountManagement) - + createUser(name: String, password: String, address: String) : user - + findAll() : Streamable + + UserManagement(users:UserRepository,userAccounts:UserAccountManagement) + + createCustomer(name:String, password:String, address:String) : User + + createAdmin(name:String, password:String, address:String) : User + + save(user:User) : User + + getUsers() : UserRepository + + disableUserAccount(userAccount:UserAccount) : void + + getUserByAccount(userAccount:UserAccount) : Optional } - UserManagement ---> UserAccountManagement : "-userAccounts" - UserManagement ---> UserRepository : "-users" + UserManagement --> UserAccountManagement : "-userAccounts" + UserManagement --> UserRepository : "-users" + UserManagement ..> User : "<>" class UserDataInitalizer { - userManagement : UserManagement + UserDataInitalizer(userManagement : UserManagement) @@ -47,7 +74,20 @@ package catering.users { UserDataInitalizer --> UserManagement : "-userManagement" UserDataInitalizer ..|> DataInitalizer class UserRepository { + + findAll() : Streamable + } + UserRepository --|> CrudRepository : <> + UserRepository ..|> Streamable : <> + UserRepository o-- User + class RegistrationForm { + - username: String + - password: String + - address: String + + RegistrationForm(username:String,password:String,address:String) + + getUsername() : String + + getPassword() : String + + getAddress() : String + + validate(errors:Erros) : void } - UserRepository --|> CrudRepository } @enduml diff --git a/src/main/asciidoc/models/design/user.svg b/src/main/asciidoc/models/design/user.svg index c534393..642f253 100644 --- a/src/main/asciidoc/models/design/user.svg +++ b/src/main/asciidoc/models/design/user.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec05058f3001a482c79b4be4a268b731e65434991a13c99d15631c8eed5b1e56 -size 22702 +oid sha256:63fdd760998f39a9a05a03dc275241c82e56737cff6a17c4e959991f9e8bf076 +size 40932 diff --git a/src/main/tex/interim-presentation/Makefile b/src/main/tex/interim-presentation/Makefile index 53c8b40..e21d04f 100644 --- a/src/main/tex/interim-presentation/Makefile +++ b/src/main/tex/interim-presentation/Makefile @@ -1,4 +1,4 @@ -PLANTUML_DIAGRAMS = $(patsubst %,figures/puml/%.pdf,design/systemContextDiagram design/catalog design/catering design/customer design/inventory design/order design/staff design/user) +PLANTUML_DIAGRAMS = $(patsubst %,figures/puml/%.pdf,design/systemContextDiagram design/catalog design/catering design/inventory design/order design/staff design/user) PLANTUML_LOCAL_DIAGRAMS = $(patsubst %,figures/puml_local/%.pdf,seq_order_add seq_order_checkout) .PHONY: default clean diff --git a/src/main/tex/interim-presentation/main.tex b/src/main/tex/interim-presentation/main.tex index d7b5dc8..f4937bf 100644 --- a/src/main/tex/interim-presentation/main.tex +++ b/src/main/tex/interim-presentation/main.tex @@ -133,17 +133,6 @@ Theo Reichert \end{figure} \end{frame} -\subsection{Kunde} - -\begin{frame} - \begin{figure} - \begin{center} - \includegraphics[height=0.8\textheight]{figures/puml/design/customer} - \end{center} - \caption{Paket \texttt{customer} aus Entwicklerdokumentation, Abschnitt \textit{Building block view}} - \end{figure} -\end{frame} - \subsection{Angestellte} \begin{frame}