From 6d676a12c655d1a254afda62bafb795d330c6206 Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Wed, 15 Mar 2023 20:51:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D1=85=20=D1=87=D0=B0=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ration.java => ChatUnitConfiguration.java} | 2 +- .../starter/PersonUnitConfiguration.java | 5 + .../config/TelegramBotAutoconfiguration.java | 171 ++++++++++++------ 3 files changed, 124 insertions(+), 54 deletions(-) rename src/main/java/dev/struchkov/godfather/telegram/starter/{UnitConfiguration.java => ChatUnitConfiguration.java} (56%) create mode 100644 src/main/java/dev/struchkov/godfather/telegram/starter/PersonUnitConfiguration.java diff --git a/src/main/java/dev/struchkov/godfather/telegram/starter/UnitConfiguration.java b/src/main/java/dev/struchkov/godfather/telegram/starter/ChatUnitConfiguration.java similarity index 56% rename from src/main/java/dev/struchkov/godfather/telegram/starter/UnitConfiguration.java rename to src/main/java/dev/struchkov/godfather/telegram/starter/ChatUnitConfiguration.java index 4113e02..71ffaea 100644 --- a/src/main/java/dev/struchkov/godfather/telegram/starter/UnitConfiguration.java +++ b/src/main/java/dev/struchkov/godfather/telegram/starter/ChatUnitConfiguration.java @@ -1,5 +1,5 @@ package dev.struchkov.godfather.telegram.starter; -public interface UnitConfiguration { +public interface ChatUnitConfiguration { } diff --git a/src/main/java/dev/struchkov/godfather/telegram/starter/PersonUnitConfiguration.java b/src/main/java/dev/struchkov/godfather/telegram/starter/PersonUnitConfiguration.java new file mode 100644 index 0000000..7a54eb4 --- /dev/null +++ b/src/main/java/dev/struchkov/godfather/telegram/starter/PersonUnitConfiguration.java @@ -0,0 +1,5 @@ +package dev.struchkov.godfather.telegram.starter; + +public interface PersonUnitConfiguration { + +} diff --git a/src/main/java/dev/struchkov/godfather/telegram/starter/config/TelegramBotAutoconfiguration.java b/src/main/java/dev/struchkov/godfather/telegram/starter/config/TelegramBotAutoconfiguration.java index 3ecef81..fa3627e 100644 --- a/src/main/java/dev/struchkov/godfather/telegram/starter/config/TelegramBotAutoconfiguration.java +++ b/src/main/java/dev/struchkov/godfather/telegram/starter/config/TelegramBotAutoconfiguration.java @@ -1,5 +1,6 @@ package dev.struchkov.godfather.telegram.starter.config; +import dev.struchkov.godfather.main.domain.content.ChatMail; import dev.struchkov.godfather.main.domain.content.Mail; import dev.struchkov.godfather.simple.context.repository.PersonSettingRepository; import dev.struchkov.godfather.simple.context.repository.StorylineRepository; @@ -8,8 +9,12 @@ import dev.struchkov.godfather.simple.context.service.ErrorHandler; import dev.struchkov.godfather.simple.context.service.EventHandler; import dev.struchkov.godfather.simple.context.service.PersonSettingService; import dev.struchkov.godfather.simple.context.service.UnitPointerService; -import dev.struchkov.godfather.simple.core.action.AnswerTextAction; -import dev.struchkov.godfather.simple.core.provider.StoryLineHandler; +import dev.struchkov.godfather.simple.core.action.AnswerCheckAction; +import dev.struchkov.godfather.simple.core.action.AnswerSaveAction; +import dev.struchkov.godfather.simple.core.action.AnswerTextChatMailAction; +import dev.struchkov.godfather.simple.core.action.AnswerTextMailAction; +import dev.struchkov.godfather.simple.core.provider.ChatStoryLineHandler; +import dev.struchkov.godfather.simple.core.provider.PersonStoryLineHandler; import dev.struchkov.godfather.simple.core.service.PersonSettingServiceImpl; import dev.struchkov.godfather.simple.core.service.StorylineMailService; import dev.struchkov.godfather.simple.core.service.StorylineService; @@ -20,11 +25,13 @@ import dev.struchkov.godfather.telegram.simple.context.repository.SenderReposito import dev.struchkov.godfather.telegram.simple.context.service.EventDistributor; import dev.struchkov.godfather.telegram.simple.context.service.TelegramSending; import dev.struchkov.godfather.telegram.simple.context.service.TelegramService; +import dev.struchkov.godfather.telegram.simple.core.ChatMailAutoresponderTelegram; import dev.struchkov.godfather.telegram.simple.core.MailAutoresponderTelegram; import dev.struchkov.godfather.telegram.simple.core.TelegramConnectBot; import dev.struchkov.godfather.telegram.simple.core.service.TelegramServiceImpl; import dev.struchkov.godfather.telegram.simple.sender.TelegramSender; -import dev.struchkov.godfather.telegram.starter.UnitConfiguration; +import dev.struchkov.godfather.telegram.starter.ChatUnitConfiguration; +import dev.struchkov.godfather.telegram.starter.PersonUnitConfiguration; import dev.struchkov.godfather.telegram.starter.property.TelegramBotAutoresponderProperty; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Qualifier; @@ -71,38 +78,6 @@ public class TelegramBotAutoconfiguration { return new PersonSettingServiceImpl(personSettingRepository); } - @Bean - @ConditionalOnBean(TelegramConnectBot.class) - public MailAutoresponderTelegram messageAutoresponderTelegram( - @Qualifier(AUTORESPONDER_EXECUTORS_SERVICE) ObjectProvider executorServiceProvider, - TelegramSending sending, - PersonSettingService personSettingService, - ObjectProvider errorHandlerProvider, - ObjectProvider answerTextActionProvider, - - StorylineService storylineService - ) { - final MailAutoresponderTelegram autoresponder = new MailAutoresponderTelegram( - sending, personSettingService, storylineService - ); - - final ExecutorService executorService = executorServiceProvider.getIfAvailable(); - if (checkNotNull(executorService)) { - autoresponder.setExecutorService(executorService); - } - - final ErrorHandler errorHandler = errorHandlerProvider.getIfAvailable(); - if (checkNotNull(errorHandler)) { - autoresponder.setErrorHandler(errorHandler); - } - - final AnswerTextAction answerTextAction = answerTextActionProvider.getIfAvailable(); - if (checkNotNull(answerTextAction)) { - autoresponder.initTextAnswerActionUnit(answerTextAction); - } - return autoresponder; - } - @Bean @ConditionalOnBean(TelegramConnect.class) public TelegramSending sending( @@ -119,32 +94,122 @@ public class TelegramBotAutoconfiguration { return telegramSender; } + @Bean("mailStorylineService") + @ConditionalOnBean(value = {UnitPointerService.class, StorylineRepository.class, PersonUnitConfiguration.class}) + public StorylineService mailStorylineService( + UnitPointerService unitPointerService, + StorylineRepository storylineRepository, + List personUnitConfigurations + ) { + return new StorylineMailService<>( + unitPointerService, + storylineRepository, + new ArrayList<>(personUnitConfigurations) + ); + } + + @Bean("chatMailStorylineService") + @ConditionalOnBean(value = {UnitPointerService.class, StorylineRepository.class, ChatUnitConfiguration.class}) + public StorylineService chatMailStorylineService( + UnitPointerService unitPointerService, + StorylineRepository storylineRepository, + List chatUnitConfigurations + ) { + return new StorylineMailService<>( + unitPointerService, + storylineRepository, + new ArrayList<>(chatUnitConfigurations) + ); + } + + @Bean + @ConditionalOnBean(name = "chatMailStorylineService") + public ChatMailAutoresponderTelegram chatMailAutoresponderTelegram( + @Qualifier(AUTORESPONDER_EXECUTORS_SERVICE) ObjectProvider executorServiceProvider, + PersonSettingService personSettingService, + ObjectProvider errorHandlerProvider, + ObjectProvider answerTextActionProvider, + + TelegramSending telegramSending, + StorylineService storylineService + ) { + final ChatMailAutoresponderTelegram autoresponder = new ChatMailAutoresponderTelegram(personSettingService, storylineService); + autoresponder.registrationActionUnit(new AnswerCheckAction(telegramSending)); + autoresponder.registrationActionUnit(new AnswerSaveAction<>()); + + final AnswerTextChatMailAction answerTextAction = answerTextActionProvider.getIfAvailable(); + if (checkNotNull(answerTextAction)) { + autoresponder.registrationActionUnit(answerTextAction); + } else { + autoresponder.registrationActionUnit(new AnswerTextChatMailAction(telegramSending)); + } + + final ExecutorService executorService = executorServiceProvider.getIfAvailable(); + if (checkNotNull(executorService)) { + autoresponder.setExecutorService(executorService); + } + + final ErrorHandler errorHandler = errorHandlerProvider.getIfAvailable(); + if (checkNotNull(errorHandler)) { + autoresponder.setErrorHandler(errorHandler); + } + + return autoresponder; + } + + @Bean + @ConditionalOnBean(name = "mailStorylineService") + public MailAutoresponderTelegram messageAutoresponderTelegram( + @Qualifier(AUTORESPONDER_EXECUTORS_SERVICE) ObjectProvider executorServiceProvider, + TelegramSending sending, + PersonSettingService personSettingService, + ObjectProvider errorHandlerProvider, + ObjectProvider answerTextActionProvider, + + StorylineService storylineService + ) { + final MailAutoresponderTelegram autoresponder = new MailAutoresponderTelegram(personSettingService, storylineService); + autoresponder.registrationActionUnit(new AnswerCheckAction(sending)); + autoresponder.registrationActionUnit(new AnswerSaveAction<>()); + + final AnswerTextMailAction answerTextAction = answerTextActionProvider.getIfAvailable(); + if (checkNotNull(answerTextAction)) { + autoresponder.registrationActionUnit(answerTextAction); + } else { + autoresponder.registrationActionUnit(new AnswerTextMailAction(sending)); + } + + final ExecutorService executorService = executorServiceProvider.getIfAvailable(); + if (checkNotNull(executorService)) { + autoresponder.setExecutorService(executorService); + } + + final ErrorHandler errorHandler = errorHandlerProvider.getIfAvailable(); + if (checkNotNull(errorHandler)) { + autoresponder.setErrorHandler(errorHandler); + } + + return autoresponder; + } + @Bean @ConditionalOnBean(MailAutoresponderTelegram.class) - public StoryLineHandler storyLineHandler(MailAutoresponderTelegram mailAutoresponderTelegram) { - return new StoryLineHandler(mailAutoresponderTelegram); + public EventHandler personStoryLineHandler(MailAutoresponderTelegram mailAutoresponderTelegram) { + return new PersonStoryLineHandler(mailAutoresponderTelegram); + } + + @Bean + @ConditionalOnBean(ChatMailAutoresponderTelegram.class) + public EventHandler chatStoryLineHandler(ChatMailAutoresponderTelegram mailAutoresponderTelegram) { + return new ChatStoryLineHandler(mailAutoresponderTelegram); } @Bean @ConditionalOnBean(TelegramConnectBot.class) public EventDistributor eventDistributor( - TelegramConnectBot telegramConnect, List eventProviders + TelegramConnectBot telegramConnect, List eventProviders ) { - return new EventDistributorService(telegramConnect, eventProviders); - } - - @Bean - @ConditionalOnBean(value = {UnitPointerService.class, StorylineRepository.class}) - public StorylineService storylineService( - UnitPointerService unitPointerService, - StorylineRepository storylineRepository, - List unitConfigurations - ) { - return new StorylineMailService( - unitPointerService, - storylineRepository, - new ArrayList<>(unitConfigurations) - ); + return new EventDistributorService(telegramConnect, (List) eventProviders); } }