From 14c021083133f40415e6d3aec4eb690784563640 Mon Sep 17 00:00:00 2001 From: DiK Date: Tue, 15 Oct 2019 20:02:19 +0200 Subject: [PATCH] spring-12, spring-12-mongo --- 2019-08/spring-12-mongo/pom.xml | 17 +++++++ .../spring-12-mongo-execise/.gitignore | 4 ++ .../spring-12-mongo-execise/pom.xml | 40 ++++++++++++++++ .../src/main/java/ru/otus/spring12/Main.java | 31 +++++++++++++ .../java/ru/otus/spring12/domain/Person.java | 30 ++++++++++++ .../spring12/repostory/PersonRepository.java | 12 +++++ .../src/main/resources/application.yml | 4 ++ .../spring-12-mongo-solution/.gitignore | 4 ++ .../spring-12-mongo-solution/pom.xml | 46 +++++++++++++++++++ .../src/main/java/ru/otus/spring12/Main.java | 32 +++++++++++++ .../ru/otus/spring12/bee/MongoBeeConfig.java | 25 ++++++++++ .../bee/changelog/DatabaseChangelog.java | 18 ++++++++ .../java/ru/otus/spring12/domain/Person.java | 32 +++++++++++++ .../spring12/repostory/PersonRepository.java | 12 +++++ .../src/main/resources/application.yml | 4 ++ 2019-08/spring-12/pom.xml | 17 +++++++ .../spring-12/spring-12-exercise/.gitignore | 4 ++ 2019-08/spring-12/spring-12-exercise/pom.xml | 37 +++++++++++++++ .../src/main/java/ru/otus/spring12/Main.java | 29 ++++++++++++ .../java/ru/otus/spring12/domain/Email.java | 20 ++++++++ .../java/ru/otus/spring12/domain/Person.java | 30 ++++++++++++ .../spring12/repostory/PersonRepository.java | 11 +++++ .../spring-12/spring-12-solution/.gitignore | 4 ++ 2019-08/spring-12/spring-12-solution/pom.xml | 37 +++++++++++++++ .../src/main/java/ru/otus/spring12/Main.java | 37 +++++++++++++++ .../java/ru/otus/spring12/domain/Email.java | 32 +++++++++++++ .../java/ru/otus/spring12/domain/Person.java | 40 ++++++++++++++++ .../spring12/repostory/EmailRepository.java | 14 ++++++ .../repostory/EmailRepositoryImpl.java | 27 +++++++++++ .../spring12/repostory/PersonRepository.java | 12 +++++ 30 files changed, 662 insertions(+) create mode 100644 2019-08/spring-12-mongo/pom.xml create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-execise/.gitignore create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-execise/pom.xml create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/Main.java create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/domain/Person.java create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/repostory/PersonRepository.java create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/resources/application.yml create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-solution/.gitignore create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-solution/pom.xml create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/Main.java create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/bee/MongoBeeConfig.java create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/bee/changelog/DatabaseChangelog.java create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/domain/Person.java create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/repostory/PersonRepository.java create mode 100644 2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/resources/application.yml create mode 100644 2019-08/spring-12/pom.xml create mode 100644 2019-08/spring-12/spring-12-exercise/.gitignore create mode 100644 2019-08/spring-12/spring-12-exercise/pom.xml create mode 100644 2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/Main.java create mode 100644 2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/domain/Email.java create mode 100644 2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/domain/Person.java create mode 100644 2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/repostory/PersonRepository.java create mode 100644 2019-08/spring-12/spring-12-solution/.gitignore create mode 100644 2019-08/spring-12/spring-12-solution/pom.xml create mode 100644 2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/Main.java create mode 100644 2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/domain/Email.java create mode 100644 2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/domain/Person.java create mode 100644 2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/EmailRepository.java create mode 100644 2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/EmailRepositoryImpl.java create mode 100644 2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/PersonRepository.java diff --git a/2019-08/spring-12-mongo/pom.xml b/2019-08/spring-12-mongo/pom.xml new file mode 100644 index 00000000..77f5b427 --- /dev/null +++ b/2019-08/spring-12-mongo/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + ru.otus + spring-12-mongo + 1.0 + + pom + + + spring-12-mongo-exercise + spring-12-mongo-solution + + diff --git a/2019-08/spring-12-mongo/spring-12-mongo-execise/.gitignore b/2019-08/spring-12-mongo/spring-12-mongo-execise/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-execise/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2019-08/spring-12-mongo/spring-12-mongo-execise/pom.xml b/2019-08/spring-12-mongo/spring-12-mongo-execise/pom.xml new file mode 100644 index 00000000..e11b2a1c --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-execise/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + ru.otus + spring-framework-12-mongo + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.0.3.RELEASE + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/Main.java b/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/Main.java new file mode 100644 index 00000000..ad8dc771 --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/Main.java @@ -0,0 +1,31 @@ +package ru.otus.spring12; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; +import ru.otus.spring12.domain.Person; +import ru.otus.spring12.repostory.PersonRepository; + +import javax.annotation.PostConstruct; + +@SpringBootApplication +public class Main { + + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") + @Autowired + private PersonRepository repository; + + public static void main(String[] args) throws InterruptedException { + ApplicationContext context = SpringApplication.run(Main.class); + + PersonRepository repository = context.getBean(PersonRepository.class); + + repository.save(new Person("Pushkin")); + + Thread.sleep(3000); + + repository.findAll().forEach(p -> System.out.println(p.getName())); + } +} diff --git a/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/domain/Person.java b/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/domain/Person.java new file mode 100644 index 00000000..5f630969 --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/domain/Person.java @@ -0,0 +1,30 @@ +package ru.otus.spring12.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +public class Person { + + private String id; + private String name; + + public Person(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/repostory/PersonRepository.java b/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/repostory/PersonRepository.java new file mode 100644 index 00000000..f8ab66a5 --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/java/ru/otus/spring12/repostory/PersonRepository.java @@ -0,0 +1,12 @@ +package ru.otus.spring12.repostory; + +import org.springframework.data.repository.CrudRepository; +import ru.otus.spring12.domain.Person; + +import java.util.List; + + +public interface PersonRepository extends CrudRepository { + + List findAll(); +} diff --git a/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/resources/application.yml b/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/resources/application.yml new file mode 100644 index 00000000..9bffd5dc --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-execise/src/main/resources/application.yml @@ -0,0 +1,4 @@ +spring: + data: + mongodb: + database: company diff --git a/2019-08/spring-12-mongo/spring-12-mongo-solution/.gitignore b/2019-08/spring-12-mongo/spring-12-mongo-solution/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-solution/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2019-08/spring-12-mongo/spring-12-mongo-solution/pom.xml b/2019-08/spring-12-mongo/spring-12-mongo-solution/pom.xml new file mode 100644 index 00000000..195befbe --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-solution/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + ru.otus + spring-framework-12-mongo + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.0.3.RELEASE + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + + + + com.github.mongobee + mongobee + 0.13 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/Main.java b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/Main.java new file mode 100644 index 00000000..ed44511c --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/Main.java @@ -0,0 +1,32 @@ +package ru.otus.spring12; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; +import ru.otus.spring12.domain.Person; +import ru.otus.spring12.repostory.PersonRepository; + +import javax.annotation.PostConstruct; + +@EnableMongoRepositories +@SpringBootApplication +public class Main { + + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") + @Autowired + private PersonRepository repository; + + public static void main(String[] args) throws InterruptedException { + ApplicationContext context = SpringApplication.run(Main.class); + + PersonRepository repository = context.getBean(PersonRepository.class); + + repository.save(new Person("Pushkin")); + + Thread.sleep(3000); + + repository.findAll().forEach(p -> System.out.println(p.getName())); + } +} diff --git a/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/bee/MongoBeeConfig.java b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/bee/MongoBeeConfig.java new file mode 100644 index 00000000..1f2aad84 --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/bee/MongoBeeConfig.java @@ -0,0 +1,25 @@ +package ru.otus.spring12.bee; + +import com.github.mongobee.Mongobee; +import com.mongodb.MongoClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import ru.otus.spring12.bee.changelog.DatabaseChangelog; + +@Configuration +public class MongoBeeConfig { + + @Autowired + private MongoClient mongo; + + @Bean + public Mongobee mongobee(Environment environment) { + Mongobee runner = new Mongobee(mongo); + runner.setDbName("company"); + runner.setChangeLogsScanPackage(DatabaseChangelog.class.getPackage().getName()); + runner.setSpringEnvironment(environment); + return runner; + } +} diff --git a/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/bee/changelog/DatabaseChangelog.java b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/bee/changelog/DatabaseChangelog.java new file mode 100644 index 00000000..be037ac2 --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/bee/changelog/DatabaseChangelog.java @@ -0,0 +1,18 @@ +package ru.otus.spring12.bee.changelog; + +import com.github.mongobee.changeset.ChangeLog; +import com.github.mongobee.changeset.ChangeSet; +import com.mongodb.BasicDBObject; +import com.mongodb.DB; +import com.mongodb.DBCollection; + +@ChangeLog +public class DatabaseChangelog { + + @ChangeSet(order = "001", id = "addLermontov", author = "ydvorzhetskiy") + public void insertLermontov(DB db) { + DBCollection myCollection = db.getCollection("persons"); + BasicDBObject doc = new BasicDBObject().append("name", "Lermontov"); + myCollection.insert(doc); + } +} diff --git a/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/domain/Person.java b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/domain/Person.java new file mode 100644 index 00000000..d747960d --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/domain/Person.java @@ -0,0 +1,32 @@ +package ru.otus.spring12.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +@Document(collection = "persons") +public class Person { + + @Id + private String id; + private String name; + + public Person(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/repostory/PersonRepository.java b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/repostory/PersonRepository.java new file mode 100644 index 00000000..f8ab66a5 --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/java/ru/otus/spring12/repostory/PersonRepository.java @@ -0,0 +1,12 @@ +package ru.otus.spring12.repostory; + +import org.springframework.data.repository.CrudRepository; +import ru.otus.spring12.domain.Person; + +import java.util.List; + + +public interface PersonRepository extends CrudRepository { + + List findAll(); +} diff --git a/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/resources/application.yml b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/resources/application.yml new file mode 100644 index 00000000..9bffd5dc --- /dev/null +++ b/2019-08/spring-12-mongo/spring-12-mongo-solution/src/main/resources/application.yml @@ -0,0 +1,4 @@ +spring: + data: + mongodb: + database: company diff --git a/2019-08/spring-12/pom.xml b/2019-08/spring-12/pom.xml new file mode 100644 index 00000000..621aa6fd --- /dev/null +++ b/2019-08/spring-12/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + ru.otus + spring-12 + 1.0 + + pom + + + spring-12-exercise + spring-12-solution + + diff --git a/2019-08/spring-12/spring-12-exercise/.gitignore b/2019-08/spring-12/spring-12-exercise/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2019-08/spring-12/spring-12-exercise/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2019-08/spring-12/spring-12-exercise/pom.xml b/2019-08/spring-12/spring-12-exercise/pom.xml new file mode 100644 index 00000000..e5d5bad3 --- /dev/null +++ b/2019-08/spring-12/spring-12-exercise/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + ru.otus + spring-framework-12 + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.0.3.RELEASE + + + + + org.springframework.boot + spring-boot-starter + + + + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/Main.java b/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/Main.java new file mode 100644 index 00000000..9d3670f0 --- /dev/null +++ b/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/Main.java @@ -0,0 +1,29 @@ +package ru.otus.spring12; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.map.repository.config.EnableMapRepositories; +import ru.otus.spring12.domain.Person; +import ru.otus.spring12.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.findAll(); + } +} diff --git a/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/domain/Email.java b/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/domain/Email.java new file mode 100644 index 00000000..63d35265 --- /dev/null +++ b/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/domain/Email.java @@ -0,0 +1,20 @@ +package ru.otus.spring12.domain; + +public class Email { + + private int id; + + private String email; + + public Email(String email) { + this.email = email; + } + + public int getId() { + return id; + } + + public String getEmail() { + return email; + } +} diff --git a/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/domain/Person.java b/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/domain/Person.java new file mode 100644 index 00000000..100a65bc --- /dev/null +++ b/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/domain/Person.java @@ -0,0 +1,30 @@ +package ru.otus.spring12.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.keyvalue.annotation.KeySpace; + +public class Person { + + private int id; + private String name; + + 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-12/spring-12-exercise/src/main/java/ru/otus/spring12/repostory/PersonRepository.java b/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/repostory/PersonRepository.java new file mode 100644 index 00000000..aaecb2e7 --- /dev/null +++ b/2019-08/spring-12/spring-12-exercise/src/main/java/ru/otus/spring12/repostory/PersonRepository.java @@ -0,0 +1,11 @@ +package ru.otus.spring12.repostory; + +import org.springframework.data.repository.CrudRepository; +import ru.otus.spring12.domain.Person; + +import java.util.List; + +public interface PersonRepository extends CrudRepository { + + List findAll(); +} diff --git a/2019-08/spring-12/spring-12-solution/.gitignore b/2019-08/spring-12/spring-12-solution/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2019-08/spring-12/spring-12-solution/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2019-08/spring-12/spring-12-solution/pom.xml b/2019-08/spring-12/spring-12-solution/pom.xml new file mode 100644 index 00000000..60e0917d --- /dev/null +++ b/2019-08/spring-12/spring-12-solution/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + ru.otus + spring-framework-12 + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.0.3.RELEASE + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.data + spring-data-keyvalue + 2.0.9.RELEASE + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/Main.java b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/Main.java new file mode 100644 index 00000000..a21fd965 --- /dev/null +++ b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/Main.java @@ -0,0 +1,37 @@ +package ru.otus.spring12; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.map.repository.config.EnableMapRepositories; +import ru.otus.spring12.domain.Email; +import ru.otus.spring12.domain.Person; +import ru.otus.spring12.repostory.EmailRepository; +import ru.otus.spring12.repostory.PersonRepository; + +import javax.annotation.PostConstruct; + +@SpringBootApplication +@EnableMapRepositories +public class Main { + + public static void main(String[] args) { + SpringApplication.run(Main.class); + } + + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") + @Autowired + private PersonRepository repository; + + @Autowired + private EmailRepository emailRepository; + + @PostConstruct + public void init() { + repository.save(new Person("Pushkin")); + System.out.println(repository.findAll()); + + emailRepository.save(new Email("alex@pushkin.com")); + System.out.println(emailRepository.findAll()); + } +} diff --git a/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/domain/Email.java b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/domain/Email.java new file mode 100644 index 00000000..182d1e27 --- /dev/null +++ b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/domain/Email.java @@ -0,0 +1,32 @@ +package ru.otus.spring12.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.keyvalue.annotation.KeySpace; + +@KeySpace("email") +public class Email { + @Id + private int id; + + private String email; + + public Email(String email) { + this.email = email; + } + + public int getId() { + return id; + } + + public String getEmail() { + return email; + } + + @Override + public String toString() { + return "Email{" + + "id=" + id + + ", email='" + email + '\'' + + '}'; + } +} diff --git a/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/domain/Person.java b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/domain/Person.java new file mode 100644 index 00000000..7e7134b9 --- /dev/null +++ b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/domain/Person.java @@ -0,0 +1,40 @@ +package ru.otus.spring12.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.keyvalue.annotation.KeySpace; + +@KeySpace("person") +public class Person { + + @Id + private int id; + private String name; + + 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; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/EmailRepository.java b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/EmailRepository.java new file mode 100644 index 00000000..7ecc22f5 --- /dev/null +++ b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/EmailRepository.java @@ -0,0 +1,14 @@ +package ru.otus.spring12.repostory; + +import org.springframework.data.keyvalue.repository.KeyValueRepository; +import org.springframework.stereotype.Repository; +import ru.otus.spring12.domain.Email; +import ru.otus.spring12.domain.Person; + +import java.util.List; + +public interface EmailRepository { + + List findAll(); + Email save(Email email); +} diff --git a/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/EmailRepositoryImpl.java b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/EmailRepositoryImpl.java new file mode 100644 index 00000000..535c7c1b --- /dev/null +++ b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/EmailRepositoryImpl.java @@ -0,0 +1,27 @@ +package ru.otus.spring12.repostory; + +import org.springframework.data.keyvalue.core.KeyValueOperations; +import org.springframework.stereotype.Repository; +import ru.otus.spring12.domain.Email; + +import java.util.List; + +@Repository +public class EmailRepositoryImpl implements EmailRepository { + + final private KeyValueOperations keyValueTemplate; + + public EmailRepositoryImpl(KeyValueOperations keyValueTemplate) { + this.keyValueTemplate = keyValueTemplate; + } + + @Override + public List findAll() { + return (List) keyValueTemplate.findAll(Email.class); + } + + @Override + public Email save(Email email) { + return keyValueTemplate.insert(email); + } +} diff --git a/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/PersonRepository.java b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/PersonRepository.java new file mode 100644 index 00000000..1e3c1ba2 --- /dev/null +++ b/2019-08/spring-12/spring-12-solution/src/main/java/ru/otus/spring12/repostory/PersonRepository.java @@ -0,0 +1,12 @@ +package ru.otus.spring12.repostory; + +import org.springframework.data.keyvalue.repository.KeyValueRepository; +import org.springframework.data.repository.CrudRepository; +import ru.otus.spring12.domain.Person; + +import java.util.List; + +public interface PersonRepository extends KeyValueRepository { + + List findAll(); +}