diff --git a/README.md b/README.md index aabfd70..1424433 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ Generates the standard SPRING 3 layer CRUD architecture starting from JPA entiti * * * ![sketch](./doc/3layer-sketch.png) * * * + ## How to run as a standalone application: 1. Download and extract the ZIP/TAR file from [releases](https://github.com/GaetanoPiazzolla/Layer3Gen/releases); 2. Edit the file in /bin directory named _3layer-settings.yml_; @@ -14,19 +15,25 @@ Generates the standard SPRING 3 layer CRUD architecture starting from JPA entiti ```groovy buildscript { dependencies { - classpath "gae.piaz:layer3gen:1.8" + classpath "gae.piaz:layer3gen:1.9" } // .... } // ... apply plugin: 'gae.piaz.layer3gen' ``` +or for gradle version above 2.1 -2. Create a file named _3layer-settings.yml_ in the directory src/main/resources/; +```groovy +plugins { + id "gae.piaz.layer3gen" version "1.8" +} +``` +2. Create a file named _3layer-settings.yml_ (you willl find an example below) in the directory src/main/resources/; 3. Run the gradle task. ```shell script -gradlew layer3gen +gradlew clean build layer3gen ``` ## 3layer-settings.yml configuration template: @@ -36,8 +43,9 @@ projectPath: /home/tano/workspace_autogenerate/springboot-3layer-generator/demo classesDirectory: build/classes/java/main outputDirectory : src/main/java options: - dtoLayer : true - serviceInterface: true + dtoLayer : true # generates the dto from entities, controller using dto, and mapper layer + serviceInterface: true # whatever to generate CrudService Interface or not + entityControllers: false # whatever to generate controller using jpa entity or not inputPackages: jpaEntities : com.example.demo.model @@ -46,6 +54,8 @@ outputPackages: repositories : com.example.demo.repository services: com.example.demo.service controllers: com.example.demo.controller + dtos: gae.piaz.layer3gen.output.dtos # if this in not specified the dto package will be under the controllers package + mappers: gae.piaz.layer3gen.output.mappers # if this in not specified the mapper package will be under the services package ``` ## Examples: @@ -77,14 +87,13 @@ public class BooksService implements CrudService { } @Override - public Page read(Books entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); + public Page read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public Books readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); + public Optional readOne(java.lang.Integer primaryKey) { + return repository.findById(primaryKey); } @Override @@ -120,20 +129,18 @@ public class BooksControllerDTO implements CrudController> read( - @RequestBody BooksDTO dto, + public ResponseEntity> read( @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - Books entity = mapper.toEntity(dto); - Page pages = service.read(entity, pageable).map(mapper::toDto); + Page pages = service.read(pageable).map(mapper::toDto); return ResponseEntity.ok(pages); } @Override - public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - Books entity = service.readOne(primaryKey); - return ResponseEntity.ok(mapper.toDto(entity)); + public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { + Optional entity = service.readOne(primaryKey); + return entity.map(e -> ResponseEntity.ok(mapper.toDto(e))).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/build.gradle b/build.gradle index 9439d97..f988e06 100644 --- a/build.gradle +++ b/build.gradle @@ -28,11 +28,11 @@ dependencies { implementation 'org.reflections:reflections:0.9.11' // read classes implementation 'org.freemarker:freemarker:2.3.23'// write classes - compileOnly 'org.projectlombok:lombok:1.18.2' // autogenerate setter getter etc + compileOnly 'org.projectlombok:lombok:1.18.26' // autogenerate setter getter etc compileOnly gradleApi() // gradle plugin annotationProcessor "org.mapstruct:mapstruct-processor:1.3.1.Final" - annotationProcessor 'org.projectlombok:lombok:1.18.12' + annotationProcessor 'org.projectlombok:lombok:1.18.26' testImplementation 'junit:junit:4.12' } diff --git a/demo-jakarta/build.gradle.kts b/demo-jakarta/build.gradle.kts index 46889f9..d6fcbe0 100644 --- a/demo-jakarta/build.gradle.kts +++ b/demo-jakarta/build.gradle.kts @@ -27,15 +27,13 @@ repositories { dependencies { implementation("org.springframework.boot:spring-boot-starter-web") - implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation( "org.springframework.boot:spring-boot-starter-web") - implementation ("org.mapstruct:mapstruct:1.3.1.Final") - compileOnly( "org.projectlombok:lombok:1.18.2") - - annotationProcessor( "org.mapstruct:mapstruct-processor:1.3.1.Final") - annotationProcessor( "org.projectlombok:lombok:1.18.24") - + implementation ("org.mapstruct:mapstruct:1.5.3.Final") + compileOnly( "org.projectlombok:lombok:1.18.26") + runtimeOnly 'com.h2database:h2' + annotationProcessor( "org.projectlombok:lombok:1.18.26") + annotationProcessor( "org.mapstruct:mapstruct-processor:1.5.3.Final") } group = "com.example" diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/BookController.java b/demo-jakarta/src/main/java/com/example/demo/controller/BookController.java index d03e49b..7b36a75 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/BookController.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/BookController.java @@ -1,7 +1,7 @@ package com.example.demo.controller; import com.example.demo.model.Book; -import com.example.demo.service.BookService; +import com.example.demo.serviceInterface.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -9,9 +9,10 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @RestController @RequestMapping("/book/") @@ -32,16 +33,15 @@ public class BookController implements CrudController{ @Override public ResponseEntity> read( - @RequestBody Book entity, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - return ResponseEntity.ok(service.read(entity,pageable)); + return ResponseEntity.ok(service.read(pageable)); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - return ResponseEntity.ok(service.readOne(primaryKey)); + return service.readOne(primaryKey).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/BookControllerDTO.java b/demo-jakarta/src/main/java/com/example/demo/controller/BookControllerDTO.java index 1318e52..d0bf58f 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/BookControllerDTO.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/BookControllerDTO.java @@ -2,8 +2,8 @@ package com.example.demo.controller; import com.example.demo.model.Book; import com.example.demo.controller.dto.BookDTO; -import com.example.demo.service.BookService; -import com.example.demo.service.mapper.BookMapper; +import com.example.demo.serviceInterface.BookService; +import com.example.demo.serviceInterface.mapper.BookMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -11,9 +11,10 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @RestController @RequestMapping("/book-dto/") @@ -41,19 +42,17 @@ public class BookControllerDTO implements CrudController> read( - @RequestBody BookDTO dto, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - Book entity = mapper.toEntity(dto); - Page pages = service.read(entity, pageable).map(mapper::toDto); + Page pages = service.read(pageable).map(mapper::toDto); return ResponseEntity.ok(pages); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - Book entity = service.readOne(primaryKey); - return ResponseEntity.ok(mapper.toDto(entity)); + Optional entity = service.readOne(primaryKey); + return entity.map(e -> ResponseEntity.ok(mapper.toDto(e))).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/CrudController.java b/demo-jakarta/src/main/java/com/example/demo/controller/CrudController.java index bc3bab8..7d26e6b 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/CrudController.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/CrudController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:02 PM */ public interface CrudController{ @@ -18,8 +18,9 @@ public interface CrudController{ @PutMapping ResponseEntity update(O object); - @PostMapping("find") - ResponseEntity> read(O object, Integer page, Integer size); + @GetMapping("list") + ResponseEntity> read(Integer page, Integer size); + @GetMapping("{id}") ResponseEntity readOne(P primaryKey); diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/OrderController.java b/demo-jakarta/src/main/java/com/example/demo/controller/OrderController.java index 37de3dd..06a2cd0 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/OrderController.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/OrderController.java @@ -1,7 +1,7 @@ package com.example.demo.controller; import com.example.demo.model.Order; -import com.example.demo.service.OrderService; +import com.example.demo.serviceInterface.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -9,9 +9,10 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @RestController @RequestMapping("/order/") @@ -32,16 +33,15 @@ public class OrderController implements CrudController{ @Override public ResponseEntity> read( - @RequestBody Order entity, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - return ResponseEntity.ok(service.read(entity,pageable)); + return ResponseEntity.ok(service.read(pageable)); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - return ResponseEntity.ok(service.readOne(primaryKey)); + return service.readOne(primaryKey).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/OrderControllerDTO.java b/demo-jakarta/src/main/java/com/example/demo/controller/OrderControllerDTO.java index e0babac..0ef8e85 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/OrderControllerDTO.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/OrderControllerDTO.java @@ -2,8 +2,8 @@ package com.example.demo.controller; import com.example.demo.model.Order; import com.example.demo.controller.dto.OrderDTO; -import com.example.demo.service.OrderService; -import com.example.demo.service.mapper.OrderMapper; +import com.example.demo.serviceInterface.OrderService; +import com.example.demo.serviceInterface.mapper.OrderMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -11,9 +11,10 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @RestController @RequestMapping("/order-dto/") @@ -41,19 +42,17 @@ public class OrderControllerDTO implements CrudController> read( - @RequestBody OrderDTO dto, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - Order entity = mapper.toEntity(dto); - Page pages = service.read(entity, pageable).map(mapper::toDto); + Page pages = service.read(pageable).map(mapper::toDto); return ResponseEntity.ok(pages); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - Order entity = service.readOne(primaryKey); - return ResponseEntity.ok(mapper.toDto(entity)); + Optional entity = service.readOne(primaryKey); + return entity.map(e -> ResponseEntity.ok(mapper.toDto(e))).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/UserController.java b/demo-jakarta/src/main/java/com/example/demo/controller/UserController.java index 9834314..a0d36c6 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/UserController.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/UserController.java @@ -1,7 +1,7 @@ package com.example.demo.controller; import com.example.demo.model.User; -import com.example.demo.service.UserService; +import com.example.demo.serviceInterface.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -9,9 +9,10 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @RestController @RequestMapping("/user/") @@ -32,16 +33,15 @@ public class UserController implements CrudController{ @Override public ResponseEntity> read( - @RequestBody User entity, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - return ResponseEntity.ok(service.read(entity,pageable)); + return ResponseEntity.ok(service.read(pageable)); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - return ResponseEntity.ok(service.readOne(primaryKey)); + return service.readOne(primaryKey).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/UserControllerDTO.java b/demo-jakarta/src/main/java/com/example/demo/controller/UserControllerDTO.java index 38b6a9a..49afd1a 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/UserControllerDTO.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/UserControllerDTO.java @@ -2,8 +2,8 @@ package com.example.demo.controller; import com.example.demo.model.User; import com.example.demo.controller.dto.UserDTO; -import com.example.demo.service.UserService; -import com.example.demo.service.mapper.UserMapper; +import com.example.demo.serviceInterface.UserService; +import com.example.demo.serviceInterface.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -11,9 +11,10 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @RestController @RequestMapping("/user-dto/") @@ -41,19 +42,17 @@ public class UserControllerDTO implements CrudController> read( - @RequestBody UserDTO dto, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - User entity = mapper.toEntity(dto); - Page pages = service.read(entity, pageable).map(mapper::toDto); + Page pages = service.read(pageable).map(mapper::toDto); return ResponseEntity.ok(pages); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - User entity = service.readOne(primaryKey); - return ResponseEntity.ok(mapper.toDto(entity)); + Optional entity = service.readOne(primaryKey); + return entity.map(e -> ResponseEntity.ok(mapper.toDto(e))).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/dto/BookDTO.java b/demo-jakarta/src/main/java/com/example/demo/controller/dto/BookDTO.java index 8d1d1ee..5a35537 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/dto/BookDTO.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/dto/BookDTO.java @@ -2,11 +2,8 @@ package com.example.demo.controller.dto; import lombok.Data; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Data public class BookDTO { diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/dto/OrderDTO.java b/demo-jakarta/src/main/java/com/example/demo/controller/dto/OrderDTO.java index 580247f..4552513 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/dto/OrderDTO.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/dto/OrderDTO.java @@ -2,11 +2,8 @@ package com.example.demo.controller.dto; import lombok.Data; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Data public class OrderDTO { diff --git a/demo-jakarta/src/main/java/com/example/demo/controller/dto/UserDTO.java b/demo-jakarta/src/main/java/com/example/demo/controller/dto/UserDTO.java index d6dac0a..6a39421 100644 --- a/demo-jakarta/src/main/java/com/example/demo/controller/dto/UserDTO.java +++ b/demo-jakarta/src/main/java/com/example/demo/controller/dto/UserDTO.java @@ -2,11 +2,8 @@ package com.example.demo.controller.dto; import lombok.Data; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Data public class UserDTO { diff --git a/demo-jakarta/src/main/java/com/example/demo/model/Book.java b/demo-jakarta/src/main/java/com/example/demo/model/Book.java index 276fdef..e0cb005 100644 --- a/demo-jakarta/src/main/java/com/example/demo/model/Book.java +++ b/demo-jakarta/src/main/java/com/example/demo/model/Book.java @@ -6,7 +6,7 @@ import java.util.List; /** * The persistent class for the books database table. - * + * */ @Entity @Table(name="books") diff --git a/demo-jakarta/src/main/java/com/example/demo/model/Order.java b/demo-jakarta/src/main/java/com/example/demo/model/Order.java index 2829577..2864f8c 100644 --- a/demo-jakarta/src/main/java/com/example/demo/model/Order.java +++ b/demo-jakarta/src/main/java/com/example/demo/model/Order.java @@ -16,7 +16,7 @@ import java.io.Serializable; /** * The persistent class for the orders database table. - * + * */ @Entity @Table(name="orders") diff --git a/demo-jakarta/src/main/java/com/example/demo/model/User.java b/demo-jakarta/src/main/java/com/example/demo/model/User.java index a49a180..0975a75 100644 --- a/demo-jakarta/src/main/java/com/example/demo/model/User.java +++ b/demo-jakarta/src/main/java/com/example/demo/model/User.java @@ -6,7 +6,7 @@ import java.util.List; /** * The persistent class for the users database table. - * + * */ @Entity @Table(name="users") diff --git a/demo-jakarta/src/main/java/com/example/demo/repository/BookRepository.java b/demo-jakarta/src/main/java/com/example/demo/repository/BookRepository.java index 77c2309..c827fbd 100644 --- a/demo-jakarta/src/main/java/com/example/demo/repository/BookRepository.java +++ b/demo-jakarta/src/main/java/com/example/demo/repository/BookRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Repository public interface BookRepository extends JpaRepository { diff --git a/demo-jakarta/src/main/java/com/example/demo/repository/OrderRepository.java b/demo-jakarta/src/main/java/com/example/demo/repository/OrderRepository.java index 4d355ea..d97d5a1 100644 --- a/demo-jakarta/src/main/java/com/example/demo/repository/OrderRepository.java +++ b/demo-jakarta/src/main/java/com/example/demo/repository/OrderRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Repository public interface OrderRepository extends JpaRepository { diff --git a/demo-jakarta/src/main/java/com/example/demo/repository/UserRepository.java b/demo-jakarta/src/main/java/com/example/demo/repository/UserRepository.java index d81c90f..57c3f23 100644 --- a/demo-jakarta/src/main/java/com/example/demo/repository/UserRepository.java +++ b/demo-jakarta/src/main/java/com/example/demo/repository/UserRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Repository public interface UserRepository extends JpaRepository { diff --git a/demo-jakarta/src/main/java/com/example/demo/service/CrudService.java b/demo-jakarta/src/main/java/com/example/demo/service/CrudService.java deleted file mode 100644 index 980ddc9..0000000 --- a/demo-jakarta/src/main/java/com/example/demo/service/CrudService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.demo.service; - -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM -*/ -public interface CrudService { - - E create(E entity); - - E update(E entity); - - Page read(E entity, Pageable pageable); - E readOne(P primaryKey); - - void delete(P primaryKey); - -} \ No newline at end of file diff --git a/demo-jakarta/src/main/java/com/example/demo/service/OrderService.java b/demo-jakarta/src/main/java/com/example/demo/service/OrderService.java deleted file mode 100644 index f70700e..0000000 --- a/demo-jakarta/src/main/java/com/example/demo/service/OrderService.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.example.demo.service; - -import com.example.demo.model.Order; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM -*/ -public interface OrderService extends CrudService { - -} \ No newline at end of file diff --git a/demo-jakarta/src/main/java/com/example/demo/service/UserService.java b/demo-jakarta/src/main/java/com/example/demo/service/UserService.java deleted file mode 100644 index 171a8fb..0000000 --- a/demo-jakarta/src/main/java/com/example/demo/service/UserService.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.example.demo.service; - -import com.example.demo.model.User; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM -*/ -public interface UserService extends CrudService { - -} \ No newline at end of file diff --git a/demo-jakarta/src/main/java/com/example/demo/service/impl/OrderServiceBean.java b/demo-jakarta/src/main/java/com/example/demo/service/impl/OrderServiceBean.java deleted file mode 100644 index c719bf9..0000000 --- a/demo-jakarta/src/main/java/com/example/demo/service/impl/OrderServiceBean.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.example.demo.service.impl; - -import com.example.demo.model.Order; -import com.example.demo.repository.OrderRepository; -import com.example.demo.service.OrderService; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Example; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM -*/ -@Service -public class OrderServiceBean implements OrderService { - - @Autowired - private OrderRepository repository; - - @Override - public Order create(Order entity) { - return repository.save(entity); - } - - @Override - public Order update(Order entity) { - return repository.save(entity); - } - - @Override - public Page read(Order entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); - } - - @Override - public Order readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); - } - - @Override - public void delete(java.lang.Integer primaryKey) { - repository.deleteById(primaryKey); - } -} \ No newline at end of file diff --git a/demo-jakarta/src/main/java/com/example/demo/service/impl/UserServiceBean.java b/demo-jakarta/src/main/java/com/example/demo/service/impl/UserServiceBean.java deleted file mode 100644 index ec8f9f5..0000000 --- a/demo-jakarta/src/main/java/com/example/demo/service/impl/UserServiceBean.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.example.demo.service.impl; - -import com.example.demo.model.User; -import com.example.demo.repository.UserRepository; -import com.example.demo.service.UserService; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Example; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM -*/ -@Service -public class UserServiceBean implements UserService { - - @Autowired - private UserRepository repository; - - @Override - public User create(User entity) { - return repository.save(entity); - } - - @Override - public User update(User entity) { - return repository.save(entity); - } - - @Override - public Page read(User entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); - } - - @Override - public User readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); - } - - @Override - public void delete(java.lang.Integer primaryKey) { - repository.deleteById(primaryKey); - } -} \ No newline at end of file diff --git a/demo-jakarta/src/main/java/com/example/demo/service/mapper/BookMapper.java b/demo-jakarta/src/main/java/com/example/demo/service/mapper/BookMapper.java deleted file mode 100644 index 5b80771..0000000 --- a/demo-jakarta/src/main/java/com/example/demo/service/mapper/BookMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.demo.service.mapper; - -import com.example.demo.model.Book; -import com.example.demo.controller.dto.BookDTO; -import org.mapstruct.Mapper; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM -*/ -@Mapper(componentModel = "spring") -public interface BookMapper { - - Book toEntity(BookDTO dto); - - BookDTO toDto(Book entity); - -} \ No newline at end of file diff --git a/demo-jakarta/src/main/java/com/example/demo/service/mapper/OrderMapper.java b/demo-jakarta/src/main/java/com/example/demo/service/mapper/OrderMapper.java deleted file mode 100644 index bd66446..0000000 --- a/demo-jakarta/src/main/java/com/example/demo/service/mapper/OrderMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.demo.service.mapper; - -import com.example.demo.model.Order; -import com.example.demo.controller.dto.OrderDTO; -import org.mapstruct.Mapper; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM -*/ -@Mapper(componentModel = "spring") -public interface OrderMapper { - - Order toEntity(OrderDTO dto); - - OrderDTO toDto(Order entity); - -} \ No newline at end of file diff --git a/demo-jakarta/src/main/java/com/example/demo/service/mapper/UserMapper.java b/demo-jakarta/src/main/java/com/example/demo/service/mapper/UserMapper.java deleted file mode 100644 index d6301a6..0000000 --- a/demo-jakarta/src/main/java/com/example/demo/service/mapper/UserMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.demo.service.mapper; - -import com.example.demo.model.User; -import com.example.demo.controller.dto.UserDTO; -import org.mapstruct.Mapper; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM -*/ -@Mapper(componentModel = "spring") -public interface UserMapper { - - User toEntity(UserDTO dto); - - UserDTO toDto(User entity); - -} \ No newline at end of file diff --git a/demo-jakarta/src/main/java/com/example/demo/service/BookService.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/BookService.java similarity index 51% rename from demo-jakarta/src/main/java/com/example/demo/service/BookService.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/BookService.java index 37d0a24..b60492f 100644 --- a/demo-jakarta/src/main/java/com/example/demo/service/BookService.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/BookService.java @@ -1,9 +1,9 @@ -package com.example.demo.service; +package com.example.demo.serviceInterface; import com.example.demo.model.Book; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ public interface BookService extends CrudService { diff --git a/demo-jakarta/src/main/java/com/example/demo/serviceInterface/CrudService.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/CrudService.java index 9de1927..92e0af2 100644 --- a/demo-jakarta/src/main/java/com/example/demo/serviceInterface/CrudService.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/CrudService.java @@ -2,18 +2,20 @@ package com.example.demo.serviceInterface; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:45:37 AM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:02 PM */ -public interface CrudService { +public interface CrudService { E create(E entity); E update(E entity); - Page read(E entity, Pageable pageable); - E readOne(P primaryKey); + Page read(Pageable pageable); + + Optional readOne(P primaryKey); void delete(P primaryKey); diff --git a/demo/src/main/java/com/example/demo/service/OrderService.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/OrderService.java similarity index 52% rename from demo/src/main/java/com/example/demo/service/OrderService.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/OrderService.java index cb6675f..73896f0 100644 --- a/demo/src/main/java/com/example/demo/service/OrderService.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/OrderService.java @@ -1,9 +1,9 @@ -package com.example.demo.service; +package com.example.demo.serviceInterface; import com.example.demo.model.Order; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ public interface OrderService extends CrudService { diff --git a/demo/src/main/java/com/example/demo/service/UserService.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/UserService.java similarity index 51% rename from demo/src/main/java/com/example/demo/service/UserService.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/UserService.java index 77c4f66..e747685 100644 --- a/demo/src/main/java/com/example/demo/service/UserService.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/UserService.java @@ -1,9 +1,9 @@ -package com.example.demo.service; +package com.example.demo.serviceInterface; import com.example.demo.model.User; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ public interface UserService extends CrudService { diff --git a/demo-jakarta/src/main/java/com/example/demo/service/impl/BookServiceBean.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/BookServiceBean.java similarity index 66% rename from demo-jakarta/src/main/java/com/example/demo/service/impl/BookServiceBean.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/BookServiceBean.java index f163ec4..36d578d 100644 --- a/demo-jakarta/src/main/java/com/example/demo/service/impl/BookServiceBean.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/BookServiceBean.java @@ -1,17 +1,18 @@ -package com.example.demo.service.impl; +package com.example.demo.serviceInterface.impl; import com.example.demo.model.Book; import com.example.demo.repository.BookRepository; -import com.example.demo.service.BookService; +import com.example.demo.serviceInterface.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:19:32 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Service public class BookServiceBean implements BookService { @@ -30,14 +31,13 @@ public class BookServiceBean implements BookService { } @Override - public Page read(Book entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); + public Page read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public Book readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); + public Optional readOne(java.lang.Integer primaryKey) { + return repository.findById(primaryKey); } @Override diff --git a/demo/src/main/java/com/example/demo/service/impl/OrderServiceBean.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/OrderServiceBean.java similarity index 66% rename from demo/src/main/java/com/example/demo/service/impl/OrderServiceBean.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/OrderServiceBean.java index bdd3d09..d6d1284 100644 --- a/demo/src/main/java/com/example/demo/service/impl/OrderServiceBean.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/OrderServiceBean.java @@ -1,17 +1,18 @@ -package com.example.demo.service.impl; +package com.example.demo.serviceInterface.impl; import com.example.demo.model.Order; import com.example.demo.repository.OrderRepository; -import com.example.demo.service.OrderService; +import com.example.demo.serviceInterface.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Service public class OrderServiceBean implements OrderService { @@ -30,14 +31,13 @@ public class OrderServiceBean implements OrderService { } @Override - public Page read(Order entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); + public Page read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public Order readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); + public Optional readOne(java.lang.Integer primaryKey) { + return repository.findById(primaryKey); } @Override diff --git a/demo/src/main/java/com/example/demo/service/impl/UserServiceBean.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/UserServiceBean.java similarity index 66% rename from demo/src/main/java/com/example/demo/service/impl/UserServiceBean.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/UserServiceBean.java index 63f4c6f..acc820c 100644 --- a/demo/src/main/java/com/example/demo/service/impl/UserServiceBean.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/impl/UserServiceBean.java @@ -1,17 +1,18 @@ -package com.example.demo.service.impl; +package com.example.demo.serviceInterface.impl; import com.example.demo.model.User; import com.example.demo.repository.UserRepository; -import com.example.demo.service.UserService; +import com.example.demo.serviceInterface.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Service public class UserServiceBean implements UserService { @@ -30,14 +31,13 @@ public class UserServiceBean implements UserService { } @Override - public Page read(User entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); + public Page read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public User readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); + public Optional readOne(java.lang.Integer primaryKey) { + return repository.findById(primaryKey); } @Override diff --git a/demo/src/main/java/com/example/demo/service/mapper/BookMapper.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/BookMapper.java similarity index 67% rename from demo/src/main/java/com/example/demo/service/mapper/BookMapper.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/BookMapper.java index c2fea76..29d0acf 100644 --- a/demo/src/main/java/com/example/demo/service/mapper/BookMapper.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/BookMapper.java @@ -1,11 +1,11 @@ -package com.example.demo.service.mapper; +package com.example.demo.serviceInterface.mapper; import com.example.demo.model.Book; import com.example.demo.controller.dto.BookDTO; import org.mapstruct.Mapper; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Mapper(componentModel = "spring") public interface BookMapper { diff --git a/demo/src/main/java/com/example/demo/service/mapper/OrderMapper.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/OrderMapper.java similarity index 68% rename from demo/src/main/java/com/example/demo/service/mapper/OrderMapper.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/OrderMapper.java index e330e52..5758640 100644 --- a/demo/src/main/java/com/example/demo/service/mapper/OrderMapper.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/OrderMapper.java @@ -1,11 +1,11 @@ -package com.example.demo.service.mapper; +package com.example.demo.serviceInterface.mapper; import com.example.demo.model.Order; import com.example.demo.controller.dto.OrderDTO; import org.mapstruct.Mapper; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Mapper(componentModel = "spring") public interface OrderMapper { diff --git a/demo/src/main/java/com/example/demo/service/mapper/UserMapper.java b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/UserMapper.java similarity index 67% rename from demo/src/main/java/com/example/demo/service/mapper/UserMapper.java rename to demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/UserMapper.java index 4f56a4c..6432098 100644 --- a/demo/src/main/java/com/example/demo/service/mapper/UserMapper.java +++ b/demo-jakarta/src/main/java/com/example/demo/serviceInterface/mapper/UserMapper.java @@ -1,11 +1,11 @@ -package com.example.demo.service.mapper; +package com.example.demo.serviceInterface.mapper; import com.example.demo.model.User; import com.example.demo.controller.dto.UserDTO; import org.mapstruct.Mapper; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 22, 2023, 1:38:03 PM */ @Mapper(componentModel = "spring") public interface UserMapper { diff --git a/demo/build.gradle b/demo/build.gradle index 22be3a5..055fd24 100644 --- a/demo/build.gradle +++ b/demo/build.gradle @@ -21,23 +21,17 @@ group = 'com.example' version = '0.0.1-SNAPSHOT' dependencies { - implementation 'org.springframework.boot:spring-boot-starter' - - // needed dependency also for generated classes implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.mapstruct:mapstruct:1.3.1.Final' - compileOnly 'org.projectlombok:lombok:1.18.2' - - annotationProcessor "org.mapstruct:mapstruct-processor:1.3.1.Final" - annotationProcessor 'org.projectlombok:lombok:1.18.12' - - + implementation 'org.mapstruct:mapstruct:1.5.3.Final' + compileOnly 'org.projectlombok:lombok:1.18.26' + runtimeOnly 'com.h2database:h2' + annotationProcessor 'org.projectlombok:lombok:1.18.26' + annotationProcessor "org.mapstruct:mapstruct-processor:1.5.3.Final" testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } - } test { diff --git a/demo/src/main/java/com/example/demo/controller/BookController.java b/demo/src/main/java/com/example/demo/controller/BookController.java index 70b372e..7f961db 100644 --- a/demo/src/main/java/com/example/demo/controller/BookController.java +++ b/demo/src/main/java/com/example/demo/controller/BookController.java @@ -1,7 +1,7 @@ package com.example.demo.controller; import com.example.demo.model.Book; -import com.example.demo.service.BookService; +import com.example.demo.serviceInterface.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -9,9 +9,10 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @RestController @RequestMapping("/book/") @@ -32,16 +33,15 @@ public class BookController implements CrudController{ @Override public ResponseEntity> read( - @RequestBody Book entity, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - return ResponseEntity.ok(service.read(entity,pageable)); + return ResponseEntity.ok(service.read(pageable)); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - return ResponseEntity.ok(service.readOne(primaryKey)); + return service.readOne(primaryKey).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo/src/main/java/com/example/demo/controller/BookControllerDTO.java b/demo/src/main/java/com/example/demo/controller/BookControllerDTO.java index aa23887..505623b 100644 --- a/demo/src/main/java/com/example/demo/controller/BookControllerDTO.java +++ b/demo/src/main/java/com/example/demo/controller/BookControllerDTO.java @@ -2,8 +2,8 @@ package com.example.demo.controller; import com.example.demo.model.Book; import com.example.demo.controller.dto.BookDTO; -import com.example.demo.service.BookService; -import com.example.demo.service.mapper.BookMapper; +import com.example.demo.serviceInterface.BookService; +import com.example.demo.serviceInterface.mapper.BookMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -11,9 +11,10 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @RestController @RequestMapping("/book-dto/") @@ -41,19 +42,17 @@ public class BookControllerDTO implements CrudController> read( - @RequestBody BookDTO dto, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - Book entity = mapper.toEntity(dto); - Page pages = service.read(entity, pageable).map(mapper::toDto); + Page pages = service.read(pageable).map(mapper::toDto); return ResponseEntity.ok(pages); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - Book entity = service.readOne(primaryKey); - return ResponseEntity.ok(mapper.toDto(entity)); + Optional entity = service.readOne(primaryKey); + return entity.map(e -> ResponseEntity.ok(mapper.toDto(e))).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo/src/main/java/com/example/demo/controller/CrudController.java b/demo/src/main/java/com/example/demo/controller/CrudController.java index f4c06c9..0e1a410 100644 --- a/demo/src/main/java/com/example/demo/controller/CrudController.java +++ b/demo/src/main/java/com/example/demo/controller/CrudController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:37 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 7:59:17 AM */ public interface CrudController{ @@ -18,8 +18,9 @@ public interface CrudController{ @PutMapping ResponseEntity update(O object); - @PostMapping("find") - ResponseEntity> read(O object, Integer page, Integer size); + @GetMapping("list") + ResponseEntity> read(Integer page, Integer size); + @GetMapping("{id}") ResponseEntity readOne(P primaryKey); diff --git a/demo/src/main/java/com/example/demo/controller/OrderController.java b/demo/src/main/java/com/example/demo/controller/OrderController.java index 5896aae..19192e7 100644 --- a/demo/src/main/java/com/example/demo/controller/OrderController.java +++ b/demo/src/main/java/com/example/demo/controller/OrderController.java @@ -1,7 +1,7 @@ package com.example.demo.controller; import com.example.demo.model.Order; -import com.example.demo.service.OrderService; +import com.example.demo.serviceInterface.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -9,9 +9,10 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @RestController @RequestMapping("/order/") @@ -32,16 +33,15 @@ public class OrderController implements CrudController{ @Override public ResponseEntity> read( - @RequestBody Order entity, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - return ResponseEntity.ok(service.read(entity,pageable)); + return ResponseEntity.ok(service.read(pageable)); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - return ResponseEntity.ok(service.readOne(primaryKey)); + return service.readOne(primaryKey).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo/src/main/java/com/example/demo/controller/OrderControllerDTO.java b/demo/src/main/java/com/example/demo/controller/OrderControllerDTO.java index 97c0faf..4f4b1d3 100644 --- a/demo/src/main/java/com/example/demo/controller/OrderControllerDTO.java +++ b/demo/src/main/java/com/example/demo/controller/OrderControllerDTO.java @@ -2,8 +2,8 @@ package com.example.demo.controller; import com.example.demo.model.Order; import com.example.demo.controller.dto.OrderDTO; -import com.example.demo.service.OrderService; -import com.example.demo.service.mapper.OrderMapper; +import com.example.demo.serviceInterface.OrderService; +import com.example.demo.serviceInterface.mapper.OrderMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -11,9 +11,10 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @RestController @RequestMapping("/order-dto/") @@ -41,19 +42,17 @@ public class OrderControllerDTO implements CrudController> read( - @RequestBody OrderDTO dto, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - Order entity = mapper.toEntity(dto); - Page pages = service.read(entity, pageable).map(mapper::toDto); + Page pages = service.read(pageable).map(mapper::toDto); return ResponseEntity.ok(pages); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - Order entity = service.readOne(primaryKey); - return ResponseEntity.ok(mapper.toDto(entity)); + Optional entity = service.readOne(primaryKey); + return entity.map(e -> ResponseEntity.ok(mapper.toDto(e))).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo/src/main/java/com/example/demo/controller/UserController.java b/demo/src/main/java/com/example/demo/controller/UserController.java index e967ab2..e26cd50 100644 --- a/demo/src/main/java/com/example/demo/controller/UserController.java +++ b/demo/src/main/java/com/example/demo/controller/UserController.java @@ -1,7 +1,7 @@ package com.example.demo.controller; import com.example.demo.model.User; -import com.example.demo.service.UserService; +import com.example.demo.serviceInterface.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -9,9 +9,10 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @RestController @RequestMapping("/user/") @@ -32,16 +33,15 @@ public class UserController implements CrudController{ @Override public ResponseEntity> read( - @RequestBody User entity, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - return ResponseEntity.ok(service.read(entity,pageable)); + return ResponseEntity.ok(service.read(pageable)); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - return ResponseEntity.ok(service.readOne(primaryKey)); + return service.readOne(primaryKey).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo/src/main/java/com/example/demo/controller/UserControllerDTO.java b/demo/src/main/java/com/example/demo/controller/UserControllerDTO.java index 96cafca..811eae0 100644 --- a/demo/src/main/java/com/example/demo/controller/UserControllerDTO.java +++ b/demo/src/main/java/com/example/demo/controller/UserControllerDTO.java @@ -2,8 +2,8 @@ package com.example.demo.controller; import com.example.demo.model.User; import com.example.demo.controller.dto.UserDTO; -import com.example.demo.service.UserService; -import com.example.demo.service.mapper.UserMapper; +import com.example.demo.serviceInterface.UserService; +import com.example.demo.serviceInterface.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -11,9 +11,10 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @RestController @RequestMapping("/user-dto/") @@ -41,19 +42,17 @@ public class UserControllerDTO implements CrudController> read( - @RequestBody UserDTO dto, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - User entity = mapper.toEntity(dto); - Page pages = service.read(entity, pageable).map(mapper::toDto); + Page pages = service.read(pageable).map(mapper::toDto); return ResponseEntity.ok(pages); } @Override public ResponseEntity readOne(@PathVariable("id") java.lang.Integer primaryKey) { - User entity = service.readOne(primaryKey); - return ResponseEntity.ok(mapper.toDto(entity)); + Optional entity = service.readOne(primaryKey); + return entity.map(e -> ResponseEntity.ok(mapper.toDto(e))).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/demo/src/main/java/com/example/demo/controller/dto/BookDTO.java b/demo/src/main/java/com/example/demo/controller/dto/BookDTO.java index 8400d1b..c908435 100644 --- a/demo/src/main/java/com/example/demo/controller/dto/BookDTO.java +++ b/demo/src/main/java/com/example/demo/controller/dto/BookDTO.java @@ -2,11 +2,8 @@ package com.example.demo.controller.dto; import lombok.Data; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Data public class BookDTO { diff --git a/demo/src/main/java/com/example/demo/controller/dto/OrderDTO.java b/demo/src/main/java/com/example/demo/controller/dto/OrderDTO.java index b8dce6b..ad201b1 100644 --- a/demo/src/main/java/com/example/demo/controller/dto/OrderDTO.java +++ b/demo/src/main/java/com/example/demo/controller/dto/OrderDTO.java @@ -2,11 +2,8 @@ package com.example.demo.controller.dto; import lombok.Data; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Data public class OrderDTO { diff --git a/demo/src/main/java/com/example/demo/controller/dto/UserDTO.java b/demo/src/main/java/com/example/demo/controller/dto/UserDTO.java index fc700e1..8062e51 100644 --- a/demo/src/main/java/com/example/demo/controller/dto/UserDTO.java +++ b/demo/src/main/java/com/example/demo/controller/dto/UserDTO.java @@ -2,11 +2,8 @@ package com.example.demo.controller.dto; import lombok.Data; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Data public class UserDTO { diff --git a/demo/src/main/java/com/example/demo/repository/BookRepository.java b/demo/src/main/java/com/example/demo/repository/BookRepository.java index 173c4a8..cc5c960 100644 --- a/demo/src/main/java/com/example/demo/repository/BookRepository.java +++ b/demo/src/main/java/com/example/demo/repository/BookRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Repository public interface BookRepository extends JpaRepository { diff --git a/demo/src/main/java/com/example/demo/repository/OrderRepository.java b/demo/src/main/java/com/example/demo/repository/OrderRepository.java index 36392ad..ed56ae4 100644 --- a/demo/src/main/java/com/example/demo/repository/OrderRepository.java +++ b/demo/src/main/java/com/example/demo/repository/OrderRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Repository public interface OrderRepository extends JpaRepository { diff --git a/demo/src/main/java/com/example/demo/repository/UserRepository.java b/demo/src/main/java/com/example/demo/repository/UserRepository.java index 635695e..7ada121 100644 --- a/demo/src/main/java/com/example/demo/repository/UserRepository.java +++ b/demo/src/main/java/com/example/demo/repository/UserRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:37 PM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Repository public interface UserRepository extends JpaRepository { diff --git a/demo/src/main/java/com/example/demo/service/BookService.java b/demo/src/main/java/com/example/demo/service/BookService.java deleted file mode 100644 index a201cc2..0000000 --- a/demo/src/main/java/com/example/demo/service/BookService.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.example.demo.service; - -import com.example.demo.model.Book; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM -*/ -public interface BookService extends CrudService { - -} \ No newline at end of file diff --git a/demo/src/main/java/com/example/demo/service/CrudService.java b/demo/src/main/java/com/example/demo/service/CrudService.java deleted file mode 100644 index 1248b51..0000000 --- a/demo/src/main/java/com/example/demo/service/CrudService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.demo.service; - -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:37 PM -*/ -public interface CrudService { - - E create(E entity); - - E update(E entity); - - Page read(E entity, Pageable pageable); - E readOne(P primaryKey); - - void delete(P primaryKey); - -} \ No newline at end of file diff --git a/demo/src/main/java/com/example/demo/service/impl/BookServiceBean.java b/demo/src/main/java/com/example/demo/service/impl/BookServiceBean.java deleted file mode 100644 index 9190c45..0000000 --- a/demo/src/main/java/com/example/demo/service/impl/BookServiceBean.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.example.demo.service.impl; - -import com.example.demo.model.Book; -import com.example.demo.repository.BookRepository; -import com.example.demo.service.BookService; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Example; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -/** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 12:20:38 PM -*/ -@Service -public class BookServiceBean implements BookService { - - @Autowired - private BookRepository repository; - - @Override - public Book create(Book entity) { - return repository.save(entity); - } - - @Override - public Book update(Book entity) { - return repository.save(entity); - } - - @Override - public Page read(Book entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); - } - - @Override - public Book readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); - } - - @Override - public void delete(java.lang.Integer primaryKey) { - repository.deleteById(primaryKey); - } -} \ No newline at end of file diff --git a/demo/src/main/java/com/example/demo/serviceInterface/BookService.java b/demo/src/main/java/com/example/demo/serviceInterface/BookService.java index 2398129..6ba1995 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/BookService.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/BookService.java @@ -3,7 +3,7 @@ package com.example.demo.serviceInterface; import com.example.demo.model.Book; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:30 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ public interface BookService extends CrudService { diff --git a/demo/src/main/java/com/example/demo/serviceInterface/CrudService.java b/demo/src/main/java/com/example/demo/serviceInterface/CrudService.java index 1cd24a7..dff30ee 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/CrudService.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/CrudService.java @@ -2,18 +2,20 @@ package com.example.demo.serviceInterface; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:29 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 7:59:17 AM */ -public interface CrudService { +public interface CrudService { E create(E entity); E update(E entity); - Page read(E entity, Pageable pageable); - E readOne(P primaryKey); + Page read(Pageable pageable); + + Optional readOne(P primaryKey); void delete(P primaryKey); diff --git a/demo/src/main/java/com/example/demo/serviceInterface/OrderService.java b/demo/src/main/java/com/example/demo/serviceInterface/OrderService.java index b5c7000..92d7d37 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/OrderService.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/OrderService.java @@ -3,7 +3,7 @@ package com.example.demo.serviceInterface; import com.example.demo.model.Order; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:29 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ public interface OrderService extends CrudService { diff --git a/demo/src/main/java/com/example/demo/serviceInterface/UserService.java b/demo/src/main/java/com/example/demo/serviceInterface/UserService.java index 5767d91..3509110 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/UserService.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/UserService.java @@ -3,7 +3,7 @@ package com.example.demo.serviceInterface; import com.example.demo.model.User; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:30 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ public interface UserService extends CrudService { diff --git a/demo/src/main/java/com/example/demo/serviceInterface/impl/BookServiceBean.java b/demo/src/main/java/com/example/demo/serviceInterface/impl/BookServiceBean.java index 5046fd6..d63f3d0 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/impl/BookServiceBean.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/impl/BookServiceBean.java @@ -9,9 +9,10 @@ import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:30 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Service public class BookServiceBean implements BookService { @@ -30,14 +31,13 @@ public class BookServiceBean implements BookService { } @Override - public Page read(Book entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); + public Page read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public Book readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); + public Optional readOne(java.lang.Integer primaryKey) { + return repository.findById(primaryKey); } @Override diff --git a/demo/src/main/java/com/example/demo/serviceInterface/impl/OrderServiceBean.java b/demo/src/main/java/com/example/demo/serviceInterface/impl/OrderServiceBean.java index f61f108..a856c1c 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/impl/OrderServiceBean.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/impl/OrderServiceBean.java @@ -9,9 +9,10 @@ import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:29 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Service public class OrderServiceBean implements OrderService { @@ -30,14 +31,13 @@ public class OrderServiceBean implements OrderService { } @Override - public Page read(Order entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); + public Page read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public Order readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); + public Optional readOne(java.lang.Integer primaryKey) { + return repository.findById(primaryKey); } @Override diff --git a/demo/src/main/java/com/example/demo/serviceInterface/impl/UserServiceBean.java b/demo/src/main/java/com/example/demo/serviceInterface/impl/UserServiceBean.java index 5c4c1fa..98c32d4 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/impl/UserServiceBean.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/impl/UserServiceBean.java @@ -9,9 +9,10 @@ import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Optional; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:30 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Service public class UserServiceBean implements UserService { @@ -30,14 +31,13 @@ public class UserServiceBean implements UserService { } @Override - public Page read(User entity, Pageable pageable) { - Example example = Example.of(entity); - return repository.findAll(example,pageable); + public Page read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public User readOne(java.lang.Integer primaryKey) { - return repository.getOne(primaryKey); + public Optional readOne(java.lang.Integer primaryKey) { + return repository.findById(primaryKey); } @Override diff --git a/demo/src/main/java/com/example/demo/serviceInterface/mapper/BookMapper.java b/demo/src/main/java/com/example/demo/serviceInterface/mapper/BookMapper.java index 723c92e..2fae5a1 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/mapper/BookMapper.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/mapper/BookMapper.java @@ -5,7 +5,7 @@ import com.example.demo.controller.dto.BookDTO; import org.mapstruct.Mapper; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:30 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Mapper(componentModel = "spring") public interface BookMapper { diff --git a/demo/src/main/java/com/example/demo/serviceInterface/mapper/OrderMapper.java b/demo/src/main/java/com/example/demo/serviceInterface/mapper/OrderMapper.java index dd5ad83..da2ebf1 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/mapper/OrderMapper.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/mapper/OrderMapper.java @@ -5,7 +5,7 @@ import com.example.demo.controller.dto.OrderDTO; import org.mapstruct.Mapper; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:30 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Mapper(componentModel = "spring") public interface OrderMapper { diff --git a/demo/src/main/java/com/example/demo/serviceInterface/mapper/UserMapper.java b/demo/src/main/java/com/example/demo/serviceInterface/mapper/UserMapper.java index 83856cf..9570ba7 100644 --- a/demo/src/main/java/com/example/demo/serviceInterface/mapper/UserMapper.java +++ b/demo/src/main/java/com/example/demo/serviceInterface/mapper/UserMapper.java @@ -5,7 +5,7 @@ import com.example.demo.controller.dto.UserDTO; import org.mapstruct.Mapper; /** -* Generated by Springboot-3layer-Generator at Jan 23, 2023, 10:35:30 AM +* Generated by Springboot-3layer-Generator at Feb 21, 2023, 6:23:13 AM */ @Mapper(componentModel = "spring") public interface UserMapper { diff --git a/src/main/java/gae/piaz/layer3gen/CodeGenerator.java b/src/main/java/gae/piaz/layer3gen/CodeGenerator.java index 275c41a..bc366c3 100644 --- a/src/main/java/gae/piaz/layer3gen/CodeGenerator.java +++ b/src/main/java/gae/piaz/layer3gen/CodeGenerator.java @@ -3,6 +3,7 @@ package gae.piaz.layer3gen; import freemarker.template.TemplateException; import gae.piaz.layer3gen.config.CodeGeneratorConfig; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.reflections.Reflections; import org.reflections.scanners.FieldAnnotationsScanner; @@ -13,11 +14,18 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; +import java.util.Optional; import java.util.Set; @Slf4j public class CodeGenerator { + // Utility class such CodeGenerator that have all method as static should have private constructor + // Code smell : java:S1118 + private CodeGenerator() { + throw new IllegalStateException("Utility class"); + } + private static CodeGeneratorConfig config; private static URLClassLoader classLoader; @@ -43,16 +51,18 @@ public class CodeGenerator { createRepository(entity); - if (config.getOptions().getServiceInterface()) { + if (Boolean.TRUE.equals(config.getOptions().getServiceInterface())) { createServiceBean(entity); createServiceInterface(entity); } else { createService(entity); } - createController(entity); + if (Boolean.TRUE.equals(config.getOptions().getEntityControllers())){ + createController(entity); + } - if (config.getOptions().getDtoLayer()) { + if (Boolean.TRUE.equals(config.getOptions().getDtoLayer())) { createDto(entity); createMapper(entity); createControllerDTO(entity); @@ -78,8 +88,9 @@ public class CodeGenerator { data.setEntityPackage(entity.getPackageName()); String code = CodeRenderer.render("controllerdto.ftl", data); - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getControllers().replaceAll("\\.", "/") + "/" + entity.getSimpleName() + "ControllerDTO.java"; + String filepath = Paths.get(config.getProjectPath(), config.getOutputDirectory(), + config.getOutputPackages().getControllers().replaceAll("\\.", "/"), + entity.getSimpleName() + "ControllerDTO.java").toString(); writeFile(code, filepath); @@ -87,15 +98,19 @@ public class CodeGenerator { private static void createMapper(Class entity) throws IOException, TemplateException { + if(StringUtils.isBlank(config.getOutputPackages().getMappers())){ + config.getOutputPackages().setMappers(config.getOutputPackages().getServices() + ".mapper"); + } + CodeRenderer.RenderingData data = new CodeRenderer.RenderingData(); data.setConfig(config); data.setEntityClass(entity.getSimpleName()); data.setEntityPackage(entity.getPackageName()); String code = CodeRenderer.render("mapper.ftl", data); - - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getServices().replaceAll("\\.", "/") + "/mapper/" + entity.getSimpleName() + "Mapper.java"; + String filepath = Paths.get(config.getProjectPath(), config.getOutputDirectory(), + config.getOutputPackages().getMappers().replaceAll("\\.", "/"), + entity.getSimpleName() + "Mapper.java").toString(); writeFile(code, filepath); @@ -103,15 +118,19 @@ public class CodeGenerator { private static void createDto(Class entity) throws IOException, TemplateException { + if(StringUtils.isBlank(config.getOutputPackages().getDtos())){ + config.getOutputPackages().setDtos(config.getOutputPackages().getControllers() + ".dto"); + } + CodeRenderer.RenderingData data = new CodeRenderer.RenderingData(); data.setConfig(config); data.setEntityClass(entity.getSimpleName()); data.setEntityFields(Arrays.asList(entity.getDeclaredFields())); String code = CodeRenderer.render("dto.ftl", data); - - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getControllers().replaceAll("\\.", "/") + "/dto/" + entity.getSimpleName() + "DTO.java"; + String filepath = Paths.get(config.getProjectPath(), config.getOutputDirectory(), + config.getOutputPackages().getDtos().replaceAll("\\.", "/"), + entity.getSimpleName() + "DTO.java").toString(); writeFile(code, filepath); @@ -126,8 +145,9 @@ public class CodeGenerator { data.setEntityPackage(entity.getPackageName()); String code = CodeRenderer.render("controller.ftl", data); - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getControllers().replaceAll("\\.", "/") + "/" + entity.getSimpleName() + "Controller.java"; + String filepath = Paths.get(config.getProjectPath(), config.getOutputDirectory(), + config.getOutputPackages().getControllers().replaceAll("\\.", "/"), + entity.getSimpleName() + "Controller.java").toString(); writeFile(code, filepath); @@ -143,8 +163,9 @@ public class CodeGenerator { String code = CodeRenderer.render("service.ftl", data); - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getServices().replaceAll("\\.", "/") + "/" + entity.getSimpleName() + "Service.java"; + String filepath = Paths.get(config.getProjectPath(), config.getOutputDirectory(), + config.getOutputPackages().getServices().replaceAll("\\.", "/"), + entity.getSimpleName() + "Service.java").toString(); writeFile(code, filepath); @@ -160,8 +181,9 @@ public class CodeGenerator { String code = CodeRenderer.render("serviceInterface.ftl", data); - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getServices().replaceAll("\\.", "/") + "/" + entity.getSimpleName() + "Service.java"; + String filepath = Paths.get(config.getProjectPath(), config.getOutputDirectory(), + config.getOutputPackages().getServices().replaceAll("\\.", "/"), + entity.getSimpleName() + "Service.java").toString(); writeFile(code, filepath); @@ -177,9 +199,9 @@ public class CodeGenerator { String code = CodeRenderer.render("serviceBean.ftl", data); - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getServices().replaceAll("\\.", "/") - + "/impl/" + entity.getSimpleName() + "ServiceBean.java"; + String filepath = Paths.get(config.getProjectPath(), config.getOutputDirectory(), + config.getOutputPackages().getServices().replaceAll("\\.", "/"), + "impl", entity.getSimpleName() + "ServiceBean.java").toString(); writeFile(code, filepath); @@ -191,13 +213,13 @@ public class CodeGenerator { data.setConfig(config); String code = CodeRenderer.render("crudservice.ftl", data); - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getServices().replaceAll("\\.", "/") + "/" + "CrudService.java"; + String filepath = Paths.get(config.getProjectPath() , config.getOutputDirectory(), + config.getOutputPackages().getServices().replaceAll("\\.", "/"), "CrudService.java").toString(); writeFile(code, filepath); code = CodeRenderer.render("crudcontroller.ftl", data); - filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getControllers().replaceAll("\\.", "/") + "/" + "CrudController.java"; + filepath = Paths.get(config.getProjectPath() , config.getOutputDirectory() , + config.getOutputPackages().getControllers().replaceAll("\\.", "/"), "CrudController.java").toString(); writeFile(code, filepath); } @@ -211,8 +233,9 @@ public class CodeGenerator { String code = CodeRenderer.render("repository.ftl", data); - String filepath = config.getProjectPath() + "/" + config.getOutputDirectory() + "/" + - config.getOutputPackages().getRepositories().replaceAll("\\.", "/") + "/" + entity.getSimpleName() + "Repository.java"; + String filepath = Paths.get(config.getProjectPath() , config.getOutputDirectory(), + config.getOutputPackages().getRepositories().replaceAll("\\.", "/"), + entity.getSimpleName() + "Repository.java").toString(); writeFile(code, filepath); diff --git a/src/main/java/gae/piaz/layer3gen/config/Options.java b/src/main/java/gae/piaz/layer3gen/config/Options.java index 8e68463..76b5738 100644 --- a/src/main/java/gae/piaz/layer3gen/config/Options.java +++ b/src/main/java/gae/piaz/layer3gen/config/Options.java @@ -6,4 +6,5 @@ import lombok.Data; public class Options { private Boolean dtoLayer; private Boolean serviceInterface; + private Boolean entityControllers; } diff --git a/src/main/java/gae/piaz/layer3gen/config/OutputPackages.java b/src/main/java/gae/piaz/layer3gen/config/OutputPackages.java index 0e0c1c3..7d1b4db 100644 --- a/src/main/java/gae/piaz/layer3gen/config/OutputPackages.java +++ b/src/main/java/gae/piaz/layer3gen/config/OutputPackages.java @@ -7,4 +7,6 @@ public class OutputPackages { private String repositories; private String services; private String controllers; + private String dtos; + private String mappers; } diff --git a/src/main/resources/controller.ftl b/src/main/resources/controller.ftl index 76ad0d5..16d6084 100644 --- a/src/main/resources/controller.ftl +++ b/src/main/resources/controller.ftl @@ -9,6 +9,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** * Generated by Springboot-3layer-Generator at ${dateGen?datetime} @@ -32,16 +33,15 @@ public class ${entityClass}Controller implements CrudController<${entityClass},$ @Override public ResponseEntity> read( - @RequestBody ${entityClass} entity, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - return ResponseEntity.ok(service.read(entity,pageable)); + return ResponseEntity.ok(service.read(pageable)); } @Override public ResponseEntity<${entityClass}> readOne(@PathVariable("id") ${primaryKeyClass} primaryKey) { - return ResponseEntity.ok(service.readOne(primaryKey)); + return service.readOne(primaryKey).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/src/main/resources/controllerdto.ftl b/src/main/resources/controllerdto.ftl index ee737ff..8a4d418 100644 --- a/src/main/resources/controllerdto.ftl +++ b/src/main/resources/controllerdto.ftl @@ -1,9 +1,9 @@ package ${config.outputPackages.controllers}; import ${entityPackage}.${entityClass}; -import ${config.outputPackages.controllers}.dto.${entityClass}DTO; +import ${config.outputPackages.dtos}.${entityClass}DTO; import ${config.outputPackages.services}.${entityClass}Service; -import ${config.outputPackages.services}.mapper.${entityClass}Mapper; +import ${config.outputPackages.mappers}.${entityClass}Mapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -11,6 +11,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Optional; /** * Generated by Springboot-3layer-Generator at ${dateGen?datetime} @@ -41,19 +42,17 @@ public class ${entityClass}ControllerDTO implements CrudController<${entityClass @Override public ResponseEntity> read( - @RequestBody ${entityClass}DTO dto, @RequestParam("page") Integer page, @RequestParam("size") Integer size) { Pageable pageable = PageRequest.of(page,size); - ${entityClass} entity = mapper.toEntity(dto); - Page<${entityClass}DTO> pages = service.read(entity, pageable).map(mapper::toDto); + Page<${entityClass}DTO> pages = service.read(pageable).map(mapper::toDto); return ResponseEntity.ok(pages); } @Override public ResponseEntity<${entityClass}DTO> readOne(@PathVariable("id") ${primaryKeyClass} primaryKey) { - ${entityClass} entity = service.readOne(primaryKey); - return ResponseEntity.ok(mapper.toDto(entity)); + Optional<${entityClass}> entity = service.readOne(primaryKey); + return entity.map(e -> ResponseEntity.ok(mapper.toDto(e))).orElseGet(() -> ResponseEntity.notFound().build()); } @Override diff --git a/src/main/resources/crudcontroller.ftl b/src/main/resources/crudcontroller.ftl index 45c9122..f85ac83 100644 --- a/src/main/resources/crudcontroller.ftl +++ b/src/main/resources/crudcontroller.ftl @@ -18,8 +18,9 @@ public interface CrudController{ @PutMapping ResponseEntity update(O object); - @PostMapping("find") - ResponseEntity> read(O object, Integer page, Integer size); + @GetMapping("list") + ResponseEntity> read(Integer page, Integer size); + @GetMapping("{id}") ResponseEntity readOne(P primaryKey); diff --git a/src/main/resources/crudservice.ftl b/src/main/resources/crudservice.ftl index 4593681..39c77f3 100644 --- a/src/main/resources/crudservice.ftl +++ b/src/main/resources/crudservice.ftl @@ -2,18 +2,20 @@ package ${config.outputPackages.services}; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import java.util.Optional; /** * Generated by Springboot-3layer-Generator at ${dateGen?datetime} */ -public interface CrudService { +public interface CrudService { E create(E entity); E update(E entity); - Page read(E entity, Pageable pageable); - E readOne(P primaryKey); + Page read(Pageable pageable); + + Optional readOne(P primaryKey); void delete(P primaryKey); diff --git a/src/main/resources/dto.ftl b/src/main/resources/dto.ftl index eb142e5..38f34d7 100644 --- a/src/main/resources/dto.ftl +++ b/src/main/resources/dto.ftl @@ -1,10 +1,7 @@ -package ${config.outputPackages.controllers}.dto; +package ${config.outputPackages.dtos}; import lombok.Data; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - /** * Generated by Springboot-3layer-Generator at ${dateGen?datetime} */ diff --git a/src/main/resources/mapper.ftl b/src/main/resources/mapper.ftl index 43a407f..3b1e1af 100644 --- a/src/main/resources/mapper.ftl +++ b/src/main/resources/mapper.ftl @@ -1,7 +1,7 @@ -package ${config.outputPackages.services}.mapper; +package ${config.outputPackages.mappers}; import ${entityPackage}.${entityClass}; -import ${config.outputPackages.controllers}.dto.${entityClass}DTO; +import ${config.outputPackages.dtos}.${entityClass}DTO; import org.mapstruct.Mapper; /** diff --git a/src/main/resources/service.ftl b/src/main/resources/service.ftl index 26472eb..1b15b9f 100644 --- a/src/main/resources/service.ftl +++ b/src/main/resources/service.ftl @@ -8,6 +8,7 @@ import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Optional; /** * Generated by Springboot-3layer-Generator at ${dateGen?datetime} @@ -29,14 +30,13 @@ public class ${entityClass}Service implements CrudService<${entityClass},${prima } @Override - public Page<${entityClass}> read(${entityClass} entity, Pageable pageable) { - Example<${entityClass}> example = Example.of(entity); - return repository.findAll(example,pageable); + public Page<${entityClass}> read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public ${entityClass} readOne(${primaryKeyClass} primaryKey) { - return repository.getOne(primaryKey); + public Optional<${entityClass}> readOne(${primaryKeyClass} primaryKey) { + return repository.findById(primaryKey); } @Override diff --git a/src/main/resources/serviceBean.ftl b/src/main/resources/serviceBean.ftl index a8d3418..a78cfda 100644 --- a/src/main/resources/serviceBean.ftl +++ b/src/main/resources/serviceBean.ftl @@ -9,6 +9,7 @@ import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Optional; /** * Generated by Springboot-3layer-Generator at ${dateGen?datetime} @@ -30,14 +31,13 @@ public class ${entityClass}ServiceBean implements ${entityClass}Service { } @Override - public Page<${entityClass}> read(${entityClass} entity, Pageable pageable) { - Example<${entityClass}> example = Example.of(entity); - return repository.findAll(example,pageable); + public Page<${entityClass}> read(Pageable pageable) { + return repository.findAll(pageable); } @Override - public ${entityClass} readOne(${primaryKeyClass} primaryKey) { - return repository.getOne(primaryKey); + public Optional<${entityClass}> readOne(${primaryKeyClass} primaryKey) { + return repository.findById(primaryKey); } @Override diff --git a/src/test/resources/3layer-settings-jakarta.yml b/src/test/resources/3layer-settings-jakarta.yml index 98b4a03..6b9fb4c 100644 --- a/src/test/resources/3layer-settings-jakarta.yml +++ b/src/test/resources/3layer-settings-jakarta.yml @@ -1,9 +1,10 @@ -projectPath: /Users/Gaetano_Piazzolla/Workspaces/workspace_private/Layer3Gen/demo-jakarta +projectPath: demo-jakarta classesDirectory: build/classes/java/main outputDirectory : src/main/java options: dtoLayer: true serviceInterface: true + entityControllers: true inputPackages: jpaEntities: com.example.demo.model diff --git a/src/test/resources/3layer-settings.yml b/src/test/resources/3layer-settings.yml index e555939..6a3bf86 100644 --- a/src/test/resources/3layer-settings.yml +++ b/src/test/resources/3layer-settings.yml @@ -1,9 +1,10 @@ -projectPath: /Users/Gaetano_Piazzolla/Workspaces/workspace_private/Layer3Gen/demo +projectPath: demo classesDirectory: build/classes/java/main outputDirectory : src/main/java options: dtoLayer : true serviceInterface: true + entityControllers: true inputPackages: jpaEntities : com.example.demo.model