1 /**
2 * Copyright (c) 2009-2010, Elias Gomes. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
5 * following conditions are met:
6 *
7 * - Redistributions of source code must retain the above copyright notice, this list of conditions and the following
8 * disclaimer.
9 *
10 * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
14 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
15 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
17 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20 */
21 package net.sourceforge.mystique.infrastructure.persistence;
22
23 import java.util.List;
24
25 import javax.persistence.Query;
26
27 import net.sourceforge.mystique.domain.entity.Ticket;
28 import net.sourceforge.mystique.domain.repository.RepositoryException;
29 import net.sourceforge.mystique.domain.repository.TicketRepository;
30
31 import org.springframework.stereotype.Repository;
32 import org.springframework.transaction.annotation.Transactional;
33
34 /**
35 * @author Elias Gomes [eliasgomes@users.sourceforge.net]
36 */
37 @Repository
38 public class TicketJpaRepository extends JpaRepository<Ticket, Long> implements TicketRepository {
39
40 @Override
41 @Transactional(readOnly = true)
42 public Ticket findById(Long id) throws RepositoryException {
43
44 return entityManager.find(Ticket.class, id);
45
46 }
47
48 @Override
49 @Transactional(readOnly = true)
50 @SuppressWarnings("unchecked")
51 public List<Ticket> findAll(int offset, int limit) throws RepositoryException {
52
53 Query query = entityManager.createNamedQuery("Ticket.findAll");
54 query.setFirstResult(offset);
55 query.setMaxResults(limit);
56
57 return query.getResultList();
58
59 }
60
61 @Override
62 @Transactional
63 public void store(Ticket ticket) throws RepositoryException {
64
65 entityManager.persist(ticket);
66
67 if (ticket.getId() != null) {
68 entityManager.merge(ticket);
69 }
70
71 entityManager.flush();
72
73 }
74
75 }