MoyaEventTopicLoggingBean.java 3.75 KB
/*
 * Copyright Codecrew Ry
 * 
 * All rights reserved.
 * 
 * This license applies to any software containing a notice placed by the 
 * copyright holder. Such software is herein referred to as the Software. 
 * This license covers modification, distribution and use of the Software. 
 * 
 * Any distribution and use in source and binary forms, with or without 
 * modification is not permitted without explicit written permission from the 
 * copyright owner. 
 * 
 * A non-exclusive royalty-free right is granted to the copyright owner of the 
 * Software to use, modify and distribute all modifications to the Software in 
 * future versions of the Software. 
 * 
 */
package fi.codecrew.moya.beans.moyamessage;

import java.util.Calendar;

import javax.ejb.EJB;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;

import org.slf4j.Logger;

import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.LanEventFacade;
import fi.codecrew.moya.facade.LogEntryFacade;
import fi.codecrew.moya.facade.LogEntryTypeFacade;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.LogEntry;
import fi.codecrew.moya.model.LogEntryType;
import fi.codecrew.moya.model.User;
import fi.codecrew.moya.utilities.moyamessage.MoyaEventMessage;
import fi.codecrew.moya.utilities.moyamessage.MoyaEventType;

/**
 * Session Bean implementation class SercurityBean
 */
@MessageDriven(mappedName = MoyaEventSender.MOYA_EVENT_SENDER_TOPIC)
public class MoyaEventTopicLoggingBean implements MessageListener {

	private static final boolean DEBUG = true;

	private final Logger logger = org.slf4j.LoggerFactory.getLogger(MoyaEventTopicLoggingBean.class);
	@EJB
	private LanEventFacade eventfacade;

	public void onMessage(Message message) {
		if (message != null) {
			try {
				MoyaEventMessage msg = message.getBody(MoyaEventMessage.class);
				logger.warn("Got message at TopicLogging {}, {}", msg.getEventtype(), msg.getDescription());

				LanEvent event = null;
				if (msg.getEventId() != null)
					event = eventfacade.find(msg.getEventId());
				User user = null;
				if (msg.getEventUserId() != null) {
					EventUser euser = eventUserfacade.find(msg.getEventUserId());
					if (euser != null)
						user = euser.getUser();
				}

				logMessage(msg.getEventtype(), event, user, msg.getDescription());
			} catch (JMSException e) {
				logger.warn("Exception whie receiving Moya EventTopic", e);
			}
		}
	}

	@EJB
	private EventUserFacade eventUserfacade;
	@EJB
	private EventBeanLocal eventbean;

	@EJB
	private LogEntryFacade entryFacade;
	@EJB
	private LogEntryTypeFacade typeFacade;

	private LogEntry logMessage(MoyaEventType moyaEventType, LanEvent event, User user, String desc) {
		LogEntry entry = null;
		if (event == null) {
			event = eventbean.getCurrentEvent();
		}
		try {

			logger.warn("Sending logmsg {}", desc);
			LogEntryType type = typeFacade.findOrCreate(moyaEventType);
			entry = new LogEntry(Calendar.getInstance());
			entry.setParentEvent(event);
			entry.setType(type);
			entry.setDescription(desc);
			entry.setUser(user);

			entryFacade.create(entry);
			//			String msg = "SECURITY DEBUG: Type: \"" + moyaEventType.name() +
			//					"\" user \"" + moyaEventType.name() +
			//					"\", description \"" + ((user == null) ? "null" : user.getLogin()) + "\"" + desc;
			//	sender.sendMessage(msg);
			// utx.commit();
		} catch (Exception e) {
			logger.warn("Exception at SecurityBean", e);
		}
		return entry;
	}

	//	private static final String toString(Object... desc) {
	//		StringBuilder msg = new StringBuilder();
	//		for (Object msgpart : desc) {
	//			msg.append(msgpart);
	//		}
	//		return msg.toString();
	//	}

}