-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathUML.drawio
More file actions
399 lines (399 loc) · 46.4 KB
/
UML.drawio
File metadata and controls
399 lines (399 loc) · 46.4 KB
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" version="25.0.1">
<diagram name="Page-1" id="929SCKhKKsylv1Zycl4_">
<mxGraphModel dx="4198" dy="2504" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-1" value="Staff &lt;&lt;abstract&gt;&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="900" y="280" width="200" height="320" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-2" value="#id: int<br><div><span style="background-color: initial;">#</span>name: String</div><div>-startTime: LocalDate</div><div>-password: String</div><div><span style="background-color: initial;">#</span>scalePoint: int</div><div><span style="background-color: initial;">#</span>title: String</div><div>-payslips: ArrayList&lt;Payslip&gt;</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-1" vertex="1">
<mxGeometry y="26" width="200" height="124" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-3" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-1" vertex="1">
<mxGeometry y="150" width="200" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-4" value="+addPayslip(Payslip): void<div>+getPassword(): String</div><div>+getName(): String</div><div>+getScalePoint(): int</div><div>+authenticate(String): boolean</div><div>+getId(): int</div><div>+viewPayslips(): void</div><div>+getTitle(): String</div><div>+updateScalePoint(): boolean</div><div>+toString(): String</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-1" vertex="1">
<mxGeometry y="158" width="200" height="162" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-5" value="PayrollSystem" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="850" y="730" width="290" height="260" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-6" value="-payClaims: HashMap&lt;Integer, Double&gt;<div><u>-PRSI_RATE: double</u></div><div><u>-LOWER_RATE: double</u></div><div><u>-UPPER_RATE: double</u></div><div><u>-HEALTH_INSURANCE_FEE: double</u></div><div><u>-UNION_FEE: double</u></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-5" vertex="1">
<mxGeometry y="26" width="290" height="94" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-5" vertex="1">
<mxGeometry y="120" width="290" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-8" value="-calculateTax(double): double<div>-savePayslipToCSV(ArratList&lt;Payslip&gt;): void</div><div>+addPayClaim(int, double): boolean</div><div>-calculateUSCRate(double): double</div><div>clearPayClaims(): void</div><div>+generateAndPrintPayslips(): void</div><div>+generateMonthlyPayslips(): ArrayList&lt;Payslip&gt;</div><div>+generatePayslipForEmployee(Staff): Payslip</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-5" vertex="1">
<mxGeometry y="128" width="290" height="132" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-9" value="StaffLoader" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="110" y="-40" width="280" height="60" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-11" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-9" vertex="1">
<mxGeometry y="26" width="280" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-12" value="<meta charset="utf-8"><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(251, 251, 251); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">+addRandomStaffFromDatabase(String, int): void</span>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-9" vertex="1">
<mxGeometry y="34" width="280" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-17" value="LoginController &lt;&lt;controller&gt;&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-240" y="-240" width="260" height="220" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-18" value="-passwordField: PasswordField<div>-roleComboBox: ComboBox&lt;String&gt;</div><div>-usernameField: TextField</div><div>-loginButton: Button</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-17" vertex="1">
<mxGeometry y="26" width="260" height="64" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-19" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-17" vertex="1">
<mxGeometry y="90" width="260" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-20" value="-authenticate(String, String, String): boolean<div>+initialize(): void</div><div>-navigateToAdminMenu(): void</div><div>-onRoleSelected(): void</div><div>-handleLogin(): void</div><div>-showAlert(String, String, AlertType): vouid</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-17" vertex="1">
<mxGeometry y="98" width="260" height="122" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-21" value="FullTimeEmployee" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="1240" y="461" width="260" height="220" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-22" value="-salary: double<div>-topScaleStartTime: LocalDateTime</div><div>-category: String</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-21" vertex="1">
<mxGeometry y="26" width="260" height="64" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-23" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-21" vertex="1">
<mxGeometry y="90" width="260" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-24" value="+getYearsAtTop(): long<div>+checkTopScale(): void</div><div>+getSalary(): double</div><div>+getCategory(): String</div><div>+updateScalePoint(): boolean</div><div>+promoteToNewTitle(String): void</div><div>+toString(): String</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-21" vertex="1">
<mxGeometry y="98" width="260" height="122" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-25" value="PartTimeEmployee" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="1270" y="295" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-26" value="-payRate: double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-25" vertex="1">
<mxGeometry y="26" width="180" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-27" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-25" vertex="1">
<mxGeometry y="52" width="180" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-28" value="+toString(): String<div>+getPay(double): double</div><div>+updateScalePoint(): boolean</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-25" vertex="1">
<mxGeometry y="60" width="180" height="60" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-29" value="Payslip" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="1240" y="750" width="220" height="290" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-30" value="-name: String<div>-payPeriod: String</div><div>-grossPay: double</div><div>-id: int</div><div>-netPay: double</div><div>-tax: double</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-29" vertex="1">
<mxGeometry y="26" width="220" height="104" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-31" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-29" vertex="1">
<mxGeometry y="130" width="220" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-32" value="+getTax(): double<div>+getName(): String</div><div>+getNetPay(): double</div><div>+getPayPeriod(): String</div><div>+getId(): int</div><div>+getGrossPay(): double</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-29" vertex="1">
<mxGeometry y="138" width="220" height="152" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-33" value="TestRunner" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="490" y="900" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-35" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-33" vertex="1">
<mxGeometry y="26" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-36" value="+main(String[]): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-33" vertex="1">
<mxGeometry y="34" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-37" value="GUI" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="160" y="-170" width="160" height="80" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-39" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-37" vertex="1">
<mxGeometry y="26" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-40" value="+start(Stage): void<div>+main(Sting[]): void</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-37" vertex="1">
<mxGeometry y="34" width="160" height="46" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-41" value="StaffContainer" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="490" width="210" height="160" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-42" value="<u>-staffMap: HashMap&lt;integer, Staff&gt;</u>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-41" vertex="1">
<mxGeometry y="26" width="210" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-43" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-41" vertex="1">
<mxGeometry y="52" width="210" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-44" value="<u>+add(Staff): boolean</u><div><u>getAllStaff(): Collection&lt;Staff&gt;</u></div><div><u>isEmpty(): Collcetion&lt;Staff&gt;</u></div><div><u>clearAllStaff(): void</u></div><div><u>listAllStaff(): void</u></div><div><u>getStaffById(int): Staff</u></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-41" vertex="1">
<mxGeometry y="60" width="210" height="100" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-45" value="RunCLI" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-240" y="300" width="160" height="86" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-46" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-45" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-47" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-45" vertex="1">
<mxGeometry y="52" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-48" value="+main(String[]): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-45" vertex="1">
<mxGeometry y="60" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-49" value="ScaleLoader &lt;&lt;utility&gt;&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="990" y="-400" width="260" height="240" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-50" value="<u>-titleCategory: HashMap&lt;String, String&gt;</u><div><u>-titleScalePoints: HashMap&lt;String, Integer&gt;</u></div><div><u>-payGrades: Hashmap&lt;String,Double&gt;</u></div><div><u>-categories: ArrayList&lt;String&gt;</u></div><div><u>-titles: ArrayList&lt;String&gt;</u></div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-49" vertex="1">
<mxGeometry y="26" width="260" height="84" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-51" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-49" vertex="1">
<mxGeometry y="110" width="260" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-52" value="<u>+getCategoryFromTitle(String): String</u><div><u>+loadScales(String): void</u></div><div><u>+validTitle(String): boolean</u></div><div><u>+getMaxScalePoints(String): int</u></div><div><u>+getPay(String, String, String): double</u></div><div><u>-generateKey(String, String, String): String</u></div><div><u>+validCategory(String): boolean<br></u><div><br></div></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-49" vertex="1">
<mxGeometry y="118" width="260" height="122" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-53" value="EmployeeLoader" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="120" y="80" width="220" height="80" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-55" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-53" vertex="1">
<mxGeometry y="26" width="220" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-56" value="-parseEmplyee(String): void<div>+loadEmployeesFromFile(String): void</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-53" vertex="1">
<mxGeometry y="34" width="220" height="46" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-57" value="Admin" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="390" y="240" width="200" height="150" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-58" value="-in: Scanner" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-57" vertex="1">
<mxGeometry y="26" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-59" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-57" vertex="1">
<mxGeometry y="52" width="200" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-60" value="+viewStaff(): void<div>-saveAllStaffToCSV(): void</div><div>+addStaff(): void</div><div>+readInt(String): int</div><div>-readString(String): String</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-57" vertex="1">
<mxGeometry y="60" width="200" height="90" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-61" value="CLI" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry y="310" width="230" height="270" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-62" value="-payrollSystem: PayrollSystem<div>-ADMIN_PASSWORD: String</div><div>-in: Scanner</div><div>-HR_PASSWORD: String</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-61" vertex="1">
<mxGeometry y="26" width="230" height="84" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-63" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-61" vertex="1">
<mxGeometry y="110" width="230" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-64" value="-authenticateHR(): boolean<div>-runHRCLI(HR): void</div><div>-readDouble(): double</div><div>-authenticateAndRunEmployee(): void</div><div>-submitPayClaim(Employee(): void</div><div>+run(): void</div><div>-authenticateAdmin(): boolean</div><div>-runAdminCLI(Admin): void</div><div>-runEmployeeCLI(Employee): void</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-61" vertex="1">
<mxGeometry y="118" width="230" height="152" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-65" value="Employee" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="400" y="650" width="130" height="120" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-66" value="-staff: Staff" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-65" vertex="1">
<mxGeometry y="26" width="130" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-67" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-65" vertex="1">
<mxGeometry y="52" width="130" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-68" value="+viewDetails(): void<div>+viewPayslips(): void</div><div>+getStaff(): Staff</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-65" vertex="1">
<mxGeometry y="60" width="130" height="60" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-69" value="HR" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="390" y="435" width="350" height="170" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-70" value="-in: Scanner" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-69" vertex="1">
<mxGeometry y="26" width="350" height="26" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-71" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="IXJ_qa6kE7nfNeEWYA2u-69" vertex="1">
<mxGeometry y="52" width="350" height="8" as="geometry" />
</mxCell>
<mxCell id="IXJ_qa6kE7nfNeEWYA2u-72" value="+annualPromotion(): void<div>+promoteToNextSalaryScale(): void</div><div>-calculateNewScalePoint(FullTimeEmployee): int</div><div>-readInt(): int</div><div>+promoteToNextScalePoint(): void</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="IXJ_qa6kE7nfNeEWYA2u-69" vertex="1">
<mxGeometry y="60" width="350" height="110" as="geometry" />
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-1" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" target="IXJ_qa6kE7nfNeEWYA2u-37">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="20" y="-150" as="sourcePoint" />
<mxPoint x="241" y="-84" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-3" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0;entryY=-0.048;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="IXJ_qa6kE7nfNeEWYA2u-62">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="-80" y="332" as="sourcePoint" />
<mxPoint x="650" y="-100" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-4" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-26" target="IXJ_qa6kE7nfNeEWYA2u-2">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1344" y="585" as="sourcePoint" />
<mxPoint x="1320" y="495" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-5" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-22" target="IXJ_qa6kE7nfNeEWYA2u-4">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1980" y="580" as="sourcePoint" />
<mxPoint x="2140" y="580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-8" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-9" target="IXJ_qa6kE7nfNeEWYA2u-25">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="580" y="500" as="sourcePoint" />
<mxPoint x="610" y="-200" as="targetPoint" />
<Array as="points">
<mxPoint x="910" y="-40" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-9" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="IXJ_qa6kE7nfNeEWYA2u-21">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="390" y="-25" as="sourcePoint" />
<mxPoint x="1360" y="310" as="targetPoint" />
<Array as="points">
<mxPoint x="910" y="-25" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-10" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-53" target="IXJ_qa6kE7nfNeEWYA2u-25">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="500" y="-70" as="sourcePoint" />
<mxPoint x="1370" y="265" as="targetPoint" />
<Array as="points">
<mxPoint x="560" y="-130" />
<mxPoint x="940" y="-140" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-11" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.08;entryY=0.006;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-53" target="IXJ_qa6kE7nfNeEWYA2u-21">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="350" y="90" as="sourcePoint" />
<mxPoint x="1200" y="450" as="targetPoint" />
<Array as="points">
<mxPoint x="570" y="-110" />
<mxPoint x="930" y="-120" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-12" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-33" target="IXJ_qa6kE7nfNeEWYA2u-6">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="720" y="400" as="sourcePoint" />
<mxPoint x="770" y="828" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-13" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.513;exitY=0.981;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.882;entryY=0.022;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-52" target="IXJ_qa6kE7nfNeEWYA2u-25">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="940" y="180" as="sourcePoint" />
<mxPoint x="1100" y="180" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-14" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.513;exitY=0.981;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1080" y="-160" as="sourcePoint" />
<mxPoint x="1281" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-15" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=-0.002;entryY=0.991;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-5" target="IXJ_qa6kE7nfNeEWYA2u-4">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="740" y="480" as="sourcePoint" />
<mxPoint x="900" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-16" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=-0.013;entryY=0.967;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="IXJ_qa6kE7nfNeEWYA2u-24">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1090" y="731" as="sourcePoint" />
<mxPoint x="1140" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-17" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="IXJ_qa6kE7nfNeEWYA2u-28">
<mxGeometry width="160" relative="1" as="geometry">
<mxPoint x="1046.5" y="730" as="sourcePoint" />
<mxPoint x="1193.5" y="676" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-21" value="Has" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;rounded=0;entryX=0.501;entryY=1.008;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-29" target="IXJ_qa6kE7nfNeEWYA2u-4">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1230" y="790" as="sourcePoint" />
<mxPoint x="900" y="500" as="targetPoint" />
<Array as="points">
<mxPoint x="1240" y="710" />
<mxPoint x="1230" y="710" />
<mxPoint x="1230" y="690" />
<mxPoint x="1000" y="690" />
<mxPoint x="1000" y="601" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-22" value="0..n" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-21">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" y="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-23" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-21">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-25" value="Relation" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.995;entryY=0.079;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-4" target="IXJ_qa6kE7nfNeEWYA2u-41">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1100" y="570" as="sourcePoint" />
<mxPoint x="770" y="650" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-26" value="0..n" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-25">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-27" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-25">
<mxGeometry x="1" relative="1" as="geometry" />
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-28" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-66" target="IXJ_qa6kE7nfNeEWYA2u-2">
<mxGeometry x="-1" y="3" relative="1" as="geometry">
<mxPoint x="540" y="390" as="sourcePoint" />
<mxPoint x="700" y="390" as="targetPoint" />
<Array as="points">
<mxPoint x="770" y="689" />
<mxPoint x="770" y="368" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-29" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" connectable="0" vertex="1" parent="1">
<mxGeometry x="889.9953468325106" y="343.0010019245979" as="geometry" />
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-30" value="Logs In" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-60" target="IXJ_qa6kE7nfNeEWYA2u-62">
<mxGeometry relative="1" as="geometry">
<mxPoint x="380" y="330" as="sourcePoint" />
<mxPoint x="700" y="430" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-31" value="0..1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-30">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-32" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-30">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-33" value="Logs In" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=-0.002;exitY=0.1;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-69" target="IXJ_qa6kE7nfNeEWYA2u-64">
<mxGeometry relative="1" as="geometry">
<mxPoint x="420" y="490" as="sourcePoint" />
<mxPoint x="260" y="523" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-34" value="0..1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-33">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-35" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-33">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-39" value="Logs In" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;rounded=0;entryX=0.993;entryY=0.778;entryDx=0;entryDy=0;exitX=-0.001;exitY=0.175;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="IXJ_qa6kE7nfNeEWYA2u-65" target="IXJ_qa6kE7nfNeEWYA2u-64">
<mxGeometry x="-0.0003" relative="1" as="geometry">
<mxPoint x="400" y="610" as="sourcePoint" />
<mxPoint x="241" y="662" as="targetPoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-40" value="0..1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-39">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="R9C3XkqF4k_-CGbuo9TI-41" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" connectable="0" vertex="1" parent="R9C3XkqF4k_-CGbuo9TI-39">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="10" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>