From a02832c6fb9004618d0c5442d9883ac5bd1d818e Mon Sep 17 00:00:00 2001 From: evan-miller-jumpmind <70151986+evan-miller-jumpmind@users.noreply.github.com> Date: Mon, 25 Apr 2022 10:01:01 -0400 Subject: [PATCH] 0003805: Added notification templates --- .../symmetric/model/Notification.java | 178 ++++++++++++++++++ .../notification/NotificationTypeEmail.java | 117 ++++-------- .../notification/NotificationTypeLog.java | 15 +- .../symmetric/util/SymmetricUtils.java | 47 +++++ 4 files changed, 273 insertions(+), 84 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/model/Notification.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/model/Notification.java index 51d8522400..a9ff2aa547 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/model/Notification.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/model/Notification.java @@ -20,10 +20,18 @@ */ package org.jumpmind.symmetric.model; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.commons.lang3.StringUtils; import org.jumpmind.symmetric.common.ParameterConstants; +import com.google.gson.Gson; + public class Notification implements IModelObject { private static final long serialVersionUID = 1L; private String notificationId; @@ -114,10 +122,36 @@ public String getExpression() { return expression; } + public LogExpression getLogExpression() { + if (type != null && type.equals("log") && expression != null && expression.contains("{")) { + return new Gson().fromJson(expression, LogExpression.class); + } + return new LogExpression(); + } + + public EmailExpression getEmailExpression() { + if (type != null && type.equals("email") && expression != null && expression.contains("{")) { + return new Gson().fromJson(expression, EmailExpression.class); + } + EmailExpression emailExpression = new EmailExpression(); + if (!StringUtils.isEmpty(expression)) { + emailExpression.setEmails(Arrays.asList(expression.split(",", -1))); + } + return emailExpression; + } + public void setExpression(String expression) { this.expression = expression; } + public void setExpression(LogExpression expression) { + this.expression = new Gson().toJson(expression); + } + + public void setExpression(EmailExpression expression) { + this.expression = new Gson().toJson(expression); + } + public String getSeverityLevelName() { String name = Monitor.severityLevelNames.get(severityLevel); if (name == null) { @@ -140,4 +174,148 @@ public String getTargetNode() { public void setTargetNode(String targetNode) { this.targetNode = targetNode; } + + public class LogExpression { + private String unresolved = "Monitor $(eventType) on $(eventNodeId) reached threshold of" + + " $(eventThreshold) with a value of $(eventValue)"; + private String resolved = "Monitor $(eventType) on $(eventNodeId) is resolved"; + + public String getUnresolved() { + return unresolved; + } + + public void setUnresolved(String unresolved) { + this.unresolved = unresolved; + } + + public String getResolved() { + return resolved; + } + + public void setResolved(String resolved) { + this.resolved = resolved; + } + } + + public class EmailExpression { + private List emails = new ArrayList(); + private String subject = "Monitor events for $(eventTypes) from nodes $(eventNodeIds)"; + private String bodyBefore = ""; + private String bodyAfter = ""; + private String unresolved = "Monitor event for $(eventType) reached threshold of" + + " $(eventThreshold) with a value of $(eventValue)"; + private String resolved = "Monitor event for $(eventType) is resolved"; + private List