-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMermaidClassDiagram.txt
185 lines (156 loc) · 5.76 KB
/
MermaidClassDiagram.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
---
title: Assessment System Class Diagram with Facade and Handlers
---
classDiagram
%% Drive class
class AssessmentDrive {
+int driveId
+String driveName
+List~Session~ sessions
+List~HallTicket~ hallTickets
+Date startDate
+Date endDate
}
%% Session class
class Session {
+int driveId
+Date startTime
+Date endTime
+String subject
+String center
+updateSession(sessionId)
+getSession(sessionId)
+AssessmentInboundPack aip
+AssessmentOutboundPack aop
}
class HallTicket {
+int HT_id
+String name
+int session_id
+String rollNo
+String seatNo
+updateHT(HT_id)
+getHT(HT_id)
+deleteHT(HT_id)
}
%% Corrected relationships
%% Aggregation: Session belongs to AssessmentDrive (1-to-many relationship)
AssessmentDrive o-- "*" Session: contains
%% Aggregation: HallTickets are related to Sessions (1-to-many relationship)
Session o-- "*" HallTicket: generates
%% Composition: Session requires AssessmentInboundPack and AssessmentOutboundPack for exam lifecycle (1-to-1 relationship)
Session *-- AssessmentInboundPack: has
Session *-- AssessmentOutboundPack: has
%% Aggregation: AssessmentOutboundPack contains HallTickets (1-to-many relationship)
AssessmentOutboundPack o-- "*" HallTicket : contains
%% Association: Session uses AssessmentInstrument (1-to-1 relationship)
%% Session --> AssessmentInstrument : uses
%% AssessmentOutboundPack --> AssessmentInstrument : uses
AssessmentInstrumemtManager --> AssessmentInstrument : manages
%% DriveManager class
class DriveManager {
+getInstance()$
+updateDrive(driveId)
+getDrive(driveId)
+deleteDrive(driveId)
}
DriveManager --> AssessmentDrive : manages
%% Assessment Drive Session Manager
class AssessmentDriveSessionManager {
+getInstance()$
+addSession(driveId, Session)
+generateAndAddHT(driveId, sessionId, HallTicket)
+deleteSession(driveId, sessionId)
+getAllSessions(driveId)
+generateAIPForAllSessions(driveId)
+startAssessmentForAllSessions(driveId)
+getResultForAllSessions(driveId)
}
AssessmentDriveSessionManager --> Session : manages
%% Assessment Instrument Manager
class AssessmentInstrumemtManager {
+generateAssessmentInstrument(sessionId)
}
%% Assessment Pack Manager
class AssessmentManagement {
+generateOutboundPack(Session)
+collectResponses(AssessmentOutboundPack)
}
AssessmentInstrumemtManager --> AssessmentInboundPack
%% Assessment Result Manager
class AssessmentResultManager {
+evaluateOutboundPack(AssessmentOutboundPack)
}
%% AssessmentDriveFacade class
class AssessmentDriveFacade {
+getInstance()$
+createDrive(name, startDate, endDate) : Status MetaData of Drive
+addSession(driveId, startTime, endTime, subject, center)
+getAllSessions(driveId) : List~Session~
+addHT(sessionId, name, rollNo, seatNo)
+generateAIPForAllSessions(driveId)
+startAssessmentForAllSessions(driveId)
+getResultForAllSessions(driveId)
}
AssessmentDriveFacade --> AssessmentDrive : interacts
AssessmentDriveFacade --> Session : interacts
AssessmentDriveFacade --> HallTicket : interacts
AssessmentDriveFacade --> AssessmentInboundPack : generates
AssessmentDriveFacade --> AssessmentResultManager : evaluates
AssessmentDriveFacade --> AssessmentDriveSessionManager : manages
%% Assessment Instrument
class AssessmentInstrument {
+int sessionId
+generateInstrument()
}
%% Assessment Inbound Pack
class AssessmentInboundPack {
+int sessionId
+List~HallTicket~ hallTickets
+AssessmentInstrument assessmentInstrument
}
%% Updated connections for Inbound Pack
AssessmentInboundPack --> Session : for
AssessmentInboundPack o-- "*" HallTicket : includes
AssessmentInboundPack --> AssessmentInstrument : uses
%% Assessment Handler Base Class
class AssessmentHandler {
-AssessmentHandler nextHandler
+setNextHandler(AssessmentHandler handler)
+handle(AssessmentDrive drive)
}
%% Handlers
class CreateDriveHandler {
+handle()
}
CreateDriveHandler --> AssessmentDrive : interacts
class CreateSessionHandler {
+handle(AssessmentDrive drive)
}
CreateSessionHandler --> AssessmentDrive : interacts
class AddHallTicketHandler {
+handle(AssessmentDrive drive)
}
AddHallTicketHandler --> AssessmentDrive : interacts
class GenerateInboundPackHandler {
+handle(AssessmentDrive drive)
}
GenerateInboundPackHandler --> AssessmentDriveSessionManager : interacts
class ProcessOutboundPackHandler {
+handle(AssessmentDrive drive)
}
ProcessOutboundPackHandler --> AssessmentResultManager : interacts
%% Handlers Inheritance and Chain of Responsibility
AssessmentHandler <|-- CreateDriveHandler
AssessmentHandler <|-- CreateSessionHandler
AssessmentHandler <|-- AddHallTicketHandler
AssessmentHandler <|-- GenerateInboundPackHandler
AssessmentHandler <|-- ProcessOutboundPackHandler
%% Chain of Responsibility: Handlers link to next
%% AssessmentHandler --> AssessmentHandler : nextHandler
%% Relationship between AssessmentHandler and AssessmentDrive
AssessmentHandler --> AssessmentDrive : processes
%% Relationships
AssessmentDriveFacade --> DriveManager : facadeHandles
AssessmentManagement --> Session : manages
AssessmentDriveFacade --> AssessmentResultManager : facadeHandles