From 4e293904fd40bb7e9793af102c383ca29b9ed005 Mon Sep 17 00:00:00 2001 From: Yuriy Dvorzhetskiy Date: Sat, 19 Oct 2019 12:45:05 +0600 Subject: [PATCH] Spring-2019-08 - 15 --- 2019-08/spring-15/spring-15-jquery/.gitignore | 4 ++ 2019-08/spring-15/spring-15-jquery/pom.xml | 55 +++++++++++++++++++ .../src/main/java/ru/otus/spring/Main.java | 27 +++++++++ .../java/ru/otus/spring/domain/Person.java | 37 +++++++++++++ .../spring/page/PersonPagesController.java | 15 +++++ .../spring/repostory/PersonRepository.java | 11 ++++ .../ru/otus/spring/rest/PersonController.java | 30 ++++++++++ .../ru/otus/spring/rest/dto/PersonDto.java | 50 +++++++++++++++++ .../src/main/resources/templates/list.html | 47 ++++++++++++++++ 9 files changed, 276 insertions(+) create mode 100644 2019-08/spring-15/spring-15-jquery/.gitignore create mode 100644 2019-08/spring-15/spring-15-jquery/pom.xml create mode 100644 2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/Main.java create mode 100644 2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/domain/Person.java create mode 100644 2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/page/PersonPagesController.java create mode 100644 2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/repostory/PersonRepository.java create mode 100644 2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/rest/PersonController.java create mode 100644 2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/rest/dto/PersonDto.java create mode 100644 2019-08/spring-15/spring-15-jquery/src/main/resources/templates/list.html diff --git a/2019-08/spring-15/spring-15-jquery/.gitignore b/2019-08/spring-15/spring-15-jquery/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2019-08/spring-15/spring-15-jquery/pom.xml b/2019-08/spring-15/spring-15-jquery/pom.xml new file mode 100644 index 00000000..5e48edad --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + ru.otus + spring-15-jquery + 1.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.1.2.RELEASE + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.webjars + jquery + 3.3.1 + + + + + com.h2database + h2 + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/Main.java b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..d33c8908 --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/Main.java @@ -0,0 +1,27 @@ +package ru.otus.spring; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import ru.otus.spring.domain.Person; +import ru.otus.spring.repostory.PersonRepository; + +import javax.annotation.PostConstruct; + +@SpringBootApplication +public class Main { + + public static void main(String[] args) { + SpringApplication.run(Main.class); + } + + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") + @Autowired + private PersonRepository repository; + + @PostConstruct + public void init() { + repository.save(new Person("Pushkin")); + repository.save(new Person("Lermontov")); + } +} diff --git a/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/domain/Person.java b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..374c55ac --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/domain/Person.java @@ -0,0 +1,37 @@ +package ru.otus.spring.domain; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +public class Person { + + @Id + @GeneratedValue + private int id; + private String name; + + public Person() { + } + + public Person(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/page/PersonPagesController.java b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/page/PersonPagesController.java new file mode 100644 index 00000000..0f3a2e76 --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/page/PersonPagesController.java @@ -0,0 +1,15 @@ +package ru.otus.spring.page; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class PersonPagesController { + + @GetMapping("/") + public String listPage(Model model) { + model.addAttribute("keywords", "list users in Omsk, omsk, list users, list users free"); + return "list"; + } +} diff --git a/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/repostory/PersonRepository.java b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/repostory/PersonRepository.java new file mode 100644 index 00000000..4b20e5b7 --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/repostory/PersonRepository.java @@ -0,0 +1,11 @@ +package ru.otus.spring.repostory; + +import org.springframework.data.repository.CrudRepository; +import ru.otus.spring.domain.Person; + +import java.util.List; + +public interface PersonRepository extends CrudRepository { + + List findAll(); +} diff --git a/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/rest/PersonController.java b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/rest/PersonController.java new file mode 100644 index 00000000..8073a615 --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/rest/PersonController.java @@ -0,0 +1,30 @@ +package ru.otus.spring.rest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import ru.otus.spring.domain.Person; +import ru.otus.spring.repostory.PersonRepository; +import ru.otus.spring.rest.dto.PersonDto; + +import java.util.List; +import java.util.stream.Collectors; + +@RestController +public class PersonController { + + private final PersonRepository repository; + + @Autowired + public PersonController(PersonRepository repository) { + this.repository = repository; + } + + @GetMapping("/api/persons") + public List getAllPersons() { + return repository.findAll().stream().map(PersonDto::toDto) + .collect(Collectors.toList()); + } +} diff --git a/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/rest/dto/PersonDto.java b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/rest/dto/PersonDto.java new file mode 100644 index 00000000..03918447 --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/src/main/java/ru/otus/spring/rest/dto/PersonDto.java @@ -0,0 +1,50 @@ +/* + * Copyright 2016 Russian Post + * + * This source code is Russian Post Confidential Proprietary. + * This software is protected by copyright. All rights and titles are reserved. + * You shall not use, copy, distribute, modify, decompile, disassemble or reverse engineer the software. + * Otherwise this violation would be treated by law and would be subject to legal prosecution. + * Legal use of the software provides receipt of a license from the right name only. + */ +package ru.otus.spring.rest.dto; + +import ru.otus.spring.domain.Person; + +/** + * DTO that represents Account + */ +@SuppressWarnings("all") +public class PersonDto { + + private int id = -1; + private String name; + + public PersonDto() { + } + + public PersonDto(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public static PersonDto toDto(Person person) { + return new PersonDto(person.getId(), person.getName()); + } +} diff --git a/2019-08/spring-15/spring-15-jquery/src/main/resources/templates/list.html b/2019-08/spring-15/spring-15-jquery/src/main/resources/templates/list.html new file mode 100644 index 00000000..1ccf1497 --- /dev/null +++ b/2019-08/spring-15/spring-15-jquery/src/main/resources/templates/list.html @@ -0,0 +1,47 @@ + + + + + + List of all persons + + + + +

Persons:

+ + + + + + + + + + +
IDName
+ + +