diff --git a/2019-11/spring-16/spring-mvc-view-classwork/.gitignore b/2019-11/spring-16/spring-mvc-view-classwork/.gitignore new file mode 100644 index 00000000..4ea52072 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/.gitignore @@ -0,0 +1,24 @@ +target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ diff --git a/2019-11/spring-16/spring-mvc-view-classwork/pom.xml b/2019-11/spring-16/spring-mvc-view-classwork/pom.xml new file mode 100644 index 00000000..9aba7ff8 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + ru.otus + spring-mvc-view-class-work + 1.0 + + pom + + + spring-mvc-view-exercise + spring-mvc-view-solution + + diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/.gitignore b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/.gitignore new file mode 100644 index 00000000..4ea52072 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/.gitignore @@ -0,0 +1,24 @@ +target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/pom.xml b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/pom.xml new file mode 100644 index 00000000..6104d11b --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + ru.otus + spring-mvc-view-exercise + 1.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.4.RELEASE + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + com.h2database + h2 + + + + org.springframework.data + spring-data-jpa + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/Main.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..d33c8908 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/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-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/domain/Person.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..374c55ac --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/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-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/repostory/PersonRepository.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/repostory/PersonRepository.java new file mode 100644 index 00000000..4b20e5b7 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/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-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/rest/NotFoundException.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/rest/NotFoundException.java new file mode 100644 index 00000000..463146f3 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/rest/NotFoundException.java @@ -0,0 +1,7 @@ +package ru.otus.spring.rest; + +class NotFoundException extends RuntimeException{ + + NotFoundException() { + } +} diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/rest/PersonController.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/rest/PersonController.java new file mode 100644 index 00000000..36d1ad2e --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/java/ru/otus/spring/rest/PersonController.java @@ -0,0 +1,37 @@ +package ru.otus.spring.rest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import ru.otus.spring.domain.Person; +import ru.otus.spring.repostory.PersonRepository; + +import java.util.List; +import java.util.stream.Collectors; + +@Controller +public class PersonController { + + private final PersonRepository repository; + + @Autowired + public PersonController(PersonRepository repository) { + this.repository = repository; + } + + @GetMapping("/") + public String listPage(Model model) { + List persons = repository.findAll(); + model.addAttribute("persons", persons); + return "list"; + } + + @GetMapping("/edit") + public String editPage(@RequestParam("id") int id, Model model) { + Person person = repository.findById(id).orElseThrow(NotFoundException::new); + model.addAttribute("person", person); + return "edit"; + } +} diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/resources/templates/edit.html b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/resources/templates/edit.html new file mode 100644 index 00000000..37113607 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/resources/templates/edit.html @@ -0,0 +1,47 @@ + + + + + Edit person + + + + + +
+

Person Info:

+ +
+ + 1 +
+ +
+ + John Doe +
+ +
+ +
+
+ + + diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/resources/templates/list.html b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/resources/templates/list.html new file mode 100644 index 00000000..728467e5 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-exercise/src/main/resources/templates/list.html @@ -0,0 +1,39 @@ + + + + + List of all persons + + + +

Persons:

+ + + + + + + + + + + + + + + + +
IDNameAction
1John Doe + Edit +
+ + diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/.gitignore b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/.gitignore new file mode 100644 index 00000000..4ea52072 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/.gitignore @@ -0,0 +1,24 @@ +target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/pom.xml b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/pom.xml new file mode 100644 index 00000000..6543ebfe --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + ru.otus + spring-mvc-view-solution + 1.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.4.RELEASE + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + com.h2database + h2 + + + + org.springframework.data + spring-data-jpa + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/Main.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..d33c8908 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/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-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/domain/Person.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..374c55ac --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/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-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/repostory/PersonRepository.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/repostory/PersonRepository.java new file mode 100644 index 00000000..4b20e5b7 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/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-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/rest/NotFoundException.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/rest/NotFoundException.java new file mode 100644 index 00000000..463146f3 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/rest/NotFoundException.java @@ -0,0 +1,7 @@ +package ru.otus.spring.rest; + +class NotFoundException extends RuntimeException{ + + NotFoundException() { + } +} diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/rest/PersonController.java b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/rest/PersonController.java new file mode 100644 index 00000000..36d1ad2e --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/java/ru/otus/spring/rest/PersonController.java @@ -0,0 +1,37 @@ +package ru.otus.spring.rest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import ru.otus.spring.domain.Person; +import ru.otus.spring.repostory.PersonRepository; + +import java.util.List; +import java.util.stream.Collectors; + +@Controller +public class PersonController { + + private final PersonRepository repository; + + @Autowired + public PersonController(PersonRepository repository) { + this.repository = repository; + } + + @GetMapping("/") + public String listPage(Model model) { + List persons = repository.findAll(); + model.addAttribute("persons", persons); + return "list"; + } + + @GetMapping("/edit") + public String editPage(@RequestParam("id") int id, Model model) { + Person person = repository.findById(id).orElseThrow(NotFoundException::new); + model.addAttribute("person", person); + return "edit"; + } +} diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/resources/templates/edit.html b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/resources/templates/edit.html new file mode 100644 index 00000000..230da682 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/resources/templates/edit.html @@ -0,0 +1,47 @@ + + + + + Edit person + + + + + +
+

Person Info:

+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ + + diff --git a/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/resources/templates/list.html b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/resources/templates/list.html new file mode 100644 index 00000000..c1ccf866 --- /dev/null +++ b/2019-11/spring-16/spring-mvc-view-classwork/spring-mvc-view-solution/src/main/resources/templates/list.html @@ -0,0 +1,39 @@ + + + + + List of all persons + + + +

Persons:

+ + + + + + + + + + + + + + + + +
IDNameAction
1John Doe + Edit +
+ +