update uml
This commit is contained in:
@@ -1,91 +1,90 @@
|
||||
digraph InventoryManagementSystem {
|
||||
rankdir=TB;
|
||||
node [shape=record, fontname="Arial", fontsize=10];
|
||||
edge [fontname="Arial", fontsize=9];
|
||||
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}"];
|
||||
// Abstract and Base Classes
|
||||
InventoryPiece [label="{InventoryPiece\n(abstract)|+ id: String\n+ price: float\n+ created: ZonedDateTime\n+ title: String\n+ description: String\n+ Author: String\n- iventoryType: InventoryType|+ getId(): String\n+ setId(String): void\n+ getPrice(): float\n+ setPrice(float): void\n+ getCreated(): ZonedDateTime\n+ setCreated(ZonedDateTime): void\n+ getTitle(): String\n+ setTitle(String): void\n+ getDescription(): String\n+ setDescription(String): void\n+ getAuthor(): String\n+ setAuthor(String): void\n+ isArt(InventoryPiece): Boolean\n+ getType(): String}", style=filled, fillcolor=lightblue];
|
||||
|
||||
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}"];
|
||||
// Concrete Inventory Classes
|
||||
Drawing [label="{Drawing|+ style: String\n+ technique: String\n+ category: String|+ Drawing()}", style=filled, fillcolor=lightgreen];
|
||||
|
||||
Painting [label="{Painting|+ height: int\n+ width: int\n+ style: String\n+ technique: String\n+ category: String|+ Painting()}", style=filled, fillcolor=lightgreen];
|
||||
|
||||
Print [label="{Print|+ openEditionType: String\n+ category: String|+ Print()\n+ Print(String, String)\n+ getOpenEditionType(): String\n+ setOpenEditionType(String): void\n+ getCategory(): String\n+ setCategory(String): void}", style=filled, fillcolor=lightgreen];
|
||||
|
||||
Sculpture [label="{Sculpture|+ material: String\n+ weight: float|+ Sculpture()}", style=filled, fillcolor=lightgreen];
|
||||
|
||||
// Enums
|
||||
InventoryType [label="{«enumeration»\lInventoryType|PAINTING\lDRAWING\lPRINT\lSCULPTURE\l}"];
|
||||
InventoryType [label="{\\<\\<enumeration\\>\\>\nInventoryType|PAINTING\nDRAWING\nPRINT\nSCULPTURE}", style=filled, fillcolor=lightyellow];
|
||||
|
||||
TransactionOperationEnum [label="{\\<\\<enumeration\\>\\>\nTransactionOperationEnum|Completed\nDraft\nPricing\nRemoved\nShipping}", style=filled, fillcolor=lightyellow];
|
||||
|
||||
TransactionOperationEnum [label="{«enumeration»\lTransactionOperationEnum|Completed\lDraft\lPricing\lRemoved\lShipping\l}"];
|
||||
// Customer Related Classes
|
||||
Customer [label="{Customer|# id: String\n# updated: ZonedDateTime\n- phone: String\n- mailing: Address\n- email: String\n- nameFirst: String\n- nameLast: String|+ Customer()\n+ Customer(String, String, String, String)\n+ getEmail(): String\n+ getId(): String\n+ setId(String): void\n+ getPhone(): String\n+ setPhone(String): void\n+ getMailing(): Address\n+ setMailing(Address): void\n+ setEmail(String): void\n+ getNameFirst(): String\n+ setNameFirst(String): void\n+ getNameLast(): String\n+ setNameLast(String): void}", style=filled, fillcolor=lightcyan];
|
||||
|
||||
// Collections
|
||||
CustomerList [label="{CustomerList|+ CustomerList()\l}"];
|
||||
InventoryList [label="{InventoryList|+ InventoryList()\l}"];
|
||||
TransactionList [label="{TransactionList|+ TransactionList()\l+ add(Transaction): boolean\l}"];
|
||||
Address [label="{Address|- street: String\n- city: String\n- state: String\n- zip: String|+ Address()\n+ Address(String, String, String, String)\n+ getStreet(): String\n+ setStreet(String): void\n+ getCity(): String\n+ setCity(String): void\n+ getState(): String\n+ setState(String): void\n+ getZip(): String\n+ setZip(String): void\n+ hashCode(): int\n+ equals(Object): boolean\n+ toString(): String}", style=filled, fillcolor=white];
|
||||
|
||||
// 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}"];
|
||||
// Transaction
|
||||
Transaction [label="{Transaction|- id: String\n- created: ZonedDateTime\n- completed: ZonedDateTime\n- customerId: String\n- shipToAddress: Address\n- customerInventoryList: InventoryList\n- attributes: JsonArray|+ Transaction()\n+ getId(): String\n+ setId(String): void\n+ getCreated(): ZonedDateTime\n+ setCreated(ZonedDateTime): void\n+ getCompleted(): ZonedDateTime\n+ setCompleted(ZonedDateTime): void}", style=filled, fillcolor=lightcyan];
|
||||
|
||||
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}"];
|
||||
// List Classes (Collections)
|
||||
InventoryList [label="{InventoryList|\\<extends ArrayList\\<InventoryPiece\\>\\>|+ InventoryList()}", style=filled, fillcolor=wheat];
|
||||
|
||||
CustomerList [label="{CustomerList|\\<extends ArrayList\\<Customer\\>\\>|+ CustomerList()}", style=filled, fillcolor=wheat];
|
||||
|
||||
TransactionList [label="{TransactionList|\\<extends ArrayList\\<Transaction\\>\\>|+ TransactionList()\n+ add(Transaction): boolean}", style=filled, fillcolor=wheat];
|
||||
|
||||
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}"];
|
||||
// Manager Classes (Singletons)
|
||||
InventoryManager [label="{InventoryManager|+ INVENTORY: InventoryList\n- INSTANCE: InventoryManager|+ getInstance(): InventoryManager\n+ getArtPieceTypes(): Set\\<InventoryType\\>\n+ add(InventoryPiece): void\n+ find(String): InventoryPiece\n+ update(InventoryPiece): InventoryPiece\n+ save(): void\n+ loadAll(): void\n+ Remove(InventoryPiece): void}", style=filled, fillcolor=lightpink];
|
||||
|
||||
CustomerManager [label="{CustomerManager|+ CUSTOMERS: CustomerList\n- INSTANCE: CustomerManager|+ getInstance(): CustomerManager\n+ add(Customer): boolean\n- check(Customer): void\n+ findById(String): Customer\n+ findByEmail(String): Customer}", style=filled, fillcolor=lightpink];
|
||||
|
||||
TransactionManager [label="{TransactionManager|+ TRANSACTIONS: TransactionList\n- INSTANCE: TransactionManager|+ getInstance(): TransactionManager\n+ TransactRequest(Customer, InventoryList, Transaction): Transaction\n+ compute(Transaction, TransactionOperationEnum): void\n+ compute(Transaction): void\n+ complete(Transaction): void\n+ findByCustomerEmail(String): TransactionList\n+ findByTransactionId(String): TransactionList\n+ findByTransactionDate(ZonedDateTime): TransactionList\n+ remove(Transaction): void\n+ save(): void}", style=filled, fillcolor=lightpink];
|
||||
|
||||
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}"];
|
||||
// Repository
|
||||
DataRepository [label="{DataRepository|+ INSTANCE: DataRepository|+ getInstance(): DataRepository\n+ generateRandomID(int): String\n+ generateRandom10DigitID(): String\n+ WalkFileSystemTree(InventoryManager): void\n+ WalkFileSystemTree(CustomerManager): void\n+ WalkFileSystemTree(TransactionManager): void\n- serialize_deserialize(): void\n+ mapJsonToObjectList(String, Class\\<T\\>): List\\<T\\>}", style=filled, fillcolor=orange];
|
||||
|
||||
// Exceptions
|
||||
InvalidRecordDataException [label="{InvalidRecordDataException|+ InvalidRecordDataException(String)\l+ InvalidRecordDataException(String, Throwable)\l+ InvalidRecordDataException(Throwable)\l}"];
|
||||
// Exception Classes
|
||||
InvalidArtOperationException [label="{InvalidArtOperationException|\\<extends RuntimeException\\>|+ InvalidArtOperationException(String)\n+ InvalidArtOperationException(String, Throwable)\n+ InvalidArtOperationException(Throwable)}", style=filled, fillcolor=tomato];
|
||||
|
||||
InvalidRecordDataException [label="{InvalidRecordDataException|\\<extends RuntimeException\\>|+ InvalidRecordDataException(String)\n+ InvalidRecordDataException(String, Throwable)\n+ InvalidRecordDataException(Throwable)}", style=filled, fillcolor=tomato];
|
||||
|
||||
InvalidTransactionException [label="{InvalidTransactionException|\\<extends RuntimeException\\>|+ InvalidTransactionException(String)\n+ InvalidTransactionException(String, Throwable)\n+ InvalidTransactionException(Throwable)}", style=filled, fillcolor=tomato];
|
||||
|
||||
InvalidTransOperationException [label="{InvalidTransOperationException|\\<extends RuntimeException\\>|+ InvalidTransOperationException(String)\n+ InvalidTransOperationException(String, Throwable)\n+ InvalidTransOperationException(Throwable)}", style=filled, fillcolor=tomato];
|
||||
|
||||
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
|
||||
// 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"];
|
||||
InventoryPiece -> InventoryType [arrowhead=open, style=dashed, label="uses"];
|
||||
Customer -> Address [arrowhead=diamond, label="has"];
|
||||
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=""];
|
||||
}
|
||||
// Manager to List relationships
|
||||
InventoryManager -> InventoryList [arrowhead=diamond, label="INVENTORY"];
|
||||
CustomerManager -> CustomerList [arrowhead=diamond, label="CUSTOMERS"];
|
||||
TransactionManager -> TransactionList [arrowhead=diamond, label="TRANSACTIONS"];
|
||||
|
||||
// List contains relationships
|
||||
InventoryList -> InventoryPiece [arrowhead=diamond, style=dashed, label="contains"];
|
||||
CustomerList -> Customer [arrowhead=diamond, style=dashed, label="contains"];
|
||||
TransactionList -> Transaction [arrowhead=diamond, style=dashed, label="contains"];
|
||||
|
||||
// Manager relationships
|
||||
DataRepository -> InventoryManager [arrowhead=open, style=dashed, label="uses"];
|
||||
DataRepository -> CustomerManager [arrowhead=open, style=dashed, label="uses"];
|
||||
DataRepository -> TransactionManager [arrowhead=open, style=dashed, label="uses"];
|
||||
|
||||
TransactionManager -> TransactionOperationEnum [arrowhead=open, style=dashed, label="uses"];
|
||||
CustomerManager -> InvalidRecordDataException [arrowhead=open, style=dashed, label="throws"];
|
||||
|
||||
// Transaction relationships
|
||||
TransactionManager -> Customer [arrowhead=open, style=dashed, label="uses"];
|
||||
TransactionManager -> InventoryList [arrowhead=open, style=dashed, label="uses"];
|
||||
}
|
||||
Reference in New Issue
Block a user