134 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| @startuml
 | |
| package com.iluwatar.cqrs.util {
 | |
|   class HibernateUtil {
 | |
|     - LOGGER : Logger {static}
 | |
|     - SESSIONFACTORY : SessionFactory {static}
 | |
|     + HibernateUtil()
 | |
|     - buildSessionFactory() : SessionFactory {static}
 | |
|     + getSessionFactory() : SessionFactory {static}
 | |
|   }
 | |
| }
 | |
| package com.iluwatar.cqrs.app {
 | |
|   class App {
 | |
|     - LOGGER : Logger {static}
 | |
|     + App()
 | |
|     + main(args : String[]) {static}
 | |
|   }
 | |
| }
 | |
| package com.iluwatar.cqrs.dto {
 | |
|   class Author {
 | |
|     - email : String
 | |
|     - name : String
 | |
|     - username : String
 | |
|     + Author()
 | |
|     + Author(name : String, email : String, username : String)
 | |
|     + equals(obj : Object) : boolean
 | |
|     + getEmail() : String
 | |
|     + getName() : String
 | |
|     + getUsername() : String
 | |
|     + hashCode() : int
 | |
|     + toString() : String
 | |
|   }
 | |
|   class Book {
 | |
|     - price : double
 | |
|     - title : String
 | |
|     + Book()
 | |
|     + Book(title : String, price : double)
 | |
|     + equals(obj : Object) : boolean
 | |
|     + getPrice() : double
 | |
|     + getTitle() : String
 | |
|     + hashCode() : int
 | |
|     + toString() : String
 | |
|   }
 | |
| }
 | |
| package com.iluwatar.cqrs.commandes {
 | |
|   class CommandServiceImpl {
 | |
|     - sessionFactory : SessionFactory
 | |
|     + CommandServiceImpl()
 | |
|     + authorCreated(username : String, name : String, email : String)
 | |
|     + authorEmailUpdated(username : String, email : String)
 | |
|     + authorNameUpdated(username : String, name : String)
 | |
|     + authorUsernameUpdated(oldUsername : String, newUsername : String)
 | |
|     + bookAddedToAuthor(title : String, price : double, username : String)
 | |
|     + bookPriceUpdated(title : String, price : double)
 | |
|     + bookTitleUpdated(oldTitle : String, newTitle : String)
 | |
|     - getAuthorByUsername(username : String) : Author
 | |
|     - getBookByTitle(title : String) : Book
 | |
|   }
 | |
|   interface ICommandService {
 | |
|     + authorCreated(String, String, String) {abstract}
 | |
|     + authorEmailUpdated(String, String) {abstract}
 | |
|     + authorNameUpdated(String, String) {abstract}
 | |
|     + authorUsernameUpdated(String, String) {abstract}
 | |
|     + bookAddedToAuthor(String, double, String) {abstract}
 | |
|     + bookPriceUpdated(String, double) {abstract}
 | |
|     + bookTitleUpdated(String, String) {abstract}
 | |
|   }
 | |
| }
 | |
| package com.iluwatar.cqrs.queries {
 | |
|   interface IQueryService {
 | |
|     + getAuthorBooks(String) : List<Book> {abstract}
 | |
|     + getAuthorBooksCount(String) : BigInteger {abstract}
 | |
|     + getAuthorByUsername(String) : Author {abstract}
 | |
|     + getAuthorsCount() : BigInteger {abstract}
 | |
|     + getBook(String) : Book {abstract}
 | |
|   }
 | |
|   class QueryServiceImpl {
 | |
|     - sessionFactory : SessionFactory
 | |
|     + QueryServiceImpl()
 | |
|     + getAuthorBooks(username : String) : List<Book>
 | |
|     + getAuthorBooksCount(username : String) : BigInteger
 | |
|     + getAuthorByUsername(username : String) : Author
 | |
|     + getAuthorsCount() : BigInteger
 | |
|     + getBook(title : String) : Book
 | |
|   }
 | |
| }
 | |
| package com.iluwatar.cqrs.constants {
 | |
|   class AppConstants {
 | |
|     + E_EVANS : String {static}
 | |
|     + J_BLOCH : String {static}
 | |
|     + M_FOWLER : String {static}
 | |
|     + USER_NAME : String {static}
 | |
|     + AppConstants()
 | |
|   }
 | |
| }
 | |
| package com.iluwatar.cqrs.domain.model {
 | |
|   class Author {
 | |
|     - email : String
 | |
|     - id : long
 | |
|     - name : String
 | |
|     - username : String
 | |
|     # Author()
 | |
|     + Author(username : String, name : String, email : String)
 | |
|     + getEmail() : String
 | |
|     + getId() : long
 | |
|     + getName() : String
 | |
|     + getUsername() : String
 | |
|     + setEmail(email : String)
 | |
|     + setId(id : long)
 | |
|     + setName(name : String)
 | |
|     + setUsername(username : String)
 | |
|     + toString() : String
 | |
|   }
 | |
|   class Book {
 | |
|     - author : Author
 | |
|     - id : long
 | |
|     - price : double
 | |
|     - title : String
 | |
|     # Book()
 | |
|     + Book(title : String, price : double, author : Author)
 | |
|     + getAuthor() : Author
 | |
|     + getId() : long
 | |
|     + getPrice() : double
 | |
|     + getTitle() : String
 | |
|     + setAuthor(author : Author)
 | |
|     + setId(id : long)
 | |
|     + setPrice(price : double)
 | |
|     + setTitle(title : String)
 | |
|     + toString() : String
 | |
|   }
 | |
| }
 | |
| Book -->  "-author" Author
 | |
| CommandServiceImpl ..|> ICommandService 
 | |
| QueryServiceImpl ..|> IQueryService 
 | |
| @enduml |