68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								@startuml
							 | 
						||
| 
								 | 
							
								package com.iluwatar.dao {
							 | 
						||
| 
								 | 
							
								  class App {
							 | 
						||
| 
								 | 
							
								    - ALL_CUSTOMERS : String {static}
							 | 
						||
| 
								 | 
							
								    - DB_URL : String {static}
							 | 
						||
| 
								 | 
							
								    - log : Logger {static}
							 | 
						||
| 
								 | 
							
								    + App()
							 | 
						||
| 
								 | 
							
								    - addCustomers(customerDao : CustomerDao) {static}
							 | 
						||
| 
								 | 
							
								    - createDataSource() : DataSource {static}
							 | 
						||
| 
								 | 
							
								    - createSchema(dataSource : DataSource) {static}
							 | 
						||
| 
								 | 
							
								    - deleteSchema(dataSource : DataSource) {static}
							 | 
						||
| 
								 | 
							
								    + generateSampleCustomers() : List<Customer> {static}
							 | 
						||
| 
								 | 
							
								    + main(args : String[]) {static}
							 | 
						||
| 
								 | 
							
								    - performOperationsUsing(customerDao : CustomerDao) {static}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class Customer {
							 | 
						||
| 
								 | 
							
								    - firstName : String
							 | 
						||
| 
								 | 
							
								    - id : int
							 | 
						||
| 
								 | 
							
								    - lastName : String
							 | 
						||
| 
								 | 
							
								    + Customer(id : int, firstName : String, lastName : String)
							 | 
						||
| 
								 | 
							
								    + equals(that : Object) : boolean
							 | 
						||
| 
								 | 
							
								    + getFirstName() : String
							 | 
						||
| 
								 | 
							
								    + getId() : int
							 | 
						||
| 
								 | 
							
								    + getLastName() : String
							 | 
						||
| 
								 | 
							
								    + hashCode() : int
							 | 
						||
| 
								 | 
							
								    + setFirstName(firstName : String)
							 | 
						||
| 
								 | 
							
								    + setId(id : int)
							 | 
						||
| 
								 | 
							
								    + setLastName(lastName : String)
							 | 
						||
| 
								 | 
							
								    + toString() : String
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  interface CustomerDao {
							 | 
						||
| 
								 | 
							
								    + add(Customer) : boolean {abstract}
							 | 
						||
| 
								 | 
							
								    + delete(Customer) : boolean {abstract}
							 | 
						||
| 
								 | 
							
								    + getAll() : Stream<Customer> {abstract}
							 | 
						||
| 
								 | 
							
								    + getById(int) : Optional<Customer> {abstract}
							 | 
						||
| 
								 | 
							
								    + update(Customer) : boolean {abstract}
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class CustomerSchemaSql {
							 | 
						||
| 
								 | 
							
								    + CREATE_SCHEMA_SQL : String {static}
							 | 
						||
| 
								 | 
							
								    + DELETE_SCHEMA_SQL : String {static}
							 | 
						||
| 
								 | 
							
								    - CustomerSchemaSql()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class DbCustomerDao {
							 | 
						||
| 
								 | 
							
								    - LOGGER : Logger {static}
							 | 
						||
| 
								 | 
							
								    - dataSource : DataSource
							 | 
						||
| 
								 | 
							
								    + DbCustomerDao(dataSource : DataSource)
							 | 
						||
| 
								 | 
							
								    + add(customer : Customer) : boolean
							 | 
						||
| 
								 | 
							
								    - createCustomer(resultSet : ResultSet) : Customer
							 | 
						||
| 
								 | 
							
								    + delete(customer : Customer) : boolean
							 | 
						||
| 
								 | 
							
								    + getAll() : Stream<Customer>
							 | 
						||
| 
								 | 
							
								    + getById(id : int) : Optional<Customer>
							 | 
						||
| 
								 | 
							
								    - getConnection() : Connection
							 | 
						||
| 
								 | 
							
								    - mutedClose(connection : Connection, statement : PreparedStatement, resultSet : ResultSet)
							 | 
						||
| 
								 | 
							
								    + update(customer : Customer) : boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  class InMemoryCustomerDao {
							 | 
						||
| 
								 | 
							
								    - idToCustomer : Map<Integer, Customer>
							 | 
						||
| 
								 | 
							
								    + InMemoryCustomerDao()
							 | 
						||
| 
								 | 
							
								    + add(customer : Customer) : boolean
							 | 
						||
| 
								 | 
							
								    + delete(customer : Customer) : boolean
							 | 
						||
| 
								 | 
							
								    + getAll() : Stream<Customer>
							 | 
						||
| 
								 | 
							
								    + getById(id : int) : Optional<Customer>
							 | 
						||
| 
								 | 
							
								    + update(customer : Customer) : boolean
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								DbCustomerDao ..|> CustomerDao 
							 | 
						||
| 
								 | 
							
								InMemoryCustomerDao ..|> CustomerDao 
							 | 
						||
| 
								 | 
							
								@enduml
							 |