@startuml skinparam linetype ortho skinparam groupInheritance 2 package Spring { interface Model } package Salespoint { class Cash class Quantity class UserAccount class Product } package catering.order { enum EventType } package catering.orderCatalog { class OrderCatalogController { + OrderCatalogController() + catalog(model : Model) : String + configureCatalog(model : Model) : String + catalogAdd(eventType : OrderCatalogEntry.EventType, minimumTimePeriod : int, totalCost : int, model : Model) : String + removeEntry(catalogEntryID : int) : String + addProduct(name : String, amount : int, cost : double) : String + removeProduct(id : String, model : Model) : String + addTime(minimumTimePeriod : int, eventType : OrderCatalogEntry.EventType, products : Collection, model : Model) : String + chooseEvent(events : String) : String } class OrderCatalogEntry { + OrderCatalogEntry() + getId() : int + getEventType() : EventType + getProducts() : Collection + getMinimumTimePeriod() : int + getTotalCost() : int + setEventType(eventType : EventType) : void + setMinimumTimePeriod(timePeriod : int) : void + setTotalCost(totalCost : int) : void + addProduct(name : String, count : Integer) : void } class OrderCatalogEntryRepository { + OrderCatalogEntryRepository() + addCatalogEntry(catalogEntry : OrderCatalogEntry) : boolean + removeCatalogEntry(catalogEntryID : int) : boolean + getCatalogEntries() : Set } } OrderCatalogEntryRepository o---> OrderCatalogEntry OrderCatalogController ...> OrderCatalogEntryRepository OrderCatalogEntryRepository --|> Spring.CrudRepository OrderCatalogController ...> Salespoint.Product OrderCatalogController ..> Spring.Model OrderCatalogController ...> Salespoint.Cash OrderCatalogController ...> Salespoint.Quantity OrderCatalogController ...> Salespoint.UserAccount OrderCatalogEntry ...> catering.order.EventType @enduml