&& !data.getActivityId().equals("")) {
ServiceDO service;
OperationDO operation;
ActivityDO activity;
MessageDataDO messageDataDO;
if (data.getTimeStamp() != null) {
if (data.getTimeStamp().equals("")) {
messageDataDO = new MessageDataDO(BAMCalendar.getInstance(Calendar.getInstance())
.getBAMTimestamp(), data.getRemoteIPAddress(), data.getMessageDirection(),
data.getMessageBody(), data.getRequestMessageStatus(),
data.getResponseMessageStatus());
} else {
messageDataDO = new MessageDataDO(data.getTimeStamp(), data.getRemoteIPAddress(),
data.getMessageDirection(), data.getMessageBody(),
data.getRequestMessageStatus(), data.getResponseMessageStatus());
}
} else {
messageDataDO = new MessageDataDO(
BAMCalendar.getInstance(Calendar.getInstance()).getBAMTimestamp(),
data.getRemoteIPAddress(), data.getMessageDirection(), data.getMessageBody(),
data.getRequestMessageStatus(), data.getResponseMessageStatus());
}
// When first time message comes to a system, service, operation
// need to be
// added.
try {
ServerDO serverDO = dsAdmin.getServer(data.getServerName());
if (serverDO != null) {
messageDataDO.setServerId(serverDO.getId());
} else {
log.error("Server is not in the Database" + data.getServerName());
}
} catch (BAMException e) {
log.error("Could not retrieve server from DB ", e);
}
try {
if (dsAdmin.getService(messageDataDO.getServerId(), data.getServiceName()) == null) {
service = new ServiceDO();
ServerDO serverDO = dsAdmin.getServer(data.getServerName());
if (serverDO != null) {
service.setServerID(serverDO.getId());
service.setName(data.getServiceName());
dsAdmin.addService(service);
messageDataDO.setServiceId(dsAdmin.getService(messageDataDO.getServerId(),
data.getServiceName()).getId());
}
} else {
messageDataDO.setServiceId(dsAdmin.getService(messageDataDO.getServerId(),
data.getServiceName()).getId());
}
} catch (BAMException e) {
log.error("Could not retrieve service from DB ", e);
}
try {
if (dsAdmin.getOperation(messageDataDO.getServiceId(), data.getOperationName()) == null) {
operation = new OperationDO();
ServiceDO serviceDO = dsAdmin.getService(messageDataDO.getServerId(), data.getServiceName());
if (serviceDO != null) {
operation.setServiceID(serviceDO.getId());
operation.setName(data.getOperationName());
dsAdmin.addOperation(operation);
messageDataDO.setOperationId(dsAdmin.getOperation(messageDataDO.getServiceId(),
data.getOperationName()).getOperationID());
} else {
serviceDO = new ServiceDO();
serviceDO.setServerID(messageDataDO.getServerId());
serviceDO.setName(data.getServiceName());
dsAdmin.addService(serviceDO);
messageDataDO.setServiceId(dsAdmin.getService(messageDataDO.getServerId(),
data.getServiceName()).getId());
operation.setServiceID(messageDataDO.getServiceId());
operation.setName(data.getOperationName());
dsAdmin.addOperation(operation);
messageDataDO.setOperationId(dsAdmin.getOperation(messageDataDO.getServiceId(),
data.getOperationName()).getOperationID());
}
} else {
messageDataDO.setOperationId(dsAdmin.getOperation(messageDataDO.getServiceId(),
data.getOperationName()).getOperationID());
}
} catch (BAMException e) {
log.error("Could not retrieve operation from DB ", e);
}
checkForActivityExistense(data, dsAdmin, messageDataDO);
// this is for mediation observer event(it publishes
// req+response @ single
// event)
try {
MessageDO inMsg = dsAdmin.getMessage(data.getMessageId(), messageDataDO.getOperationId(),
messageDataDO.getActivityKeyId());
if (inMsg != null) {
messageDataDO.setMessageKeyId(inMsg.getMessageKeyId());
} else {
MessageDO mesg_in = new MessageDO();
mesg_in.setMessageId(data.getMessageId());
mesg_in.setActivityKeyId(messageDataDO.getActivityKeyId());
mesg_in.setOperationId(messageDataDO.getOperationId());
mesg_in.setTimestamp(data.getTimeStamp());
mesg_in.setIPAddress(data.getRemoteIPAddress());
mesg_in.setUserAgent(data.getUserAgent());
//TODO: Data Services supports returning the ID
dsAdmin.addMessage(mesg_in);
messageDataDO.setMessageKeyId(dsAdmin.getMessage(data.getMessageId(),
messageDataDO.getOperationId(),
messageDataDO.getActivityKeyId())
.getMessageKeyId());
}
} catch (BAMException e) {
log.error("Error updating Message statistics data for server " + data.getServerName() + " service "
+ data.getServiceName() + " operation " + data.getOperationName()
+ " from eventing message receiver " + e.getLocalizedMessage());
}
// store to the BAM MessageData table
try {
MessageDataDO msgDat_in = dsAdmin.getMessageDataForActivityKeyIDandMessageKeyID(
messageDataDO.getMessageKeyId(), messageDataDO.getActivityKeyId());
if (msgDat_in != null) {
messageDataDO.setMessageDataKeyId(msgDat_in.getMessageDataKeyId());
dsAdmin.updateMessageStatus(data.getRequestMessageStatus(), msgDat_in.getMessageDataKeyId());
} else {
String direction = "Request";
dsAdmin.addMessageDataDump(messageDataDO, direction);
}
} catch (BAMException e) {
log.error("Could not dump the full message to DB", e);
}
try {
String out_msg_id = data.getOutMessageID();
if (out_msg_id != null && !"".equals(out_msg_id)) {
MessageDO outMsg = dsAdmin.getMessage(data.getOutMessageID(), messageDataDO.getOperationId(),
messageDataDO.getActivityKeyId());
if (outMsg != null) {
messageDataDO.setMessageKeyId(outMsg.getMessageKeyId());
} else {
MessageDO mesg_out = new MessageDO();
mesg_out.setMessageId(data.getOutMessageID());
mesg_out.setActivityKeyId(messageDataDO.getActivityKeyId());
mesg_out.setOperationId(messageDataDO.getOperationId());
mesg_out.setTimestamp(data.getTimeStamp());
mesg_out.setIPAddress(data.getRemoteIPAddress());
mesg_out.setUserAgent(data.getUserAgent());
//TODO: Data Services supports returning the ID
dsAdmin.addMessage(mesg_out);
messageDataDO.setMessageKeyId(dsAdmin.getMessage(data.getOutMessageID(),
messageDataDO.getOperationId(),
messageDataDO.getActivityKeyId())
.getMessageKeyId());
}
}
} catch (BAMException e) {
log.error("Error updating Message statistics data for server " + data.getServerName() + " service "
+ data.getServiceName() + " operation " + data.getOperationName()
+ " from eventing message receiver " + e.getLocalizedMessage());
}
// store to the BAM MessageData table
try {
MessageDataDO msgDat_out = dsAdmin.getMessageDataForActivityKeyIDandMessageKeyID(
messageDataDO.getMessageKeyId(), messageDataDO.getActivityKeyId());
if (msgDat_out != null) {
messageDataDO.setMessageDataKeyId(msgDat_out.getMessageDataKeyId());
dsAdmin.updateMessageStatus(data.getResponseMessageStatus(), msgDat_out.getMessageDataKeyId());
} else {
String direction = "Response";
dsAdmin.addMessageDataDump(messageDataDO, direction);
}
} catch (BAMException e) {