Search in sources :

Example 1 with Spellbook

use of com.iluwatar.servicelayer.spellbook.Spellbook in project java-design-patterns by iluwatar.

the class App method initData.

/**
 * Initialize data
 */
public static void initData() {
    // spells
    Spell spell1 = new Spell("Ice dart");
    Spell spell2 = new Spell("Invisibility");
    Spell spell3 = new Spell("Stun bolt");
    Spell spell4 = new Spell("Confusion");
    Spell spell5 = new Spell("Darkness");
    Spell spell6 = new Spell("Fireball");
    Spell spell7 = new Spell("Enchant weapon");
    Spell spell8 = new Spell("Rock armour");
    Spell spell9 = new Spell("Light");
    Spell spell10 = new Spell("Bee swarm");
    Spell spell11 = new Spell("Haste");
    Spell spell12 = new Spell("Levitation");
    Spell spell13 = new Spell("Magic lock");
    Spell spell14 = new Spell("Summon hell bat");
    Spell spell15 = new Spell("Water walking");
    Spell spell16 = new Spell("Magic storm");
    Spell spell17 = new Spell("Entangle");
    SpellDao spellDao = new SpellDaoImpl();
    spellDao.persist(spell1);
    spellDao.persist(spell2);
    spellDao.persist(spell3);
    spellDao.persist(spell4);
    spellDao.persist(spell5);
    spellDao.persist(spell6);
    spellDao.persist(spell7);
    spellDao.persist(spell8);
    spellDao.persist(spell9);
    spellDao.persist(spell10);
    spellDao.persist(spell11);
    spellDao.persist(spell12);
    spellDao.persist(spell13);
    spellDao.persist(spell14);
    spellDao.persist(spell15);
    spellDao.persist(spell16);
    spellDao.persist(spell17);
    // spellbooks
    SpellbookDao spellbookDao = new SpellbookDaoImpl();
    Spellbook spellbook1 = new Spellbook("Book of Orgymon");
    spellbookDao.persist(spellbook1);
    spellbook1.addSpell(spell1);
    spellbook1.addSpell(spell2);
    spellbook1.addSpell(spell3);
    spellbook1.addSpell(spell4);
    spellbookDao.merge(spellbook1);
    Spellbook spellbook2 = new Spellbook("Book of Aras");
    spellbookDao.persist(spellbook2);
    spellbook2.addSpell(spell5);
    spellbook2.addSpell(spell6);
    spellbookDao.merge(spellbook2);
    Spellbook spellbook3 = new Spellbook("Book of Kritior");
    spellbookDao.persist(spellbook3);
    spellbook3.addSpell(spell7);
    spellbook3.addSpell(spell8);
    spellbook3.addSpell(spell9);
    spellbookDao.merge(spellbook3);
    Spellbook spellbook4 = new Spellbook("Book of Tamaex");
    spellbookDao.persist(spellbook4);
    spellbook4.addSpell(spell10);
    spellbook4.addSpell(spell11);
    spellbook4.addSpell(spell12);
    spellbookDao.merge(spellbook4);
    Spellbook spellbook5 = new Spellbook("Book of Idores");
    spellbookDao.persist(spellbook5);
    spellbook5.addSpell(spell13);
    spellbookDao.merge(spellbook5);
    Spellbook spellbook6 = new Spellbook("Book of Opaen");
    spellbookDao.persist(spellbook6);
    spellbook6.addSpell(spell14);
    spellbook6.addSpell(spell15);
    spellbookDao.merge(spellbook6);
    Spellbook spellbook7 = new Spellbook("Book of Kihione");
    spellbookDao.persist(spellbook7);
    spellbook7.addSpell(spell16);
    spellbook7.addSpell(spell17);
    spellbookDao.merge(spellbook7);
    // wizards
    WizardDao wizardDao = new WizardDaoImpl();
    Wizard wizard1 = new Wizard("Aderlard Boud");
    wizardDao.persist(wizard1);
    wizard1.addSpellbook(spellbookDao.findByName("Book of Orgymon"));
    wizard1.addSpellbook(spellbookDao.findByName("Book of Aras"));
    wizardDao.merge(wizard1);
    Wizard wizard2 = new Wizard("Anaxis Bajraktari");
    wizardDao.persist(wizard2);
    wizard2.addSpellbook(spellbookDao.findByName("Book of Kritior"));
    wizard2.addSpellbook(spellbookDao.findByName("Book of Tamaex"));
    wizardDao.merge(wizard2);
    Wizard wizard3 = new Wizard("Xuban Munoa");
    wizardDao.persist(wizard3);
    wizard3.addSpellbook(spellbookDao.findByName("Book of Idores"));
    wizard3.addSpellbook(spellbookDao.findByName("Book of Opaen"));
    wizardDao.merge(wizard3);
    Wizard wizard4 = new Wizard("Blasius Dehooge");
    wizardDao.persist(wizard4);
    wizard4.addSpellbook(spellbookDao.findByName("Book of Kihione"));
    wizardDao.merge(wizard4);
}
Also used : SpellDaoImpl(com.iluwatar.servicelayer.spell.SpellDaoImpl) SpellDao(com.iluwatar.servicelayer.spell.SpellDao) Spellbook(com.iluwatar.servicelayer.spellbook.Spellbook) WizardDao(com.iluwatar.servicelayer.wizard.WizardDao) WizardDaoImpl(com.iluwatar.servicelayer.wizard.WizardDaoImpl) SpellbookDao(com.iluwatar.servicelayer.spellbook.SpellbookDao) SpellbookDaoImpl(com.iluwatar.servicelayer.spellbook.SpellbookDaoImpl) Wizard(com.iluwatar.servicelayer.wizard.Wizard) Spell(com.iluwatar.servicelayer.spell.Spell)

Example 2 with Spellbook

use of com.iluwatar.servicelayer.spellbook.Spellbook in project java-design-patterns by iluwatar.

the class App method queryData.

/**
 * Query the data
 */
public static void queryData() {
    MagicService service = new MagicServiceImpl(new WizardDaoImpl(), new SpellbookDaoImpl(), new SpellDaoImpl());
    LOGGER.info("Enumerating all wizards");
    for (Wizard w : service.findAllWizards()) {
        LOGGER.info(w.getName());
    }
    LOGGER.info("Enumerating all spellbooks");
    for (Spellbook s : service.findAllSpellbooks()) {
        LOGGER.info(s.getName());
    }
    LOGGER.info("Enumerating all spells");
    for (Spell s : service.findAllSpells()) {
        LOGGER.info(s.getName());
    }
    LOGGER.info("Find wizards with spellbook 'Book of Idores'");
    List<Wizard> wizardsWithSpellbook = service.findWizardsWithSpellbook("Book of Idores");
    for (Wizard w : wizardsWithSpellbook) {
        LOGGER.info("{} has 'Book of Idores'", w.getName());
    }
    LOGGER.info("Find wizards with spell 'Fireball'");
    List<Wizard> wizardsWithSpell = service.findWizardsWithSpell("Fireball");
    for (Wizard w : wizardsWithSpell) {
        LOGGER.info("{} has 'Fireball'", w.getName());
    }
}
Also used : SpellDaoImpl(com.iluwatar.servicelayer.spell.SpellDaoImpl) Spellbook(com.iluwatar.servicelayer.spellbook.Spellbook) WizardDaoImpl(com.iluwatar.servicelayer.wizard.WizardDaoImpl) MagicServiceImpl(com.iluwatar.servicelayer.magic.MagicServiceImpl) SpellbookDaoImpl(com.iluwatar.servicelayer.spellbook.SpellbookDaoImpl) MagicService(com.iluwatar.servicelayer.magic.MagicService) Wizard(com.iluwatar.servicelayer.wizard.Wizard) Spell(com.iluwatar.servicelayer.spell.Spell)

Example 3 with Spellbook

use of com.iluwatar.servicelayer.spellbook.Spellbook in project java-design-patterns by iluwatar.

the class WizardDaoImpl method findByName.

@Override
public Wizard findByName(String name) {
    Session session = getSessionFactory().openSession();
    Transaction tx = null;
    Wizard result = null;
    try {
        tx = session.beginTransaction();
        Criteria criteria = session.createCriteria(persistentClass);
        criteria.add(Restrictions.eq("name", name));
        result = (Wizard) criteria.uniqueResult();
        for (Spellbook s : result.getSpellbooks()) {
            s.getSpells().size();
        }
        tx.commit();
    } catch (Exception e) {
        if (tx != null) {
            tx.rollback();
        }
        throw e;
    } finally {
        session.close();
    }
    return result;
}
Also used : Transaction(org.hibernate.Transaction) Spellbook(com.iluwatar.servicelayer.spellbook.Spellbook) Criteria(org.hibernate.Criteria) Session(org.hibernate.Session)

Example 4 with Spellbook

use of com.iluwatar.servicelayer.spellbook.Spellbook in project java-design-patterns by iluwatar.

the class MagicServiceImpl method findWizardsWithSpell.

@Override
public List<Wizard> findWizardsWithSpell(String name) {
    Spell spell = spellDao.findByName(name);
    Spellbook spellbook = spell.getSpellbook();
    return new ArrayList<>(spellbook.getWizards());
}
Also used : Spellbook(com.iluwatar.servicelayer.spellbook.Spellbook) ArrayList(java.util.ArrayList) Spell(com.iluwatar.servicelayer.spell.Spell)

Example 5 with Spellbook

use of com.iluwatar.servicelayer.spellbook.Spellbook in project java-design-patterns by iluwatar.

the class MagicServiceImplTest method testFindWizardsWithSpell.

@Test
public void testFindWizardsWithSpell() throws Exception {
    final Set<Wizard> wizards = new HashSet<>();
    wizards.add(mock(Wizard.class));
    wizards.add(mock(Wizard.class));
    wizards.add(mock(Wizard.class));
    final Spellbook spellbook = mock(Spellbook.class);
    when(spellbook.getWizards()).thenReturn(wizards);
    final SpellbookDao spellbookDao = mock(SpellbookDao.class);
    final WizardDao wizardDao = mock(WizardDao.class);
    final Spell spell = mock(Spell.class);
    when(spell.getSpellbook()).thenReturn(spellbook);
    final String spellName = "spellname";
    final SpellDao spellDao = mock(SpellDao.class);
    when(spellDao.findByName(eq(spellName))).thenReturn(spell);
    final MagicServiceImpl service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao);
    verifyZeroInteractions(wizardDao, spellbookDao, spellDao, spellbook);
    final List<Wizard> result = service.findWizardsWithSpell(spellName);
    verify(spellDao).findByName(eq(spellName));
    verify(spellbook).getWizards();
    assertNotNull(result);
    assertEquals(3, result.size());
    verifyNoMoreInteractions(wizardDao, spellbookDao, spellDao);
}
Also used : SpellDao(com.iluwatar.servicelayer.spell.SpellDao) Spellbook(com.iluwatar.servicelayer.spellbook.Spellbook) WizardDao(com.iluwatar.servicelayer.wizard.WizardDao) SpellbookDao(com.iluwatar.servicelayer.spellbook.SpellbookDao) Wizard(com.iluwatar.servicelayer.wizard.Wizard) Spell(com.iluwatar.servicelayer.spell.Spell) HashSet(java.util.HashSet) Test(org.junit.jupiter.api.Test)

Aggregations

Spellbook (com.iluwatar.servicelayer.spellbook.Spellbook)6 Spell (com.iluwatar.servicelayer.spell.Spell)4 Wizard (com.iluwatar.servicelayer.wizard.Wizard)4 SpellDao (com.iluwatar.servicelayer.spell.SpellDao)3 SpellbookDao (com.iluwatar.servicelayer.spellbook.SpellbookDao)3 WizardDao (com.iluwatar.servicelayer.wizard.WizardDao)3 SpellDaoImpl (com.iluwatar.servicelayer.spell.SpellDaoImpl)2 SpellbookDaoImpl (com.iluwatar.servicelayer.spellbook.SpellbookDaoImpl)2 WizardDaoImpl (com.iluwatar.servicelayer.wizard.WizardDaoImpl)2 HashSet (java.util.HashSet)2 Test (org.junit.jupiter.api.Test)2 MagicService (com.iluwatar.servicelayer.magic.MagicService)1 MagicServiceImpl (com.iluwatar.servicelayer.magic.MagicServiceImpl)1 ArrayList (java.util.ArrayList)1 Criteria (org.hibernate.Criteria)1 Session (org.hibernate.Session)1 Transaction (org.hibernate.Transaction)1