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/api/v1/mapper/CategoryMapper.java b/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java new file mode 100644 index 000000000..4d8ad8951 --- /dev/null +++ b/src/main/java/guru/springfamework/api/v1/mapper/CategoryMapper.java @@ -0,0 +1,19 @@ +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.Mapping; +import org.mapstruct.factory.Mappers; + +/** + * Created by ccabo on 8/24/19 + */ +@Mapper +public interface CategoryMapper { + + CategoryMapper INSTANCE = Mappers.getMapper(CategoryMapper.class); + + @Mapping(source = "id", target = "id") + 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 135ca3621..7df264af6 100644 --- a/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java +++ b/src/main/java/guru/springfamework/api/v1/model/CategoryDTO.java @@ -1,9 +1,20 @@ package guru.springfamework.api.v1.model; +import lombok.Data; + /** - * Created by jt on 9/24/17. + * Created by ccabo on 8/24/19. */ +@Data 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/bootstrap/Bootstrap.java b/src/main/java/guru/springfamework/bootstrap/Bootstrap.java new file mode 100644 index 000000000..6fc8919ab --- /dev/null +++ b/src/main/java/guru/springfamework/bootstrap/Bootstrap.java @@ -0,0 +1,47 @@ +package guru.springfamework.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..6647d9956 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,11 @@ public class Category { private Long id; private String 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()); + + } +}