Files
inventorym/uml/classdiagram.svg
2025-10-29 13:14:10 -04:00

438 lines
38 KiB
XML

<?xml version="1.0" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1570pt" height="1510pt" viewBox="0.00 0.00 1569.81 1510.00">
<g id="graph0" class="graph" transform="translate(4,1506) scale(1)" data-name="InventoryManagementSystem">
<polygon fill="white" stroke="none" points="-4,4 -4,-1506 1565.81,-1506 1565.81,4 -4,4" style=""/>
<!-- InventoryPiece -->
<g id="node1" class="node" pointer-events="visible" data-name="InventoryPiece">
<polygon fill="lightblue" stroke="black" points="233.94,-84.3 233.94,-384.3 409.73,-384.3 409.73,-84.3 233.94,-84.3" style=""/>
<text text-anchor="middle" x="321.83" y="-371.3" font-family="Arial" font-size="10.00" style="">InventoryPiece</text>
<text text-anchor="middle" x="321.83" y="-359.3" font-family="Arial" font-size="10.00" style="">(abstract)</text>
<polyline fill="none" stroke="black" points="233.94,-352.3 409.73,-352.3" style=""/>
<text text-anchor="middle" x="321.83" y="-339.3" font-family="Arial" font-size="10.00" style="">+ id: String</text>
<text text-anchor="middle" x="321.83" y="-327.3" font-family="Arial" font-size="10.00" style="">+ price: float</text>
<text text-anchor="middle" x="321.83" y="-315.3" font-family="Arial" font-size="10.00" style="">+ created: ZonedDateTime</text>
<text text-anchor="middle" x="321.83" y="-303.3" font-family="Arial" font-size="10.00" style="">+ title: String</text>
<text text-anchor="middle" x="321.83" y="-291.3" font-family="Arial" font-size="10.00" style="">+ description: String</text>
<text text-anchor="middle" x="321.83" y="-279.3" font-family="Arial" font-size="10.00" style="">+ Author: String</text>
<text text-anchor="middle" x="321.83" y="-267.3" font-family="Arial" font-size="10.00" style="">- iventoryType: InventoryType</text>
<polyline fill="none" stroke="black" points="233.94,-260.3 409.73,-260.3" style=""/>
<text text-anchor="middle" x="321.83" y="-247.3" font-family="Arial" font-size="10.00" style="">+ getId(): String</text>
<text text-anchor="middle" x="321.83" y="-235.3" font-family="Arial" font-size="10.00" style="">+ setId(String): void</text>
<text text-anchor="middle" x="321.83" y="-223.3" font-family="Arial" font-size="10.00" style="">+ getPrice(): float</text>
<text text-anchor="middle" x="321.83" y="-211.3" font-family="Arial" font-size="10.00" style="">+ setPrice(float): void</text>
<text text-anchor="middle" x="321.83" y="-199.3" font-family="Arial" font-size="10.00" style="">+ getCreated(): ZonedDateTime</text>
<text text-anchor="middle" x="321.83" y="-187.3" font-family="Arial" font-size="10.00" style="">+ setCreated(ZonedDateTime): void</text>
<text text-anchor="middle" x="321.83" y="-175.3" font-family="Arial" font-size="10.00" style="">+ getTitle(): String</text>
<text text-anchor="middle" x="321.83" y="-163.3" font-family="Arial" font-size="10.00" style="">+ setTitle(String): void</text>
<text text-anchor="middle" x="321.83" y="-151.3" font-family="Arial" font-size="10.00" style="">+ getDescription(): String</text>
<text text-anchor="middle" x="321.83" y="-139.3" font-family="Arial" font-size="10.00" style="">+ setDescription(String): void</text>
<text text-anchor="middle" x="321.83" y="-127.3" font-family="Arial" font-size="10.00" style="">+ getAuthor(): String</text>
<text text-anchor="middle" x="321.83" y="-115.3" font-family="Arial" font-size="10.00" style="">+ setAuthor(String): void</text>
<text text-anchor="middle" x="321.83" y="-103.3" font-family="Arial" font-size="10.00" style="">+ isArt(InventoryPiece): Boolean</text>
<text text-anchor="middle" x="321.83" y="-91.3" font-family="Arial" font-size="10.00" style="">+ getType(): String</text>
</g>
<!-- InventoryType -->
<g id="node6" class="node" pointer-events="visible" data-name="InventoryType">
<polygon fill="lightyellow" stroke="black" points="282.15,-0.5 282.15,-36.5 361.52,-36.5 361.52,-0.5 282.15,-0.5" style=""/>
<text text-anchor="middle" x="321.83" y="-15.5" font-family="Arial" font-size="10.00" style="">InventoryType</text>
</g>
<!-- InventoryPiece&#45;&gt;InventoryType -->
<g id="edge5" class="edge" data-name="InventoryPiece-&gt;InventoryType">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M321.83,-84.52C321.83,-70.14 321.83,-56.97 321.83,-46.29" style=""/>
<polygon fill="black" stroke="black" points="321.83,-36.5 326.33,-46.5 321.83,-41.5 321.83,-46.5 321.83,-46.5 321.83,-46.5 321.83,-41.5 317.33,-46.5 321.83,-36.5 321.83,-36.5" style=""/>
<text text-anchor="middle" x="331.34" y="-57.7" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
<!-- Drawing -->
<g id="node2" class="node" pointer-events="visible" data-name="Drawing">
<polygon fill="lightgreen" stroke="black" points="0,-510.1 0,-594.1 99.67,-594.1 99.67,-510.1 0,-510.1" style=""/>
<text text-anchor="middle" x="49.83" y="-581.1" font-family="Arial" font-size="10.00" style="">Drawing</text>
<polyline fill="none" stroke="black" points="0,-574.1 99.67,-574.1" style=""/>
<text text-anchor="middle" x="49.83" y="-561.1" font-family="Arial" font-size="10.00" style="">+ style: String</text>
<text text-anchor="middle" x="49.83" y="-549.1" font-family="Arial" font-size="10.00" style="">+ technique: String</text>
<text text-anchor="middle" x="49.83" y="-537.1" font-family="Arial" font-size="10.00" style="">+ category: String</text>
<polyline fill="none" stroke="black" points="0,-530.1 99.67,-530.1" style=""/>
<text text-anchor="middle" x="49.83" y="-517.1" font-family="Arial" font-size="10.00" style="">+ Drawing()</text>
</g>
<!-- Drawing&#45;&gt;InventoryPiece -->
<g id="edge1" class="edge" data-name="Drawing-&gt;InventoryPiece">
<path fill="none" stroke="black" d="M65.55,-510.25C75.88,-486.12 90.81,-455.68 108.83,-431.6 142.09,-387.15 186.28,-344.53 225.78,-310.43" style=""/>
<polygon fill="none" stroke="black" points="227.66,-313.43 232.98,-304.27 223.11,-308.11 227.66,-313.43" style=""/>
<text text-anchor="middle" x="144.59" y="-405.5" font-family="Arial" font-size="9.00" style="">extends</text>
</g>
<!-- Painting -->
<g id="node3" class="node" pointer-events="visible" data-name="Painting">
<polygon fill="lightgreen" stroke="black" points="118,-498.1 118,-606.1 217.67,-606.1 217.67,-498.1 118,-498.1" style=""/>
<text text-anchor="middle" x="167.83" y="-593.1" font-family="Arial" font-size="10.00" style="">Painting</text>
<polyline fill="none" stroke="black" points="118,-586.1 217.67,-586.1" style=""/>
<text text-anchor="middle" x="167.83" y="-573.1" font-family="Arial" font-size="10.00" style="">+ height: int</text>
<text text-anchor="middle" x="167.83" y="-561.1" font-family="Arial" font-size="10.00" style="">+ width: int</text>
<text text-anchor="middle" x="167.83" y="-549.1" font-family="Arial" font-size="10.00" style="">+ style: String</text>
<text text-anchor="middle" x="167.83" y="-537.1" font-family="Arial" font-size="10.00" style="">+ technique: String</text>
<text text-anchor="middle" x="167.83" y="-525.1" font-family="Arial" font-size="10.00" style="">+ category: String</text>
<polyline fill="none" stroke="black" points="118,-518.1 217.67,-518.1" style=""/>
<text text-anchor="middle" x="167.83" y="-505.1" font-family="Arial" font-size="10.00" style="">+ Painting()</text>
</g>
<!-- Painting&#45;&gt;InventoryPiece -->
<g id="edge2" class="edge" data-name="Painting-&gt;InventoryPiece">
<path fill="none" stroke="black" d="M193.61,-498.24C207.72,-469.31 226.03,-431.77 244.37,-394.15" style=""/>
<polygon fill="none" stroke="black" points="247.38,-395.95 248.62,-385.43 241.09,-392.89 247.38,-395.95" style=""/>
<text text-anchor="middle" x="251.59" y="-405.5" font-family="Arial" font-size="9.00" style="">extends</text>
</g>
<!-- Print -->
<g id="node4" class="node" pointer-events="visible" data-name="Print">
<polygon fill="lightgreen" stroke="black" points="235.88,-486.1 235.88,-618.1 407.79,-618.1 407.79,-486.1 235.88,-486.1" style=""/>
<text text-anchor="middle" x="321.83" y="-605.1" font-family="Arial" font-size="10.00" style="">Print</text>
<polyline fill="none" stroke="black" points="235.88,-598.1 407.79,-598.1" style=""/>
<text text-anchor="middle" x="321.83" y="-585.1" font-family="Arial" font-size="10.00" style="">+ openEditionType: String</text>
<text text-anchor="middle" x="321.83" y="-573.1" font-family="Arial" font-size="10.00" style="">+ category: String</text>
<polyline fill="none" stroke="black" points="235.88,-566.1 407.79,-566.1" style=""/>
<text text-anchor="middle" x="321.83" y="-553.1" font-family="Arial" font-size="10.00" style="">+ Print()</text>
<text text-anchor="middle" x="321.83" y="-541.1" font-family="Arial" font-size="10.00" style="">+ Print(String, String)</text>
<text text-anchor="middle" x="321.83" y="-529.1" font-family="Arial" font-size="10.00" style="">+ getOpenEditionType(): String</text>
<text text-anchor="middle" x="321.83" y="-517.1" font-family="Arial" font-size="10.00" style="">+ setOpenEditionType(String): void</text>
<text text-anchor="middle" x="321.83" y="-505.1" font-family="Arial" font-size="10.00" style="">+ getCategory(): String</text>
<text text-anchor="middle" x="321.83" y="-493.1" font-family="Arial" font-size="10.00" style="">+ setCategory(String): void</text>
</g>
<!-- Print&#45;&gt;InventoryPiece -->
<g id="edge3" class="edge" data-name="Print-&gt;InventoryPiece">
<path fill="none" stroke="black" d="M321.83,-486.43C321.83,-459.88 321.83,-427.84 321.83,-395.67" style=""/>
<polygon fill="none" stroke="black" points="325.33,-395.81 321.83,-385.81 318.33,-395.81 325.33,-395.81" style=""/>
<text text-anchor="middle" x="337.59" y="-405.5" font-family="Arial" font-size="9.00" style="">extends</text>
</g>
<!-- Sculpture -->
<g id="node5" class="node" pointer-events="visible" data-name="Sculpture">
<polygon fill="lightgreen" stroke="black" points="425.9,-516.1 425.9,-588.1 517.77,-588.1 517.77,-516.1 425.9,-516.1" style=""/>
<text text-anchor="middle" x="471.83" y="-575.1" font-family="Arial" font-size="10.00" style="">Sculpture</text>
<polyline fill="none" stroke="black" points="425.9,-568.1 517.77,-568.1" style=""/>
<text text-anchor="middle" x="471.83" y="-555.1" font-family="Arial" font-size="10.00" style="">+ material: String</text>
<text text-anchor="middle" x="471.83" y="-543.1" font-family="Arial" font-size="10.00" style="">+ weight: float</text>
<polyline fill="none" stroke="black" points="425.9,-536.1 517.77,-536.1" style=""/>
<text text-anchor="middle" x="471.83" y="-523.1" font-family="Arial" font-size="10.00" style="">+ Sculpture()</text>
</g>
<!-- Sculpture&#45;&gt;InventoryPiece -->
<g id="edge4" class="edge" data-name="Sculpture-&gt;InventoryPiece">
<path fill="none" stroke="black" d="M456.01,-516.24C445.11,-492.36 430.24,-460 416.83,-431.6 411.09,-419.44 405.12,-406.88 399.09,-394.26" style=""/>
<polygon fill="none" stroke="black" points="402.37,-393.01 394.89,-385.5 396.05,-396.03 402.37,-393.01" style=""/>
<text text-anchor="middle" x="422.59" y="-405.5" font-family="Arial" font-size="9.00" style="">extends</text>
</g>
<!-- TransactionOperationEnum -->
<g id="node7" class="node" pointer-events="visible" data-name="TransactionOperationEnum">
<polygon fill="lightyellow" stroke="black" points="701.69,-1069.7 701.69,-1105.7 839.98,-1105.7 839.98,-1069.7 701.69,-1069.7" style=""/>
<text text-anchor="middle" x="770.83" y="-1084.7" font-family="Arial" font-size="10.00" style="">TransactionOperationEnum</text>
</g>
<!-- Customer -->
<g id="node8" class="node" pointer-events="visible" data-name="Customer">
<polygon fill="lightcyan" stroke="black" points="805.94,-719.9 805.94,-1007.9 1001.73,-1007.9 1001.73,-719.9 805.94,-719.9" style=""/>
<text text-anchor="middle" x="903.83" y="-994.9" font-family="Arial" font-size="10.00" style="">Customer</text>
<polyline fill="none" stroke="black" points="805.94,-987.9 1001.73,-987.9" style=""/>
<text text-anchor="middle" x="903.83" y="-974.9" font-family="Arial" font-size="10.00" style=""># id: String</text>
<text text-anchor="middle" x="903.83" y="-962.9" font-family="Arial" font-size="10.00" style=""># updated: ZonedDateTime</text>
<text text-anchor="middle" x="903.83" y="-950.9" font-family="Arial" font-size="10.00" style="">- phone: String</text>
<text text-anchor="middle" x="903.83" y="-938.9" font-family="Arial" font-size="10.00" style="">- mailing: Address</text>
<text text-anchor="middle" x="903.83" y="-926.9" font-family="Arial" font-size="10.00" style="">- email: String</text>
<text text-anchor="middle" x="903.83" y="-914.9" font-family="Arial" font-size="10.00" style="">- nameFirst: String</text>
<text text-anchor="middle" x="903.83" y="-902.9" font-family="Arial" font-size="10.00" style="">- nameLast: String</text>
<polyline fill="none" stroke="black" points="805.94,-895.9 1001.73,-895.9" style=""/>
<text text-anchor="middle" x="903.83" y="-882.9" font-family="Arial" font-size="10.00" style="">+ Customer()</text>
<text text-anchor="middle" x="903.83" y="-870.9" font-family="Arial" font-size="10.00" style="">+ Customer(String, String, String, String)</text>
<text text-anchor="middle" x="903.83" y="-858.9" font-family="Arial" font-size="10.00" style="">+ getEmail(): String</text>
<text text-anchor="middle" x="903.83" y="-846.9" font-family="Arial" font-size="10.00" style="">+ getId(): String</text>
<text text-anchor="middle" x="903.83" y="-834.9" font-family="Arial" font-size="10.00" style="">+ setId(String): void</text>
<text text-anchor="middle" x="903.83" y="-822.9" font-family="Arial" font-size="10.00" style="">+ getPhone(): String</text>
<text text-anchor="middle" x="903.83" y="-810.9" font-family="Arial" font-size="10.00" style="">+ setPhone(String): void</text>
<text text-anchor="middle" x="903.83" y="-798.9" font-family="Arial" font-size="10.00" style="">+ getMailing(): Address</text>
<text text-anchor="middle" x="903.83" y="-786.9" font-family="Arial" font-size="10.00" style="">+ setMailing(Address): void</text>
<text text-anchor="middle" x="903.83" y="-774.9" font-family="Arial" font-size="10.00" style="">+ setEmail(String): void</text>
<text text-anchor="middle" x="903.83" y="-762.9" font-family="Arial" font-size="10.00" style="">+ getNameFirst(): String</text>
<text text-anchor="middle" x="903.83" y="-750.9" font-family="Arial" font-size="10.00" style="">+ setNameFirst(String): void</text>
<text text-anchor="middle" x="903.83" y="-738.9" font-family="Arial" font-size="10.00" style="">+ getNameLast(): String</text>
<text text-anchor="middle" x="903.83" y="-726.9" font-family="Arial" font-size="10.00" style="">+ setNameLast(String): void</text>
</g>
<!-- Address -->
<g id="node9" class="node" pointer-events="visible" data-name="Address">
<polygon fill="white" stroke="black" points="651.27,-432.1 651.27,-672.1 840.4,-672.1 840.4,-432.1 651.27,-432.1" style=""/>
<text text-anchor="middle" x="745.83" y="-659.1" font-family="Arial" font-size="10.00" style="">Address</text>
<polyline fill="none" stroke="black" points="651.27,-652.1 840.4,-652.1" style=""/>
<text text-anchor="middle" x="745.83" y="-639.1" font-family="Arial" font-size="10.00" style="">- street: String</text>
<text text-anchor="middle" x="745.83" y="-627.1" font-family="Arial" font-size="10.00" style="">- city: String</text>
<text text-anchor="middle" x="745.83" y="-615.1" font-family="Arial" font-size="10.00" style="">- state: String</text>
<text text-anchor="middle" x="745.83" y="-603.1" font-family="Arial" font-size="10.00" style="">- zip: String</text>
<polyline fill="none" stroke="black" points="651.27,-596.1 840.4,-596.1" style=""/>
<text text-anchor="middle" x="745.83" y="-583.1" font-family="Arial" font-size="10.00" style="">+ Address()</text>
<text text-anchor="middle" x="745.83" y="-571.1" font-family="Arial" font-size="10.00" style="">+ Address(String, String, String, String)</text>
<text text-anchor="middle" x="745.83" y="-559.1" font-family="Arial" font-size="10.00" style="">+ getStreet(): String</text>
<text text-anchor="middle" x="745.83" y="-547.1" font-family="Arial" font-size="10.00" style="">+ setStreet(String): void</text>
<text text-anchor="middle" x="745.83" y="-535.1" font-family="Arial" font-size="10.00" style="">+ getCity(): String</text>
<text text-anchor="middle" x="745.83" y="-523.1" font-family="Arial" font-size="10.00" style="">+ setCity(String): void</text>
<text text-anchor="middle" x="745.83" y="-511.1" font-family="Arial" font-size="10.00" style="">+ getState(): String</text>
<text text-anchor="middle" x="745.83" y="-499.1" font-family="Arial" font-size="10.00" style="">+ setState(String): void</text>
<text text-anchor="middle" x="745.83" y="-487.1" font-family="Arial" font-size="10.00" style="">+ getZip(): String</text>
<text text-anchor="middle" x="745.83" y="-475.1" font-family="Arial" font-size="10.00" style="">+ setZip(String): void</text>
<text text-anchor="middle" x="745.83" y="-463.1" font-family="Arial" font-size="10.00" style="">+ hashCode(): int</text>
<text text-anchor="middle" x="745.83" y="-451.1" font-family="Arial" font-size="10.00" style="">+ equals(Object): boolean</text>
<text text-anchor="middle" x="745.83" y="-439.1" font-family="Arial" font-size="10.00" style="">+ toString(): String</text>
</g>
<!-- Customer&#45;&gt;Address -->
<g id="edge6" class="edge" data-name="Customer-&gt;Address">
<path fill="none" stroke="black" d="M831.08,-720.24C824.62,-707.59 818.11,-694.82 811.72,-682.29" style=""/>
<polygon fill="black" stroke="black" points="811.84,-682.51 805.55,-678.99 806.38,-671.82 812.67,-675.35 811.84,-682.51" style=""/>
<text text-anchor="middle" x="827.09" y="-693.3" font-family="Arial" font-size="9.00" style="">has</text>
</g>
<!-- Transaction -->
<g id="node10" class="node" pointer-events="visible" data-name="Transaction">
<polygon fill="lightcyan" stroke="black" points="599.54,-761.9 599.54,-965.9 788.12,-965.9 788.12,-761.9 599.54,-761.9" style=""/>
<text text-anchor="middle" x="693.83" y="-952.9" font-family="Arial" font-size="10.00" style="">Transaction</text>
<polyline fill="none" stroke="black" points="599.54,-945.9 788.12,-945.9" style=""/>
<text text-anchor="middle" x="693.83" y="-932.9" font-family="Arial" font-size="10.00" style="">- id: String</text>
<text text-anchor="middle" x="693.83" y="-920.9" font-family="Arial" font-size="10.00" style="">- created: ZonedDateTime</text>
<text text-anchor="middle" x="693.83" y="-908.9" font-family="Arial" font-size="10.00" style="">- completed: ZonedDateTime</text>
<text text-anchor="middle" x="693.83" y="-896.9" font-family="Arial" font-size="10.00" style="">- customerId: String</text>
<text text-anchor="middle" x="693.83" y="-884.9" font-family="Arial" font-size="10.00" style="">- shipToAddress: Address</text>
<text text-anchor="middle" x="693.83" y="-872.9" font-family="Arial" font-size="10.00" style="">- customerInventoryList: InventoryList</text>
<text text-anchor="middle" x="693.83" y="-860.9" font-family="Arial" font-size="10.00" style="">- attributes: JsonArray</text>
<polyline fill="none" stroke="black" points="599.54,-853.9 788.12,-853.9" style=""/>
<text text-anchor="middle" x="693.83" y="-840.9" font-family="Arial" font-size="10.00" style="">+ Transaction()</text>
<text text-anchor="middle" x="693.83" y="-828.9" font-family="Arial" font-size="10.00" style="">+ getId(): String</text>
<text text-anchor="middle" x="693.83" y="-816.9" font-family="Arial" font-size="10.00" style="">+ setId(String): void</text>
<text text-anchor="middle" x="693.83" y="-804.9" font-family="Arial" font-size="10.00" style="">+ getCreated(): ZonedDateTime</text>
<text text-anchor="middle" x="693.83" y="-792.9" font-family="Arial" font-size="10.00" style="">+ setCreated(ZonedDateTime): void</text>
<text text-anchor="middle" x="693.83" y="-780.9" font-family="Arial" font-size="10.00" style="">+ getCompleted(): ZonedDateTime</text>
<text text-anchor="middle" x="693.83" y="-768.9" font-family="Arial" font-size="10.00" style="">+ setCompleted(ZonedDateTime): void</text>
</g>
<!-- Transaction&#45;&gt;Address -->
<g id="edge7" class="edge" data-name="Transaction-&gt;Address">
<path fill="none" stroke="black" d="M710.72,-762.32C715.02,-736.67 719.71,-708.74 724.21,-681.9" style=""/>
<polygon fill="black" stroke="black" points="725.87,-672.06 728.65,-682.67 725.04,-676.99 724.21,-681.92 724.21,-681.92 724.21,-681.92 725.04,-676.99 719.77,-681.18 725.87,-672.06 725.87,-672.06" style=""/>
<text text-anchor="middle" x="750.85" y="-693.3" font-family="Arial" font-size="9.00" style="">shipToAddress</text>
</g>
<!-- InventoryList -->
<g id="node11" class="node" pointer-events="visible" data-name="InventoryList">
<polygon fill="wheat" stroke="black" points="535.49,-534.1 535.49,-570.1 608.18,-570.1 608.18,-534.1 535.49,-534.1" style=""/>
<text text-anchor="middle" x="571.83" y="-549.1" font-family="Arial" font-size="10.00" style="">InventoryList</text>
</g>
<!-- Transaction&#45;&gt;InventoryList -->
<g id="edge8" class="edge" data-name="Transaction-&gt;InventoryList">
<path fill="none" stroke="black" d="M652.99,-762.2C644.92,-742.09 636.54,-721.09 628.8,-701.4 612.02,-658.74 593.01,-608.96 581.75,-579.29" style=""/>
<polygon fill="black" stroke="black" points="578.24,-570.04 585.99,-577.79 580.01,-574.71 581.78,-579.39 581.78,-579.39 581.78,-579.39 580.01,-574.71 577.58,-580.98 578.24,-570.04 578.24,-570.04" style=""/>
<text text-anchor="middle" x="672.85" y="-693.3" font-family="Arial" font-size="9.00" style="">customerInventoryList</text>
</g>
<!-- InventoryList&#45;&gt;InventoryPiece -->
<g id="edge12" class="edge" data-name="InventoryList-&gt;InventoryPiece">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M568,-534.16C561.99,-509.94 548.7,-464.71 526.83,-431.6 497.49,-387.16 456.38,-345.25 418.67,-311.66" style=""/>
<polygon fill="black" stroke="black" points="418.68,-311.67 411.54,-310.71 409.67,-303.74 416.82,-304.7 418.68,-311.67" style=""/>
<text text-anchor="middle" x="530.59" y="-405.5" font-family="Arial" font-size="9.00" style="">contains</text>
</g>
<!-- CustomerList -->
<g id="node12" class="node" pointer-events="visible" data-name="CustomerList">
<polygon fill="wheat" stroke="black" points="1166.38,-1069.7 1166.38,-1105.7 1241.29,-1105.7 1241.29,-1069.7 1166.38,-1069.7" style=""/>
<text text-anchor="middle" x="1203.83" y="-1084.7" font-family="Arial" font-size="10.00" style="">CustomerList</text>
</g>
<!-- CustomerList&#45;&gt;Customer -->
<g id="edge13" class="edge" data-name="CustomerList-&gt;Customer">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1181.28,-1070.03C1145.38,-1043.48 1072.96,-989.94 1011.11,-944.21" style=""/>
<polygon fill="black" stroke="black" points="1011.32,-944.37 1004.12,-944.02 1001.67,-937.24 1008.87,-937.59 1011.32,-944.37" style=""/>
<text text-anchor="middle" x="1147.59" y="-1029.1" font-family="Arial" font-size="9.00" style="">contains</text>
</g>
<!-- TransactionList -->
<g id="node13" class="node" pointer-events="visible" data-name="TransactionList">
<polygon fill="wheat" stroke="black" points="599.93,-1069.7 599.93,-1105.7 683.74,-1105.7 683.74,-1069.7 599.93,-1069.7" style=""/>
<text text-anchor="middle" x="641.83" y="-1084.7" font-family="Arial" font-size="10.00" style="">TransactionList</text>
</g>
<!-- TransactionList&#45;&gt;Transaction -->
<g id="edge14" class="edge" data-name="TransactionList-&gt;Transaction">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M645.74,-1070.03C650.52,-1049.67 659.01,-1013.42 667.55,-977" style=""/>
<polygon fill="black" stroke="black" points="667.46,-977.4 664.93,-970.64 670.2,-965.71 672.72,-972.47 667.46,-977.4" style=""/>
<text text-anchor="middle" x="672.59" y="-1029.1" font-family="Arial" font-size="9.00" style="">contains</text>
</g>
<!-- InventoryManager -->
<g id="node14" class="node" pointer-events="visible" data-name="InventoryManager">
<polygon fill="lightpink" stroke="black" points="398.42,-1138.7 398.42,-1190.7 557.25,-1190.7 557.25,-1138.7 398.42,-1138.7" style=""/>
<text text-anchor="middle" x="477.83" y="-1177.7" font-family="Arial" font-size="10.00" style="">InventoryManager</text>
<polyline fill="none" stroke="black" points="398.42,-1170.7 557.25,-1170.7" style=""/>
<text text-anchor="middle" x="477.83" y="-1157.7" font-family="Arial" font-size="10.00" style="">+ INVENTORY: InventoryList</text>
<text text-anchor="middle" x="477.83" y="-1145.7" font-family="Arial" font-size="10.00" style="">- INSTANCE: InventoryManager</text>
<polyline fill="none" stroke="black" points="398.42,-1138.7 557.25,-1138.7" style=""/>
</g>
<!-- InventoryManager&#45;&gt;InventoryList -->
<g id="edge9" class="edge" data-name="InventoryManager-&gt;InventoryList">
<path fill="none" stroke="black" d="M481.24,-1138.88C485.05,-1111.37 491.45,-1065.69 497.33,-1026.4 522.59,-857.61 555.22,-655.35 567.18,-581.69" style=""/>
<polygon fill="black" stroke="black" points="567.18,-581.7 564.19,-575.13 569.1,-569.85 572.09,-576.42 567.18,-581.7" style=""/>
<text text-anchor="middle" x="524.09" y="-1029.1" font-family="Arial" font-size="9.00" style="">INVENTORY</text>
</g>
<!-- CustomerManager -->
<g id="node15" class="node" pointer-events="visible" data-name="CustomerManager">
<polygon fill="lightpink" stroke="black" points="945.16,-1239.7 945.16,-1359.7 1116.51,-1359.7 1116.51,-1239.7 945.16,-1239.7" style=""/>
<text text-anchor="middle" x="1030.83" y="-1346.7" font-family="Arial" font-size="10.00" style="">CustomerManager</text>
<polyline fill="none" stroke="black" points="945.16,-1339.7 1116.51,-1339.7" style=""/>
<text text-anchor="middle" x="1030.83" y="-1326.7" font-family="Arial" font-size="10.00" style="">+ CUSTOMERS: CustomerList</text>
<text text-anchor="middle" x="1030.83" y="-1314.7" font-family="Arial" font-size="10.00" style="">- INSTANCE: CustomerManager</text>
<polyline fill="none" stroke="black" points="945.16,-1307.7 1116.51,-1307.7" style=""/>
<text text-anchor="middle" x="1030.83" y="-1294.7" font-family="Arial" font-size="10.00" style="">+ getInstance(): CustomerManager</text>
<text text-anchor="middle" x="1030.83" y="-1282.7" font-family="Arial" font-size="10.00" style="">+ add(Customer): boolean</text>
<text text-anchor="middle" x="1030.83" y="-1270.7" font-family="Arial" font-size="10.00" style="">- check(Customer): void</text>
<text text-anchor="middle" x="1030.83" y="-1258.7" font-family="Arial" font-size="10.00" style="">+ findById(String): Customer</text>
<text text-anchor="middle" x="1030.83" y="-1246.7" font-family="Arial" font-size="10.00" style="">+ findByEmail(String): Customer</text>
</g>
<!-- CustomerManager&#45;&gt;CustomerList -->
<g id="edge10" class="edge" data-name="CustomerManager-&gt;CustomerList">
<path fill="none" stroke="black" d="M1079.25,-1239.92C1113.32,-1198.58 1157.22,-1145.28 1182.78,-1114.26" style=""/>
<polygon fill="black" stroke="black" points="1182.46,-1114.65 1183.19,-1107.47 1190.09,-1105.38 1189.36,-1112.56 1182.46,-1114.65" style=""/>
<text text-anchor="middle" x="1190.58" y="-1162" font-family="Arial" font-size="9.00" style="">CUSTOMERS</text>
</g>
<!-- InvalidRecordDataException -->
<g id="node19" class="node" pointer-events="visible" data-name="InvalidRecordDataException">
<polygon fill="tomato" stroke="black" points="912.92,-1055.7 912.92,-1119.7 1148.75,-1119.7 1148.75,-1055.7 912.92,-1055.7" style=""/>
<text text-anchor="middle" x="1030.83" y="-1106.7" font-family="Arial" font-size="10.00" style="">InvalidRecordDataException</text>
<polyline fill="none" stroke="black" points="912.92,-1099.7 1148.75,-1099.7" style=""/>
<polyline fill="none" stroke="black" points="912.92,-1099.7 1148.75,-1099.7" style=""/>
<text text-anchor="middle" x="1030.83" y="-1086.7" font-family="Arial" font-size="10.00" style="">+ InvalidRecordDataException(String)</text>
<text text-anchor="middle" x="1030.83" y="-1074.7" font-family="Arial" font-size="10.00" style="">+ InvalidRecordDataException(String, Throwable)</text>
<text text-anchor="middle" x="1030.83" y="-1062.7" font-family="Arial" font-size="10.00" style="">+ InvalidRecordDataException(Throwable)</text>
</g>
<!-- CustomerManager&#45;&gt;InvalidRecordDataException -->
<g id="edge19" class="edge" data-name="CustomerManager-&gt;InvalidRecordDataException">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1030.83,-1239.92C1030.83,-1204.67 1030.83,-1160.73 1030.83,-1129.31" style=""/>
<polygon fill="black" stroke="black" points="1030.83,-1119.58 1035.33,-1129.58 1030.83,-1124.58 1030.83,-1129.58 1030.83,-1129.58 1030.83,-1129.58 1030.83,-1124.58 1026.33,-1129.58 1030.83,-1119.58 1030.83,-1119.58" style=""/>
<text text-anchor="middle" x="1044.09" y="-1162" font-family="Arial" font-size="9.00" style="">throws</text>
</g>
<!-- TransactionManager -->
<g id="node16" class="node" pointer-events="visible" data-name="TransactionManager">
<polygon fill="lightpink" stroke="black" points="575.52,-1209.7 575.52,-1389.7 904.15,-1389.7 904.15,-1209.7 575.52,-1209.7" style=""/>
<text text-anchor="middle" x="739.83" y="-1376.7" font-family="Arial" font-size="10.00" style="">TransactionManager</text>
<polyline fill="none" stroke="black" points="575.52,-1369.7 904.15,-1369.7" style=""/>
<text text-anchor="middle" x="739.83" y="-1356.7" font-family="Arial" font-size="10.00" style="">+ TRANSACTIONS: TransactionList</text>
<text text-anchor="middle" x="739.83" y="-1344.7" font-family="Arial" font-size="10.00" style="">- INSTANCE: TransactionManager</text>
<polyline fill="none" stroke="black" points="575.52,-1337.7 904.15,-1337.7" style=""/>
<text text-anchor="middle" x="739.83" y="-1324.7" font-family="Arial" font-size="10.00" style="">+ getInstance(): TransactionManager</text>
<text text-anchor="middle" x="739.83" y="-1312.7" font-family="Arial" font-size="10.00" style="">+ TransactRequest(Customer, InventoryList, Transaction): Transaction</text>
<text text-anchor="middle" x="739.83" y="-1300.7" font-family="Arial" font-size="10.00" style="">+ compute(Transaction, TransactionOperationEnum): void</text>
<text text-anchor="middle" x="739.83" y="-1288.7" font-family="Arial" font-size="10.00" style="">+ compute(Transaction): void</text>
<text text-anchor="middle" x="739.83" y="-1276.7" font-family="Arial" font-size="10.00" style="">+ complete(Transaction): void</text>
<text text-anchor="middle" x="739.83" y="-1264.7" font-family="Arial" font-size="10.00" style="">+ findByCustomerEmail(String): TransactionList</text>
<text text-anchor="middle" x="739.83" y="-1252.7" font-family="Arial" font-size="10.00" style="">+ findByTransactionId(String): TransactionList</text>
<text text-anchor="middle" x="739.83" y="-1240.7" font-family="Arial" font-size="10.00" style="">+ findByTransactionDate(ZonedDateTime): TransactionList</text>
<text text-anchor="middle" x="739.83" y="-1228.7" font-family="Arial" font-size="10.00" style="">+ remove(Transaction): void</text>
<text text-anchor="middle" x="739.83" y="-1216.7" font-family="Arial" font-size="10.00" style="">+ save(): void</text>
</g>
<!-- TransactionManager&#45;&gt;TransactionOperationEnum -->
<g id="edge18" class="edge" data-name="TransactionManager-&gt;TransactionOperationEnum">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M752.94,-1209.95C757.97,-1175.82 763.36,-1139.34 766.89,-1115.42" style=""/>
<polygon fill="black" stroke="black" points="768.33,-1105.67 771.32,-1116.22 767.6,-1110.61 766.87,-1115.56 766.87,-1115.56 766.87,-1115.56 767.6,-1110.61 762.42,-1114.9 768.33,-1105.67 768.33,-1105.67" style=""/>
<text text-anchor="middle" x="772.34" y="-1162" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
<!-- TransactionManager&#45;&gt;Customer -->
<g id="edge20" class="edge" data-name="TransactionManager-&gt;Customer">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M802.02,-1210.07C819.25,-1182.31 836.57,-1150.88 848.83,-1120.2 861.75,-1087.87 871.87,-1051.97 879.7,-1017.55" style=""/>
<polygon fill="black" stroke="black" points="881.85,-1007.88 884.07,-1018.62 880.77,-1012.76 879.68,-1017.64 879.68,-1017.64 879.68,-1017.64 880.77,-1012.76 875.29,-1016.67 881.85,-1007.88 881.85,-1007.88" style=""/>
<text text-anchor="middle" x="879.34" y="-1085" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
<!-- TransactionManager&#45;&gt;InventoryList -->
<g id="edge21" class="edge" data-name="TransactionManager-&gt;InventoryList">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M646.35,-1210.01C624.09,-1183.42 603.21,-1152.63 590.83,-1120.2 552.5,-1019.74 565.73,-678.25 570.45,-579.84" style=""/>
<polygon fill="black" stroke="black" points="570.93,-570.08 574.94,-580.29 570.69,-575.07 570.44,-580.07 570.44,-580.07 570.44,-580.07 570.69,-575.07 565.95,-579.84 570.93,-570.08 570.93,-570.08" style=""/>
<text text-anchor="middle" x="583.34" y="-1029.1" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
<!-- TransactionManager&#45;&gt;TransactionList -->
<g id="edge11" class="edge" data-name="TransactionManager-&gt;TransactionList">
<path fill="none" stroke="black" d="M690.4,-1209.99C687.24,-1203.68 684.18,-1197.37 681.33,-1191.2 669.95,-1166.6 659.04,-1137.73 651.58,-1116.9" style=""/>
<polygon fill="black" stroke="black" points="651.6,-1116.98 645.83,-1112.66 647.6,-1105.67 653.37,-1109.99 651.6,-1116.98" style=""/>
<text text-anchor="middle" x="716.09" y="-1162" font-family="Arial" font-size="9.00" style="">TRANSACTIONS</text>
</g>
<!-- DataRepository -->
<g id="node17" class="node" pointer-events="visible" data-name="DataRepository">
<polygon fill="orange" stroke="black" points="697.37,-1451.5 697.37,-1487.5 782.29,-1487.5 782.29,-1451.5 697.37,-1451.5" style=""/>
<text text-anchor="middle" x="739.83" y="-1466.5" font-family="Arial" font-size="10.00" style="">DataRepository</text>
</g>
<!-- DataRepository&#45;&gt;InventoryManager -->
<g id="edge15" class="edge" data-name="DataRepository-&gt;InventoryManager">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M697.51,-1459.03C658.8,-1448.35 602.32,-1427.42 566.83,-1390.2 515.24,-1336.09 492.34,-1248.44 483.19,-1200.22" style=""/>
<polygon fill="black" stroke="black" points="481.44,-1190.56 487.65,-1199.6 482.34,-1195.48 483.23,-1200.4 483.23,-1200.4 483.23,-1200.4 482.34,-1195.48 478.8,-1201.2 481.44,-1190.56 481.44,-1190.56" style=""/>
<text text-anchor="middle" x="611.34" y="-1410.9" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
<!-- DataRepository&#45;&gt;CustomerManager -->
<g id="edge16" class="edge" data-name="DataRepository-&gt;CustomerManager">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M765.24,-1451.51C773.25,-1446.51 782.25,-1441.25 790.83,-1437 842.88,-1411.23 862.08,-1418.43 912.83,-1390.2 925.95,-1382.9 939.22,-1374.28 951.9,-1365.31" style=""/>
<polygon fill="black" stroke="black" points="959.71,-1359.7 954.22,-1369.19 955.65,-1362.62 951.59,-1365.54 951.59,-1365.54 951.59,-1365.54 955.65,-1362.62 948.96,-1361.88 959.71,-1359.7 959.71,-1359.7" style=""/>
<text text-anchor="middle" x="880.34" y="-1410.9" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
<!-- DataRepository&#45;&gt;TransactionManager -->
<g id="edge17" class="edge" data-name="DataRepository-&gt;TransactionManager">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M739.83,-1451.8C739.83,-1438.9 739.83,-1419.9 739.83,-1399.68" style=""/>
<polygon fill="black" stroke="black" points="739.83,-1389.69 744.33,-1399.69 739.83,-1394.69 739.83,-1399.69 739.83,-1399.69 739.83,-1399.69 739.83,-1394.69 735.33,-1399.69 739.83,-1389.69 739.83,-1389.69" style=""/>
<text text-anchor="middle" x="749.34" y="-1410.9" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
<!-- InvalidArtOperationException -->
<g id="node18" class="node" pointer-events="visible" data-name="InvalidArtOperationException">
<polygon fill="tomato" stroke="black" points="800.25,-1437.5 800.25,-1501.5 1039.42,-1501.5 1039.42,-1437.5 800.25,-1437.5" style=""/>
<text text-anchor="middle" x="919.83" y="-1488.5" font-family="Arial" font-size="10.00" style="">InvalidArtOperationException</text>
<polyline fill="none" stroke="black" points="800.25,-1481.5 1039.42,-1481.5" style=""/>
<polyline fill="none" stroke="black" points="800.25,-1481.5 1039.42,-1481.5" style=""/>
<text text-anchor="middle" x="919.83" y="-1468.5" font-family="Arial" font-size="10.00" style="">+ InvalidArtOperationException(String)</text>
<text text-anchor="middle" x="919.83" y="-1456.5" font-family="Arial" font-size="10.00" style="">+ InvalidArtOperationException(String, Throwable)</text>
<text text-anchor="middle" x="919.83" y="-1444.5" font-family="Arial" font-size="10.00" style="">+ InvalidArtOperationException(Throwable)</text>
</g>
<!-- InvalidTransactionException -->
<g id="node20" class="node" pointer-events="visible" data-name="InvalidTransactionException">
<polygon fill="tomato" stroke="black" points="1057.48,-1437.5 1057.48,-1501.5 1292.19,-1501.5 1292.19,-1437.5 1057.48,-1437.5" style=""/>
<text text-anchor="middle" x="1174.83" y="-1488.5" font-family="Arial" font-size="10.00" style="">InvalidTransactionException</text>
<polyline fill="none" stroke="black" points="1057.48,-1481.5 1292.19,-1481.5" style=""/>
<polyline fill="none" stroke="black" points="1057.48,-1481.5 1292.19,-1481.5" style=""/>
<text text-anchor="middle" x="1174.83" y="-1468.5" font-family="Arial" font-size="10.00" style="">+ InvalidTransactionException(String)</text>
<text text-anchor="middle" x="1174.83" y="-1456.5" font-family="Arial" font-size="10.00" style="">+ InvalidTransactionException(String, Throwable)</text>
<text text-anchor="middle" x="1174.83" y="-1444.5" font-family="Arial" font-size="10.00" style="">+ InvalidTransactionException(Throwable)</text>
</g>
<!-- InvalidTransOperationException -->
<g id="node21" class="node" pointer-events="visible" data-name="InvalidTransOperationException">
<polygon fill="tomato" stroke="black" points="1309.86,-1437.5 1309.86,-1501.5 1561.81,-1501.5 1561.81,-1437.5 1309.86,-1437.5" style=""/>
<text text-anchor="middle" x="1435.83" y="-1488.5" font-family="Arial" font-size="10.00" style="">InvalidTransOperationException</text>
<polyline fill="none" stroke="black" points="1309.86,-1481.5 1561.81,-1481.5" style=""/>
<polyline fill="none" stroke="black" points="1309.86,-1481.5 1561.81,-1481.5" style=""/>
<text text-anchor="middle" x="1435.83" y="-1468.5" font-family="Arial" font-size="10.00" style="">+ InvalidTransOperationException(String)</text>
<text text-anchor="middle" x="1435.83" y="-1456.5" font-family="Arial" font-size="10.00" style="">+ InvalidTransOperationException(String, Throwable)</text>
<text text-anchor="middle" x="1435.83" y="-1444.5" font-family="Arial" font-size="10.00" style="">+ InvalidTransOperationException(Throwable)</text>
</g>
</g>
</svg>