From 2785eaf31a7844f1d1b17aa046b7aecda719495e Mon Sep 17 00:00:00 2001 From: Cesar Nicolas Cabo Date: Sat, 24 Aug 2019 11:36:32 -0300 Subject: [PATCH 1/5] Pom update --- pom.xml | 40 ++++++++++++++++--- .../springfamework/bootstrap/Bootstrap.java | 4 ++ 2 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 src/main/java/guru/springfamework/bootstrap/Bootstrap.java diff --git a/pom.xml b/pom.xml index fba1a29a1..d31275bf2 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 guru.springfamework @@ -22,6 +22,7 @@ UTF-8 UTF-8 1.8 + 1.2.0.CR2 @@ -46,7 +47,12 @@ org.projectlombok lombok - true + provided + + + org.mapstruct + mapstruct-jdk8 + ${org.mapstruct.version} org.springframework.boot @@ -70,7 +76,33 @@ html xml - + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + org.projectlombok + lombok + ${lombok.version} + + + org.mapstruct + mapstruct-processor + ${org.mapstruct.version} + + + + + -Amapstruct.defaultComponentModel=spring + + @@ -121,6 +153,4 @@ - - diff --git a/src/main/java/guru/springfamework/bootstrap/Bootstrap.java b/src/main/java/guru/springfamework/bootstrap/Bootstrap.java new file mode 100644 index 000000000..d47cb7d23 --- /dev/null +++ b/src/main/java/guru/springfamework/bootstrap/Bootstrap.java @@ -0,0 +1,4 @@ +package guru.springfamework.bootstrap; + +public class Bootstrap { +} From d177f4bcef5e7a6399dfc0db0771e80d3d3b6221 Mon Sep 17 00:00:00 2001 From: Cesar Nicolas Cabo Date: Sat, 24 Aug 2019 11:37:13 -0300 Subject: [PATCH 2/5] Created Bootstrap class, and updated Category --- .../api/v1/model/CategoryDTO.java | 2 +- .../springfamework/bootstrap/Bootstrap.java | 45 ++++++++++++++++++- .../guru/springfamework/domain/Category.java | 6 ++- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java b/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java index 135ca3621..6fb9fd32d 100644 --- a/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java +++ b/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java @@ -1,7 +1,7 @@ package guru.springfamework.api.v1.model; /** - * Created by jt on 9/24/17. + * Created by ccabo on 8/24/19. */ public class CategoryDTO { private Long id; diff --git a/src/main/java/guru/springfamework/bootstrap/Bootstrap.java b/src/main/java/guru/springfamework/bootstrap/Bootstrap.java index d47cb7d23..6fc8919ab 100644 --- a/src/main/java/guru/springfamework/bootstrap/Bootstrap.java +++ b/src/main/java/guru/springfamework/bootstrap/Bootstrap.java @@ -1,4 +1,47 @@ package guru.springfamework.bootstrap; -public class Bootstrap { +import guru.springfamework.domain.Category; +import guru.springfamework.repositories.CategoryRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +/** + * Created by ccabo 8/24/19 + */ +@Component +public class Bootstrap implements CommandLineRunner { + + private CategoryRepository categoryRepository; + + @Autowired + public Bootstrap(CategoryRepository categoryRepository) { + this.categoryRepository = categoryRepository; + } + + @Override + public void run(String... args) throws Exception { + Category fruits = new Category(); + fruits.setName("Fruits"); + + Category dried = new Category(); + dried.setName("Dried"); + + Category fresh = new Category(); + fresh.setName("Fresh"); + + Category exotic = new Category(); + exotic.setName("Exotic"); + + Category nuts = new Category(); + nuts.setName("Nuts"); + + categoryRepository.save(fruits); + categoryRepository.save(dried); + categoryRepository.save(fresh); + categoryRepository.save(exotic); + categoryRepository.save(nuts); + + System.out.println("DATA LOADED: " + categoryRepository.count()); + } } diff --git a/src/main/java/guru/springfamework/domain/Category.java b/src/main/java/guru/springfamework/domain/Category.java index 46980c38b..3150bc3ec 100644 --- a/src/main/java/guru/springfamework/domain/Category.java +++ b/src/main/java/guru/springfamework/domain/Category.java @@ -8,7 +8,7 @@ import javax.persistence.Id; /** - * Created by jt on 9/24/17. + * Created by ccabo on 8/24/19. */ @Data @Entity @@ -19,4 +19,8 @@ public class Category { private Long id; private String name; + public String setName(String fruits) { + this.name = fruits; + return name; + } } From 9eefdef54772f9aab92409af609e57b0f5275137 Mon Sep 17 00:00:00 2001 From: Cesar Nicolas Cabo Date: Sat, 24 Aug 2019 11:48:18 -0300 Subject: [PATCH 3/5] Data annotation to CategoryDTO added --- .../guru/springfamework/api/v1/mapper/CategoryMapper.java | 4 ++++ .../java/guru/springfamework/api/v1/model/CategoryDTO.java | 3 +++ 2 files changed, 7 insertions(+) create mode 100644 src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java diff --git a/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java b/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java new file mode 100644 index 000000000..d08f77765 --- /dev/null +++ b/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java @@ -0,0 +1,4 @@ +package guru.springfamework.api.v1.mapper; + +public interface CategoryMapper { +} diff --git a/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java b/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java index 6fb9fd32d..0df3ea82a 100644 --- a/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java +++ b/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java @@ -1,8 +1,11 @@ package guru.springfamework.api.v1.model; +import lombok.Data; + /** * Created by ccabo on 8/24/19. */ +@Data public class CategoryDTO { private Long id; private String name; From bd6e95916aa4b5c80d3e874d306ca5279364ffa6 Mon Sep 17 00:00:00 2001 From: Cesar Nicolas Cabo Date: Sat, 24 Aug 2019 12:20:09 -0300 Subject: [PATCH 4/5] Added CategoryMapperTest, and refactor CategoryMapper and CategoryMapperDTO --- .../api/v1/mapper/CategoryMapper.java | 13 ++++++++ .../api/v1/model/CategoryDTO.java | 8 +++++ .../guru/springfamework/domain/Category.java | 9 ++++-- .../api/v1/mapper/CategoryMapperTest.java | 31 +++++++++++++++++++ 4 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 src/test/java/guru/springfamework/api/v1/mapper/CategoryMapperTest.java diff --git a/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java b/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java index d08f77765..2e47342a3 100644 --- a/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java +++ b/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java @@ -1,4 +1,17 @@ package guru.springfamework.api.v1.mapper; +import guru.springfamework.api.v1.model.CategoryDTO; +import guru.springfamework.domain.Category; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * Created by ccabo on 8/24/19 + */ +@Mapper public interface CategoryMapper { + + CategoryMapper INSTANCE = Mappers.getMapper(CategoryMapper.class); + + CategoryDTO categoryToCategoryDTO(Category category); } diff --git a/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java b/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java index 0df3ea82a..7df264af6 100644 --- a/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java +++ b/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java @@ -9,4 +9,12 @@ public class CategoryDTO { private Long id; private String name; + + public String getName() { + return name; + } + + public Long getId() { + return id; + } } diff --git a/src/main/java/guru/springfamework/domain/Category.java b/src/main/java/guru/springfamework/domain/Category.java index 3150bc3ec..6647d9956 100644 --- a/src/main/java/guru/springfamework/domain/Category.java +++ b/src/main/java/guru/springfamework/domain/Category.java @@ -19,8 +19,11 @@ public class Category { private Long id; private String name; - public String setName(String fruits) { - this.name = fruits; - return name; + public void setId(Long id) { + this.id = id; + } + + public void setName(String string) { + this.name = string; } } diff --git a/src/test/java/guru/springfamework/api/v1/mapper/CategoryMapperTest.java b/src/test/java/guru/springfamework/api/v1/mapper/CategoryMapperTest.java new file mode 100644 index 000000000..6ae935258 --- /dev/null +++ b/src/test/java/guru/springfamework/api/v1/mapper/CategoryMapperTest.java @@ -0,0 +1,31 @@ +package guru.springfamework.api.v1.mapper; + +import guru.springfamework.api.v1.model.CategoryDTO; +import guru.springfamework.domain.Category; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CategoryMapperTest { + + private static final String NAME = "Joe"; + private static final long ID = 1L; + CategoryMapper categoryMapper = CategoryMapper.INSTANCE; + + @Test + public void categoryToCategoryDTO() throws Exception { + + //given + Category category = new Category(); + category.setName(NAME); + category.setId(ID); + + //when + CategoryDTO categoryDTO = categoryMapper.categoryToCategoryDTO(category); + + //then + assertEquals(Long.valueOf(ID), categoryDTO.getId()); + assertEquals(NAME, categoryDTO.getName()); + + } +} From 0c12334b51a9f48263896ed6c71db8370a2c169c Mon Sep 17 00:00:00 2001 From: Cesar Nicolas Cabo Date: Sat, 24 Aug 2019 12:28:24 -0300 Subject: [PATCH 5/5] Mapping anotation added --- .../java/guru/springfamework/api/v1/mapper/CategoryMapper.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java b/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java index 2e47342a3..4d8ad8951 100644 --- a/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java +++ b/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java @@ -3,6 +3,7 @@ import guru.springfamework.api.v1.model.CategoryDTO; import guru.springfamework.domain.Category; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; /** @@ -13,5 +14,6 @@ public interface CategoryMapper { CategoryMapper INSTANCE = Mappers.getMapper(CategoryMapper.class); + @Mapping(source = "id", target = "id") CategoryDTO categoryToCategoryDTO(Category category); }