aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGunther6070 <haydenhartman10@yahoo.com>2025-04-14 14:51:34 -0400
committerGunther6070 <haydenhartman10@yahoo.com>2025-04-14 14:51:34 -0400
commita99dac870391305e4b82a3674febda1fe59e5556 (patch)
tree8b1a179b80af9db7cbdd48d70e1255d8ec7ecd0a /docs
parentb39b6dcaf1f8be96bf4d354c58bd25dbc0c4ca77 (diff)
downloadJellySolutions-a99dac870391305e4b82a3674febda1fe59e5556.tar.gz
JellySolutions-a99dac870391305e4b82a3674febda1fe59e5556.tar.bz2
JellySolutions-a99dac870391305e4b82a3674febda1fe59e5556.zip
Updated UML diagram
Diffstat (limited to 'docs')
-rw-r--r--docs/u-fund.drawio.pngbin90269 -> 363762 bytes
-rw-r--r--docs/u-fund.drawio.xml321
2 files changed, 255 insertions, 66 deletions
diff --git a/docs/u-fund.drawio.png b/docs/u-fund.drawio.png
index e607a2b..e4a156a 100644
--- a/docs/u-fund.drawio.png
+++ b/docs/u-fund.drawio.png
Binary files differ
diff --git a/docs/u-fund.drawio.xml b/docs/u-fund.drawio.xml
index 97c8756..8df8497 100644
--- a/docs/u-fund.drawio.xml
+++ b/docs/u-fund.drawio.xml
@@ -1,106 +1,295 @@
<?xml version="1.0" encoding="UTF-8"?>
-<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" version="26.0.14">
- <diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
- <mxGraphModel dx="1313" dy="696" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+<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="3443" dy="1448" 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="WIyWlLk6GJQsqaUBKTNV-0" />
- <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
- <mxCell id="miN-AHw2UIRGXhX9ftvc-20" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--0" target="zkfFHV4jXpPFQw0GAbJ--13" edge="1">
- <mxGeometry relative="1" as="geometry">
+ <mxCell id="0" />
+ <mxCell id="1" parent="0" />
+ <mxCell id="node5" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;AuthController&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ AuthController(AuthService): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ login(Map&amp;lt;String, String&amp;gt;): ResponseEntity&amp;lt;String&amp;gt;&lt;br/&gt;+ logout(String): ResponseEntity&amp;lt;Object&amp;gt;&lt;/p&gt;" 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="-1898" y="952" width="342" height="129" as="geometry" />
+ </mxCell>
+ <mxCell id="node13" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;AuthService&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ AuthService(UserAuthDAO, UserService): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ login(String, String): String&lt;br/&gt;+ keyIsValid(String): void&lt;br/&gt;+ keyHasAccessToCupboard(String): void&lt;br/&gt;+ keyHasAccessToUser(String, String): void&lt;br/&gt;+ logout(String): void&lt;/p&gt;" 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="-1337" y="930" width="285" height="190" as="geometry" />
+ </mxCell>
+ <mxCell id="node12" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;CupboardController&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ CupboardController(CupboardService, AuthService): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ createNeed(Map&amp;lt;String, Object&amp;gt;, String): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;+ deleteNeed(int, String): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;- of(Object[]): Object[]&lt;br/&gt;+ getNeed(int): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;+ checkoutNeeds(List&amp;lt;Map&amp;lt;String, Integer&amp;gt;&amp;gt;, String): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;+ searchNeeds(String): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;+ updateNeed(Need, int, String): ResponseEntity&amp;lt;Object&amp;gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; needs: ResponseEntity&amp;lt;Object&amp;gt;&lt;/p&gt;" 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="-1771" y="395" width="492" height="235" as="geometry" />
+ </mxCell>
+ <mxCell id="node17" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;interface&amp;gt;&amp;gt;&lt;/i&gt;&lt;br/&gt;&lt;b&gt;CupboardDAO&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ deleteNeed(int): boolean&lt;br/&gt;+ getNeed(int): Need&lt;br/&gt;+ addNeed(Need): Need&lt;br/&gt;+ updateNeed(Need): Need&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; needs: Need[]&lt;/p&gt;" 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="-676" y="440" width="192" height="142" as="geometry" />
+ </mxCell>
+ <mxCell id="node2" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;CupboardFileDAO&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ CupboardFileDAO(String, ObjectMapper): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;- needs: Map&amp;lt;Integer, Need&amp;gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ getNeed(int): Need&lt;br/&gt;+ addNeed(Need): Need&lt;br/&gt;- save(): void&lt;br/&gt;+ deleteNeed(int): boolean&lt;br/&gt;- load(): void&lt;br/&gt;- nextId(): int&lt;br/&gt;+ updateNeed(Need): Need&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; needs: Need[]&lt;/p&gt;" 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="-342" y="383" width="286" height="267" as="geometry" />
+ </mxCell>
+ <mxCell id="node16" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;CupboardService&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ CupboardService(AuthService, CupboardDAO): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ checkoutNeed(int, double, String): void&lt;br/&gt;+ createNeed(String, String, String, double, GoalType, boolean, String): Need&lt;br/&gt;+ getNeed(int): Need&lt;br/&gt;+ deleteNeed(int): boolean&lt;br/&gt;+ searchNeeds(String): Need[]&lt;br/&gt;+ updateNeed(Need, int): Need&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; needs: Need[]&lt;/p&gt;" 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="-1185" y="406" width="415" height="210" as="geometry" />
+ </mxCell>
+ <mxCell id="node19" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br/&gt;&lt;b&gt;GoalType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ GoalType(): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ valueOf(String): GoalType&lt;br/&gt;+ values(): GoalType[]&lt;/p&gt;" 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="-598" y="-180" width="193" height="136" as="geometry" />
+ </mxCell>
+ <mxCell id="node9" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;Need&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ Need(String, String, String, double, GoalType, boolean, String): &lt;br/&gt;+ Need(Need): &lt;br/&gt;+ Need(String, String, String, int, double, GoalType, boolean, String): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;- name: String&lt;br/&gt;- type: GoalType&lt;br/&gt;- current: double&lt;br/&gt;- id: int&lt;br/&gt;- maxGoal: double&lt;br/&gt;- filterAttributes: String[]&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ toString(): String&lt;br/&gt;+ incrementCurrent(double): void&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; name: String&lt;br/&gt; id: int&lt;br/&gt; ID: int&lt;br/&gt; type: GoalType&lt;br/&gt; current: double&lt;br/&gt; maxGoal: double&lt;br/&gt; filterAttributes: String[]&lt;/p&gt;" 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="-1173.5" y="-130" width="392" height="309" as="geometry" />
+ </mxCell>
+ <mxCell id="node10" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;User&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ User(String, int, List&amp;lt;Integer&amp;gt;, UserType): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;- type: UserType&lt;br/&gt;- username: String&lt;br/&gt;- basket: List&amp;lt;Integer&amp;gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ addToBasket(Need): void&lt;br/&gt;+ withoutPasswordHash(): User&lt;br/&gt;+ verifyPassword(String): boolean&lt;br/&gt;+ create(String, String): User&lt;br/&gt;+ removeBasketNeed(Integer): void&lt;br/&gt;+ toString(): String&lt;br/&gt;+ copyPassword(User): void&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; type: UserType&lt;br/&gt; basket: Integer[]&lt;br/&gt; username: String&lt;/p&gt;" 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="-272" y="1640" width="293" height="320" as="geometry" />
+ </mxCell>
+ <mxCell id="node14" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;UserAuth&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ UserAuth(String, String, LocalDateTime): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;~ key: String&lt;br/&gt;~ username: String&lt;br/&gt;~ expiration: LocalDateTime&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ generate(String): UserAuth&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; expiration: LocalDateTime&lt;br/&gt; key: String&lt;br/&gt; username: String&lt;/p&gt;" 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="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;interface&amp;gt;&amp;gt;&lt;/i&gt;&lt;br/&gt;&lt;b&gt;UserAuthDAO&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ addUserAuth(UserAuth): void&lt;br/&gt;+ removeUserAuth(String): void&lt;br/&gt;+ getUserAuth(String): UserAuth&lt;/p&gt;" 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="-915" y="952" width="218" height="120" as="geometry" />
+ </mxCell>
+ <mxCell id="node3" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;UserAuthFIleDAO&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ UserAuthFIleDAO(ObjectMapper, String): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;- save(): void&lt;br/&gt;- load(): void&lt;br/&gt;+ addUserAuth(UserAuth): void&lt;br/&gt;+ getUserAuth(String): UserAuth&lt;br/&gt;+ removeUserAuth(String): void&lt;/p&gt;" 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="-598" y="930" width="283" height="164" as="geometry" />
+ </mxCell>
+ <mxCell id="node11" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;UserController&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ UserController(UserService, AuthService): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ deleteUser(String, String): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;+ getUserCount(String): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;+ createUser(Map&amp;lt;String, String&amp;gt;): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;- of(Object[]): Object[]&lt;br/&gt;+ getUser(String, String): ResponseEntity&amp;lt;Object&amp;gt;&lt;br/&gt;+ updateUser(User, String, String): ResponseEntity&amp;lt;Object&amp;gt;&lt;/p&gt;" 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="-1898" y="1539" width="382" height="186" as="geometry" />
+ </mxCell>
+ <mxCell id="node4" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;interface&amp;gt;&amp;gt;&lt;/i&gt;&lt;br/&gt;&lt;b&gt;UserDAO&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ updateUser(User): User&lt;br/&gt;+ deleteUser(String): boolean&lt;br/&gt;+ getUser(String): User&lt;br/&gt;+ addUser(User): User&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; users: User[]&lt;br/&gt; userCount: int&lt;/p&gt;" 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="-915" y="1557" width="203" height="150" as="geometry" />
+ </mxCell>
+ <mxCell id="node0" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;UserFileDAO&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ UserFileDAO(String, ObjectMapper): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;- users: Map&amp;lt;String, User&amp;gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ addUser(User): User&lt;br/&gt;+ deleteUser(String): boolean&lt;br/&gt;+ updateUser(User): User&lt;br/&gt;- save(): void&lt;br/&gt;+ getUser(String): User&lt;br/&gt;- load(): void&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; users: User[]&lt;br/&gt; userCount: int&lt;/p&gt;" 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="-585" y="1509" width="257" height="246" as="geometry" />
+ </mxCell>
+ <mxCell id="node8" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;UserService&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ UserService(UserDAO, CupboardService): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ updateUser(User, String): User&lt;br/&gt;+ deleteUser(String): boolean&lt;br/&gt;+ createUser(String, String): User&lt;br/&gt;+ getUser(String): User&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; userCount: int&lt;/p&gt;" 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="-1326" y="1549" width="289" height="166" as="geometry" />
+ </mxCell>
+ <mxCell id="node18" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;enumeration&amp;gt;&amp;gt;&lt;/i&gt;&lt;br/&gt;&lt;b&gt;UserType&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ UserType(): &lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt;+ valueOf(String): UserType&lt;br/&gt;+ values(): UserType[]&lt;/p&gt;" 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="120" y="1750" width="194" height="139.5" as="geometry" />
+ </mxCell>
+ <mxCell id="edge8" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.331;exitDx=0;exitDy=0;entryX=0.000;entryY=0.399;entryDx=0;entryDy=0;" parent="1" source="node5" target="node13" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-1510" y="995" />
+ <mxPoint x="-1450" y="994" />
+ <mxPoint x="-1450" y="995" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="label48" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge8" vertex="1" connectable="0">
+ <mxGeometry x="-1545" y="968" as="geometry" />
+ </mxCell>
+ <mxCell id="label52" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge8" vertex="1" connectable="0">
+ <mxGeometry x="-1360" y="990" as="geometry" />
+ </mxCell>
+ <mxCell id="edge9" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.500;exitDx=0;exitDy=0;entryX=0.000;entryY=0.500;entryDx=0;entryDy=0;" parent="1" source="node13" target="node1" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="label54" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge9" vertex="1" connectable="0">
+ <mxGeometry x="-1008" y="1000" as="geometry" />
+ </mxCell>
+ <mxCell id="label58" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge9" vertex="1" connectable="0">
+ <mxGeometry x="-931" y="985" as="geometry" />
+ </mxCell>
+ <mxCell id="edge14" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.425;exitY=1.000;exitDx=0;exitDy=0;entryX=0.382;entryY=0.000;entryDx=0;entryDy=0;" parent="1" source="node13" target="node8" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="label84" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge14" vertex="1" connectable="0">
+ <mxGeometry x="-1211" y="1090" as="geometry" />
+ </mxCell>
+ <mxCell id="label88" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge14" vertex="1" connectable="0">
+ <mxGeometry x="-1230" y="1520" as="geometry" />
+ </mxCell>
+ <mxCell id="edge18" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=1.000;exitDx=0;exitDy=0;entryX=0.342;entryY=0.000;entryDx=0;entryDy=0;" parent="1" source="node12" target="node13" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-1525" y="885" />
+ <mxPoint x="-1239" y="885" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="label108" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge18" vertex="1" connectable="0">
+ <mxGeometry x="-1525" y="632" as="geometry" />
+ </mxCell>
+ <mxCell id="label112" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge18" vertex="1" connectable="0">
+ <mxGeometry x="-1260" y="900" as="geometry" />
+ </mxCell>
+ <mxCell id="edge17" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.528;exitDx=0;exitDy=0;entryX=0.000;entryY=0.531;entryDx=0;entryDy=0;" parent="1" source="node12" target="node16" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="label102" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge17" vertex="1" connectable="0">
+ <mxGeometry x="-1270" y="502" as="geometry" />
+ </mxCell>
+ <mxCell id="label106" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge17" vertex="1" connectable="0">
+ <mxGeometry x="-1217" y="502" 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;entryX=1.000;entryY=0.500;entryDx=0;entryDy=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="zkfFHV4jXpPFQw0GAbJ--0" value="Need" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
- <mxGeometry x="212.5" y="40" width="230" height="344" as="geometry">
- <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" />
+ <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.576;entryY=1.000;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="-199" y="293" />
+ <mxPoint x="-948" y="293" />
+ </Array>
</mxGeometry>
</mxCell>
- <mxCell id="zkfFHV4jXpPFQw0GAbJ--1" value="- name : String&#xa;- attributes: String[]&#xa;- type: GoalType&#xa;- max: double&#xa;- current: double" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
- <mxGeometry y="26" width="230" height="84" as="geometry" />
+ <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.000;entryY=0.500;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="-184" y="25" />
+ <mxPoint x="-510" y="25" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="label114" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge19" vertex="1" connectable="0">
+ <mxGeometry x="-170" y="360" as="geometry" />
+ </mxCell>
+ <mxCell id="label118" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge19" vertex="1" connectable="0">
+ <mxGeometry x="-777" y="-40" as="geometry" />
+ </mxCell>
+ <mxCell id="edge22" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=1.000;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;" parent="1" source="node16" target="node13" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-978" y="773" />
+ <mxPoint x="-1194" y="773" />
+ </Array>
+ </mxGeometry>
</mxCell>
- <mxCell id="zkfFHV4jXpPFQw0GAbJ--4" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
- <mxGeometry y="110" width="230" height="4" as="geometry" />
+ <mxCell id="label132" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge22" vertex="1" connectable="0">
+ <mxGeometry x="-989" y="630" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-4" value="+Need (name: String, max: double,&amp;nbsp;&lt;div&gt;type: GoalType): void&lt;div&gt;&lt;span style=&quot;&quot;&gt;+getName(): name&lt;/span&gt;&lt;/div&gt;&lt;div&gt;+getAttributes(): attributes&lt;/div&gt;&lt;div&gt;+getType(): type&lt;/div&gt;&lt;div&gt;+getMax(): max&lt;/div&gt;&lt;div&gt;+getCurrent(): current&lt;/div&gt;&lt;div&gt;+setName(name: String): void&lt;/div&gt;&lt;div&gt;+setAttributes(attributes: String[]): void&lt;/div&gt;&lt;div&gt;+addAttribute(attribute: String)&lt;/div&gt;&lt;div&gt;-removeAttribute(attribute: String)&lt;/div&gt;&lt;div&gt;+setMax(max: double): void&lt;/div&gt;&lt;div&gt;+setCurrent(max: double): void&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
- <mxGeometry y="114" width="230" height="230" as="geometry" />
+ <mxCell id="label136" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge22" vertex="1" connectable="0">
+ <mxGeometry x="-1205" y="870" as="geometry" />
</mxCell>
- <mxCell id="zkfFHV4jXpPFQw0GAbJ--13" value="&lt;&lt;enum&gt;&gt;&#xa;GoalType" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
- <mxGeometry x="247.5" y="544" width="160" height="90" as="geometry">
- <mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds" />
+ <mxCell id="edge15" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.500;exitDx=0;exitDy=0;entryX=0.000;entryY=0.500;entryDx=0;entryDy=0;" parent="1" source="node16" target="node17" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points" />
</mxGeometry>
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-0" value="+&lt;i&gt;MONETARY&lt;/i&gt;&lt;div&gt;&lt;i&gt;+PHYSICAL&lt;/i&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="zkfFHV4jXpPFQw0GAbJ--13" vertex="1">
- <mxGeometry y="40" width="160" height="40" as="geometry" />
+ <mxCell id="label90" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge15" vertex="1" connectable="0">
+ <mxGeometry x="-760" y="511" as="geometry" />
+ </mxCell>
+ <mxCell id="label94" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge15" vertex="1" connectable="0">
+ <mxGeometry x="-703" y="491" as="geometry" />
+ </mxCell>
+ <mxCell id="edge23" 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.500;entryY=1.000;entryDx=0;entryDy=0;" parent="1" source="node16" target="node9" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points" />
+ </mxGeometry>
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-43" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="miN-AHw2UIRGXhX9ftvc-15" target="miN-AHw2UIRGXhX9ftvc-4" edge="1">
- <mxGeometry relative="1" as="geometry" />
+ <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="miN-AHw2UIRGXhX9ftvc-15" value="&lt;&lt;static&gt;&gt;&#xa;NeedsCupboard" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
- <mxGeometry x="475" y="160" width="240" height="218" as="geometry">
- <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" />
+ <mxCell id="edge24" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.998;exitY=0.533;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="node10" target="node18" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="80" y="1816" />
+ <mxPoint x="80" y="1820" />
+ </Array>
+ <mxPoint x="110" y="1823" as="targetPoint" />
</mxGeometry>
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-16" value="- needs : ArrayList&lt;Need&gt;&#xa;" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="miN-AHw2UIRGXhX9ftvc-15" vertex="1">
- <mxGeometry y="40" width="240" height="30" as="geometry" />
+ <mxCell id="label144" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge24" vertex="1" connectable="0">
+ <mxGeometry x="30" y="1820" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-17" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="miN-AHw2UIRGXhX9ftvc-15" vertex="1">
- <mxGeometry y="70" width="240" height="18" as="geometry" />
+ <mxCell id="label148" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge24" vertex="1" connectable="0">
+ <mxGeometry x="100" y="1790" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-18" value="&lt;div&gt;+getNeeds(): needs&lt;/div&gt;&lt;div&gt;+setNeeds(needs: ArrayList&amp;lt;Need): void&lt;/div&gt;&lt;div&gt;&lt;div&gt;+createNeed(name: String, max: double,&amp;nbsp;&lt;/div&gt;&lt;div&gt;type: GoalType): void&lt;/div&gt;&lt;div&gt;+removeNeed(need: Need): void&lt;/div&gt;&lt;div&gt;+updateNeed(name: String, need: Need)&lt;/div&gt;&lt;div&gt;+deleteNeed(name: String)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="miN-AHw2UIRGXhX9ftvc-15" vertex="1">
- <mxGeometry y="88" width="240" height="130" as="geometry" />
+ <mxCell id="edge21" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=1.000;exitDx=0;exitDy=0;entryX=0;entryY=0.596;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="node3" target="node14" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-457" y="1117" />
+ <mxPoint x="-310" y="1117" />
+ <mxPoint x="-310" y="1118" />
+ </Array>
+ <mxPoint x="-270" y="1120" 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="miN-AHw2UIRGXhX9ftvc-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="miN-AHw2UIRGXhX9ftvc-27" target="miN-AHw2UIRGXhX9ftvc-15" edge="1">
- <mxGeometry relative="1" as="geometry" />
+ <mxCell id="label130" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge21" vertex="1" connectable="0">
+ <mxGeometry x="-251" y="1103" 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="miN-AHw2UIRGXhX9ftvc-27" value="CupboardController&#xa;" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
- <mxGeometry x="455" y="480" width="280" height="164" as="geometry">
- <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" />
+ <mxCell id="edge7" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.987;exitY=0.000;exitDx=0;exitDy=0;entryX=0.000;entryY=0.741;entryDx=0;entryDy=0;" parent="1" source="node11" target="node13" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-1521" y="1070" />
+ <mxPoint x="-1337" y="1070" />
+ </Array>
</mxGeometry>
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-28" value="- dao: CupboardDAO&#xa;- cupboard: NeedsCupboard" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="miN-AHw2UIRGXhX9ftvc-27" vertex="1">
- <mxGeometry y="26" width="280" height="34" as="geometry" />
+ <mxCell id="label42" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge7" vertex="1" connectable="0">
+ <mxGeometry x="-1532" y="1510" as="geometry" />
+ </mxCell>
+ <mxCell id="label46" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge7" vertex="1" connectable="0">
+ <mxGeometry x="-1360" y="1060" as="geometry" />
+ </mxCell>
+ <mxCell id="edge13" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.515;exitDx=0;exitDy=0;" parent="1" source="node11" target="node8" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-1370" y="1635" />
+ <mxPoint x="-1370" y="1635" />
+ </Array>
+ </mxGeometry>
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-29" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="miN-AHw2UIRGXhX9ftvc-27" vertex="1">
- <mxGeometry y="60" width="280" height="4" as="geometry" />
+ <mxCell id="label78" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge13" vertex="1" connectable="0">
+ <mxGeometry x="-1495" y="1614" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-30" value="+CupboardController(dao: CupboardDAO): void&lt;div&gt;+createNeed(name: String, max: double,&amp;nbsp;&lt;/div&gt;&lt;div&gt;type: GoalType): void&lt;/div&gt;&lt;div&gt;+removeNeed(need: Need): void&lt;/div&gt;&lt;div&gt;+updateNeed(name: String, need: Need)&lt;/div&gt;&lt;div&gt;+deleteNeed(name: String)&amp;nbsp;&lt;/div&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="miN-AHw2UIRGXhX9ftvc-27" vertex="1">
- <mxGeometry y="64" width="280" height="100" as="geometry" />
+ <mxCell id="label82" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge13" vertex="1" connectable="0">
+ <mxGeometry x="-1363" y="1636" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-31" value="&lt;&lt;interface&gt;&gt;&#xa;CupboardDAO" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
- <mxGeometry x="790" y="480" width="230" height="154" as="geometry">
- <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" />
+ <mxCell id="edge6" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=1.000;exitDx=0;exitDy=0;entryX=0.005;entryY=0.466;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="node0" target="node10" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-456" y="1790" />
+ <mxPoint x="-440" y="1790" />
+ </Array>
</mxGeometry>
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-32" value="- needs: ArrayList&lt;Need&gt;" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="miN-AHw2UIRGXhX9ftvc-31" vertex="1">
- <mxGeometry y="40" width="230" height="34" as="geometry" />
+ <mxCell id="label36" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge6" vertex="1" connectable="0">
+ <mxGeometry x="-470" y="1760" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-33" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="miN-AHw2UIRGXhX9ftvc-31" vertex="1">
- <mxGeometry y="74" width="230" height="4" as="geometry" />
+ <mxCell id="label40" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge6" vertex="1" connectable="0">
+ <mxGeometry x="-290" y="1770" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-34" value="+CupboardController(): void&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="miN-AHw2UIRGXhX9ftvc-31" vertex="1">
- <mxGeometry y="78" width="230" height="40" as="geometry" />
+ <mxCell id="label41" value="" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge6" vertex="1" connectable="0">
+ <mxGeometry x="-367" y="1797" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-39" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=block;endFill=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="miN-AHw2UIRGXhX9ftvc-35" target="miN-AHw2UIRGXhX9ftvc-31" edge="1">
- <mxGeometry relative="1" as="geometry">
- <mxPoint x="900" y="630" as="targetPoint" />
+ <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>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-35" value="CupboardFileDAO" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
- <mxGeometry x="780" y="680" width="250" height="154" as="geometry">
- <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" />
+ <mxCell id="edge12" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=0.000;exitDx=0;exitDy=0;entryX=0.536;entryY=1.000;entryDx=0;entryDy=0;" parent="1" source="node8" target="node16" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="-1181" y="1286" />
+ <mxPoint x="-963" y="1286" />
+ </Array>
</mxGeometry>
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-36" value="- needs: ArrayList&lt;Need&gt;&#xa;-filepath: String" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="miN-AHw2UIRGXhX9ftvc-35" vertex="1">
- <mxGeometry y="30" width="250" height="34" as="geometry" />
+ <mxCell id="label72" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge12" vertex="1" connectable="0">
+ <mxGeometry x="-1192" y="1524" as="geometry" />
+ </mxCell>
+ <mxCell id="label76" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge12" vertex="1" connectable="0">
+ <mxGeometry x="-950" y="621" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-37" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="miN-AHw2UIRGXhX9ftvc-35" vertex="1">
- <mxGeometry y="64" width="250" height="4" as="geometry" />
+ <mxCell id="edge20" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="node8" target="node4" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <Array as="points" />
+ </mxGeometry>
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-38" value="+CupboardController(filepath: String): void&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="miN-AHw2UIRGXhX9ftvc-35" vertex="1">
- <mxGeometry y="68" width="250" height="40" as="geometry" />
+ <mxCell id="label120" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge20" vertex="1" connectable="0">
+ <mxGeometry x="-1030" y="1630" as="geometry" />
</mxCell>
- <mxCell id="miN-AHw2UIRGXhX9ftvc-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.003;entryY=0.096;entryDx=0;entryDy=0;entryPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="miN-AHw2UIRGXhX9ftvc-27" target="miN-AHw2UIRGXhX9ftvc-34" edge="1">
- <mxGeometry relative="1" as="geometry" />
+ <mxCell id="label124" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;" parent="edge20" vertex="1" connectable="0">
+ <mxGeometry x="-940" y="1610" as="geometry" />
</mxCell>
</root>
</mxGraphModel>