Files
inventorym/uml/classdiagram.dot

92 lines
7.6 KiB
Plaintext
Raw Normal View History

2025-10-28 11:43:15 -04:00
digraph InventoryManagementSystem {
rankdir=TB;
node [shape=record, fontname="Arial", fontsize=10];
edge [fontname="Arial", fontsize=9];
// Core Model Classes
Address [label="{Address|+ street: String\l+ city: String\l+ state: String\l+ zip: String\l|+ getStreet(): String\l+ setStreet(String): void\l+ getCity(): String\l+ setCity(String): void\l+ getState(): String\l+ setState(String): void\l+ getZip(): String\l+ setZip(String): void\l+ hashCode(): int\l+ equals(Object): boolean\l+ toString(): String\l}"];
Customer [label="{Customer|# id: String\l# updated: ZonedDateTime\l- phone: String\l- mailing: Address\l- email: String\l- nameFirst: String\l- nameLast: String\l|+ Customer()\l+ Customer(String, String, String, String)\l+ getId(): String\l+ setId(String): void\l+ getPhone(): String\l+ setPhone(String): void\l+ getMailing(): Address\l+ setMailing(Address): void\l+ getEmail(): String\l+ setEmail(String): void\l+ getNameFirst(): String\l+ setNameFirst(String): void\l+ getNameLast(): String\l+ setNameLast(String): void\l}"];
InventoryPiece [label="{«abstract»\lInventoryPiece|+ id: String\l+ price: float\l+ created: ZonedDateTime\l+ title: String\l+ description: String\l+ Author: String\l- iventoryType: InventoryType\l|+ InventoryPiece()\l+ InventoryPiece(InventoryType)\l+ isArt(InventoryPiece): Boolean\l+ getType(): String\l+ getId(): String\l+ setId(String): void\l+ getPrice(): float\l+ setPrice(float): void\l+ getCreated(): ZonedDateTime\l+ setCreated(ZonedDateTime): void\l+ getTitle(): String\l+ setTitle(String): void\l+ getDescription(): String\l+ setDescription(String): void\l+ getAuthor(): String\l+ setAuthor(String): void\l}"];
Transaction [label="{Transaction|- id: String\l- created: ZonedDateTime\l- completed: ZonedDateTime\l- customerId: String\l- shipToAddress: Address\l- customerInventoryList: InventoryList\l- attributes: JsonArray\l|+ Transaction()\l+ getId(): String\l+ setId(String): void\l+ getCreated(): ZonedDateTime\l+ setCreated(ZonedDateTime): void\l+ getCompleted(): ZonedDateTime\l+ setCompleted(ZonedDateTime): void\l}"];
// Inventory Subclasses
Drawing [label="{Drawing|+ style: String\l+ technique: String\l+ category: String\l|+ Drawing()\l}"];
Painting [label="{Painting|- height: int\l- width: int\l- style: String\l- technique: String\l- category: String\l|+ Painting()\l}"];
Print [label="{Print|- openEditionType: String\l- category: String\l|+ Print()\l+ Print(String, String)\l+ getOpenEditionType(): String\l+ setOpenEditionType(String): void\l+ getCategory(): String\l+ setCategory(String): void\l}"];
Sculpture [label="{Sculpture|- material: String\l- weight: float\l|+ Sculpture()\l}"];
// Enums
InventoryType [label="{«enumeration»\lInventoryType|PAINTING\lDRAWING\lPRINT\lSCULPTURE\l}"];
TransactionOperationEnum [label="{«enumeration»\lTransactionOperationEnum|Completed\lDraft\lPricing\lRemoved\lShipping\l}"];
// Collections
CustomerList [label="{CustomerList|+ CustomerList()\l}"];
InventoryList [label="{InventoryList|+ InventoryList()\l}"];
TransactionList [label="{TransactionList|+ TransactionList()\l+ add(Transaction): boolean\l}"];
// Managers
CustomerManager [label="{CustomerManager|- INSTANCE: CustomerManager\l+ CUSTOMERS: CustomerList\l|+ getInstance(): CustomerManager\l+ add(Customer): boolean\l- check(Customer): void\l+ findById(String): Customer\l+ findByEmail(String): Customer\l}"];
InventoryManager [label="{InventoryManager|- INSTANCE: InventoryManager\l+ INVENTORY: InventoryList\l|+ getInstance(): InventoryManager\l+ getArtPieceTypes(): Set\l+ add(InventoryPiece): void\l+ find(String): InventoryPiece\l+ update(InventoryPiece): InventoryPiece\l+ save(): void\l+ loadAll(): void\l+ Remove(InventoryPiece): void\l}"];
TransactionManager [label="{TransactionManager|- INSTANCE: TransactionManager\l+ TRANSACTIONS: TransactionList\l|+ getInstance(): TransactionManager\l+ TransactRequest(Customer, InventoryList, Transaction): Transaction\l+ compute(Transaction, TransactionOperationEnum): void\l+ compute(Transaction): void\l+ complete(Transaction): void\l+ findByCustomerEmail(String): TransactionList\l+ findByTransactionId(String): TransactionList\l+ findByTransactionDate(ZonedDateTime): TransactionList\l+ remove(Transaction): void\l+ save(): void\l}"];
DataRepository [label="{DataRepository|- INSTANCE: DataRepository\l|+ getInstance(): DataRepository\l+ generateRandomID(int): String\l+ generateRandom10DigitID(): String\l+ WalkFileSystemTree(InventoryManager): void\l+ WalkFileSystemTree(CustomerManager): void\l+ WalkFileSystemTree(TransactionManager): void\l+ mapJsonToObjectList(String, Class): List\l}"];
// Exceptions
InvalidRecordDataException [label="{InvalidRecordDataException|+ InvalidRecordDataException(String)\l+ InvalidRecordDataException(String, Throwable)\l+ InvalidRecordDataException(Throwable)\l}"];
InvalidArtOperationException [label="{InvalidArtOperationException|+ InvalidArtOperationException(String)\l+ InvalidArtOperationException(String, Throwable)\l+ InvalidArtOperationException(Throwable)\l}"];
InvalidTransactionException [label="{InvalidTransactionException|+ InvalidTransactionException(String)\l+ InvalidTransactionException(String, Throwable)\l+ InvalidTransactionException(Throwable)\l}"];
InvalidTransOperationException [label="{InvalidTransOperationException|+ InvalidTransOperationException(String)\l+ InvalidTransOperationException(String, Throwable)\l+ InvalidTransOperationException(Throwable)\l}"];
// Inheritance relationships
Drawing -> InventoryPiece [arrowhead=empty, label="extends"];
Painting -> InventoryPiece [arrowhead=empty, label="extends"];
Print -> InventoryPiece [arrowhead=empty, label="extends"];
Sculpture -> InventoryPiece [arrowhead=empty, label="extends"];
CustomerList -> "ArrayList<Customer>" [arrowhead=empty, label="extends"];
InventoryList -> "ArrayList<InventoryPiece>" [arrowhead=empty, label="extends"];
TransactionList -> "ArrayList<Transaction>" [arrowhead=empty, label="extends"];
InvalidRecordDataException -> RuntimeException [arrowhead=empty, label="extends"];
InvalidArtOperationException -> RuntimeException [arrowhead=empty, label="extends"];
InvalidTransactionException -> RuntimeException [arrowhead=empty, label="extends"];
InvalidTransOperationException -> RuntimeException [arrowhead=empty, label="extends"];
// Associations
Customer -> Address [arrowhead=open, label="mailing"];
Transaction -> Address [arrowhead=open, label="shipToAddress"];
Transaction -> InventoryList [arrowhead=open, label="customerInventoryList"];
CustomerManager -> CustomerList [arrowhead=open, label="CUSTOMERS"];
InventoryManager -> InventoryList [arrowhead=open, label="INVENTORY"];
TransactionManager -> TransactionList [arrowhead=open, label="TRANSACTIONS"];
InventoryPiece -> InventoryType [arrowhead=open, label="iventoryType"];
// Dependencies
CustomerManager -> InvalidRecordDataException [style=dashed, arrowhead=open, label="throws"];
DataRepository -> InventoryManager [style=dashed, arrowhead=open];
DataRepository -> CustomerManager [style=dashed, arrowhead=open];
DataRepository -> TransactionManager [style=dashed, arrowhead=open];
TransactionManager -> Customer [style=dashed, arrowhead=open];
TransactionManager -> TransactionOperationEnum [style=dashed, arrowhead=open];
// Invisible nodes for layout
"ArrayList<Customer>" [shape=plaintext, label=""];
"ArrayList<InventoryPiece>" [shape=plaintext, label=""];
"ArrayList<Transaction>" [shape=plaintext, label=""];
RuntimeException [shape=plaintext, label=""];
}