swt23w23/src/main/asciidoc/models/design/catalog.puml
2023-11-12 19:53:58 +01:00

75 lines
2.4 KiB
Plaintext

@startuml
skinparam linetype ortho
skinparam groupInheritance 2
package Spring {
interface Model
class Sort
}
package Salespoint {
'https://st.inf.tu-dresden.de/SalesPoint/api//org/salespointframework/catalog/Catalog.html'
interface Catalog << T > Product >> {
findByAnyCategory(categories : String) : Streamable<Product>
findByAllCategories(categories : String) : Streamable<Product>
}
interface DataInitializer
interface Inventory << T > InventoryItem >>
class Product {
+ Product(name : String, price : javax.money.MonetaryAmount, [Metric : metric])
+ getID() : Product.Identifier
'+ addCategory(category : String) : boolean' #TODO: for class Inventory
'+ removeCategory(category : String) : boolean' #TODO: for class Inventory
'+ supports(quantity : Quantity) : boolean' #TODO: for class Cart
+ getCategories() : Streamable<String>
+ getName() : String
+ getPrice() : @NonNull javax.money.MonetaryAmount
}
class Quantity {
+ getAmount() : @NotNull BigDecimal
}
}
package catering.catalog {
interface CateringCatalog {
+ DEFAULT_SORT : Sort
}
CateringCatalog --o CatalogController : "-catalog"
CateringCatalog ..> Catalog : "<bind> <T->Product"
class CatalogController {
+ CatalogController()
+ CatalogByEventategory(model : Model, form : Form) : String
}
CatalogController --> Inventory : "- inventory"
CatalogController ..> Model : "use"
CatalogController .> CatalogForm : "use"
class CatalogForm {
- query
+ getQuery() : String
}
class Consumable {
- wholesalePrice : javax.money.MonetaryAmount
- retailPrice : javax.money.MonetaryAmount
- promotionPrice : javax.money.MonetaryAmount
+ getWholesalePrice() : javax.money.MonetaryAmount
+ getPrice() : javax.money.MonetaryAmount
}
Consumable --|> Product
class Rentable {
- pricePerHour : javax.money.MonetaryAmount
- Events : Streamable<Event>
+ getPrice() : javax.money.MonetaryAmount
}
Rentable --|> Product
}
'#TODO: to determine which Products of a Category to offer I need to retrieve information about availability of e.g. Cooks and ServicePersonel from the Users or Rentables from the Inventory'
@enduml