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
							 |