diff --git a/src/main/java/fr/eni/enchere/bll/ArticleService.java b/src/main/java/fr/eni/enchere/bll/ArticleService.java index f4be3ea..1941b5a 100644 --- a/src/main/java/fr/eni/enchere/bll/ArticleService.java +++ b/src/main/java/fr/eni/enchere/bll/ArticleService.java @@ -1,6 +1,7 @@ package fr.eni.enchere.bll; import fr.eni.enchere.bo.Article; +import fr.eni.enchere.bo.SearchArticleCritere; import java.util.List; @@ -12,4 +13,5 @@ public interface ArticleService { void deleteArticle(int id); void updateArticle(int id); List
findArticleByTitle(String title); + List
searchArticle(SearchArticleCritere critere); } diff --git a/src/main/java/fr/eni/enchere/bll/ArticleServiceImpl.java b/src/main/java/fr/eni/enchere/bll/ArticleServiceImpl.java index 5a0b42a..5915961 100644 --- a/src/main/java/fr/eni/enchere/bll/ArticleServiceImpl.java +++ b/src/main/java/fr/eni/enchere/bll/ArticleServiceImpl.java @@ -1,6 +1,7 @@ package fr.eni.enchere.bll; import fr.eni.enchere.bo.Article; +import fr.eni.enchere.bo.SearchArticleCritere; import fr.eni.enchere.dal.ArticleRepository; import org.springframework.stereotype.Service; @@ -43,4 +44,9 @@ public class ArticleServiceImpl implements ArticleService{ public List
findArticleByTitle(String title) { return articleRepository.findArticleByTitle(title); } + + @Override + public List
searchArticle(SearchArticleCritere critere) { + return articleRepository.searchArticle(critere); + } } diff --git a/src/main/java/fr/eni/enchere/bll/CategorieService.java b/src/main/java/fr/eni/enchere/bll/CategorieService.java new file mode 100644 index 0000000..1ef5171 --- /dev/null +++ b/src/main/java/fr/eni/enchere/bll/CategorieService.java @@ -0,0 +1,13 @@ +package fr.eni.enchere.bll; + +import fr.eni.enchere.bo.Article; +import fr.eni.enchere.bo.Categorie; +import fr.eni.enchere.bo.SearchArticleCritere; + +import java.util.List; + +public interface CategorieService { + List findAllCategories(); + Categorie findCategorieById(int id); + +} diff --git a/src/main/java/fr/eni/enchere/bll/CategorieServiceImpl.java b/src/main/java/fr/eni/enchere/bll/CategorieServiceImpl.java new file mode 100644 index 0000000..e2f128d --- /dev/null +++ b/src/main/java/fr/eni/enchere/bll/CategorieServiceImpl.java @@ -0,0 +1,32 @@ +package fr.eni.enchere.bll; + +import fr.eni.enchere.bo.Article; +import fr.eni.enchere.bo.Categorie; +import fr.eni.enchere.bo.SearchArticleCritere; +import fr.eni.enchere.dal.ArticleRepositoryImpl; +import fr.eni.enchere.dal.CategorieRepository; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CategorieServiceImpl implements CategorieService { + private final ArticleRepositoryImpl articleRepositoryImpl; + private CategorieRepository categorieRepository; + + public CategorieServiceImpl(CategorieRepository categorieRepository, ArticleRepositoryImpl articleRepositoryImpl) { + this.categorieRepository = categorieRepository; + this.articleRepositoryImpl = articleRepositoryImpl; + } + @Override + public List findAllCategories() { + return categorieRepository.findAllCategories(); + } + + @Override + public Categorie findCategorieById(int id) { + return categorieRepository.findCategorieById(id); + } + + +} diff --git a/src/main/java/fr/eni/enchere/bo/Categorie.java b/src/main/java/fr/eni/enchere/bo/Categorie.java new file mode 100644 index 0000000..f410dd0 --- /dev/null +++ b/src/main/java/fr/eni/enchere/bo/Categorie.java @@ -0,0 +1,26 @@ +package fr.eni.enchere.bo; + +public class Categorie { + + int id; + String libelle; + + public Categorie() { + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getLibelle() { + return libelle; + } + + public void setLibelle(String libelle) { + this.libelle = libelle; + } +} diff --git a/src/main/java/fr/eni/enchere/bo/SearchArticleCritere.java b/src/main/java/fr/eni/enchere/bo/SearchArticleCritere.java new file mode 100644 index 0000000..ca4a5d6 --- /dev/null +++ b/src/main/java/fr/eni/enchere/bo/SearchArticleCritere.java @@ -0,0 +1,22 @@ +package fr.eni.enchere.bo; + +public class SearchArticleCritere { + String title; + Integer noCategorie; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Integer getNoCategorie() { + return noCategorie; + } + + public void setNoCategorie(Integer noCategorie) { + this.noCategorie = noCategorie; + } +} diff --git a/src/main/java/fr/eni/enchere/controllers/AccueilController.java b/src/main/java/fr/eni/enchere/controllers/AccueilController.java index c79871c..4cd0d74 100644 --- a/src/main/java/fr/eni/enchere/controllers/AccueilController.java +++ b/src/main/java/fr/eni/enchere/controllers/AccueilController.java @@ -1,7 +1,9 @@ package fr.eni.enchere.controllers; import fr.eni.enchere.bll.ArticleService; +import fr.eni.enchere.bll.CategorieService; import fr.eni.enchere.bo.Article; +import fr.eni.enchere.bo.SearchArticleCritere; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; @@ -10,6 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; import java.util.List; @@ -19,23 +22,30 @@ public class AccueilController { private static final Logger logger = LoggerFactory.getLogger(AccueilController.class); private ArticleService articleService; + private CategorieService categorieService; - public AccueilController(ArticleService articleService) { + public AccueilController(ArticleService articleService, CategorieService categorieService) { super(); - + this.categorieService = categorieService; this.articleService = articleService; } @GetMapping({"/", "/accueil"}) - public String viewAccueil(Model model) { - model.addAttribute("articles", articleService.findAllArticle()); + public String viewAccueil(@RequestParam(required = false) String searchTitle, @RequestParam(required = false) Integer searchCategory, Model model) { + System.out.println("Liste cat: "+categorieService.findAllCategories()); + model.addAttribute("categories", categorieService.findAllCategories()); + SearchArticleCritere critere = new SearchArticleCritere(); + critere.setNoCategorie(searchCategory); + critere.setTitle(searchTitle); + + model.addAttribute("articles", articleService.searchArticle(critere)); return "accueil"; } - @PostMapping("/searchArticle") - public String searchArticle(@ModelAttribute String title, Model model) { - model.addAttribute("Articles", articleService.findArticleByTitle(title)); - return "accueil"; + @PostMapping("/accueil") + public String handleSearch(@RequestParam("searchTitle") String searchTitle, @RequestParam(value = "searchCategory", required = false) Integer searchCategory, Model model) { + System.out.println("test"); + return viewAccueil(searchTitle, searchCategory, model); } @GetMapping("/login") diff --git a/src/main/java/fr/eni/enchere/controllers/ArticleController.java b/src/main/java/fr/eni/enchere/controllers/ArticleController.java deleted file mode 100644 index 874084c..0000000 --- a/src/main/java/fr/eni/enchere/controllers/ArticleController.java +++ /dev/null @@ -1,9 +0,0 @@ -package fr.eni.enchere.controllers; - -import org.springframework.stereotype.Controller; - -@Controller -public class ArticleController { - - -} diff --git a/src/main/java/fr/eni/enchere/dal/ArticleRepository.java b/src/main/java/fr/eni/enchere/dal/ArticleRepository.java index 7eb8d01..eea3ff9 100644 --- a/src/main/java/fr/eni/enchere/dal/ArticleRepository.java +++ b/src/main/java/fr/eni/enchere/dal/ArticleRepository.java @@ -1,11 +1,13 @@ package fr.eni.enchere.dal; import fr.eni.enchere.bo.Article; +import fr.eni.enchere.bo.SearchArticleCritere; import java.util.List; public interface ArticleRepository { List
findAllArticle(); + List
searchArticle(SearchArticleCritere critere); Article findArticleById(int id); List
findArticleByTitle(String title); void saveArticle(Article article); diff --git a/src/main/java/fr/eni/enchere/dal/ArticleRepositoryImpl.java b/src/main/java/fr/eni/enchere/dal/ArticleRepositoryImpl.java index 88bf04c..1b43747 100644 --- a/src/main/java/fr/eni/enchere/dal/ArticleRepositoryImpl.java +++ b/src/main/java/fr/eni/enchere/dal/ArticleRepositoryImpl.java @@ -1,6 +1,7 @@ package fr.eni.enchere.dal; import fr.eni.enchere.bo.Article; +import fr.eni.enchere.bo.SearchArticleCritere; import fr.eni.enchere.controllers.AccueilController; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Repository; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; @Repository @@ -51,6 +53,24 @@ public class ArticleRepositoryImpl implements ArticleRepository { return articles; } + @Override + public List
searchArticle(SearchArticleCritere critere) { + StringBuilder sql = new StringBuilder("SELECT * FROM ARTICLES_VENDUS WHERE 1 = 1"); + + List params = new ArrayList<>(); + + if (critere.getNoCategorie() != null) { + sql.append(" AND no_categorie = ?"); + params.add(critere.getNoCategorie()); + } + if (critere.getTitle() != null && !critere.getTitle().isEmpty()) { + sql.append(" AND nom_article LIKE ?"); + params.add( '%' + critere.getTitle() + "%"); + } + + return jdbcTemplate.query(sql.toString(), new ArticleRowMapper(), params.toArray()); + } + @Override public Article findArticleById(int id) { return null; @@ -58,8 +78,8 @@ public class ArticleRepositoryImpl implements ArticleRepository { @Override public List
findArticleByTitle(String title) { - String sql = "SELECT * FROM ARTICLES_VENDUS WHERE nom_article LIKE '?'"; - List
articles = jdbcTemplate.query(sql, new ArticleRowMapper(), title); + String sql = "SELECT * FROM ARTICLES_VENDUS WHERE nom_article LIKE ?"; + List
articles = jdbcTemplate.query(sql, new ArticleRowMapper(), "%" + title + "%"); return articles; } diff --git a/src/main/java/fr/eni/enchere/dal/CategorieRepository.java b/src/main/java/fr/eni/enchere/dal/CategorieRepository.java new file mode 100644 index 0000000..aa54ee9 --- /dev/null +++ b/src/main/java/fr/eni/enchere/dal/CategorieRepository.java @@ -0,0 +1,10 @@ +package fr.eni.enchere.dal; + +import fr.eni.enchere.bo.Categorie; + +import java.util.List; + +public interface CategorieRepository { + List findAllCategories(); + Categorie findCategorieById(int id); +} diff --git a/src/main/java/fr/eni/enchere/dal/CategorieRepositoryImpl.java b/src/main/java/fr/eni/enchere/dal/CategorieRepositoryImpl.java new file mode 100644 index 0000000..b0c0f96 --- /dev/null +++ b/src/main/java/fr/eni/enchere/dal/CategorieRepositoryImpl.java @@ -0,0 +1,50 @@ +package fr.eni.enchere.dal; + +import fr.eni.enchere.bo.Article; +import fr.eni.enchere.bo.Categorie; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Repository; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +@Repository +public class CategorieRepositoryImpl implements CategorieRepository { + + private JdbcTemplate jdbcTemplate; + private NamedParameterJdbcTemplate namedJdbcTemplate; + + + private class CategorieRowMapper implements RowMapper { + + @Override + public Categorie mapRow(ResultSet rs, int rowNum) throws SQLException { + Categorie categorie = new Categorie(); + categorie.setId(rs.getInt("no_categorie")); + categorie.setLibelle(rs.getString("libelle")); + return categorie; + } + } + + public CategorieRepositoryImpl(JdbcTemplate jdbcTemplate, NamedParameterJdbcTemplate namedJdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + this.namedJdbcTemplate = namedJdbcTemplate; + } + + @Override + public List findAllCategories() { + String sql = "SELECT * FROM CATEGORIES"; + List categories = jdbcTemplate.query(sql, new CategorieRowMapper()); + System.out.println(categories); + return categories; + } + + @Override + public Categorie findCategorieById(int id) { + String sql = "SELECT * FROM CATEGORIES WHERE no_categorie = :id"; + Categorie categorie = jdbcTemplate.queryForObject(sql, new CategorieRowMapper(), id); + return categorie; + } +} diff --git a/src/main/resources/templates/accueil.html b/src/main/resources/templates/accueil.html index 5b909d0..7afab32 100644 --- a/src/main/resources/templates/accueil.html +++ b/src/main/resources/templates/accueil.html @@ -11,8 +11,20 @@
-
- + + + +
+ +
+ +
+ +
+