From a681496e1569c0f152d881b17f341127287462fb Mon Sep 17 00:00:00 2001 From: realtradam Date: Mon, 8 Jul 2024 22:24:20 -0400 Subject: few basic pages --- .../blog/web/controllers/ArticleController.java | 33 ++++++++++++++++++++ src/main/java/com/blog/web/dto/ArticleDto.java | 27 ++++++++++++++++ src/main/java/com/blog/web/models/Article.java | 30 ++++++++++++++++++ .../com/blog/web/repository/ArticleRepository.java | 8 +++++ .../java/com/blog/web/services/ArticleService.java | 9 ++++++ .../blog/web/services/impl/ArticleServiceImpl.java | 36 ++++++++++++++++++++++ 6 files changed, 143 insertions(+) create mode 100644 src/main/java/com/blog/web/controllers/ArticleController.java create mode 100644 src/main/java/com/blog/web/dto/ArticleDto.java create mode 100644 src/main/java/com/blog/web/models/Article.java create mode 100644 src/main/java/com/blog/web/repository/ArticleRepository.java create mode 100644 src/main/java/com/blog/web/services/ArticleService.java create mode 100644 src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java (limited to 'src/main/java/com') diff --git a/src/main/java/com/blog/web/controllers/ArticleController.java b/src/main/java/com/blog/web/controllers/ArticleController.java new file mode 100644 index 0000000..3c86ea3 --- /dev/null +++ b/src/main/java/com/blog/web/controllers/ArticleController.java @@ -0,0 +1,33 @@ +package com.blog.web.controllers; + +import com.blog.web.dto.ArticleDto; +import com.blog.web.models.Article; +import com.blog.web.services.ArticleService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +@Controller +public class ArticleController { + private ArticleService articleService; + + public ArticleController(ArticleService articleService) { + this.articleService = articleService; + } + + @GetMapping("/") + public String listArticles(Model model) { + List articles = articleService.findAllArticles(); + model.addAttribute("articles", articles); + return "index"; + } + + @GetMapping("/articles/new") + public String createArticleForm(Model model) { + Article article = new Article(); + model.addAttribute("article", article); + return "articles/new"; + } +} diff --git a/src/main/java/com/blog/web/dto/ArticleDto.java b/src/main/java/com/blog/web/dto/ArticleDto.java new file mode 100644 index 0000000..ffe7926 --- /dev/null +++ b/src/main/java/com/blog/web/dto/ArticleDto.java @@ -0,0 +1,27 @@ +package com.blog.web.dto; + +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Builder; +import lombok.Data; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import java.time.LocalDateTime; + +@Data +@Builder +public class ArticleDto { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String title; + private String photoUrl; + private String content; + @CreationTimestamp + private LocalDateTime createdOn; + @UpdateTimestamp + private LocalDateTime updatedOn; + +} diff --git a/src/main/java/com/blog/web/models/Article.java b/src/main/java/com/blog/web/models/Article.java new file mode 100644 index 0000000..5d4566f --- /dev/null +++ b/src/main/java/com/blog/web/models/Article.java @@ -0,0 +1,30 @@ +package com.blog.web.models; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import jakarta.persistence.*; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Entity +public class Article { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String title; + private String photoUrl; + private String content; + @CreationTimestamp + private LocalDateTime createdOn; + @UpdateTimestamp + private LocalDateTime updatedOn; +} diff --git a/src/main/java/com/blog/web/repository/ArticleRepository.java b/src/main/java/com/blog/web/repository/ArticleRepository.java new file mode 100644 index 0000000..c7e8c04 --- /dev/null +++ b/src/main/java/com/blog/web/repository/ArticleRepository.java @@ -0,0 +1,8 @@ +package com.blog.web.repository; + +import com.blog.web.models.Article; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ArticleRepository extends JpaRepository { + +} diff --git a/src/main/java/com/blog/web/services/ArticleService.java b/src/main/java/com/blog/web/services/ArticleService.java new file mode 100644 index 0000000..c1b28e6 --- /dev/null +++ b/src/main/java/com/blog/web/services/ArticleService.java @@ -0,0 +1,9 @@ +package com.blog.web.services; + +import com.blog.web.dto.ArticleDto; + +import java.util.List; + +public interface ArticleService { + List findAllArticles(); +} diff --git a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java new file mode 100644 index 0000000..2d3f253 --- /dev/null +++ b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java @@ -0,0 +1,36 @@ +package com.blog.web.services.impl; + +import com.blog.web.dto.ArticleDto; +import com.blog.web.models.Article; +import com.blog.web.repository.ArticleRepository; +import com.blog.web.services.ArticleService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class ArticleServiceImpl implements ArticleService { + public ArticleServiceImpl(com.blog.web.repository.ArticleRepository articleRepository) { + this.articleRepository = articleRepository; + } + + private ArticleRepository articleRepository; + + @Override + public List findAllArticles() { + List
articles = articleRepository.findAll(); + return articles.stream().map(this::mapToArticleDto).collect(Collectors.toList()); + } + + private ArticleDto mapToArticleDto(Article article) { + return ArticleDto.builder() + .id(article.getId()) + .title(article.getTitle()) + .photoUrl(article.getPhotoUrl()) + .content(article.getContent()) + .createdOn(article.getCreatedOn()) + .updatedOn(article.getUpdatedOn()) + .build(); + } +} -- cgit v1.2.3