/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.volumecontroller.impl.monitoring.cim.indicationProcessor.processor;
import java.util.Hashtable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.emc.storageos.volumecontroller.impl.monitoring.cim.event.CIMFileShareRecordableDeviceEvent;
import com.emc.storageos.volumecontroller.impl.monitoring.cim.indicationProcessor.BaseProcessor;
@Component("FileSystemEventProcessor")
public class FileSystemEventProcessor extends BaseProcessor {
/**
* Logger to log the debug information
*/
private static final Logger _logger = LoggerFactory
.getLogger(StorageVolumeEventProcessor.class);
/**
* {@inheritDoc}
*/
@Override
public void processIndication(Hashtable<String, String> notification) {
try {
String type;
logMessage("FileShare indication found", new Object[] {});
CIMFileShareRecordableDeviceEvent fEvent = (CIMFileShareRecordableDeviceEvent) getApplicationContext()
.getBean(
CIMFileShareRecordableDeviceEvent.class
.getSimpleName());
fEvent.setIndication(notification);
logMessage(
"Requesting Event Manager to perssit this FileShare event",
new Object[] {});
// If no Event type found don't persist.
type = fEvent.getType();
if (type != null && type.length() > 0) {
_recordableEventManager.recordEvents(fEvent);
_logger.info(" Event Type Persisted {}", fEvent.getType());
} else {
logMessage(
" -> Unable to pesist event into Cassandra because event type is {}",
new Object[] { fEvent.getType() });
}
fEvent = null;
} catch (Exception e) {
_logger.error("Failed to process File System Indication {}",
e.getMessage());
}
}
/**
* Log the messages. This method eliminates the logging condition check
* every time when we need to log a message.
*
* @param msg
* @param obj
*/
private void logMessage(String msg, Object[] obj) {
if (getMonitoringPropertiesLoader().isToLogIndications()) {
_logger.debug(msg, obj);
}
}
}