package edu.isi.ikcap.workflows.util.logging; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.UUID; public class LogEvent implements LoggingKeys { private static String START_POSTFIX = ".start"; private static String END_POSTFIX = ".end"; /** * The variable that triggers generation of message id and the event id * in the messages. */ private static boolean _ADD_BLOAT = false; private String _eventName; private String _progName; private Map<String, String> _entityIdMap; private String _eventId; public LogEvent (String eventName, String programName, String entityType, String entityId) { _eventName = eventName; _progName = programName; _eventId = eventName + "_" + UUID.randomUUID().toString(); _entityIdMap = new HashMap<String, String>(); _entityIdMap.put(entityType, entityId); } public LogEvent (String eventName, String programName, Map<String, String> entityTypeToIdMap) { _eventName = eventName; _progName = programName; _eventId = eventName + "_" + UUID.randomUUID().toString(); _entityIdMap = entityTypeToIdMap; } public LogEvent (String eventName, String programName) { _eventName = eventName; _progName = programName; _eventId = eventName + "_" + UUID.randomUUID().toString(); _entityIdMap = new HashMap<String, String>(); } public EventLogMessage createStartLogMsg() { String msgid = UUID.randomUUID().toString(); EventLogMessage elm = new EventLogMessage(_eventName + START_POSTFIX); if( _ADD_BLOAT ){ elm= elm.add(MSG_ID, msgid).add(EVENT_ID_KEY, _eventId); } elm.add(PROG, _progName); for (Map.Entry<String,String> entry : _entityIdMap.entrySet()) { elm.add(entry.getKey(), entry.getValue()); } return elm; } public EventLogMessage createLogMsg() { String msgid = UUID.randomUUID().toString(); EventLogMessage elm = new EventLogMessage(_eventName); if( _ADD_BLOAT ){ elm= elm.add(MSG_ID, msgid).add(EVENT_ID_KEY, _eventId); } for (Map.Entry<String,String> entry : _entityIdMap.entrySet()) { elm.add(entry.getKey(), entry.getValue()); } return elm; } public EventLogMessage createEndLogMsg() { String msgid = UUID.randomUUID().toString(); EventLogMessage elm = new EventLogMessage(_eventName + END_POSTFIX); if( _ADD_BLOAT ){ elm= elm.add(MSG_ID, msgid).add(EVENT_ID_KEY, _eventId); } for (Map.Entry<String,String> entry : _entityIdMap.entrySet()) { elm.add(entry.getKey(), entry.getValue()); } return elm; } public static EventLogMessage createIdHierarchyLogMsg (String parentIdType, String parentId, String childIdType, Iterator<String> childIds) { String msgid = UUID.randomUUID().toString(); String eventId = "idHierarchy_" + UUID.randomUUID().toString(); EventLogMessage lm = new EventLogMessage("event.id.creation"); if( _ADD_BLOAT ){ lm= lm.add(MSG_ID, msgid).add(EVENT_ID_KEY, eventId); } lm.add("parent.id.type", parentIdType).add("parent.id", parentId); lm.add("child.ids.type", childIdType); StringBuffer cids = new StringBuffer("{"); while (childIds.hasNext()) { cids.append(childIds.next()); cids.append(","); } cids.append("}"); lm.add("child.ids", cids.toString()); return lm; } }