92 lines
7.6 KiB
Plaintext
92 lines
7.6 KiB
Plaintext
|
|
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=""];
|
||
|
|
}
|