From bf550649840be7da2e4ab7aab3d9f9fe179adc9c Mon Sep 17 00:00:00 2001
From: Sheldan <5037282+Sheldan@users.noreply.github.com>
Date: Sat, 24 Apr 2021 01:38:59 +0200
Subject: [PATCH] [OPB-12] adding news/newsupdate command and introducing
mechanisms for cleanup thereof changing templates to have the metaconfig
moving starboard custom templates
---
application/executable/pom.xml | 6 +
application/oneplus-bot-modules/news/pom.xml | 41 +
.../news/src/main/assembly/liquibase.xml | 18 +
.../bot/modules/news/commands/News.java | 54 +
.../bot/modules/news/commands/UpdateNews.java | 57 +
.../bot/modules/news/config/NewsFeature.java | 23 +
.../news/config/NewsFeatureDefinition.java | 15 +
.../news/config/NewsModuleDefinition.java | 21 +
.../modules/news/config/NewsPostTarget.java | 15 +
.../modules/news/config/NewsProperties.java | 10 +
.../exception/NewsPostLockedException.java | 16 +
.../exception/NewsPostNotFoundException.java | 16 +
.../modules/news/job/NewsPostCleanupJob.java | 31 +
.../modules/news/job/NewsPostLockingJob.java | 31 +
...wsMessageSourceMessageUpdatedListener.java | 46 +
.../modules/news/model/NewsMessageModel.java | 18 +
.../modules/news/model/database/NewsPost.java | 51 +
.../news/repository/NewsPostRepository.java | 17 +
.../modules/news/service/NewsServiceBean.java | 127 ++
.../NewsPostManagementServiceBean.java | 77 +
.../migrations/1.3.9-news/collection.xml | 11 +
.../1.3.9-news/news-seedData/command.xml | 23 +
.../1.3.9-news/news-seedData/data.xml | 13 +
.../1.3.9-news/news-seedData/feature.xml | 14 +
.../1.3.9-news/news-seedData/module.xml | 14 +
.../1.3.9-news/news-seedData/news_jobs.xml | 28 +
.../1.3.9-news/news-tables/news_post.xml | 62 +
.../1.3.9-news/news-tables/tables.xml | 10 +
.../resources/migrations/dbchangelog-3.8.xsd | 1377 +++++++++++++++++
.../resources/migrations/news-changeLog.xml | 10 +
.../news/src/main/resources/news.properties | 7 +
application/oneplus-bot-modules/pom.xml | 24 +
application/pom.xml | 1 +
deployment/image-packaging/pom.xml | 35 +-
.../deployment/config/artifact_versions.json | 9 +-
pom.xml | 4 +-
.../news-templates/pom.xml | 39 +
.../src/main/assembly/assembly.xml | 0
.../commands/news/news_post_embed_en_US.ftl | 12 +
.../news_post_locked_exception_en_US.ftl | 1 +
.../news_post_not_found_exception_en_US.ftl | 1 +
.../pom.xml | 3 +-
.../starboard-custom/pom.xml | 2 +-
.../src/main/assembly/assembly.xml | 15 +
..._post_created_notification_embed_en_US.ftl | 0
..._post_deleted_notification_embed_en_US.ftl | 0
...rban_define_response_model_embed_en_US.ftl | 4 +-
templates/pom.xml | 2 +-
.../translations/news-translations/pom.xml | 38 +
.../src/main/assembly/assembly.xml | 15 +
.../news/help/news_description_en_US.ftl | 1 +
.../news/help/news_long_help_en_US.ftl | 4 +
.../news/help/news_parameter_text_en_US.ftl | 1 +
.../news/news_post_description_en_US.ftl | 4 +
.../help/updateNews_description_en_US.ftl | 1 +
.../help/updateNews_long_help_en_US.ftl | 4 +
.../updateNews_parameter_newsPostId_en_US.ftl | 1 +
.../help/updateNews_parameter_text_en_US.ftl | 1 +
.../en_US/config/feature_news_en_US.ftl | 1 +
.../feature_setup_posttarget_news_en_US.ftl | 1 +
.../config/module_news_description_en_US.ftl | 1 +
...ws_post_locked_exception_message_en_US.ftl | 1 +
...ws_post_not_found_exception_text_en_US.ftl | 1 +
templates/translations/pom.xml | 1 +
64 files changed, 2477 insertions(+), 10 deletions(-)
create mode 100644 application/oneplus-bot-modules/news/pom.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/assembly/liquibase.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/commands/News.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/commands/UpdateNews.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/config/NewsFeature.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/config/NewsFeatureDefinition.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/config/NewsModuleDefinition.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/config/NewsPostTarget.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/config/NewsProperties.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/exception/NewsPostLockedException.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/exception/NewsPostNotFoundException.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/job/NewsPostCleanupJob.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/job/NewsPostLockingJob.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/listener/NewsMessageSourceMessageUpdatedListener.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/model/NewsMessageModel.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/model/database/NewsPost.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/repository/NewsPostRepository.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/service/NewsServiceBean.java
create mode 100644 application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/service/management/NewsPostManagementServiceBean.java
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/1.3.9-news/collection.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/1.3.9-news/news-seedData/command.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/1.3.9-news/news-seedData/data.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/1.3.9-news/news-seedData/feature.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/1.3.9-news/news-seedData/module.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/1.3.9-news/news-seedData/news_jobs.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/1.3.9-news/news-tables/news_post.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/1.3.9-news/news-tables/tables.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/dbchangelog-3.8.xsd
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/migrations/news-changeLog.xml
create mode 100644 application/oneplus-bot-modules/news/src/main/resources/news.properties
create mode 100644 application/oneplus-bot-modules/pom.xml
create mode 100644 templates/oneplus-bot-modules-templates/news-templates/pom.xml
rename templates/{oneplus-bot-modules/starboard-custom => oneplus-bot-modules-templates/news-templates}/src/main/assembly/assembly.xml (100%)
create mode 100644 templates/oneplus-bot-modules-templates/news-templates/src/main/resources/en_US/commands/news/news_post_embed_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/news-templates/src/main/resources/en_US/exception/news_post_locked_exception_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/news-templates/src/main/resources/en_US/exception/news_post_not_found_exception_en_US.ftl
rename templates/{oneplus-bot-modules => oneplus-bot-modules-templates}/pom.xml (87%)
rename templates/{oneplus-bot-modules => oneplus-bot-modules-templates}/starboard-custom/pom.xml (95%)
create mode 100644 templates/oneplus-bot-modules-templates/starboard-custom/src/main/assembly/assembly.xml
rename templates/{oneplus-bot-modules => oneplus-bot-modules-templates}/starboard-custom/src/main/resources/en_US/listener/starboardNotification/starboard_post_created_notification_embed_en_US.ftl (100%)
rename templates/{oneplus-bot-modules => oneplus-bot-modules-templates}/starboard-custom/src/main/resources/en_US/listener/starboardNotification/starboard_post_deleted_notification_embed_en_US.ftl (100%)
create mode 100644 templates/translations/news-translations/pom.xml
create mode 100644 templates/translations/news-translations/src/main/assembly/assembly.xml
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/commands/news/help/news_description_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/commands/news/help/news_long_help_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/commands/news/help/news_parameter_text_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/commands/news/news_post_description_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/commands/updateNews/help/updateNews_description_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/commands/updateNews/help/updateNews_long_help_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/commands/updateNews/help/updateNews_parameter_newsPostId_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/commands/updateNews/help/updateNews_parameter_text_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/config/feature_news_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/config/feature_setup_posttarget_news_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/config/module_news_description_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/exception/news_post_locked_exception_message_en_US.ftl
create mode 100644 templates/translations/news-translations/src/main/resources/en_US/exception/news_post_not_found_exception_text_en_US.ftl
diff --git a/application/executable/pom.xml b/application/executable/pom.xml
index a05b144..01dd698 100644
--- a/application/executable/pom.xml
+++ b/application/executable/pom.xml
@@ -101,6 +101,12 @@
${project.version}
+
+ dev.sheldan.oneplus.bot.application.modules
+ news
+ ${project.version}
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-modules/news/pom.xml b/application/oneplus-bot-modules/news/pom.xml
new file mode 100644
index 0000000..1a6225e
--- /dev/null
+++ b/application/oneplus-bot-modules/news/pom.xml
@@ -0,0 +1,41 @@
+
+
+
+ dev.sheldan.oneplus.bot.application.modules
+ oneplus-bot-modules
+ 1.3.9-SNAPSHOT
+
+ 4.0.0
+
+ news
+
+
+ 8
+ 8
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ src/main/assembly/liquibase.xml
+
+
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-modules/news/src/main/assembly/liquibase.xml b/application/oneplus-bot-modules/news/src/main/assembly/liquibase.xml
new file mode 100644
index 0000000..8b4774f
--- /dev/null
+++ b/application/oneplus-bot-modules/news/src/main/assembly/liquibase.xml
@@ -0,0 +1,18 @@
+
+ liquibase
+
+ zip
+
+ false
+
+
+ .
+ ${project.basedir}/src/main/resources/migrations
+
+ **/*
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/commands/News.java b/application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/commands/News.java
new file mode 100644
index 0000000..de4939d
--- /dev/null
+++ b/application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/commands/News.java
@@ -0,0 +1,54 @@
+package dev.sheldan.oneplus.bot.modules.news.commands;
+
+import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
+import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
+import dev.sheldan.abstracto.core.command.config.HelpInfo;
+import dev.sheldan.abstracto.core.command.config.Parameter;
+import dev.sheldan.abstracto.core.command.execution.CommandContext;
+import dev.sheldan.abstracto.core.command.execution.CommandResult;
+import dev.sheldan.abstracto.core.config.FeatureDefinition;
+import dev.sheldan.oneplus.bot.modules.news.config.NewsFeatureDefinition;
+import dev.sheldan.oneplus.bot.modules.news.config.NewsModuleDefinition;
+import dev.sheldan.oneplus.bot.modules.news.service.NewsServiceBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+@Component
+public class News extends AbstractConditionableCommand {
+
+ @Autowired
+ private NewsServiceBean newsServiceBean;
+
+ @Override
+ public CompletableFuture executeAsync(CommandContext commandContext) {
+ String text = (String) commandContext.getParameters().getParameters().get(0);
+ return newsServiceBean.sendNewsPost(text, commandContext.getMessage())
+ .thenApply(unused -> CommandResult.fromSuccess());
+ }
+
+ @Override
+ public CommandConfiguration getConfiguration() {
+ Parameter newsText = Parameter.builder().name("text").type(String.class).remainder(true).templated(true).build();
+ List parameters = Arrays.asList(newsText);
+ HelpInfo helpInfo = HelpInfo.builder().templated(true).hasExample(true).build();
+ return CommandConfiguration.builder()
+ .name("news")
+ .module(NewsModuleDefinition.NEWS)
+ .parameters(parameters)
+ .supportsEmbedException(true)
+ .async(true)
+ .help(helpInfo)
+ .templated(true)
+ .causesReaction(true)
+ .build();
+ }
+
+ @Override
+ public FeatureDefinition getFeature() {
+ return NewsFeatureDefinition.NEWS;
+ }
+}
diff --git a/application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/commands/UpdateNews.java b/application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/commands/UpdateNews.java
new file mode 100644
index 0000000..faa4a3f
--- /dev/null
+++ b/application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/commands/UpdateNews.java
@@ -0,0 +1,57 @@
+package dev.sheldan.oneplus.bot.modules.news.commands;
+
+import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
+import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
+import dev.sheldan.abstracto.core.command.config.HelpInfo;
+import dev.sheldan.abstracto.core.command.config.Parameter;
+import dev.sheldan.abstracto.core.command.execution.CommandContext;
+import dev.sheldan.abstracto.core.command.execution.CommandResult;
+import dev.sheldan.abstracto.core.config.FeatureDefinition;
+import dev.sheldan.oneplus.bot.modules.news.config.NewsFeatureDefinition;
+import dev.sheldan.oneplus.bot.modules.news.config.NewsModuleDefinition;
+import dev.sheldan.oneplus.bot.modules.news.service.NewsServiceBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+@Component
+public class UpdateNews extends AbstractConditionableCommand {
+
+ @Autowired
+ private NewsServiceBean newsServiceBean;
+
+ @Override
+ public CompletableFuture executeAsync(CommandContext commandContext) {
+ List