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
|
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
<diagram id="WOSjVCChJG0uuKkKcy1j" name="Page-1">
<mxGraphModel dx="3484" dy="1652" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="node17" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;interface&gt;&gt;</i><br/><b>CupboardDAO</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ deleteNeed(int): boolean<br/>+ getNeed(int): Need<br/>+ addNeed(Need): Need<br/>+ updateNeed(Need): Need</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;"> needs: Need[]</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-750" y="750" width="192" height="142" as="geometry" />
</mxCell>
<mxCell id="node2" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>CupboardFileDAO</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ CupboardFileDAO(String, ObjectMapper): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- needs: Map&lt;Integer, Need&gt;</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ getNeed(int): Need<br/>+ addNeed(Need): Need<br/>- save(): void<br/>+ deleteNeed(int): boolean<br/>- load(): void<br/>- nextId(): int<br/>+ updateNeed(Need): Need</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;"> needs: Need[]</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-472" y="687.5" width="286" height="267" as="geometry" />
</mxCell>
<mxCell id="node19" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;enumeration&gt;&gt;</i><br/><b>GoalType</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ GoalType(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ valueOf(String): GoalType<br/>+ values(): GoalType[]</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-401.5" y="190" width="193" height="136" as="geometry" />
</mxCell>
<mxCell id="node9" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Need</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ Need(String, String, String, double, GoalType, boolean, String): <br/>+ Need(Need): <br/>+ Need(String, String, String, int, double, GoalType, boolean, String): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- name: String<br/>- type: GoalType<br/>- current: double<br/>- id: int<br/>- maxGoal: double<br/>- filterAttributes: String[]</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ toString(): String<br/>+ incrementCurrent(double): void</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;"> name: String<br/> id: int<br/> ID: int<br/> type: GoalType<br/> current: double<br/> maxGoal: double<br/> filterAttributes: String[]</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-880" y="180" width="392" height="309" as="geometry" />
</mxCell>
<mxCell id="node10" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>User</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ User(String, int, List&lt;Integer&gt;, UserType): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- type: UserType<br/>- username: String<br/>- basket: List&lt;Integer&gt;</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ addToBasket(Need): void<br/>+ withoutPasswordHash(): User<br/>+ verifyPassword(String): boolean<br/>+ create(String, String): User<br/>+ removeBasketNeed(Integer): void<br/>+ toString(): String<br/>+ copyPassword(User): void</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;"> type: UserType<br/> basket: Integer[]<br/> username: String</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-410.5" y="1310" width="293" height="320" as="geometry" />
</mxCell>
<mxCell id="node14" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>UserAuth</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ UserAuth(String, String, LocalDateTime): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">~ key: String<br/>~ username: String<br/>~ expiration: LocalDateTime</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ generate(String): UserAuth</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;"> expiration: LocalDateTime<br/> key: String<br/> username: String</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-237" y="1011" width="282" height="179" as="geometry" />
</mxCell>
<mxCell id="node1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;interface&gt;&gt;</i><br/><b>UserAuthDAO</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ addUserAuth(UserAuth): void<br/>+ removeUserAuth(String): void<br/>+ getUserAuth(String): UserAuth</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-930" y="1040.5" width="218" height="120" as="geometry" />
</mxCell>
<mxCell id="node3" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>UserAuthFIleDAO</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ UserAuthFIleDAO(ObjectMapper, String): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- save(): void<br/>- load(): void<br/>+ addUserAuth(UserAuth): void<br/>+ getUserAuth(String): UserAuth<br/>+ removeUserAuth(String): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-650" y="1018.5" width="283" height="164" as="geometry" />
</mxCell>
<mxCell id="node4" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;interface&gt;&gt;</i><br/><b>UserDAO</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ updateUser(User): User<br/>+ deleteUser(String): boolean<br/>+ getUser(String): User<br/>+ addUser(User): User</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;"> users: User[]<br/> userCount: int</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-1070" y="1387" width="203" height="150" as="geometry" />
</mxCell>
<mxCell id="node0" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>UserFileDAO</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ UserFileDAO(String, ObjectMapper): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- users: Map&lt;String, User&gt;</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ addUser(User): User<br/>+ deleteUser(String): boolean<br/>+ updateUser(User): User<br/>- save(): void<br/>+ getUser(String): User<br/>- load(): void</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;"> users: User[]<br/> userCount: int</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-770" y="1339" width="257" height="246" as="geometry" />
</mxCell>
<mxCell id="node18" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;enumeration&gt;&gt;</i><br/><b>UserType</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ UserType(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ valueOf(String): UserType<br/>+ values(): UserType[]</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="1.5" y="1400.25" width="194" height="139.5" as="geometry" />
</mxCell>
<mxCell id="edge0" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=block;endSize=12;exitX=0.000;exitY=0.500;exitDx=0;exitDy=0;" parent="1" source="node2" target="node17" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge5" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=0.000;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" parent="1" source="node2" target="node9" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-329" y="603" />
<mxPoint x="-586" y="603" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge19" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThin;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.552;exitY=0.000;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;jumpStyle=none;startFill=1;" parent="1" source="node2" target="node9" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-314" y="412" />
<mxPoint x="-350" y="412" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge16" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.319;exitDx=0;exitDy=0;entryX=0.000;entryY=0.653;entryDx=0;entryDy=0;" parent="1" source="node9" target="node19" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge24" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;" parent="1" source="node10" target="node18" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
<mxPoint x="-78.5" y="1380" as="sourcePoint" />
<mxPoint x="-28.5" y="1440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="edge21" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThin;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1;exitY=0.5;exitDx=0;exitDy=0;startFill=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="node3" target="node14" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-350" y="1100" />
</Array>
<mxPoint x="-290" y="1080" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="label126" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge21" vertex="1" connectable="0">
<mxGeometry x="-456" y="1091" as="geometry" />
</mxCell>
<mxCell id="edge2" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=block;endSize=12;exitX=0.000;exitY=0.500;exitDx=0;exitDy=0;entryX=1.000;entryY=0.500;entryDx=0;entryDy=0;jumpStyle=none;" parent="1" source="node3" target="node1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="edge6" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThin;endArrow=openThin;endSize=12;strokeColor=#595959;entryX=0.005;entryY=0.466;entryDx=0;entryDy=0;entryPerimeter=0;startFill=1;exitX=1;exitY=0.488;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="node0" target="node10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
<mxPoint x="-490" y="1459" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="edge1" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=block;endSize=12;exitX=0.000;exitY=0.500;exitDx=0;exitDy=0;entryX=1.000;entryY=0.500;entryDx=0;entryDy=0;" parent="1" source="node0" target="node4" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
|