Newer
Older
task-bldg / class.pu
@startuml

database "h2" as db {
	entity city {
		citycode : String
		cityname : String
		path : String
		lng : Double
		lat : Double
	}
}
note bottom of db : spring.datasource.url=jdbc:h2:./taskdb\nspring.jpa.hibernate.ddl-auto=update

class SecurityConfig <<Configuration>> {
	- userDetailsService : UserDetailsService
	+ passwordEncoder() : PasswordEncoder
	+ configure(WebSecurity)
	configure(HttpSecurity)
	configure(AuthenticationManagerBuilder)
}

class UserDetailsServiceImpl <<Service>> {
  - userRepository : SiteUserRepository
  + loadUserByUsername(username) : UserDetails
  + createUserDetails(:SiteUser) : User
}

class SecurityController <<Controller>> {
  - userRepository : userRepository
  - passwordEncoder : PasswordEncoder
  + success()
  + showList(loginUser, model)
}

class SiteUser <<Entity>> {
  + id : Long
  - username : String
  - email : String@Email
  - admin : boolean
  - role : String
  - active : boolean
}

interface SiteUserRepository <<JpaRepository>> {
	findByUsername(String)
	existsByUsername(String)
}
SecurityConfig *-- UserDetailsServiceImpl
UserDetailsServiceImpl *-- SiteUserRepository
SecurityController *-- SiteUserRepository
SiteUserRepository <|-- SiteUser

class City <<Entity>> {
  + id : Long
  - citycode : String
  - cityname : String
  - path : String
  - lng : Double
  - lat : Double
}
City .. city

interface CityRepository <<Repository>> {
	findByCitycode(String)
	deleteByCitycode(String)
}

class CityController <<Controller>> {
  - repository : CityRepository
  + showList(model)
  + addCity(city)
  + process(city, result)
  + editCity(id, model)
  + deleteCity(id)
}

interface CommandLineRunner

class DataLoader <<Component>> {
  - repository : CityRepository
  + run()
}

CityRepository <|-- City
DataLoader *-- CityRepository
CommandLineRunner <|-- DataLoader

CityController *-- CityRepository
@enduml