1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.stock.business.offer;
35
36 import fr.paris.lutece.plugins.stock.service.StockPlugin;
37 import fr.paris.lutece.plugins.stock.utils.constants.StockConstants;
38 import fr.paris.lutece.portal.service.jpa.JPALuteceDAO;
39 import fr.paris.lutece.util.ReferenceItem;
40 import fr.paris.lutece.util.ReferenceList;
41
42 import java.util.List;
43
44 import javax.persistence.EntityManager;
45 import javax.persistence.TypedQuery;
46 import javax.persistence.criteria.CriteriaBuilder;
47 import javax.persistence.criteria.CriteriaQuery;
48 import javax.persistence.criteria.JoinType;
49 import javax.persistence.criteria.Predicate;
50 import javax.persistence.criteria.Root;
51
52
53
54
55 public final class OfferGenreDAO extends JPALuteceDAO<Integer, OfferGenre> implements IOfferGenreDAO
56 {
57 @Override
58 public String getPluginName( )
59 {
60 return StockPlugin.PLUGIN_NAME;
61 }
62
63
64
65
66 public OfferGenre findWithOffersLinked( int nIdOfferGenre )
67 {
68 EntityManager em = getEM( );
69 CriteriaBuilder cb = em.getCriteriaBuilder( );
70
71 CriteriaQuery<OfferGenre> cq = cb.createQuery( OfferGenre.class );
72
73 Root<OfferGenre> root = cq.from( OfferGenre.class );
74 root.fetch( OfferGenre_.offersList, JoinType.LEFT );
75
76 Predicate condition = cb.equal( root.get( OfferGenre_.id ), nIdOfferGenre );
77 cq.where( condition );
78
79 TypedQuery<OfferGenre> query = em.createQuery( cq );
80
81 return query.getSingleResult( );
82 }
83
84
85
86
87 public ReferenceList findAllReferenceList( )
88 {
89 List<OfferGenre> listAllOfferGenres = findAll( );
90 ReferenceList refList = new ReferenceList( );
91
92 for ( OfferGenre offerGenre : listAllOfferGenres )
93 {
94 ReferenceItem refItem = new ReferenceItem( );
95 refItem.setCode( StockConstants.EMPTY_STRING + offerGenre.getId( ) );
96 refItem.setName( offerGenre.getName( ) );
97 refList.add( refItem );
98 }
99
100 return refList;
101 }
102
103
104
105
106 public List<OfferGenre> findByName( String strOfferName )
107 {
108 EntityManager em = getEM( );
109 CriteriaBuilder cb = em.getCriteriaBuilder( );
110
111 CriteriaQuery<OfferGenre> cq = cb.createQuery( OfferGenre.class );
112
113 Root<OfferGenre> root = cq.from( OfferGenre.class );
114 root.fetch( OfferGenre_.offersList, JoinType.LEFT );
115
116 Predicate condition = cb.equal( root.get( OfferGenre_.name ), strOfferName );
117 cq.where( condition );
118
119 TypedQuery<OfferGenre> query = em.createQuery( cq );
120
121 return query.getResultList( );
122 }
123 }