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 |