diff --git a/UML/TastyPages_Use-case2.drawio b/UML/TastyPages_Use-case2.drawio new file mode 100644 index 0000000000000000000000000000000000000000..197917c6f964a188e5bdfe42ff9c8cee1b4d059c --- /dev/null +++ b/UML/TastyPages_Use-case2.drawio @@ -0,0 +1,678 @@ +<mxfile host="app.diagrams.net" modified="2023-06-18T09:59:59.826Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/112.0" etag="smi5SC4cGYGCGu5nAbjP" version="21.4.0" type="device" pages="2"> + <diagram name="Seite-1" id="guNTSU0fiwR1g74g93dq"> + <mxGraphModel dx="889" dy="1468" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-5" value="&nbsp; &lt;subsystem&gt; <b>Recipes</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"> + <mxGeometry x="220" y="-290" width="630" height="570" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-14" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="230" y="-70" width="610" height="130" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-13" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="230" y="-265" width="610" height="185" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-14" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.003;entryY=0.407;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="4oh4sVMnw9r_FDRqXWCS-13" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="60" y="450" as="sourcePoint" /> + <mxPoint x="216" y="341" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-1" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> + <mxGeometry x="30" y="420" width="30" height="60" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-11" value="&nbsp; &lt;subsystem&gt; <b>Shopping List</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"> + <mxGeometry x="220" y="570" width="630" height="140" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-13" value="&nbsp; &lt;subsystem&gt; <b>Ingredients</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"> + <mxGeometry x="220" y="330" width="630" height="180" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-15" value="&nbsp; &lt;subsystem&gt; <b>Meal Plan</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"> + <mxGeometry x="220" y="760" width="630" height="183" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-17" value="add recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="-240" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-18" value="select components" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="440" y="-215" width="140" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-24" value="Name the recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="440" y="-250" width="140" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-29" value="add preparpation steps" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="440" y="-180" width="140" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-32" value="select categories" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="440" y="-150" width="140" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-34" value="add picture" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="440" y="-120" width="140" height="22.5" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-37" value="delete recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="-200" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-40" value="edit recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="-160" width="120" height="25" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-45" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-44" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="450" y="215" /> + <mxPoint x="450" y="180" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-47" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-46" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-50" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-49" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="450" y="215" /> + <mxPoint x="450" y="250" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-59" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-50" vertex="1" connectable="0"> + <mxGeometry x="-0.5962" y="-1" relative="1" as="geometry"> + <mxPoint y="9" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-53" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="310" y="270" /> + <mxPoint x="760" y="270" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-43" value="browse recipes" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="250" y="200" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-44" value="full text search" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="490" y="170" width="120" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-46" target="4oh4sVMnw9r_FDRqXWCS-44" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="630" y="215" /> + <mxPoint x="630" y="180" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-46" value="choose categories" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="490" y="205" width="120" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-49" value="show favorites" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="490" y="240" width="120" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-53" value="Display recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="700" y="75" width="120" height="50" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-64" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-63" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-65" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-63" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-67" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-66" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="440" y="385" /> + <mxPoint x="440" y="415" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-69" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-68" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="440" y="385" /> + <mxPoint x="440" y="355" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-70" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-69" vertex="1" connectable="0"> + <mxGeometry x="-0.3204" y="-2" relative="1" as="geometry"> + <mxPoint x="-18" y="-17" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-60" value="add ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="370" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-61" value="search ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="414" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-62" value="delete ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="460" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-63" value="set ingredient name" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="500" y="370" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-66" value="set nutrition values" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="500" y="400" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-68" value="<font style="font-size: 10px;">choose measurement type</font>" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="500" y="340" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-71" value="add to shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="230" y="600" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-72" value="remove from shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="230" y="640" width="120" height="40" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-79" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-74" target="4oh4sVMnw9r_FDRqXWCS-43" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="280" y="800" /> + <mxPoint x="150" y="800" /> + <mxPoint x="150" y="215" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-80" value="includes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-79" vertex="1" connectable="0"> + <mxGeometry x="0.5176" y="-1" relative="1" as="geometry"> + <mxPoint x="-1" y="-15" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-74" value="add to meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="280" y="787" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-75" value="remove from meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="280" y="827" width="120" height="40" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-76" value="show this weeks nutrition score" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="280" y="873" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-81" value="display meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="490" y="778" width="120" height="40" as="geometry" /> + </mxCell> + <mxCell id="2" value="display shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="475" y="595" width="120" height="40" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-2" value="" style="endArrow=classic;html=1;rounded=1;entryX=-0.004;entryY=0.343;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=none;startFill=0;endFill=1;" edge="1" parent="1" target="4oh4sVMnw9r_FDRqXWCS-5"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="60" y="450" as="sourcePoint" /> + <mxPoint x="110" y="200" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-3" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-11"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="150" y="540" as="sourcePoint" /> + <mxPoint x="60" y="450" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-7" value="other preexisting recipies" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="600" y="-240" width="120" height="40" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-8" value="Ingredients" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="600" y="-195" width="120" height="25" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-9" value="delete category" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="240" y="18.130000000000003" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-10" value="create category" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="240" y="-20.619999999999997" width="120" height="28.75" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-11" value="Name cagegory" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="380" y="-48.74" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-12" value="select color for categroy" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="380" y="-8.739999999999997" width="120" height="45" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram id="IOxpQtQOinXd_60UH0zV" name="Seite-2"> + <mxGraphModel dx="2509" dy="1585" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="4rBL8TMRcDE2g0Xyakx7-3" value="package : recipe" style="swimlane;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="-20" y="43" width="1170" height="740" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-5" value="RecipeEditor" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="340" y="126" width="200" height="116" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-8" value="+ RecipeEditor() : Constructor" 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="khY43H2GbW4oralui55t-5" vertex="1"> + <mxGeometry y="26" width="200" height="26" as="geometry" /> + </mxCell> + <mxCell id="I4bFckmwjJYNS_oseT-e-1" value="+ RecipeEditor(Recipe r) : Constructor" 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="khY43H2GbW4oralui55t-5" vertex="1"> + <mxGeometry y="52" width="200" height="38" as="geometry" /> + </mxCell> + <mxCell id="ZsNRWflmDDHaKi8fymGh-1" value="+ get() : Recipe" 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="khY43H2GbW4oralui55t-5" vertex="1"> + <mxGeometry y="90" width="200" height="26" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-9" value="Singleton : RecipeManager" 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;fillColor=#d5e8d4;strokeColor=#82b366;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="20" y="40" width="220" height="190" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-10" value="- recipes : List&lt;Recipe&gt;" 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="26" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-38" value="- categories : Categories" 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="52" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-9" value="- ingredients : IngredientList" 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="78" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="104" width="220" height="8" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-12" value="+ addRecipe() : 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="112" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-12" value="+ deleteRecipe (int i) : 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="138" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-13" value="+ editRecipe (int i) : 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="164" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="1PDsnecl4zy3zphxMVey-1" value="RecipeSearch" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="860" y="40" width="300" height="154" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-26" value="- recipesToSearch : List&lt;Recipe&gt;" 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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="26" width="300" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="52" width="300" height="8" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-28" value="<i>Constructor:</i><br>+ RecipeSearch(List&lt;Recipe&gt; recipesToSearch)&nbsp;" 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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="60" width="300" height="40" as="geometry" /> + </mxCell> + <mxCell id="1PDsnecl4zy3zphxMVey-4" value="+ searchByQuery(String query) : List&lt;Recipe&gt;" 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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="100" width="300" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-3" value="+ searchByCategory(List&lt;Category&gt;) : List&lt;Recipe&gt;" 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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="126" width="300" height="28" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-1" value="Category" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="625" y="206" width="245" height="126" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-2" value="- name : String" 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="4db8lyx7makHAff3xmPV-1" vertex="1"> + <mxGeometry y="26" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-2" value="- colorCode : Integer" 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="4db8lyx7makHAff3xmPV-1" vertex="1"> + <mxGeometry y="52" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-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="4db8lyx7makHAff3xmPV-1" vertex="1"> + <mxGeometry y="78" width="245" height="8" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-4" value="overrides:<br>+ equals(Object o) : boolean" 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="4db8lyx7makHAff3xmPV-1" vertex="1"> + <mxGeometry y="86" width="245" height="40" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-5" value="Singleton : Categories" 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;fillColor=#d5e8d4;strokeColor=#82b366;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="585" y="40" width="245" height="112" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-6" value="- allCategories : Set&lt;Category&gt;" 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="4db8lyx7makHAff3xmPV-5" vertex="1"> + <mxGeometry y="26" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-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="4db8lyx7makHAff3xmPV-5" vertex="1"> + <mxGeometry y="52" width="245" height="8" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-8" value="+ registerCategory(String name) : boolean" 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="4db8lyx7makHAff3xmPV-5" vertex="1"> + <mxGeometry y="60" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-1" value="+ getAllCategories() : Set&lt;Category&gt;" 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="4db8lyx7makHAff3xmPV-5" vertex="1"> + <mxGeometry y="86" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="90y9bFiBt-Dw9IB2Oaka-1" target="BmttCFs_K1xAuYzUHSLz-17" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="450" y="437" /> + <mxPoint x="235" y="437" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="90y9bFiBt-Dw9IB2Oaka-1" value="Recipe&nbsp;" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="315" y="502" width="270" height="182" as="geometry"> + <mxRectangle x="20" y="150" width="80" height="30" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="90y9bFiBt-Dw9IB2Oaka-2" value="- ingredients: HashMap&lt;RecipeComponent, Integer&gt;" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="26" width="270" height="34" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-2" value="- description : String" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="60" width="270" height="24" as="geometry" /> + </mxCell> + <mxCell id="Cg_uZv0A1mTYIWKAJ-0d-3" value="- preparation : ArrayList&lt;String&gt;" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="84" width="270" height="24" as="geometry" /> + </mxCell> + <mxCell id="Cg_uZv0A1mTYIWKAJ-0d-4" value="- categories : Set&lt;Category&gt;" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="108" width="270" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-4" value="- preparationTimeMins : Integer" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="134" width="270" height="24" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-1" value="- created : LocalDateTime" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="158" width="270" height="24" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="4LD2Q_2ablrLRUKtAQnm-8" target="BmttCFs_K1xAuYzUHSLz-17" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="155" y="437" /> + <mxPoint x="235" y="437" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-8" value="implements" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="VXFt1rTyLLwseOzf8AC8-6" vertex="1" connectable="0"> + <mxGeometry x="0.5309" y="1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-8" value="Ingredient" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="20" y="446" width="270" height="52" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-25" value="- unit : Measurement" 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="4LD2Q_2ablrLRUKtAQnm-8" vertex="1"> + <mxGeometry y="26" width="270" height="26" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-4" value="&lt;&lt;enum&gt;&gt;<br><b>Measurement</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="55" y="566" width="140" height="142" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-5" value="PIECE" 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="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> + <mxGeometry y="26" width="140" height="26" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-6" value="GRAM" 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="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> + <mxGeometry y="52" width="140" height="26" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-7" value="MILLILITER" 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="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> + <mxGeometry y="78" width="140" height="32" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-9" value="PINCH" 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="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> + <mxGeometry y="110" width="140" height="32" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-1" value="&lt;&lt;enum&gt;&gt;<br><b>Nutriton</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="730" y="506" width="140" height="202" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-2" value="CALORIES" 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="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="26" width="140" height="26" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-3" value="CARBS" 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="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="52" width="140" height="26" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-4" value="PROTEINS" 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="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="78" width="140" height="32" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-5" value="SALT" 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="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="110" width="140" height="32" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-6" value="FAT" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacingLeft=4;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="142" width="140" height="30" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-7" value="FIBERS" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacingLeft=4;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="172" width="140" height="30" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-12" value="NutritionTable" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="710" y="346" width="260" height="100" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-13" value="- table : HashMap&lt;Nutrition, Double&gt;" 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="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> + <mxGeometry y="26" width="260" height="26" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-14" 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="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> + <mxGeometry y="52" width="260" height="8" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-15" value="+ getNutritionForRecipe (Recipe recipe) : NutritionTable" 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="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> + <mxGeometry y="60" width="260" height="40" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-17" value="&lt;&lt;interface&gt;&gt;<br><b>RecipeComponent</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="140" y="287" width="190" height="104" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-18" value="+ getName() : String" 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="BmttCFs_K1xAuYzUHSLz-17" vertex="1"> + <mxGeometry y="26" width="190" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-6" value="+ getNutritionTable() : NutritionTable" 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;fontSize=11;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"> + <mxGeometry y="52" width="190" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-1" value="+ getID() : Integer" 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;fontSize=11;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"> + <mxGeometry y="78" width="190" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-11" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.442;exitY=0.985;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.611;entryY=-0.021;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="BmttCFs_K1xAuYzUHSLz-25" target="WwHfsR9ecwNkWHZ6sJ4B-4" edge="1"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="138.17999999999984" y="486.004" as="sourcePoint" /> + <mxPoint x="140" y="556" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-12" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.441;exitY=1.067;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.439;entryY=0.005;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="BmttCFs_K1xAuYzUHSLz-1" target="4db8lyx7makHAff3xmPV-1" edge="1"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="860" y="186" as="sourcePoint" /> + <mxPoint x="1020" y="186" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-13" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.325;exitY=1.102;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.46;entryY=0.002;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="4LD2Q_2ablrLRUKtAQnm-15" target="4LD2Q_2ablrLRUKtAQnm-1" edge="1"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="665" y="532" as="sourcePoint" /> + <mxPoint x="825" y="532" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-18" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.425;exitY=1.069;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.093;entryY=0.019;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-13" target="90y9bFiBt-Dw9IB2Oaka-1" edge="1"> + <mxGeometry x="-0.8176" relative="1" as="geometry"> + <mxPoint x="320" y="216" as="sourcePoint" /> + <mxPoint x="340" y="426" as="targetPoint" /> + <Array as="points"> + <mxPoint x="114" y="266" /> + <mxPoint x="340" y="266" /> + </Array> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-19" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ev62EXm1IyDULqRkRese-18" vertex="1" connectable="0"> + <mxGeometry x="0.8861" y="-2" relative="1" as="geometry"> + <mxPoint x="2" y="-51" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-22" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.007;entryY=-0.075;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" target="4LD2Q_2ablrLRUKtAQnm-15" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="290" y="467" as="sourcePoint" /> + <mxPoint x="700" y="376" as="targetPoint" /> + <Array as="points"> + <mxPoint x="290" y="467" /> + <mxPoint x="620" y="467" /> + <mxPoint x="620" y="403" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-40" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.005;entryY=0.355;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-12" target="I4bFckmwjJYNS_oseT-e-1" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="230" y="186" as="sourcePoint" /> + <mxPoint x="400" y="116" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-41" 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.006;exitY=-0.077;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.02;entryY=0.615;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="qvnAXoucquyjZ7kPEuXb-9" target="4db8lyx7makHAff3xmPV-8" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="270" y="126" as="sourcePoint" /> + <mxPoint x="430" y="126" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.785;entryY=0.001;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-1" target="4LD2Q_2ablrLRUKtAQnm-12" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-1" value="NutritionCalculator" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="880" y="224" width="280" height="78" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-4" value="+ calculate (Recipe r) : NutritionTable" 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="lNXn1_JIS0mlgrxrveIr-1" vertex="1"> + <mxGeometry y="26" width="280" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-9" value="+ calculate (Recipe r) : NutritionTable" 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="lNXn1_JIS0mlgrxrveIr-1" vertex="1"> + <mxGeometry y="52" width="280" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-4" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.161;exitY=1.04;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.131;entryY=-0.043;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-13" target="4LD2Q_2ablrLRUKtAQnm-8" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="300" y="377" as="sourcePoint" /> + <mxPoint x="80" y="437" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-5" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="VXFt1rTyLLwseOzf8AC8-4" vertex="1" connectable="0"> + <mxGeometry x="0.7378" y="1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-1" value="package : shoppingList" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="1280" y="-350" width="300" height="290" as="geometry" /> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-2" value="Singleton :ShoppingList" 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;fillColor=#d5e8d4;strokeColor=#82b366;" parent="XnVSaR7xRqF0c78tSIC_-1" vertex="1"> + <mxGeometry x="30" y="40" width="240" height="164" as="geometry" /> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-3" value="- shoppingList : Map&lt;Ingredient, Boolean&gt;" 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="26" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-4" 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="52" width="240" height="8" as="geometry" /> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-5" value="+ clear() : 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="60" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-10" value="+ markDone(Ingredient i) : 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="86" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-11" value="+ markUndone(Ingredient i) : 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="112" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-12" value="+ get() : HashMap&lt;Ingredient, Boolean&gt;&nbsp;" 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="138" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-1" value="package : mealPlan" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="1250" y="414" width="230" height="250" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-2" value="Sngleton : MealPlan" 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;fillColor=#d5e8d4;strokeColor=#82b366;" parent="xz0VCGe2YetrdaeYra_O-1" vertex="1"> + <mxGeometry x="20" y="39" width="180" height="190" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-3" value="- mealPlan : Recipe[7]" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="26" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-4" value="- weekNutrition : NutritionTable" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="52" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-4" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="78" width="180" height="8" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-5" value="+ add(Recipe r, int day)" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="86" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-3" value="+ clear(int day) : Recipe" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="112" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-14" value="+ reset() : 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="138" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-5" value="+ get() : MealPlan" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="164" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-5" value="Singleton : App" 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;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1"> + <mxGeometry x="1232" y="50" width="420" height="294" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-39" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.278;entryY=1.138;entryDx=0;entryDy=0;entryPerimeter=0;" parent="lNXn1_JIS0mlgrxrveIr-5" target="qvnAXoucquyjZ7kPEuXb-12" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="98" as="sourcePoint" /> + <mxPoint x="258" as="targetPoint" /> + <Array as="points"> + <mxPoint x="98" y="-63" /> + <mxPoint x="145" y="-63" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-6" value="- recipeManager : RecipeManager" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="26" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-10" value="- shoppingList : ShoppingList<br>" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="52" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-11" value="- mealPlan : MealPlan" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="78" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="h23uL9lWt6JHxaophjVK-1" value="- search : RecipeSearch" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="104" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="h23uL9lWt6JHxaophjVK-3" value="- lastSearchResults : List&lt;Recipe&gt;" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="130" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-15" value="- fileManager : FileManager" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="156" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="182" width="420" height="8" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-8" value="+ start() : 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="190" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="h23uL9lWt6JHxaophjVK-2" value="+ search(lastSearchResults, String query) : ArrayList&lt;Recipe&gt;" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="216" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="h23uL9lWt6JHxaophjVK-4" value="+ search(lastSearchResults, Category category) : ArrayList&lt;Recipe&gt;" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="242" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-9" value="+ save(this) : 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="268" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-11" value="FileManager" 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="1770" y="50" width="360" height="112" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-12" value="- savePath : Path" 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="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> + <mxGeometry y="26" width="360" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-13" 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="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> + <mxGeometry y="52" width="360" height="8" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-14" value="+ deserializeFromFile() : 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="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> + <mxGeometry y="60" width="360" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-16" value="+ serializeToFile(App app) : 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="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> + <mxGeometry y="86" width="360" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-32" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=1;entryY=0.11;entryDx=0;entryDy=0;entryPerimeter=0;exitX=-0.004;exitY=0.051;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="h23uL9lWt6JHxaophjVK-1" target="1PDsnecl4zy3zphxMVey-1" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="1210" y="160" as="sourcePoint" /> + <mxPoint x="1360" y="140" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1190" y="155" /> + <mxPoint x="1190" y="100" /> + <mxPoint x="1160" y="100" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-37" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.305;exitY=0.969;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="BmttCFs_K1xAuYzUHSLz-9" target="xz0VCGe2YetrdaeYra_O-2" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="1310" y="370" as="sourcePoint" /> + <mxPoint x="1470" y="370" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-42" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.417;entryY=-0.007;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="lNXn1_JIS0mlgrxrveIr-6" target="khY43H2GbW4oralui55t-9" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="650" y="-50" as="sourcePoint" /> + <mxPoint x="100" y="20" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1210" y="89" /> + <mxPoint x="1210" y="20" /> + <mxPoint x="92" y="20" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-43" 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.417;entryY=1.115;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="BmttCFs_K1xAuYzUHSLz-15" target="BmttCFs_K1xAuYzUHSLz-16" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="1690" y="220" as="sourcePoint" /> + <mxPoint x="1850" y="220" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1920" y="219" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-44" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ev62EXm1IyDULqRkRese-43" vertex="1" connectable="0"> + <mxGeometry x="0.7682" y="-1" relative="1" as="geometry"> + <mxPoint y="-10" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.614;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="xz0VCGe2YetrdaeYra_O-3" target="VXFt1rTyLLwseOzf8AC8-9" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="1110" y="400" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1032" y="492" /> + <mxPoint x="1032" y="440" /> + </Array> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/UML/TastyPages_Use-case3.drawio b/UML/TastyPages_Use-case3.drawio new file mode 100644 index 0000000000000000000000000000000000000000..f90fe42864782bef6b827cee462adf22e7ea4fe2 --- /dev/null +++ b/UML/TastyPages_Use-case3.drawio @@ -0,0 +1,775 @@ +<mxfile host="app.diagrams.net" modified="2023-06-18T13:50:13.513Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/112.0" etag="Bir6JQOzk0XErZzCRfCn" version="21.4.0" type="device" pages="2"> + <diagram name="Seite-1" id="guNTSU0fiwR1g74g93dq"> + <mxGraphModel dx="1375" dy="1818" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="t6KV452nRaxTD-9MS5Kb-28" value="<div><b>&nbsp; Tasty Pages<br></b></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;" vertex="1" parent="1"> + <mxGeometry x="150" y="-210" width="750" height="940" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-1" value="User" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> + <mxGeometry x="30" y="420" width="30" height="60" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-17" value="add recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="265" y="-105.25" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-18" value="select components" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="535" y="-144" width="140" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-24" value="Name the recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="535" y="-184" width="140" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-29" value="add preparpation steps" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="545" y="-105.25" width="140" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-32" value="select categories" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="545" y="-59" width="140" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-34" value="add picture" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="545" y="-22.75" width="140" height="22.5" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-37" value="delete recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="265" y="-65.25" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-40" value="edit recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="265" y="-25.25" width="120" height="25" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;curved=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-53" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="310" y="190" /> + <mxPoint x="780" y="190" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-43" value="browse recipes" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="250" y="100" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-44" value="full text search" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="490" y="70" width="120" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-46" value="choose categories" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="490" y="105" width="120" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-49" value="show favorites" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="490" y="140" width="120" height="20" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-53" value="Display recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="720" y="80" width="120" height="50" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-64" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-63" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-49" value="&lt;&lt;includes&gt;&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="4oh4sVMnw9r_FDRqXWCS-64"> + <mxGeometry x="0.0848" y="1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-60" value="add ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="370" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-61" value="search ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="414" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-62" value="delete ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="460" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-63" value="set ingredient name" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="510" y="370" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-66" value="set nutrition values" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="510" y="414" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-68" value="<font style="font-size: 10px;">choose measurement type</font>" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="500" y="330" width="140" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-71" value="add recipe to shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="495" y="520" width="110" height="50" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-72" value="remove recipe from shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="490" y="580" width="120" height="50" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-74" value="add to meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="605" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="4oh4sVMnw9r_FDRqXWCS-75" value="<div>remove from</div><div>&nbsp;meal plan</div>" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="240" y="655" width="120" height="40" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-7" value="other preexisting recipies" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="760" y="-153.37" width="119.77" height="38.75" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-8" value="Ingredients" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="760" y="-102.75" width="120" height="27.5" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-9" value="delete category" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="320" y="293" width="120" height="33.44" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-10" value="create category" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="320" y="257.69000000000005" width="120" height="28.75" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-11" value="Name cagegory" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="520" y="230" width="120" height="30" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-12" value="select color for categroy" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="520" y="269.56999999999994" width="120" height="45" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-15" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.822;exitY=0.121;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="t6KV452nRaxTD-9MS5Kb-10" target="t6KV452nRaxTD-9MS5Kb-11"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="335" y="141.26" as="sourcePoint" /> + <mxPoint x="370" y="112.5" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-16" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.821;exitY=0.892;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="t6KV452nRaxTD-9MS5Kb-10" target="t6KV452nRaxTD-9MS5Kb-12"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="545" y="178.13" as="sourcePoint" /> + <mxPoint x="595" y="128.13" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-17" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-24"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="370" y="-170" as="sourcePoint" /> + <mxPoint x="420" y="-220" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-18" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-18"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="620" y="-98.75" as="sourcePoint" /> + <mxPoint x="670" y="-148.75" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-19" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-29"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="490" y="-110" as="sourcePoint" /> + <mxPoint x="540" y="-160" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-47" value="&lt;&lt;includes&gt;&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="t6KV452nRaxTD-9MS5Kb-19"> + <mxGeometry x="-0.1595" y="-1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-20" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-32"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="490" y="-110" as="sourcePoint" /> + <mxPoint x="540" y="-160" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-21" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-34"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="490" y="-110" as="sourcePoint" /> + <mxPoint x="540" y="-160" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-22" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-18" target="t6KV452nRaxTD-9MS5Kb-7"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="490" y="-110" as="sourcePoint" /> + <mxPoint x="540" y="-160" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-23" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-18" target="t6KV452nRaxTD-9MS5Kb-8"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="490" y="-110" as="sourcePoint" /> + <mxPoint x="540" y="-160" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-64" value="&lt;&lt;includes&gt;&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="t6KV452nRaxTD-9MS5Kb-23"> + <mxGeometry x="-0.2368" y="1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-31" value="Ingredient Database" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1"> + <mxGeometry x="1020" y="-114.62" width="30" height="60" as="geometry" /> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-33" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.3333333333333333;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="t6KV452nRaxTD-9MS5Kb-31" target="t6KV452nRaxTD-9MS5Kb-8"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="1010" y="454" as="sourcePoint" /> + <mxPoint x="1060" y="404" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-36" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;curved=1;" edge="1" parent="1" target="4oh4sVMnw9r_FDRqXWCS-37"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="60" y="410" as="sourcePoint" /> + <mxPoint x="100" y="140" as="targetPoint" /> + <Array as="points"> + <mxPoint x="60" y="410" /> + <mxPoint x="60" y="-95" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-40" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="4oh4sVMnw9r_FDRqXWCS-43"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="70" y="420" as="sourcePoint" /> + <mxPoint x="150" y="204.69" as="targetPoint" /> + <Array as="points"> + <mxPoint x="120" y="420" /> + <mxPoint x="120" y="115" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-41" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="t6KV452nRaxTD-9MS5Kb-10"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="80" y="430" as="sourcePoint" /> + <mxPoint x="290" y="194.07" as="targetPoint" /> + <Array as="points"> + <mxPoint x="170" y="431" /> + <mxPoint x="170" y="272" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-42" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="t6KV452nRaxTD-9MS5Kb-9"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="220" y="290" as="sourcePoint" /> + <mxPoint x="290" y="140" as="targetPoint" /> + <Array as="points"> + <mxPoint x="220" y="310" /> + <mxPoint x="320" y="310" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-44" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-46"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="430" y="100" as="sourcePoint" /> + <mxPoint x="480" y="50" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-63" value="&lt;&lt;includes&gt;&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="t6KV452nRaxTD-9MS5Kb-44"> + <mxGeometry x="0.1873" y="-1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-45" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-44" target="4oh4sVMnw9r_FDRqXWCS-49"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="420" y="180" as="sourcePoint" /> + <mxPoint x="470" y="130" as="targetPoint" /> + <Array as="points"> + <mxPoint x="460" y="80" /> + <mxPoint x="460" y="150" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-48" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;curved=1;dashed=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-66" target="4oh4sVMnw9r_FDRqXWCS-68"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="430" y="410" as="sourcePoint" /> + <mxPoint x="480" y="360" as="targetPoint" /> + <Array as="points"> + <mxPoint x="460" y="429" /> + <mxPoint x="460" y="345" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-50" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="4oh4sVMnw9r_FDRqXWCS-61"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="80" y="440" as="sourcePoint" /> + <mxPoint x="270" y="380" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-51" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;curved=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-40"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="225" y="44.75" as="sourcePoint" /> + <mxPoint x="275" y="-5.25" as="targetPoint" /> + <Array as="points"> + <mxPoint x="215" y="-90.25" /> + <mxPoint x="215" y="-13.25" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-52" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;curved=1;" edge="1" parent="1" source="4oh4sVMnw9r_FDRqXWCS-62" target="4oh4sVMnw9r_FDRqXWCS-60"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="200" y="530" as="sourcePoint" /> + <mxPoint x="250" y="480" as="targetPoint" /> + <Array as="points"> + <mxPoint x="190" y="475" /> + <mxPoint x="190" y="385" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-55" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;curved=1;" edge="1" parent="1" target="4oh4sVMnw9r_FDRqXWCS-71"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="70" y="460" as="sourcePoint" /> + <mxPoint x="370" y="510" as="targetPoint" /> + <Array as="points"> + <mxPoint x="70" y="545" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-56" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;curved=1;" edge="1" parent="1" target="4oh4sVMnw9r_FDRqXWCS-72"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="390" y="550" as="sourcePoint" /> + <mxPoint x="635" y="490" as="targetPoint" /> + <Array as="points"> + <mxPoint x="390" y="605" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-61" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;curved=1;" edge="1" parent="1" target="4oh4sVMnw9r_FDRqXWCS-74"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="40" y="520" as="sourcePoint" /> + <mxPoint x="310" y="620" as="targetPoint" /> + <Array as="points"> + <mxPoint x="40" y="620" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="t6KV452nRaxTD-9MS5Kb-62" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;curved=1;" edge="1" parent="1" target="4oh4sVMnw9r_FDRqXWCS-75"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="90" y="600" as="sourcePoint" /> + <mxPoint x="125" y="690" as="targetPoint" /> + <Array as="points"> + <mxPoint x="90" y="675" /> + </Array> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram id="IOxpQtQOinXd_60UH0zV" name="Seite-2"> + <mxGraphModel dx="2509" dy="1585" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="4rBL8TMRcDE2g0Xyakx7-3" value="package : recipe" style="swimlane;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="-20" y="43" width="1170" height="740" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-5" value="RecipeEditor" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="340" y="126" width="200" height="116" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-8" value="+ RecipeEditor() : Constructor" 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="khY43H2GbW4oralui55t-5" vertex="1"> + <mxGeometry y="26" width="200" height="26" as="geometry" /> + </mxCell> + <mxCell id="I4bFckmwjJYNS_oseT-e-1" value="+ RecipeEditor(Recipe r) : Constructor" 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="khY43H2GbW4oralui55t-5" vertex="1"> + <mxGeometry y="52" width="200" height="38" as="geometry" /> + </mxCell> + <mxCell id="ZsNRWflmDDHaKi8fymGh-1" value="+ get() : Recipe" 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="khY43H2GbW4oralui55t-5" vertex="1"> + <mxGeometry y="90" width="200" height="26" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-9" value="Singleton : RecipeManager" 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;fillColor=#d5e8d4;strokeColor=#82b366;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="20" y="40" width="220" height="190" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-10" value="- recipes : List&lt;Recipe&gt;" 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="26" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-38" value="- categories : Categories" 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="52" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-9" value="- ingredients : IngredientList" 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="78" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="104" width="220" height="8" as="geometry" /> + </mxCell> + <mxCell id="khY43H2GbW4oralui55t-12" value="+ addRecipe() : 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="112" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-12" value="+ deleteRecipe (int i) : 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="138" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-13" value="+ editRecipe (int i) : 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="khY43H2GbW4oralui55t-9" vertex="1"> + <mxGeometry y="164" width="220" height="26" as="geometry" /> + </mxCell> + <mxCell id="1PDsnecl4zy3zphxMVey-1" value="RecipeSearch" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="860" y="40" width="300" height="154" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-26" value="- recipesToSearch : List&lt;Recipe&gt;" 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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="26" width="300" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="52" width="300" height="8" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-28" value="<i>Constructor:</i><br>+ RecipeSearch(List&lt;Recipe&gt; recipesToSearch)&nbsp;" 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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="60" width="300" height="40" as="geometry" /> + </mxCell> + <mxCell id="1PDsnecl4zy3zphxMVey-4" value="+ searchByQuery(String query) : List&lt;Recipe&gt;" 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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="100" width="300" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-3" value="+ searchByCategory(List&lt;Category&gt;) : List&lt;Recipe&gt;" 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="1PDsnecl4zy3zphxMVey-1" vertex="1"> + <mxGeometry y="126" width="300" height="28" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-1" value="Category" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="625" y="206" width="245" height="126" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-2" value="- name : String" 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="4db8lyx7makHAff3xmPV-1" vertex="1"> + <mxGeometry y="26" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-2" value="- colorCode : Integer" 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="4db8lyx7makHAff3xmPV-1" vertex="1"> + <mxGeometry y="52" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-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="4db8lyx7makHAff3xmPV-1" vertex="1"> + <mxGeometry y="78" width="245" height="8" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-4" value="overrides:<br>+ equals(Object o) : boolean" 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="4db8lyx7makHAff3xmPV-1" vertex="1"> + <mxGeometry y="86" width="245" height="40" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-5" value="Singleton : Categories" 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;fillColor=#d5e8d4;strokeColor=#82b366;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="585" y="40" width="245" height="112" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-6" value="- allCategories : Set&lt;Category&gt;" 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="4db8lyx7makHAff3xmPV-5" vertex="1"> + <mxGeometry y="26" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-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="4db8lyx7makHAff3xmPV-5" vertex="1"> + <mxGeometry y="52" width="245" height="8" as="geometry" /> + </mxCell> + <mxCell id="4db8lyx7makHAff3xmPV-8" value="+ registerCategory(String name) : boolean" 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="4db8lyx7makHAff3xmPV-5" vertex="1"> + <mxGeometry y="60" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-1" value="+ getAllCategories() : Set&lt;Category&gt;" 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="4db8lyx7makHAff3xmPV-5" vertex="1"> + <mxGeometry y="86" width="245" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="90y9bFiBt-Dw9IB2Oaka-1" target="BmttCFs_K1xAuYzUHSLz-17" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="450" y="437" /> + <mxPoint x="235" y="437" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="90y9bFiBt-Dw9IB2Oaka-1" value="Recipe&nbsp;" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="315" y="502" width="270" height="182" as="geometry"> + <mxRectangle x="20" y="150" width="80" height="30" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="90y9bFiBt-Dw9IB2Oaka-2" value="- ingredients: HashMap&lt;RecipeComponent, Integer&gt;" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="26" width="270" height="34" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-2" value="- description : String" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="60" width="270" height="24" as="geometry" /> + </mxCell> + <mxCell id="Cg_uZv0A1mTYIWKAJ-0d-3" value="- preparation : ArrayList&lt;String&gt;" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="84" width="270" height="24" as="geometry" /> + </mxCell> + <mxCell id="Cg_uZv0A1mTYIWKAJ-0d-4" value="- categories : Set&lt;Category&gt;" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="108" width="270" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-4" value="- preparationTimeMins : Integer" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="134" width="270" height="24" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-1" value="- created : LocalDateTime" 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="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> + <mxGeometry y="158" width="270" height="24" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="4LD2Q_2ablrLRUKtAQnm-8" target="BmttCFs_K1xAuYzUHSLz-17" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="155" y="437" /> + <mxPoint x="235" y="437" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-8" value="implements" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="VXFt1rTyLLwseOzf8AC8-6" vertex="1" connectable="0"> + <mxGeometry x="0.5309" y="1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-8" value="Ingredient" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="20" y="446" width="270" height="52" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-25" value="- unit : Measurement" 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="4LD2Q_2ablrLRUKtAQnm-8" vertex="1"> + <mxGeometry y="26" width="270" height="26" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-4" value="&lt;&lt;enum&gt;&gt;<br><b>Measurement</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="55" y="566" width="140" height="142" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-5" value="PIECE" 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="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> + <mxGeometry y="26" width="140" height="26" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-6" value="GRAM" 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="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> + <mxGeometry y="52" width="140" height="26" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-7" value="MILLILITER" 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="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> + <mxGeometry y="78" width="140" height="32" as="geometry" /> + </mxCell> + <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-9" value="PINCH" 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="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> + <mxGeometry y="110" width="140" height="32" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-1" value="&lt;&lt;enum&gt;&gt;<br><b>Nutriton</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="730" y="506" width="140" height="202" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-2" value="CALORIES" 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="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="26" width="140" height="26" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-3" value="CARBS" 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="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="52" width="140" height="26" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-4" value="PROTEINS" 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="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="78" width="140" height="32" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-5" value="SALT" 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="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="110" width="140" height="32" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-6" value="FAT" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacingLeft=4;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="142" width="140" height="30" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-7" value="FIBERS" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacingLeft=4;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> + <mxGeometry y="172" width="140" height="30" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-12" value="NutritionTable" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="710" y="346" width="260" height="100" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-13" value="- table : HashMap&lt;Nutrition, Double&gt;" 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="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> + <mxGeometry y="26" width="260" height="26" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-14" 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="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> + <mxGeometry y="52" width="260" height="8" as="geometry" /> + </mxCell> + <mxCell id="4LD2Q_2ablrLRUKtAQnm-15" value="+ getNutritionForRecipe (Recipe recipe) : NutritionTable" 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="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> + <mxGeometry y="60" width="260" height="40" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-17" value="&lt;&lt;interface&gt;&gt;<br><b>RecipeComponent</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="140" y="287" width="190" height="104" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-18" value="+ getName() : String" 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="BmttCFs_K1xAuYzUHSLz-17" vertex="1"> + <mxGeometry y="26" width="190" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-6" value="+ getNutritionTable() : NutritionTable" 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;fontSize=11;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"> + <mxGeometry y="52" width="190" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-1" value="+ getID() : Integer" 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;fontSize=11;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"> + <mxGeometry y="78" width="190" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-11" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.442;exitY=0.985;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.611;entryY=-0.021;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="BmttCFs_K1xAuYzUHSLz-25" target="WwHfsR9ecwNkWHZ6sJ4B-4" edge="1"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="138.17999999999984" y="486.004" as="sourcePoint" /> + <mxPoint x="140" y="556" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-12" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.441;exitY=1.067;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.439;entryY=0.005;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="BmttCFs_K1xAuYzUHSLz-1" target="4db8lyx7makHAff3xmPV-1" edge="1"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="860" y="186" as="sourcePoint" /> + <mxPoint x="1020" y="186" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-13" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.325;exitY=1.102;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.46;entryY=0.002;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="4LD2Q_2ablrLRUKtAQnm-15" target="4LD2Q_2ablrLRUKtAQnm-1" edge="1"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="665" y="532" as="sourcePoint" /> + <mxPoint x="825" y="532" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-18" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.425;exitY=1.069;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.093;entryY=0.019;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-13" target="90y9bFiBt-Dw9IB2Oaka-1" edge="1"> + <mxGeometry x="-0.8176" relative="1" as="geometry"> + <mxPoint x="320" y="216" as="sourcePoint" /> + <mxPoint x="340" y="426" as="targetPoint" /> + <Array as="points"> + <mxPoint x="114" y="266" /> + <mxPoint x="340" y="266" /> + </Array> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-19" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ev62EXm1IyDULqRkRese-18" vertex="1" connectable="0"> + <mxGeometry x="0.8861" y="-2" relative="1" as="geometry"> + <mxPoint x="2" y="-51" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-22" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.007;entryY=-0.075;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" target="4LD2Q_2ablrLRUKtAQnm-15" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="290" y="467" as="sourcePoint" /> + <mxPoint x="700" y="376" as="targetPoint" /> + <Array as="points"> + <mxPoint x="290" y="467" /> + <mxPoint x="620" y="467" /> + <mxPoint x="620" y="403" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-40" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.005;entryY=0.355;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-12" target="I4bFckmwjJYNS_oseT-e-1" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="230" y="186" as="sourcePoint" /> + <mxPoint x="400" y="116" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-41" 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.006;exitY=-0.077;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.02;entryY=0.615;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="qvnAXoucquyjZ7kPEuXb-9" target="4db8lyx7makHAff3xmPV-8" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="270" y="126" as="sourcePoint" /> + <mxPoint x="430" y="126" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.785;entryY=0.001;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-1" target="4LD2Q_2ablrLRUKtAQnm-12" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-1" value="NutritionCalculator" 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="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> + <mxGeometry x="880" y="224" width="280" height="78" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-4" value="+ calculate (Recipe r) : NutritionTable" 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="lNXn1_JIS0mlgrxrveIr-1" vertex="1"> + <mxGeometry y="26" width="280" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-9" value="+ calculate (Recipe r) : NutritionTable" 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="lNXn1_JIS0mlgrxrveIr-1" vertex="1"> + <mxGeometry y="52" width="280" height="26" as="geometry" /> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-4" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.161;exitY=1.04;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.131;entryY=-0.043;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-13" target="4LD2Q_2ablrLRUKtAQnm-8" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="300" y="377" as="sourcePoint" /> + <mxPoint x="80" y="437" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-5" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="VXFt1rTyLLwseOzf8AC8-4" vertex="1" connectable="0"> + <mxGeometry x="0.7378" y="1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-1" value="package : shoppingList" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="1280" y="-350" width="300" height="290" as="geometry" /> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-2" value="Singleton :ShoppingList" 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;fillColor=#d5e8d4;strokeColor=#82b366;" parent="XnVSaR7xRqF0c78tSIC_-1" vertex="1"> + <mxGeometry x="30" y="40" width="240" height="164" as="geometry" /> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-3" value="- shoppingList : Map&lt;Ingredient, Boolean&gt;" 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="26" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-4" 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="52" width="240" height="8" as="geometry" /> + </mxCell> + <mxCell id="XnVSaR7xRqF0c78tSIC_-5" value="+ clear() : 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="60" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-10" value="+ markDone(Ingredient i) : 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="86" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-11" value="+ markUndone(Ingredient i) : 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="112" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-12" value="+ get() : HashMap&lt;Ingredient, Boolean&gt;&nbsp;" 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="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> + <mxGeometry y="138" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-1" value="package : mealPlan" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="1250" y="414" width="230" height="250" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-2" value="Sngleton : MealPlan" 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;fillColor=#d5e8d4;strokeColor=#82b366;" parent="xz0VCGe2YetrdaeYra_O-1" vertex="1"> + <mxGeometry x="20" y="39" width="180" height="190" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-3" value="- mealPlan : Recipe[7]" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="26" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-4" value="- weekNutrition : NutritionTable" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="52" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-4" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="78" width="180" height="8" as="geometry" /> + </mxCell> + <mxCell id="xz0VCGe2YetrdaeYra_O-5" value="+ add(Recipe r, int day)" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="86" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-3" value="+ clear(int day) : Recipe" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="112" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="qvnAXoucquyjZ7kPEuXb-14" value="+ reset() : 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="138" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-5" value="+ get() : MealPlan" 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="xz0VCGe2YetrdaeYra_O-2" vertex="1"> + <mxGeometry y="164" width="180" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-5" value="Singleton : App" 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;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1"> + <mxGeometry x="1232" y="50" width="420" height="294" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-39" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.278;entryY=1.138;entryDx=0;entryDy=0;entryPerimeter=0;" parent="lNXn1_JIS0mlgrxrveIr-5" target="qvnAXoucquyjZ7kPEuXb-12" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="98" as="sourcePoint" /> + <mxPoint x="258" as="targetPoint" /> + <Array as="points"> + <mxPoint x="98" y="-63" /> + <mxPoint x="145" y="-63" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-6" value="- recipeManager : RecipeManager" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="26" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-10" value="- shoppingList : ShoppingList<br>" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="52" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-11" value="- mealPlan : MealPlan" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="78" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="h23uL9lWt6JHxaophjVK-1" value="- search : RecipeSearch" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="104" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="h23uL9lWt6JHxaophjVK-3" value="- lastSearchResults : List&lt;Recipe&gt;" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="130" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-15" value="- fileManager : FileManager" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="156" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="182" width="420" height="8" as="geometry" /> + </mxCell> + <mxCell id="lNXn1_JIS0mlgrxrveIr-8" value="+ start() : 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="190" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="h23uL9lWt6JHxaophjVK-2" value="+ search(lastSearchResults, String query) : ArrayList&lt;Recipe&gt;" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="216" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="h23uL9lWt6JHxaophjVK-4" value="+ search(lastSearchResults, Category category) : ArrayList&lt;Recipe&gt;" 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="242" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-9" value="+ save(this) : 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="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> + <mxGeometry y="268" width="420" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-11" value="FileManager" 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="1770" y="50" width="360" height="112" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-12" value="- savePath : Path" 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="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> + <mxGeometry y="26" width="360" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-13" 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="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> + <mxGeometry y="52" width="360" height="8" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-14" value="+ deserializeFromFile() : 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="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> + <mxGeometry y="60" width="360" height="26" as="geometry" /> + </mxCell> + <mxCell id="BmttCFs_K1xAuYzUHSLz-16" value="+ serializeToFile(App app) : 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="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> + <mxGeometry y="86" width="360" height="26" as="geometry" /> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-32" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=1;entryY=0.11;entryDx=0;entryDy=0;entryPerimeter=0;exitX=-0.004;exitY=0.051;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="h23uL9lWt6JHxaophjVK-1" target="1PDsnecl4zy3zphxMVey-1" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="1210" y="160" as="sourcePoint" /> + <mxPoint x="1360" y="140" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1190" y="155" /> + <mxPoint x="1190" y="100" /> + <mxPoint x="1160" y="100" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-37" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.305;exitY=0.969;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="BmttCFs_K1xAuYzUHSLz-9" target="xz0VCGe2YetrdaeYra_O-2" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="1310" y="370" as="sourcePoint" /> + <mxPoint x="1470" y="370" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-42" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.417;entryY=-0.007;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="lNXn1_JIS0mlgrxrveIr-6" target="khY43H2GbW4oralui55t-9" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="650" y="-50" as="sourcePoint" /> + <mxPoint x="100" y="20" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1210" y="89" /> + <mxPoint x="1210" y="20" /> + <mxPoint x="92" y="20" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-43" 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.417;entryY=1.115;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="BmttCFs_K1xAuYzUHSLz-15" target="BmttCFs_K1xAuYzUHSLz-16" edge="1"> + <mxGeometry x="-1" y="3" relative="1" as="geometry"> + <mxPoint x="1690" y="220" as="sourcePoint" /> + <mxPoint x="1850" y="220" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1920" y="219" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="ev62EXm1IyDULqRkRese-44" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ev62EXm1IyDULqRkRese-43" vertex="1" connectable="0"> + <mxGeometry x="0.7682" y="-1" relative="1" as="geometry"> + <mxPoint y="-10" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="VXFt1rTyLLwseOzf8AC8-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.614;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="xz0VCGe2YetrdaeYra_O-3" target="VXFt1rTyLLwseOzf8AC8-9" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="1110" y="400" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1032" y="492" /> + <mxPoint x="1032" y="440" /> + </Array> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/UML/Use_Case_Diagram_TastyPages.png b/UML/Use_Case_Diagram_TastyPages.png new file mode 100644 index 0000000000000000000000000000000000000000..21adea9d3585b4906a8763a5752bdc37775810d4 Binary files /dev/null and b/UML/Use_Case_Diagram_TastyPages.png differ