summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/auditing/impl/AuditBaseEventFactory.java
blob: 8636c1b01dac5fb8f59e142bf87b8e34bc5086ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package org.openecomp.sdc.be.auditing.impl;

import org.apache.commons.lang.StringUtils;
import org.javatuples.Pair;
import org.openecomp.sdc.be.auditing.api.AuditEventFactory;
import org.openecomp.sdc.be.model.User;
import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
import org.openecomp.sdc.common.api.Constants;

import java.util.Collections;
import java.util.List;

public abstract class AuditBaseEventFactory implements AuditEventFactory {

    //TODO imanzon: Check if requestId and serviceInstanceId fields are required for all tables.
    //Currently they are included even if they ahs null value. If they should not appear then
    //createTable code should be updated so that they need to be removed from the tables
    private AuditingActionEnum action;

    public AuditBaseEventFactory(AuditingActionEnum action) {
        this.action = action;
    }

    public AuditingActionEnum getAction() {
        return action;
    }

    public static String buildUserNameExtended(User user) {
        if (user == null) {
            return null;
        }

        StringBuilder builder = new StringBuilder();
        appendIfNotEmpty(user.getUserId(), builder);

        String firstName = replaceNullNameWithEmpty(user.getFirstName());
        String lastName = replaceNullNameWithEmpty(user.getLastName());

        if (appendIfNotEmpty(firstName, builder)) {
            appendIfNotEmpty(lastName, builder, " ");
        }
        else {
            appendIfNotEmpty(lastName, builder);
        }
        appendIfNotEmpty(user.getEmail(), builder);
        appendIfNotEmpty(user.getRole(), builder);

        return builder.toString();
    }

    private static boolean appendIfNotEmpty(String value, StringBuilder builder) {
        return appendIfNotEmpty(value, builder, ", ");
    }

    protected static boolean appendIfNotEmpty(String value, StringBuilder builder, String delimiter) {
        if (StringUtils.isEmpty(value)) {
            return false;
        }
        addDelimiterIfNeeded(builder, delimiter);
        builder.append(value);
        return true;
    }

    private static void addDelimiterIfNeeded(StringBuilder builder, String delimiter) {
        if (builder.length() > 0) {
            builder.append(delimiter);
        }
    }

    protected static String buildUserName(User user) {
        if (user == null || user.getUserId() == null || user.getUserId().isEmpty()) {
            return Constants.EMPTY_STRING;
        }
        StringBuilder sb = new StringBuilder();
        String firstName = replaceNullNameWithEmpty(user.getFirstName());
        if (!firstName.isEmpty()) {
            sb.append(firstName);
            sb.append(" ");
        }
        String lastName = replaceNullNameWithEmpty(user.getLastName());
        if (!lastName.isEmpty()) {
            sb.append(lastName);
        }
        sb.append("(").append(user.getUserId()).append(")");
        return sb.toString();
    }

    public static String buildValue(String value) {
        if (value == null) {
            return Constants.EMPTY_STRING;
        }
        return value;
    }

    protected static String replaceNullNameWithEmpty(String name) {
        if (name != null && !name.trim().contains(Constants.NULL_STRING)) {
            return name;
        }
        return Constants.EMPTY_STRING;
    }

    @Override
    //TODO implement in derived classes for ci testing
    public List<Pair<String, String>> getQueryParams() {
        return Collections.emptyList();
    }

    @Override
    public String getAuditingEsType() {
        return this.action.getAuditingEsType();
    }


}