Newer
Older
task-bldg / class.pu
@startuml

database "h2" as db {
	entity city {
		+ id : BIGINT
		- citycode : VARCHAR 255
		cityname : VARCHAR 255
		folder : VARCHAR 255
		lng : VARCHAR 255
		lat :VARCHAR 255
	}

	entity site_user {
		+ id : BIGINT
		active : BOOLEAN
		admin : BOOLEAN
		email : VARCHAR 255
		password : VARCHAR 255
		role :VARCHAR 255
		username :VARCHAR 20
	}

	entity task {
		+ id : BIGINT
		- citycode : VARCHAR 255
		- meshcode : VARCHAR 255
		version :VARCHAR 255
		path : VARCHAR 255
		line : VARCHAR 255
		point :VARCHAR 255
	}
	task }|- city : citycode
}
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
}
SiteUser .. site_user

class UniqueLoginValidator<UniqueLogin> <<ConstraintValidator>> {
  - userRepository : SiteUserRepository
  + isValid(String, ConstraintValidatorContext) : boolean
}

class UniqueLogin <<Constraint>> {
  message() : String
  groups() : Class<?>[]
  payload() : Class<? extends Payload>[]
}

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

class City <<Entity>> {
	site : static String
  + id : Long
  + citycode : String
  - cityname : String
  - folder : String
  - lng : String
  - lat : String
  + setSite(String)
  + getSite() : String
  + setLng(BigDecimal)
  + setLat(BigDecimal)
  + setPoint(lng,lat)
  + getPoint() : Point
  + toString() : String
}
City .. city

class Point {
  - lng : Double
  - lat : Double
  + toString() : String
}
City .> Point

interface CityRepository <<JpaRepository>> {
	findByCitycode(String) : City
}
CityRepository <|-- City

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

class TaskController <<Controller>> {
  - repository : TaskRepository
  + showList(citycode, model)
}
TaskController ..> TaskRepository

interface TaskRepository <<JpaRepository>> {
	findByCitycode() : List<Task>
}
TaskRepository <|-- Task

class Task <<Entity>> {
  + id : Long
  - citycode : String
  - meshcode : String
  version : String
  path : String
  point : String
  line : String
  + setPoint(Point)
  + setLine(JsonLine)
}
Task .. task

interface CommandLineRunner

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

CommandLineRunner <|-- DataLoader

@enduml