| 12
 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
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 
 |  
package service;
 
import java.util.List;
 
import org.springframework.transaction.annotation.Transactional;
 
import dao.IDao;
import entites.Article;
import entites.Categorie;
 
//ttes les méthodes de la classe se déroulent dans une transaction
@Transactional
public class Service implements IService {
 
	// couche [dao]
	private IDao dao;
 
	public IDao getDao() {
		return dao;
	}
 
	public void setDao(IDao dao) {
		this.dao = dao;
	}
 
	// catégories
	public Categorie getCategorie(Long categorieId) {
		return dao.getCategorie(categorieId);
	}
 
	@SuppressWarnings("unchecked")
	public List<Categorie> getAllCategories() {
		return dao.getAllCategories();
	}
 
	@SuppressWarnings("unchecked")
	public List<Categorie> getAllCategoriesWithNomLike(String modeleNom) {
		return dao.getAllCategoriesWithNomLike(modeleNom);
	}
 
	@SuppressWarnings("unchecked")
	public List<Article> getArticlesFromCategorie(Long categorieId) {
		return dao.getArticlesFromCategorie(categorieId);
	}
 
	public Categorie updateCategorie(Categorie categorie) {
		return dao.updateCategorie(categorie);
	}
 
	public Categorie saveCategorie(Categorie categorie) {
		return dao.saveCategorie(categorie);
	};
 
	public void deleteCategorie(Long categorieId) {
		dao.deleteCategorie(categorieId);
	}
 
	public void saveCategoriesWithArticles(Categorie[] categories) {
		for (Categorie categorie : categories) {
			dao.saveCategorie(categorie);
			for (Article article : categorie.getArticles()) {
				dao.saveArticle(article);
			}
		}
	}
 
	public void deleteCategoriesWithArticles(Categorie[] categories) {
		for (Categorie categorie : categories) {
			for (Article article : getArticlesFromCategorie(categorie.getId())) {
				dao.deleteArticle(article.getId());
			}
			dao.deleteCategorie(categorie.getId());
		}
	}
 
	// articles
	public Article getArticle(Long articleId) {
		return dao.getArticle(articleId);
	}
 
	@SuppressWarnings("unchecked")
	public List<Article> getAllArticles() {
		return dao.getAllArticles();
	}
 
	@SuppressWarnings("unchecked")
	public List<Article> getAllArticlesWithNomLike(String modeleNom) {
		return dao.getAllArticlesWithNomLike(modeleNom);
	};
 
	public Article saveArticle(Article article) {
		return dao.saveArticle(article);
	}
 
	public Article updateArticle(Article article) {
		return dao.updateArticle(article);
	}
 
	public void deleteArticle(Long articleId) {
		dao.deleteArticle(articleId);
	}
 
}
 
package dao;
 
import java.util.List;
 
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
 
import entites.Article;
import entites.Categorie;
 
public class Dao implements IDao {
 
	@PersistenceContext
	private EntityManager em;
 
	// catégories
 
	public Categorie getCategorie(Long categorieId) {
		return em.find(Categorie.class, categorieId);
	}
 
	@SuppressWarnings("unchecked")
	public List<Categorie> getAllCategories() {
		return em.createQuery("select c from Categorie c").getResultList();
	}
 
	@SuppressWarnings("unchecked")
	public List<Categorie> getAllCategoriesWithNomLike(String modeleNom) {
		return em.createQuery("select c from Categorie c where c.nom like :modele").setParameter("modele", modeleNom).getResultList();
	}
 
	@SuppressWarnings("unchecked")
	public List<Article> getArticlesFromCategorie(Long categorieId) {
		return em.createQuery("select a from Article a where a.categorie.id=:categorieId").setParameter("categorieId", categorieId).getResultList();
	}
 
	public Categorie updateCategorie(Categorie categorie) {
		return em.merge(categorie);
	}
 
	public Categorie saveCategorie(Categorie categorie) {
		em.persist(categorie);
		return categorie;
	}
 
	public void deleteCategorie(Long categorieId) {
		Categorie categorie = em.find(Categorie.class, categorieId);
		if (categorie == null) {
			throw new DaoException(30);
		}
		em.remove(categorie);
	}
 
 
	// articles
 
	public Article getArticle(Long articleId) {
		return em.find(Article.class, articleId);
	}
 
	@SuppressWarnings("unchecked")
	public List<Article> getAllArticles() {
		return em.createQuery("select a from Article a").getResultList();
	}
 
	@SuppressWarnings("unchecked")
	public List<Article> getAllArticlesWithNomLike(String modeleNom) {
		return em.createQuery("select a from Article a where a.nom like :modele").setParameter("modele", modeleNom).getResultList();
	}
 
	public Article saveArticle(Article article) {
		em.persist(article);
		return article;
	}
 
	public Article updateArticle(Article article) {
		return em.merge(article);
	}
 
	public void deleteArticle(Long articleId) {
		Article article = em.find(Article.class, articleId);
		if (article == null) {
			throw new DaoException(20);
		}
		em.remove(article);
	}
 
 
 
}
 
package dao;
 
import java.util.List;
 
import entites.Article;
import entites.Categorie;
 
public interface IDao {
 
	// articles
	public Article getArticle(Long articleId);
 
	public List<Article> getAllArticles();
 
	public Article saveArticle(Article article);
 
	public Article updateArticle(Article article);
 
	public void deleteArticle(Long articleId);
 
	public List<Article> getAllArticlesWithNomLike(String modeleNom);
 
	// catégories
	public Categorie getCategorie(Long categorieId);
 
	public List<Categorie> getAllCategories();
 
	public Categorie saveCategorie(Categorie categorie);
 
 
	public Categorie updateCategorie(Categorie categorie);
 
	public void deleteCategorie(Long categorieId);
 
	public List<Categorie> getAllCategoriesWithNomLike(String modeleNom);
 
	public List<Article> getArticlesFromCategorie(Long categorieId);
 
} | 
Partager