diff --git a/pom.xml b/pom.xml index 963f019..5ca40dd 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,10 @@ spring-boot-starter-test test + + com.vaadin.external.google + android-json + org.junit.vintage junit-vintage-engine @@ -59,6 +63,13 @@ telegrambotsextensions 4.6 + + + + org.json + json + 20170516 + diff --git a/src/main/java/ru/javacourse/sourcecodebot/config/TelegramConfig.java b/src/main/java/ru/javacourse/sourcecodebot/config/TelegramConfig.java index fe87bde..04d73e1 100644 --- a/src/main/java/ru/javacourse/sourcecodebot/config/TelegramConfig.java +++ b/src/main/java/ru/javacourse/sourcecodebot/config/TelegramConfig.java @@ -9,6 +9,7 @@ import ru.javacourse.sourcecodebot.telegram.ServiceBot; import ru.javacourse.sourcecodebot.telegram.handlers.HelpHandler; import ru.javacourse.sourcecodebot.telegram.handlers.InterviewHandler; +import ru.javacourse.sourcecodebot.telegram.handlers.LessonHandler; import javax.annotation.PostConstruct; import java.util.HashMap; @@ -37,6 +38,8 @@ public ServiceBot createCommonBot() { Map handlers = new HashMap<>(); handlers.put("/help", helpHandler()); handlers.put("/java/interview/random", interviewHandler()); + handlers.put("/java/lesson/", lessonHandler()); + return new ServiceBot(handlers); } @@ -50,5 +53,10 @@ public HelpHandler helpHandler() { public InterviewHandler interviewHandler() { return new InterviewHandler(); } + + @Bean + public LessonHandler lessonHandler() { + return new LessonHandler(); + } } diff --git a/src/main/java/ru/javacourse/sourcecodebot/model/Lesson.java b/src/main/java/ru/javacourse/sourcecodebot/model/Lesson.java index 4e667c5..3831d18 100644 --- a/src/main/java/ru/javacourse/sourcecodebot/model/Lesson.java +++ b/src/main/java/ru/javacourse/sourcecodebot/model/Lesson.java @@ -18,11 +18,15 @@ public class Lesson { @Column(name = "chapter") private String chapter; + @Column(name = "chapter_id") + private String chapterId; + @OneToMany(mappedBy = "lesson") @LazyCollection(LazyCollectionOption.FALSE) private List lessonTasks; @OneToOne + @JoinColumn(name="resource_id") private Resource resources; public Integer getLessonId() { @@ -41,11 +45,23 @@ public void setChapter(String chapter) { this.chapter = chapter; } + public String getChapter_id() { return chapterId; } + + public Resource getResources() { + return resources; + } + + public void setResources(Resource resources) { + this.resources = resources; + } + + public void setChapter_id(String chapter_id) { this.chapterId = chapter_id; } @Override public String toString() { return "Lesson{" + "lessonId=" + lessonId + ", chapter='" + chapter + '\'' + + ", chapter_id='" + chapterId + '}'; } diff --git a/src/main/java/ru/javacourse/sourcecodebot/model/LessonTask.java b/src/main/java/ru/javacourse/sourcecodebot/model/LessonTask.java index fc6589c..331ff1e 100644 --- a/src/main/java/ru/javacourse/sourcecodebot/model/LessonTask.java +++ b/src/main/java/ru/javacourse/sourcecodebot/model/LessonTask.java @@ -11,7 +11,6 @@ public class LessonTask { @Column(name = "lt_id") private Integer ltId; - @ManyToOne @JoinColumn(name = "lesson_id") private Lesson lesson; @@ -19,9 +18,16 @@ public class LessonTask { @Column(name = "title") private String title; + @Column(name = "link") + private String link; + @Column(name = "description") private String description; + public String getLink() { return link; } + + public void setLink(String link) { this.link = link; } + public Integer getLtId() { return ltId; } diff --git a/src/main/java/ru/javacourse/sourcecodebot/repository/LessonRepository.java b/src/main/java/ru/javacourse/sourcecodebot/repository/LessonRepository.java index 180eac1..09669c7 100644 --- a/src/main/java/ru/javacourse/sourcecodebot/repository/LessonRepository.java +++ b/src/main/java/ru/javacourse/sourcecodebot/repository/LessonRepository.java @@ -4,4 +4,7 @@ import ru.javacourse.sourcecodebot.model.Lesson; public interface LessonRepository extends JpaRepository { + + public Lesson findLessonByChapterId(String chapterId); + } diff --git a/src/main/java/ru/javacourse/sourcecodebot/telegram/handlers/InterviewHandler.java b/src/main/java/ru/javacourse/sourcecodebot/telegram/handlers/InterviewHandler.java index c2ded6f..ebb3eee 100644 --- a/src/main/java/ru/javacourse/sourcecodebot/telegram/handlers/InterviewHandler.java +++ b/src/main/java/ru/javacourse/sourcecodebot/telegram/handlers/InterviewHandler.java @@ -24,7 +24,6 @@ public SendMessage handle(Update update) { msg.setChatId(update.getMessage().getChatId()); msg.setText(question.getTitle()); - return msg; } } diff --git a/src/main/java/ru/javacourse/sourcecodebot/telegram/handlers/LessonHandler.java b/src/main/java/ru/javacourse/sourcecodebot/telegram/handlers/LessonHandler.java new file mode 100644 index 0000000..55e9068 --- /dev/null +++ b/src/main/java/ru/javacourse/sourcecodebot/telegram/handlers/LessonHandler.java @@ -0,0 +1,32 @@ +package ru.javacourse.sourcecodebot.telegram.handlers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Update; +import ru.javacourse.sourcecodebot.model.Lesson; +import ru.javacourse.sourcecodebot.model.Resource; +import ru.javacourse.sourcecodebot.repository.LessonRepository; +import ru.javacourse.sourcecodebot.telegram.MessageHandler; + +public class LessonHandler implements MessageHandler { + + @Autowired + private LessonRepository repository; + + @Override + public SendMessage handle(Update update) { + Lesson lesson = repository.findLessonByChapterId("2.1"); + Resource resource = lesson.getResources(); + + SendMessage msg = new SendMessage(); + msg.enableMarkdown(true); + msg.setChatId(update.getMessage().getChatId()); + + if (resource != null) { + msg.setText(resource.getLink()); + } else { + msg.setText("123"); + } + return msg; + } +} diff --git a/src/test/java/ru/javacourse/sourcecodebot/repository/LessonRepositoryTest.java b/src/test/java/ru/javacourse/sourcecodebot/repository/LessonRepositoryTest.java index bca13e6..7db7aa5 100644 --- a/src/test/java/ru/javacourse/sourcecodebot/repository/LessonRepositoryTest.java +++ b/src/test/java/ru/javacourse/sourcecodebot/repository/LessonRepositoryTest.java @@ -5,6 +5,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import ru.javacourse.sourcecodebot.model.Lesson; +import ru.javacourse.sourcecodebot.model.Resource; import java.util.List; @@ -19,4 +20,11 @@ public void testFind() { List lessons = repository.findAll(); Assertions.assertNotEquals(0, lessons.size()); } + + @Test + public void testFindByChapter() { + Lesson lesson = repository.findLessonByChapterId("2.1"); + Resource resources = lesson.getResources(); + Assertions.assertNotNull(lesson); + } } diff --git a/src/test/java/ru/javacourse/sourcecodebot/repository/ResourceRepositoryTest.java b/src/test/java/ru/javacourse/sourcecodebot/repository/ResourceRepositoryTest.java index 1b2aa93..624e540 100644 --- a/src/test/java/ru/javacourse/sourcecodebot/repository/ResourceRepositoryTest.java +++ b/src/test/java/ru/javacourse/sourcecodebot/repository/ResourceRepositoryTest.java @@ -15,7 +15,7 @@ public class ResourceRepositoryTest { private ResourceRepository repository; @Test - public void testFind() { + public void testFindAll() { List resources = repository.findAll(); Assertions.assertNotEquals(0, resources.size()); }