1 package org.onap.sdc.dcae.errormng;
4 import org.onap.sdc.common.onaplog.OnapLoggerDebug;
5 import org.onap.sdc.common.onaplog.OnapLoggerError;
6 import org.onap.sdc.common.onaplog.Enums.LogLevel;
8 import java.util.Arrays;
9 import java.util.Formatter;
10 import java.util.regex.Matcher;
11 import java.util.regex.Pattern;
13 public class AbstractSdncException {
14 private String messageId;
18 private String[] variables;
20 private static OnapLoggerError errLogger = OnapLoggerError.getInstance();
21 private static OnapLoggerDebug debugLogger = OnapLoggerDebug.getInstance();
23 private final static Pattern ERROR_PARAM_PATTERN = Pattern.compile("%\\d");
25 public AbstractSdncException() {
28 public AbstractSdncException(String messageId, String text, String[] variables) {
30 this.messageId = messageId;
32 this.variables = validateParameters(messageId, text, variables);
35 private String[] validateParameters(String messageId, String text, String[] variables) {
37 Matcher m = ERROR_PARAM_PATTERN.matcher(text);
38 int expectedParamsNum = 0;
40 expectedParamsNum += 1;
42 int actualParamsNum = (variables != null) ? variables.length : 0;
43 if (actualParamsNum < expectedParamsNum) {
44 errLogger.log(LogLevel.WARN, this.getClass().getName(),
45 "Received less parameters than expected for error with messageId {}, expected: {}, actual: {}. Missing parameters are padded with null values.",
46 messageId, expectedParamsNum, actualParamsNum);
47 } else if (actualParamsNum > expectedParamsNum) {
48 errLogger.log(LogLevel.WARN, this.getClass().getName(),
49 "Received more parameters than expected for error with messageId {}, expected: {}, actual: {}. Extra parameters are ignored.",
50 messageId, expectedParamsNum, actualParamsNum);
52 if (variables != null) {
53 res = Arrays.copyOf(variables, expectedParamsNum);
59 public String getMessageId() {
60 return this.messageId;
63 public String getText() {
67 public String[] getVariables() {
71 public void setMessageId(String messageId) {
72 this.messageId = messageId;
75 public void setText(String text) {
79 public void setVariables(String[] variables) {
80 this.variables = variables;
83 public String getFormattedErrorMessage() {
85 if (variables != null && variables.length > 0) {
86 Formatter formatter = new Formatter();
88 res = formatter.format(this.text.replaceAll("%\\d", "%s"), (Object[]) this.variables).toString();