From 191ac97dbc2fa4e1dc15e5f17887c3334d450757 Mon Sep 17 00:00:00 2001
From: corrado lombardi <corrado.lombardi@4science.com>
Date: Mon, 11 Sep 2023 12:57:11 +0200
Subject: [PATCH] [DSC-1238][CST-11734] added type option to subscription-send
 process

---
 .../SubscriptionEmailNotification.java              | 13 ++++++++++---
 .../SubscriptionEmailNotificationConfiguration.java |  3 +++
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/dspace-api/src/main/java/org/dspace/subscriptions/SubscriptionEmailNotification.java b/dspace-api/src/main/java/org/dspace/subscriptions/SubscriptionEmailNotification.java
index b429ecbd46e7..cc5cac24eabb 100644
--- a/dspace-api/src/main/java/org/dspace/subscriptions/SubscriptionEmailNotification.java
+++ b/dspace-api/src/main/java/org/dspace/subscriptions/SubscriptionEmailNotification.java
@@ -48,16 +48,23 @@ public void setup() throws ParseException {
     public void internalRun() throws Exception {
         assignCurrentUserInContext();
         assignSpecialGroupsInContext();
+        String typeOption = commandLine.getOptionValue("t");
         String frequencyOption = commandLine.getOptionValue("f");
-        if (StringUtils.isBlank(frequencyOption)) {
-            throw new IllegalArgumentException("Option --frequency (-f) must be set");
+        if (StringUtils.isBlank(frequencyOption) || StringUtils.isBlank(typeOption)) {
+            throw new IllegalArgumentException("Options --frequency (-f) and --type (-t) must be set");
         }
 
         if (!FrequencyType.isSupportedFrequencyType(frequencyOption)) {
             throw new IllegalArgumentException(
                     "Option f must be one of following values D(Day), W(Week) or M(Month)");
         }
-        subscriptionEmailNotificationService.perform(getContext(), handler, "content", frequencyOption);
+
+        if (!StringUtils.equalsAny(typeOption, "content", "statistics")) {
+            throw new IllegalArgumentException(
+                "Option t (type) must be one of \"content\" or \"statistics\"");
+        }
+
+        subscriptionEmailNotificationService.perform(getContext(), handler, typeOption, frequencyOption);
     }
 
     private void assignCurrentUserInContext() throws SQLException {
diff --git a/dspace-api/src/main/java/org/dspace/subscriptions/SubscriptionEmailNotificationConfiguration.java b/dspace-api/src/main/java/org/dspace/subscriptions/SubscriptionEmailNotificationConfiguration.java
index 52685b563d9b..d4f76a555936 100644
--- a/dspace-api/src/main/java/org/dspace/subscriptions/SubscriptionEmailNotificationConfiguration.java
+++ b/dspace-api/src/main/java/org/dspace/subscriptions/SubscriptionEmailNotificationConfiguration.java
@@ -42,6 +42,9 @@ public boolean isAllowedToExecute(Context context) {
     public Options getOptions() {
         if (Objects.isNull(options)) {
             Options options = new Options();
+            options.addOption("t", "type", true,
+                              "Subscription type, Valid values are \"content\" or \"statistics\"");
+            options.getOption("t").setRequired(true);
             options.addOption("f", "frequency", true,
                               "Subscription frequency. Valid values include: D (Day), W (Week) and M (Month)");
             options.getOption("f").setRequired(true);