| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | @startuml | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | package com.iluwatar.hexagonal.sampledata { | 
					
						
							|  |  |  |   class SampleData { | 
					
						
							|  |  |  |     - PLAYERS : List<PlayerDetails> {static} | 
					
						
							|  |  |  |     + SampleData() | 
					
						
							|  |  |  |     - getRandomPlayerDetails() : PlayerDetails {static} | 
					
						
							|  |  |  |     + submitTickets(lotteryService : LotteryService, numTickets : int) {static} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | package com.iluwatar.hexagonal.service { | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   class ConsoleLottery { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     - LOGGER : Logger {static} | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     + ConsoleLottery() | 
					
						
							| 
									
										
										
										
											2017-02-11 21:46:56 +02:00
										 |  |  |     - addFundsToLotteryAccount(bank : WireTransfers, scanner : Scanner) {static} | 
					
						
							|  |  |  |     - checkTicket(service : LotteryService, scanner : Scanner) {static} | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     + main(args : String[]) {static} | 
					
						
							|  |  |  |     - printMainMenu() {static} | 
					
						
							| 
									
										
										
										
											2017-02-11 21:46:56 +02:00
										 |  |  |     - queryLotteryAccountFunds(bank : WireTransfers, scanner : Scanner) {static} | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     - readString(scanner : Scanner) : String {static} | 
					
						
							| 
									
										
										
										
											2017-02-11 21:46:56 +02:00
										 |  |  |     - submitTicket(service : LotteryService, scanner : Scanner) {static} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.hexagonal.mongo { | 
					
						
							|  |  |  |   class MongoConnectionPropertiesLoader { | 
					
						
							|  |  |  |     - DEFAULT_HOST : String {static} | 
					
						
							|  |  |  |     - DEFAULT_PORT : int {static} | 
					
						
							|  |  |  |     + MongoConnectionPropertiesLoader() | 
					
						
							|  |  |  |     + load() {static} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.hexagonal.domain { | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   class LotteryAdministration { | 
					
						
							|  |  |  |     - notifications : LotteryEventLog | 
					
						
							|  |  |  |     - repository : LotteryTicketRepository | 
					
						
							|  |  |  |     - wireTransfers : WireTransfers | 
					
						
							|  |  |  |     + LotteryAdministration(repository : LotteryTicketRepository, notifications : LotteryEventLog, wireTransfers : WireTransfers) | 
					
						
							|  |  |  |     + getAllSubmittedTickets() : Map<LotteryTicketId, LotteryTicket> | 
					
						
							|  |  |  |     + performLottery() : LotteryNumbers | 
					
						
							|  |  |  |     + resetLottery() | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class LotteryConstants { | 
					
						
							|  |  |  |     + PLAYER_MAX_SALDO : int {static} | 
					
						
							|  |  |  |     + PRIZE_AMOUNT : int {static} | 
					
						
							|  |  |  |     + SERVICE_BANK_ACCOUNT : String {static} | 
					
						
							|  |  |  |     + SERVICE_BANK_ACCOUNT_SALDO : int {static} | 
					
						
							|  |  |  |     + TICKET_PRIZE : int {static} | 
					
						
							|  |  |  |     - LotteryConstants() | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   class LotteryNumbers { | 
					
						
							|  |  |  |     + MAX_NUMBER : int {static} | 
					
						
							|  |  |  |     + MIN_NUMBER : int {static} | 
					
						
							|  |  |  |     + NUM_NUMBERS : int {static} | 
					
						
							|  |  |  |     - numbers : Set<Integer> | 
					
						
							|  |  |  |     - LotteryNumbers() | 
					
						
							|  |  |  |     - LotteryNumbers(givenNumbers : Set<Integer>) | 
					
						
							|  |  |  |     + create(givenNumbers : Set<Integer>) : LotteryNumbers {static} | 
					
						
							|  |  |  |     + createRandom() : LotteryNumbers {static} | 
					
						
							|  |  |  |     + equals(obj : Object) : boolean | 
					
						
							|  |  |  |     - generateRandomNumbers() | 
					
						
							|  |  |  |     + getNumbers() : Set<Integer> | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     + getNumbersAsString() : String | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + hashCode() : int | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     + toString() : String | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   -class RandomNumberGenerator { | 
					
						
							|  |  |  |     - randomIterator : OfInt | 
					
						
							|  |  |  |     + RandomNumberGenerator(min : int, max : int) | 
					
						
							|  |  |  |     + nextInt() : int | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   class LotteryService { | 
					
						
							|  |  |  |     - notifications : LotteryEventLog | 
					
						
							|  |  |  |     - repository : LotteryTicketRepository | 
					
						
							|  |  |  |     - wireTransfers : WireTransfers | 
					
						
							|  |  |  |     + LotteryService(repository : LotteryTicketRepository, notifications : LotteryEventLog, wireTransfers : WireTransfers) | 
					
						
							|  |  |  |     + checkTicketForPrize(id : LotteryTicketId, winningNumbers : LotteryNumbers) : LotteryTicketCheckResult | 
					
						
							|  |  |  |     + submitTicket(ticket : LotteryTicket) : Optional<LotteryTicketId> | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class LotteryTicket { | 
					
						
							|  |  |  |     - id : LotteryTicketId | 
					
						
							|  |  |  |     - lotteryNumbers : LotteryNumbers | 
					
						
							|  |  |  |     - playerDetails : PlayerDetails | 
					
						
							|  |  |  |     + LotteryTicket(id : LotteryTicketId, details : PlayerDetails, numbers : LotteryNumbers) | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + equals(obj : Object) : boolean | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     + getId() : LotteryTicketId | 
					
						
							|  |  |  |     + getNumbers() : LotteryNumbers | 
					
						
							|  |  |  |     + getPlayerDetails() : PlayerDetails | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + hashCode() : int | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     + setId(id : LotteryTicketId) | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     + toString() : String | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							|  |  |  |   class LotteryTicketCheckResult { | 
					
						
							|  |  |  |     - checkResult : CheckResult | 
					
						
							|  |  |  |     - prizeAmount : int | 
					
						
							|  |  |  |     + LotteryTicketCheckResult(result : CheckResult) | 
					
						
							|  |  |  |     + LotteryTicketCheckResult(result : CheckResult, amount : int) | 
					
						
							|  |  |  |     + equals(obj : Object) : boolean | 
					
						
							|  |  |  |     + getPrizeAmount() : int | 
					
						
							|  |  |  |     + getResult() : CheckResult | 
					
						
							|  |  |  |     + hashCode() : int | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   enum CheckResult { | 
					
						
							|  |  |  |     + NO_PRIZE {static} | 
					
						
							|  |  |  |     + TICKET_NOT_SUBMITTED {static} | 
					
						
							|  |  |  |     + WIN_PRIZE {static} | 
					
						
							|  |  |  |     + valueOf(name : String) : CheckResult {static} | 
					
						
							|  |  |  |     + values() : CheckResult[] {static} | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class LotteryTicketId { | 
					
						
							|  |  |  |     - id : int | 
					
						
							|  |  |  |     - numAllocated : int {static} | 
					
						
							|  |  |  |     + LotteryTicketId() | 
					
						
							|  |  |  |     + LotteryTicketId(id : int) | 
					
						
							|  |  |  |     + equals(o : Object) : boolean | 
					
						
							|  |  |  |     + getId() : int | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |     + hashCode() : int | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     + toString() : String | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   class LotteryUtils { | 
					
						
							|  |  |  |     - LotteryUtils() | 
					
						
							|  |  |  |     + checkTicketForPrize(repository : LotteryTicketRepository, id : LotteryTicketId, winningNumbers : LotteryNumbers) : LotteryTicketCheckResult {static} | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class PlayerDetails { | 
					
						
							|  |  |  |     - bankAccountNumber : String | 
					
						
							|  |  |  |     - emailAddress : String | 
					
						
							|  |  |  |     - phoneNumber : String | 
					
						
							|  |  |  |     + PlayerDetails(email : String, bankAccount : String, phone : String) | 
					
						
							|  |  |  |     + equals(obj : Object) : boolean | 
					
						
							|  |  |  |     + getBankAccount() : String | 
					
						
							|  |  |  |     + getEmail() : String | 
					
						
							|  |  |  |     + getPhoneNumber() : String | 
					
						
							|  |  |  |     + hashCode() : int | 
					
						
							|  |  |  |     + toString() : String | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.hexagonal.banking { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class InMemoryBank { | 
					
						
							|  |  |  |     - accounts : Map<String, Integer> {static} | 
					
						
							|  |  |  |     + InMemoryBank() | 
					
						
							|  |  |  |     + getFunds(bankAccount : String) : int | 
					
						
							|  |  |  |     + setFunds(bankAccount : String, amount : int) | 
					
						
							|  |  |  |     + transferFunds(amount : int, sourceBackAccount : String, destinationBankAccount : String) : boolean | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   class MongoBank { | 
					
						
							|  |  |  |     - DEFAULT_ACCOUNTS_COLLECTION : String {static} | 
					
						
							|  |  |  |     - DEFAULT_DB : String {static} | 
					
						
							|  |  |  |     - accountsCollection : MongoCollection<Document> | 
					
						
							|  |  |  |     - database : MongoDatabase | 
					
						
							|  |  |  |     - mongoClient : MongoClient | 
					
						
							|  |  |  |     + MongoBank() | 
					
						
							|  |  |  |     + MongoBank(dbName : String, accountsCollectionName : String) | 
					
						
							|  |  |  |     + connect() | 
					
						
							|  |  |  |     + connect(dbName : String, accountsCollectionName : String) | 
					
						
							|  |  |  |     + getAccountsCollection() : MongoCollection<Document> | 
					
						
							|  |  |  |     + getFunds(bankAccount : String) : int | 
					
						
							|  |  |  |     + getMongoClient() : MongoClient | 
					
						
							|  |  |  |     + getMongoDatabase() : MongoDatabase | 
					
						
							|  |  |  |     + setFunds(bankAccount : String, amount : int) | 
					
						
							|  |  |  |     + transferFunds(amount : int, sourceBackAccount : String, destinationBankAccount : String) : boolean | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   interface WireTransfers { | 
					
						
							|  |  |  |     + getFunds(String) : int {abstract} | 
					
						
							|  |  |  |     + setFunds(String, int) {abstract} | 
					
						
							|  |  |  |     + transferFunds(int, String, String) : boolean {abstract} | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.hexagonal.database { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class InMemoryTicketRepository { | 
					
						
							|  |  |  |     - tickets : Map<LotteryTicketId, LotteryTicket> {static} | 
					
						
							|  |  |  |     + InMemoryTicketRepository() | 
					
						
							|  |  |  |     + deleteAll() | 
					
						
							|  |  |  |     + findAll() : Map<LotteryTicketId, LotteryTicket> | 
					
						
							|  |  |  |     + findById(id : LotteryTicketId) : Optional<LotteryTicket> | 
					
						
							|  |  |  |     + save(ticket : LotteryTicket) : Optional<LotteryTicketId> | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   interface LotteryTicketRepository { | 
					
						
							|  |  |  |     + deleteAll() {abstract} | 
					
						
							|  |  |  |     + findAll() : Map<LotteryTicketId, LotteryTicket> {abstract} | 
					
						
							|  |  |  |     + findById(LotteryTicketId) : Optional<LotteryTicket> {abstract} | 
					
						
							|  |  |  |     + save(LotteryTicket) : Optional<LotteryTicketId> {abstract} | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   class MongoTicketRepository { | 
					
						
							|  |  |  |     - DEFAULT_COUNTERS_COLLECTION : String {static} | 
					
						
							|  |  |  |     - DEFAULT_DB : String {static} | 
					
						
							|  |  |  |     - DEFAULT_TICKETS_COLLECTION : String {static} | 
					
						
							|  |  |  |     - countersCollection : MongoCollection<Document> | 
					
						
							|  |  |  |     - database : MongoDatabase | 
					
						
							|  |  |  |     - mongoClient : MongoClient | 
					
						
							|  |  |  |     - ticketsCollection : MongoCollection<Document> | 
					
						
							|  |  |  |     + MongoTicketRepository() | 
					
						
							|  |  |  |     + MongoTicketRepository(dbName : String, ticketsCollectionName : String, countersCollectionName : String) | 
					
						
							|  |  |  |     + connect() | 
					
						
							|  |  |  |     + connect(dbName : String, ticketsCollectionName : String, countersCollectionName : String) | 
					
						
							|  |  |  |     + deleteAll() | 
					
						
							|  |  |  |     - docToTicket(doc : Document) : LotteryTicket | 
					
						
							|  |  |  |     + findAll() : Map<LotteryTicketId, LotteryTicket> | 
					
						
							|  |  |  |     + findById(id : LotteryTicketId) : Optional<LotteryTicket> | 
					
						
							|  |  |  |     + getCountersCollection() : MongoCollection<Document> | 
					
						
							|  |  |  |     + getMongoClient() : MongoClient | 
					
						
							|  |  |  |     + getMongoDatabase() : MongoDatabase | 
					
						
							|  |  |  |     + getNextId() : int | 
					
						
							|  |  |  |     + getTicketsCollection() : MongoCollection<Document> | 
					
						
							|  |  |  |     - initCounters() | 
					
						
							|  |  |  |     + save(ticket : LotteryTicket) : Optional<LotteryTicketId> | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.hexagonal { | 
					
						
							|  |  |  |   class App { | 
					
						
							|  |  |  |     + App() | 
					
						
							|  |  |  |     + main(args : String[]) {static} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.hexagonal.administration { | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   class ConsoleAdministration { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |     - LOGGER : Logger {static} | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |     + ConsoleAdministration() | 
					
						
							|  |  |  |     + main(args : String[]) {static} | 
					
						
							|  |  |  |     - printMainMenu() {static} | 
					
						
							|  |  |  |     - readString(scanner : Scanner) : String {static} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | package com.iluwatar.hexagonal.eventlog { | 
					
						
							|  |  |  |   interface LotteryEventLog { | 
					
						
							|  |  |  |     + prizeError(PlayerDetails, int) {abstract} | 
					
						
							|  |  |  |     + ticketDidNotWin(PlayerDetails) {abstract} | 
					
						
							|  |  |  |     + ticketSubmitError(PlayerDetails) {abstract} | 
					
						
							|  |  |  |     + ticketSubmitted(PlayerDetails) {abstract} | 
					
						
							|  |  |  |     + ticketWon(PlayerDetails, int) {abstract} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   class MongoEventLog { | 
					
						
							|  |  |  |     - DEFAULT_DB : String {static} | 
					
						
							|  |  |  |     - DEFAULT_EVENTS_COLLECTION : String {static} | 
					
						
							|  |  |  |     - database : MongoDatabase | 
					
						
							|  |  |  |     - eventsCollection : MongoCollection<Document> | 
					
						
							|  |  |  |     - mongoClient : MongoClient | 
					
						
							|  |  |  |     - stdOutEventLog : StdOutEventLog | 
					
						
							|  |  |  |     + MongoEventLog() | 
					
						
							|  |  |  |     + MongoEventLog(dbName : String, eventsCollectionName : String) | 
					
						
							|  |  |  |     + connect() | 
					
						
							|  |  |  |     + connect(dbName : String, eventsCollectionName : String) | 
					
						
							|  |  |  |     + getEventsCollection() : MongoCollection<Document> | 
					
						
							|  |  |  |     + getMongoClient() : MongoClient | 
					
						
							|  |  |  |     + getMongoDatabase() : MongoDatabase | 
					
						
							|  |  |  |     + prizeError(details : PlayerDetails, prizeAmount : int) | 
					
						
							|  |  |  |     + ticketDidNotWin(details : PlayerDetails) | 
					
						
							|  |  |  |     + ticketSubmitError(details : PlayerDetails) | 
					
						
							|  |  |  |     + ticketSubmitted(details : PlayerDetails) | 
					
						
							|  |  |  |     + ticketWon(details : PlayerDetails, prizeAmount : int) | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class StdOutEventLog { | 
					
						
							|  |  |  |     - LOGGER : Logger {static} | 
					
						
							|  |  |  |     + StdOutEventLog() | 
					
						
							|  |  |  |     + prizeError(details : PlayerDetails, prizeAmount : int) | 
					
						
							|  |  |  |     + ticketDidNotWin(details : PlayerDetails) | 
					
						
							|  |  |  |     + ticketSubmitError(details : PlayerDetails) | 
					
						
							|  |  |  |     + ticketSubmitted(details : PlayerDetails) | 
					
						
							|  |  |  |     + ticketWon(details : PlayerDetails, prizeAmount : int) | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | LotteryTicket -->  "-playerDetails" PlayerDetails | 
					
						
							| 
									
										
										
										
											2017-02-11 21:46:56 +02:00
										 |  |  | MongoEventLog -->  "-stdOutEventLog" StdOutEventLog | 
					
						
							|  |  |  | LotteryService -->  "-wireTransfers" WireTransfers | 
					
						
							|  |  |  | LotteryAdministration -->  "-notifications" LotteryEventLog | 
					
						
							|  |  |  | LotteryAdministration -->  "-wireTransfers" WireTransfers | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | LotteryService -->  "-notifications" LotteryEventLog | 
					
						
							| 
									
										
										
										
											2017-02-11 21:46:56 +02:00
										 |  |  | LotteryTicket -->  "-id" LotteryTicketId | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | LotteryAdministration -->  "-repository" LotteryTicketRepository | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | LotteryTicket -->  "-lotteryNumbers" LotteryNumbers | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | SampleData -->  "-PLAYERS" PlayerDetails | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | RandomNumberGenerator ..+ LotteryNumbers | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | LotteryService -->  "-repository" LotteryTicketRepository | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | CheckResult ..+ LotteryTicketCheckResult | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | LotteryTicketCheckResult -->  "-checkResult" CheckResult | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | InMemoryBank ..|> WireTransfers  | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | MongoBank ..|> WireTransfers  | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | InMemoryTicketRepository ..|> LotteryTicketRepository  | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | MongoTicketRepository ..|> LotteryTicketRepository  | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  | MongoEventLog ..|> LotteryEventLog  | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  | StdOutEventLog ..|> LotteryEventLog  | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | @enduml |