Sync Integ to Master
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / auditing / impl / AuditingManager.java
index aa5afa4..19eab0a 100644 (file)
 
 package org.openecomp.sdc.be.auditing.impl;
 
-import java.util.EnumMap;
-import java.util.Map.Entry;
-
-import javax.annotation.Resource;
-
-import org.openecomp.sdc.be.auditing.api.IAuditingManager;
+import org.openecomp.sdc.be.auditing.api.AuditEventFactory;
 import org.openecomp.sdc.be.config.ConfigurationManager;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.dao.cassandra.AuditCassandraDao;
@@ -39,99 +34,134 @@ import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
 import org.openecomp.sdc.common.util.ThreadLocalsHolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-@Component("auditingManager")
-public class AuditingManager implements IAuditingManager {
-
-       private static Logger log = LoggerFactory.getLogger(AuditingManager.class.getName());
-
-       @Resource
-       private AuditingDao auditingDao;
-       @Autowired
-       private AuditCassandraDao cassandraDao;
-
-       @Override
-       public void auditEvent(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) {
-               try {
-                       boolean disableAudit = ConfigurationManager.getConfigurationManager().getConfiguration().isDisableAudit();
-                       if (disableAudit) {
-                               return;
-                       }
-                       // Adding UUID from thread local
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, ThreadLocalsHolder.getUuid());
-
-                       Object status = auditingFields.get(AuditingFieldsKeysEnum.AUDIT_STATUS);
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, String.valueOf(status));
-
-                       // normalizing empty string values - US471661
-                       normalizeEmptyAuditStringValues(auditingFields);
-
-                       // Format modifier
-                       formatModifier(auditingFields);
-
-                       // Format user
-                       formatUser(auditingFields);
-
-                       // Logging the event
-                       AuditingLogFormatUtil.logAuditEvent(auditingFields);
-
-                       // Determining the type of the auditing data object
-                       AuditingActionEnum actionEnum = AuditingActionEnum.getActionByName((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_ACTION));
-                       log.info("audit event {} of type {}", actionEnum.getName(), actionEnum.getAuditingEsType());
-                       ActionStatus addRecordStatus = auditingDao.addRecord(auditingFields, actionEnum.getAuditingEsType());
-                       if (!addRecordStatus.equals(ActionStatus.OK)) {
-                               log.warn("Failed to persist auditing event: {}", addRecordStatus.name());
-                       }
-
-                       AuditingGenericEvent recordForCassandra = AuditRecordFactory.createAuditRecord(auditingFields);
-                       if (recordForCassandra != null) {
-                               CassandraOperationStatus result = cassandraDao.saveRecord(recordForCassandra);
-                               if (!result.equals(CassandraOperationStatus.OK)) {
-                                       log.warn("Failed to persist to cassandra auditing event: {}", addRecordStatus.name());
-                               }
-                       }
-
-               } catch (Exception e) {
-                       // Error during auditing shouldn't terminate flow
-                       log.warn("Error during auditEvent: {}", e);
-               }
-       }
-
-       private void formatUser(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) {
-               if (auditingFields.get(AuditingFieldsKeysEnum.AUDIT_USER_UID) != null) {
-                       String userDetails = (String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_USER_UID);
-
-                       String user = AuditingLogFormatUtil.getUser(userDetails);
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_USER_UID, user);
-               }
-       }
-
-       private void formatModifier(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) {
-               String modifier = AuditingLogFormatUtil.getModifier((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME), (String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID));
-               auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier);
-               auditingFields.remove(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME);
-       }
-
-       private void normalizeEmptyAuditStringValues(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) {
-               for (Entry<AuditingFieldsKeysEnum, Object> auditingEntry : auditingFields.entrySet()) {
-                       if (auditingEntry.getKey().getValueClass().equals(String.class)) {
-                               String auditingValue = (String) auditingEntry.getValue();
-                               boolean isEmpty = false;
-                               if (auditingValue != null) {
-                                       String trimmedValue = auditingValue.trim();
-                                       if ((trimmedValue.equals(Constants.EMPTY_STRING)) || trimmedValue.equals(Constants.NULL_STRING) || trimmedValue.equals(Constants.DOUBLE_NULL_STRING)) {
-                                               isEmpty = true;
-                                       }
-                               } else {// is null
-                                       isEmpty = true;
-                               }
-                               // Normalizing to ""
-                               if (isEmpty) {
-                                       auditingEntry.setValue(Constants.EMPTY_STRING);
-                               }
-                       }
-               }
-       }
+import java.util.Map;
+import java.util.Map.Entry;
+
+@Component
+public class AuditingManager {
+
+    private static final Logger log = LoggerFactory.getLogger(AuditingManager.class);
+    private final AuditingDao auditingDao;
+    private final AuditCassandraDao cassandraDao;
+
+    public AuditingManager(AuditingDao auditingDao, AuditCassandraDao cassandraDao) {
+        this.auditingDao = auditingDao;
+        this.cassandraDao = cassandraDao;
+    }
+
+    // TODO remove after completing refactoring
+    public String auditEvent(Map<AuditingFieldsKeysEnum, Object> auditingFields) {
+        String msg = "";
+        try {
+            boolean disableAudit = ConfigurationManager.getConfigurationManager().getConfiguration().isDisableAudit();
+            if (disableAudit) {
+                return null;
+            }
+            // Adding UUID from thread local
+            auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, ThreadLocalsHolder.getUuid());
+
+            Object status = auditingFields.get(AuditingFieldsKeysEnum.AUDIT_STATUS);
+            auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, String.valueOf(status));
+
+            // normalizing empty string values - US471661
+            normalizeEmptyAuditStringValues(auditingFields);
+
+            // Format modifier
+            formatModifier(auditingFields);
+
+            // Format user
+            formatUser(auditingFields);
+
+            // Logging the event
+            msg = AuditingLogFormatUtil.logAuditEvent(auditingFields);
+
+            // Determining the type of the auditing data object
+            AuditingActionEnum actionEnum = AuditingActionEnum.getActionByName((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_ACTION));
+            log.info("audit event {} of type {}", actionEnum.getName(), actionEnum.getAuditingEsType());
+            ActionStatus addRecordStatus = auditingDao.addRecord(auditingFields, actionEnum.getAuditingEsType());
+            if (!addRecordStatus.equals(ActionStatus.OK)) {
+                log.warn("Failed to persist auditing event: {}", addRecordStatus);
+            }
+
+            AuditingGenericEvent recordForCassandra = AuditRecordFactory.createAuditRecord(auditingFields);
+            if (recordForCassandra != null) {
+                saveEventToCassandra(recordForCassandra);
+            }
+
+        } catch (Exception e) {
+            // Error during auditing shouldn't terminate flow
+            log.warn("Error during auditEvent: {}", e);
+        }
+        return msg;
+    }
+
+
+    public String auditEvent(AuditEventFactory factory) {
+        if (ConfigurationManager.getConfigurationManager().getConfiguration().isDisableAudit()) {
+            return null;
+        }
+        AuditingGenericEvent event = factory.getDbEvent();
+        // Logging the event
+        //TODO - change this call after EELF Audit stuff merge
+        String msg = factory.getLogMessage();
+        AuditingLogFormatUtil.logAuditEvent(msg);
+
+        //TODO - remove this method after we got rid of ES
+        saveEventToElasticSearch(factory, event);
+        saveEventToCassandra(event);
+        return msg;
+    }
+
+    private void saveEventToCassandra(AuditingGenericEvent event) {
+        CassandraOperationStatus result = cassandraDao.saveRecord(event);
+        if (!result.equals(CassandraOperationStatus.OK)) {
+            log.warn("Failed to persist to cassandra auditing event: {}", result.name());
+        }
+    }
+
+    private void saveEventToElasticSearch(AuditEventFactory factory, AuditingGenericEvent event) {
+        ActionStatus addRecordStatus = auditingDao.addRecord(event, factory.getAuditingEsType());
+        if (!addRecordStatus.equals(ActionStatus.OK)) {
+            log.warn("Failed to persist auditing event: {}", addRecordStatus.name());
+        }
+    }
+
+
+    private void formatUser(Map<AuditingFieldsKeysEnum, Object> auditingFields) {
+        if (auditingFields.get(AuditingFieldsKeysEnum.AUDIT_USER_UID) != null) {
+            String userDetails = (String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_USER_UID);
+
+            String user = AuditingLogFormatUtil.getUser(userDetails);
+            auditingFields.put(AuditingFieldsKeysEnum.AUDIT_USER_UID, user);
+        }
+    }
+
+    private void formatModifier(Map<AuditingFieldsKeysEnum, Object> auditingFields) {
+        String modifier = AuditingLogFormatUtil.getModifier((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME), (String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID));
+        auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier);
+        auditingFields.remove(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME);
+    }
+
+    private void normalizeEmptyAuditStringValues(Map<AuditingFieldsKeysEnum, Object> auditingFields) {
+        for (Entry<AuditingFieldsKeysEnum, Object> auditingEntry : auditingFields.entrySet()) {
+            if (auditingEntry.getKey().getValueClass().equals(String.class)) {
+                String auditingValue = (String) auditingEntry.getValue();
+                boolean isEmpty = false;
+                if (auditingValue != null) {
+                    String trimmedValue = auditingValue.trim();
+                    if ((trimmedValue.equals(Constants.EMPTY_STRING)) || trimmedValue.equals(Constants.NULL_STRING) || trimmedValue.equals(Constants.DOUBLE_NULL_STRING)) {
+                        isEmpty = true;
+                    }
+                } else {// is null
+                    isEmpty = true;
+                }
+                // Normalizing to ""
+                if (isEmpty) {
+                    auditingEntry.setValue(Constants.EMPTY_STRING);
+                }
+            }
+        }
+    }
 }