/******************************************************************************* * Copyright (c) 2011-2014 Fernando Petrola * * This file is part of Dragome SDK. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html ******************************************************************************/ package ch.flashcard.service; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Restrictions; import ch.flashcard.domain.Card; import ch.flashcard.mapper.CardMapper; import ch.flashcard.persistence.CardDeckEntity; import ch.flashcard.persistence.CardEntity; import ch.flashcard.persistence.HibernateUtil; /** * Provides access to the cards in the database. * * @author Marc Baur, Adrian Herzog */ @SuppressWarnings("unchecked") public class CardService { private final CardMapper cardMapper= new CardMapper(); public final Card getCardById(final int id) { Session session= HibernateUtil.getSessionFactory().openSession(); Transaction transaction= session.beginTransaction(); CardEntity cardEntity= (CardEntity) session.get(CardEntity.class, id); Card card= cardMapper.mapToDomain(cardEntity); transaction.commit(); session.close(); return card; } public final List<Card> getAllCards() { Session session= HibernateUtil.getSessionFactory().openSession(); Transaction transaction= session.beginTransaction(); final Query query= session.createQuery("from CardDeck"); List<CardEntity> cardEntities= query.list(); List<Card> cards= cardMapper.mapToDomainList(cardEntities); transaction.commit(); session.close(); return cards; } public final List<Card> getAllCardsByCardDeck(final int cardDeckId) { Session session= HibernateUtil.getSessionFactory().openSession(); Transaction transaction= session.beginTransaction(); CardDeckEntity cardDeckEntity= (CardDeckEntity) session.get(CardDeckEntity.class, cardDeckId); final Criteria criteria= session.createCriteria(CardEntity.class); criteria.add(Restrictions.eq("carddeck", cardDeckEntity)); List<CardEntity> cardEntities= criteria.list(); List<Card> cards= cardMapper.mapToDomainList(cardEntities); transaction.commit(); session.close(); return cards; } }