Skip to content

Commit 75d1d49

Browse files
committed
Adding UML class diagram
1 parent 1f25d6b commit 75d1d49

File tree

4 files changed

+137
-155
lines changed

4 files changed

+137
-155
lines changed

examples/spring-boot-demo/.cursor/rules/2101-implement-task-list.mdc

Lines changed: 0 additions & 38 deletions
This file was deleted.

examples/spring-boot-demo/.cursor/rules/2200-uml-class-diagram.mdc

Lines changed: 0 additions & 117 deletions
This file was deleted.
269 KB
Loading
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
@startuml Film_Query_Service_Class_Diagram
2+
!theme plain
3+
skinparam classAttributeIconSize 0
4+
skinparam classFontStyle bold
5+
skinparam packageStyle rectangle
6+
7+
title Film Query Service - Class Diagram
8+
9+
' Package declarations
10+
package "info.jab.ms" {
11+
class MainApplication {
12+
+ main(args: String[]) : void
13+
}
14+
}
15+
16+
package "info.jab.ms.config" {
17+
class OpenApiConfig {
18+
+ filmQueryOpenAPI() : OpenAPI
19+
}
20+
}
21+
22+
package "info.jab.ms.controller" {
23+
interface FilmControllerApi {
24+
+ getFilms(startsWith: String) : ResponseEntity<FilmDTO>
25+
}
26+
27+
class FilmController {
28+
- filmService : FilmService
29+
--
30+
+ FilmController(filmService: FilmService)
31+
+ getFilms(startsWith: String) : ResponseEntity<FilmDTO>
32+
- isValidStartsWithParameter(startsWith: String) : boolean
33+
}
34+
35+
class FilmDTO {
36+
+ films : List<Film>
37+
+ count : int
38+
+ filter : Map<String, Object>
39+
--
40+
+ fromEntities(entities: List<Film>, filterMap: Map<String, Object>) : FilmDTO
41+
+ fromMaps(filmMaps: List<Map<String, Object>>, filterMap: Map<String, Object>) : FilmDTO
42+
}
43+
44+
class "FilmDTO.Film" as FilmDTOFilm {
45+
+ filmId : Integer
46+
+ title : String
47+
--
48+
+ fromEntity(entity: Film) : Film
49+
+ toMap() : Map<String, Object>
50+
}
51+
52+
class GlobalExceptionHandler {
53+
- logger : Logger
54+
--
55+
+ handleRuntimeException(ex: RuntimeException, request: HttpServletRequest) : ResponseEntity<ProblemDetail>
56+
+ handleGenericException(ex: Exception, request: HttpServletRequest) : ResponseEntity<ProblemDetail>
57+
}
58+
}
59+
60+
package "info.jab.ms.service" {
61+
class FilmService {
62+
- logger : Logger
63+
- filmRepository : FilmRepository
64+
--
65+
+ FilmService(filmRepository: FilmRepository)
66+
+ findFilmEntitiesByStartingLetter(letter: String) : List<Film>
67+
}
68+
}
69+
70+
package "info.jab.ms.repository" {
71+
class Film {
72+
+ filmId : Integer
73+
+ title : String
74+
}
75+
76+
interface FilmRepository {
77+
+ findByTitleStartingWith(prefix: String) : List<Film>
78+
+ findAllOrderByTitle() : List<Film>
79+
}
80+
}
81+
82+
package "External Dependencies" {
83+
class ResponseEntity<T> <<Spring>> {
84+
}
85+
86+
class ProblemDetail <<Spring>> {
87+
}
88+
89+
interface ListCrudRepository<T,ID> <<Spring Data>> {
90+
}
91+
92+
class SpringApplication <<Spring Boot>> {
93+
}
94+
95+
class OpenAPI <<SpringDoc>> {
96+
}
97+
}
98+
99+
' Relationships
100+
FilmController ..|> FilmControllerApi : implements
101+
FilmController --> FilmService : uses
102+
FilmController --> FilmDTO : creates
103+
FilmService --> FilmRepository : uses
104+
FilmService --> Film : returns
105+
FilmRepository --|> ListCrudRepository : extends
106+
FilmRepository --> Film : manages
107+
FilmDTO *-- FilmDTOFilm : contains
108+
FilmDTOFilm ..> Film : converts from
109+
MainApplication --> SpringApplication : uses
110+
OpenApiConfig --> OpenAPI : creates
111+
GlobalExceptionHandler --> ProblemDetail : creates
112+
113+
' Annotations and Stereotypes
114+
note right of MainApplication : @SpringBootApplication\nApplication Entry Point
115+
note right of OpenApiConfig : @Configuration\n@Bean
116+
note right of FilmController : @RestController\n@RequestMapping("/api/v1")
117+
note right of FilmService : @Service\nBusiness Logic Layer
118+
note right of FilmRepository : @Repository\nData Access Layer
119+
note right of GlobalExceptionHandler : @ControllerAdvice\nCentralized Exception Handling
120+
note right of Film : @Table("film")\n@Id, @Column annotations
121+
note right of FilmDTO : Record class\nData Transfer Object
122+
123+
' Design Pattern Notes
124+
note top of FilmControllerApi : "API Contract Pattern\nSeparates interface from implementation"
125+
note bottom of FilmService : "Service Layer Pattern\nContains business logic"
126+
note bottom of FilmRepository : "Repository Pattern\nData access abstraction"
127+
128+
' Architectural Layers
129+
note as N1
130+
**Layered Architecture**
131+
- Controller Layer: REST endpoints
132+
- Service Layer: Business logic
133+
- Repository Layer: Data access
134+
- Entity Layer: Data models
135+
end note
136+
137+
@enduml

0 commit comments

Comments
 (0)