diff --git a/src/main/java/com/mousetech/gourmetj/CategoryRepository.java b/src/main/java/com/mousetech/gourmetj/CategoryRepository.java index 6ff92e0..6d19adf 100644 --- a/src/main/java/com/mousetech/gourmetj/CategoryRepository.java +++ b/src/main/java/com/mousetech/gourmetj/CategoryRepository.java @@ -1,10 +1,30 @@ package com.mousetech.gourmetj; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import com.mousetech.gourmetj.persistence.model.Category; +/** + * JpaRepositort for Categories, which relate ManyToOne to Recipe. + * Service method is @see CategoryService + * + * @author timh + * @since Dec 28, 2021 + */ + @Repository -public interface CategoryRepository extends JpaRepository { +public interface CategoryRepository + extends JpaRepository { + + final static String SQL_FIND_CATEGORIES = + "SELECT DISTINCT category from categories" + + " where category is not null and category <> ''" + + " ORDER BY category ASC"; + + @Query(value = SQL_FIND_CATEGORIES, nativeQuery = true) + public List findDistinctCategoryNative(); } diff --git a/src/main/java/com/mousetech/gourmetj/CategoryService.java b/src/main/java/com/mousetech/gourmetj/CategoryService.java index 646fe78..e3c6e1d 100644 --- a/src/main/java/com/mousetech/gourmetj/CategoryService.java +++ b/src/main/java/com/mousetech/gourmetj/CategoryService.java @@ -24,4 +24,12 @@ public class CategoryService implements Serializable { public List findAll() { return categoryRepository.findAll(); } + + /** + * + * @return All Category names that are not null/blank, sorted. + */ + public List findCategoryNames() { + return categoryRepository.findDistinctCategoryNative(); + } } diff --git a/src/main/java/com/mousetech/gourmetj/CategoryView.java b/src/main/java/com/mousetech/gourmetj/CategoryView.java index 8609d8f..3e05246 100644 --- a/src/main/java/com/mousetech/gourmetj/CategoryView.java +++ b/src/main/java/com/mousetech/gourmetj/CategoryView.java @@ -7,6 +7,9 @@ import javax.faces.view.ViewScoped; import javax.inject.Inject; import javax.inject.Named; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.mousetech.gourmetj.persistence.model.Category; @Named @@ -15,6 +18,8 @@ public class CategoryView implements Serializable { private static final long serialVersionUID = 1L; + private static final Logger log = LoggerFactory.getLogger(CategoryView.class); + @Inject private CategoryService categoryRepository; @@ -23,6 +28,11 @@ public class CategoryView implements Serializable { @PostConstruct public void init() { categories = categoryRepository.findAll(); + + List catNames = categoryRepository.findCategoryNames(); + for (String name : catNames ) { + log.info("CAT="+name); + } } public List getCategories() {