159 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			159 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | @startuml | ||
|  | package com.iluwatar.servicelayer.hibernate { | ||
|  |   class HibernateUtil { | ||
|  |     - LOGGER : Logger {static} | ||
|  |     - sessionFactory : SessionFactory {static} | ||
|  |     - HibernateUtil() | ||
|  |     + dropSession() {static} | ||
|  |     + getSessionFactory() : SessionFactory {static} | ||
|  |   } | ||
|  | } | ||
|  | package com.iluwatar.servicelayer.common { | ||
|  |   abstract class BaseEntity { | ||
|  |     + BaseEntity() | ||
|  |     + getId() : Long {abstract} | ||
|  |     + getName() : String {abstract} | ||
|  |     + setId(Long) {abstract} | ||
|  |     + setName(String) {abstract} | ||
|  |   } | ||
|  |   interface Dao<E extends BaseEntity> { | ||
|  |     + delete(E extends BaseEntity) {abstract} | ||
|  |     + find(Long) : E extends BaseEntity {abstract} | ||
|  |     + findAll() : List<E extends BaseEntity> {abstract} | ||
|  |     + merge(E extends BaseEntity) : E extends BaseEntity {abstract} | ||
|  |     + persist(E extends BaseEntity) {abstract} | ||
|  |   } | ||
|  |   abstract class DaoBaseImpl<E extends BaseEntity> { | ||
|  |     # persistentClass : Class<E extends BaseEntity> | ||
|  |     + DaoBaseImpl<E extends BaseEntity>() | ||
|  |     + delete(entity : E extends BaseEntity) | ||
|  |     + find(id : Long) : E extends BaseEntity | ||
|  |     + findAll() : List<E extends BaseEntity> | ||
|  |     # getSessionFactory() : SessionFactory | ||
|  |     + merge(entity : E extends BaseEntity) : E extends BaseEntity | ||
|  |     + persist(entity : E extends BaseEntity) | ||
|  |   } | ||
|  | } | ||
|  | package com.iluwatar.servicelayer.magic { | ||
|  |   interface MagicService { | ||
|  |     + findAllSpellbooks() : List<Spellbook> {abstract} | ||
|  |     + findAllSpells() : List<Spell> {abstract} | ||
|  |     + findAllWizards() : List<Wizard> {abstract} | ||
|  |     + findWizardsWithSpell(String) : List<Wizard> {abstract} | ||
|  |     + findWizardsWithSpellbook(String) : List<Wizard> {abstract} | ||
|  |   } | ||
|  |   class MagicServiceImpl { | ||
|  |     - spellDao : SpellDao | ||
|  |     - spellbookDao : SpellbookDao | ||
|  |     - wizardDao : WizardDao | ||
|  |     + MagicServiceImpl(wizardDao : WizardDao, spellbookDao : SpellbookDao, spellDao : SpellDao) | ||
|  |     + findAllSpellbooks() : List<Spellbook> | ||
|  |     + findAllSpells() : List<Spell> | ||
|  |     + findAllWizards() : List<Wizard> | ||
|  |     + findWizardsWithSpell(name : String) : List<Wizard> | ||
|  |     + findWizardsWithSpellbook(name : String) : List<Wizard> | ||
|  |   } | ||
|  | } | ||
|  | package com.iluwatar.servicelayer.wizard { | ||
|  |   class Wizard { | ||
|  |     - id : Long | ||
|  |     - name : String | ||
|  |     - spellbooks : Set<Spellbook> | ||
|  |     + Wizard() | ||
|  |     + Wizard(name : String) | ||
|  |     + addSpellbook(spellbook : Spellbook) | ||
|  |     + getId() : Long | ||
|  |     + getName() : String | ||
|  |     + getSpellbooks() : Set<Spellbook> | ||
|  |     + setId(id : Long) | ||
|  |     + setName(name : String) | ||
|  |     + setSpellbooks(spellbooks : Set<Spellbook>) | ||
|  |     + toString() : String | ||
|  |   } | ||
|  |   interface WizardDao { | ||
|  |     + findByName(String) : Wizard {abstract} | ||
|  |   } | ||
|  |   class WizardDaoImpl { | ||
|  |     + WizardDaoImpl() | ||
|  |     + findByName(name : String) : Wizard | ||
|  |   } | ||
|  | } | ||
|  | package com.iluwatar.servicelayer.spellbook { | ||
|  |   class Spellbook { | ||
|  |     - id : Long | ||
|  |     - name : String | ||
|  |     - spells : Set<Spell> | ||
|  |     - wizards : Set<Wizard> | ||
|  |     + Spellbook() | ||
|  |     + Spellbook(name : String) | ||
|  |     + addSpell(spell : Spell) | ||
|  |     + getId() : Long | ||
|  |     + getName() : String | ||
|  |     + getSpells() : Set<Spell> | ||
|  |     + getWizards() : Set<Wizard> | ||
|  |     + setId(id : Long) | ||
|  |     + setName(name : String) | ||
|  |     + setSpells(spells : Set<Spell>) | ||
|  |     + setWizards(wizards : Set<Wizard>) | ||
|  |     + toString() : String | ||
|  |   } | ||
|  |   interface SpellbookDao { | ||
|  |     + findByName(String) : Spellbook {abstract} | ||
|  |   } | ||
|  |   class SpellbookDaoImpl { | ||
|  |     + SpellbookDaoImpl() | ||
|  |     + findByName(name : String) : Spellbook | ||
|  |   } | ||
|  | } | ||
|  | package com.iluwatar.servicelayer.spell { | ||
|  |   class Spell { | ||
|  |     - id : Long | ||
|  |     - name : String | ||
|  |     - spellbook : Spellbook | ||
|  |     + Spell() | ||
|  |     + Spell(name : String) | ||
|  |     + getId() : Long | ||
|  |     + getName() : String | ||
|  |     + getSpellbook() : Spellbook | ||
|  |     + setId(id : Long) | ||
|  |     + setName(name : String) | ||
|  |     + setSpellbook(spellbook : Spellbook) | ||
|  |     + toString() : String | ||
|  |   } | ||
|  |   interface SpellDao { | ||
|  |     + findByName(String) : Spell {abstract} | ||
|  |   } | ||
|  |   class SpellDaoImpl { | ||
|  |     + SpellDaoImpl() | ||
|  |     + findByName(name : String) : Spell | ||
|  |   } | ||
|  | } | ||
|  | package com.iluwatar.servicelayer.app { | ||
|  |   class App { | ||
|  |     - LOGGER : Logger {static} | ||
|  |     + App() | ||
|  |     + initData() {static} | ||
|  |     + main(args : String[]) {static} | ||
|  |     + queryData() {static} | ||
|  |   } | ||
|  | } | ||
|  | MagicServiceImpl -->  "-wizardDao" WizardDao | ||
|  | MagicServiceImpl -->  "-spellbookDao" SpellbookDao | ||
|  | MagicServiceImpl -->  "-spellDao" SpellDao | ||
|  | Spellbook -->  "-spells" Spell | ||
|  | Spellbook -->  "-wizards" Wizard | ||
|  | DaoBaseImpl ..|> Dao  | ||
|  | MagicServiceImpl ..|> MagicService  | ||
|  | Spell --|> BaseEntity  | ||
|  | SpellDao --|> Dao  | ||
|  | SpellDaoImpl ..|> SpellDao  | ||
|  | SpellDaoImpl --|> DaoBaseImpl  | ||
|  | Spellbook --|> BaseEntity  | ||
|  | SpellbookDao --|> Dao  | ||
|  | SpellbookDaoImpl ..|> SpellbookDao  | ||
|  | SpellbookDaoImpl --|> DaoBaseImpl  | ||
|  | Wizard --|> BaseEntity  | ||
|  | WizardDao --|> Dao  | ||
|  | WizardDaoImpl ..|> WizardDao  | ||
|  | WizardDaoImpl --|> DaoBaseImpl  | ||
|  | @enduml |