/*
* $Id: MessageBusinessBean.java,v 1.3.2.1 2007/01/12 19:32:44 idegaweb Exp $ Created on Oct 12,
* 2005
*
* Copyright (C) 2005 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf. Use is subject to
* license terms.
*/
package com.idega.block.process.message.business;
import java.util.Collection;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import com.idega.block.process.business.CaseBusiness;
import com.idega.block.process.business.CaseBusinessBean;
import com.idega.block.process.data.Case;
import com.idega.block.process.message.data.Message;
import com.idega.block.process.message.data.MessageHome;
import com.idega.business.IBORuntimeException;
import com.idega.data.IDOCreateException;
import com.idega.data.IDOException;
import com.idega.data.IDOLookupException;
import com.idega.data.IDOStoreException;
import com.idega.user.data.Group;
import com.idega.user.data.User;
/**
* Last modified: $Date: 2007/01/12 19:32:44 $ by $Author: idegaweb $
*
* @author <a href="mailto:laddi@idega.com">laddi</a>
* @version $Revision: 1.3.2.1 $
*/
public class MessageBusinessBean extends CaseBusinessBean implements MessageBusiness, CaseBusiness {
private MessageHome getMessageHome(String messageType) {
try {
return MessageTypeManager.getInstance().getMessageHome(messageType);
}
catch (IDOLookupException ile) {
throw new IBORuntimeException(ile);
}
}
public void deleteMessage(Object messagePK) throws FinderException {
Message message = getMessage(messagePK);
changeCaseStatus(message, getCaseStatusDeleted().getStatus(), message.getOwner());
}
public void markMessageAsRead(Message message) {
changeCaseStatus(message, getCaseStatusGranted().getPrimaryKey().toString(), message.getOwner());
}
public boolean isMessageRead(Message message) {
if ((message.getCaseStatus()).equals(getCaseStatusGranted())) {
return true;
}
return false;
}
public void flagMessageAsInactive(User performer, Message message) {
String newCaseStatus = getCaseStatusInactive().getStatus();
changeCaseStatus(message, newCaseStatus, performer);
}
public void flagMessagesAsInactive(User performer, String[] msgKeys) throws FinderException {
String newCaseStatus = getCaseStatusInactive().getStatus();
flagMessagesWithStatus(performer, msgKeys, newCaseStatus);
}
private void flagMessagesWithStatus(User performer, String[] msgKeys, String status) throws FinderException {
for (int i = 0; i < msgKeys.length; i++) {
super.changeCaseStatus(Integer.parseInt(msgKeys[i]), status, performer);
}
}
public Message getMessage(Object messagePK) throws FinderException {
Case theCase = getCase(new Integer(messagePK.toString()).intValue());
return getMessage(theCase.getCode(), messagePK);
}
public Message getMessage(String messageType, Object messagePK) throws FinderException {
return getMessageHome(messageType).findByPrimaryKey(messagePK);
}
public int getNumberOfMessages(String messageType, User user) throws IDOException {
String[] validStatuses = { getCaseStatusOpen().getStatus(), getCaseStatusGranted().getStatus() };
return getMessageHome(messageType).getNumberOfMessages(user, validStatuses);
}
public int getNumberOfNewMessages(String messageType, User user) throws IDOException {
String[] validStatuses = { getCaseStatusOpen().getStatus() };
return getMessageHome(messageType).getNumberOfMessages(user, validStatuses);
}
public int getNumberOfMessages(String messageType, User user, Collection groups) throws IDOException {
String[] validStatuses = { getCaseStatusOpen().getStatus(), getCaseStatusGranted().getStatus() };
return getMessageHome(messageType).getNumberOfMessages(user, groups, validStatuses);
}
public Collection findMessages(String messageType, User user) throws FinderException {
String[] validStatuses = { getCaseStatusOpen().getStatus(), getCaseStatusGranted().getStatus() };
return getMessageHome(messageType).findMessages(user, validStatuses);
}
public Collection findMessages(String messageType, User user, int numberOfEntries, int startingEntry) throws FinderException {
String[] validStatuses = { getCaseStatusOpen().getStatus(), getCaseStatusGranted().getStatus() };
return getMessageHome(messageType).findMessages(user, validStatuses, numberOfEntries, startingEntry);
}
public Collection findMessages(String messageType, User user, Collection groups, int numberOfEntries, int startingEntry) throws FinderException {
String[] validStatuses = { getCaseStatusOpen().getStatus(), getCaseStatusGranted().getStatus() };
return getMessageHome(messageType).findMessages(user, groups, validStatuses, numberOfEntries, startingEntry);
}
public Collection findMessages(String messageType, Group group) throws FinderException {
String[] validStatuses = { getCaseStatusOpen().getStatus(), getCaseStatusGranted().getStatus() };
return getMessageHome(messageType).findMessages(group, validStatuses);
}
public Collection findMessages(String messageType, Group group, int numberOfEntries, int startingEntry) throws FinderException {
String[] validStatuses = { getCaseStatusOpen().getStatus(), getCaseStatusGranted().getStatus() };
return getMessageHome(messageType).findMessages(group, validStatuses, numberOfEntries, startingEntry);
}
public Message createMessage(String messageType) throws CreateException {
return getMessageHome(messageType).create();
}
public Message createMessage(MessageValue msgValue) throws CreateException {
Message message = createMessage(msgValue.getMessageType());
message.setOwner(msgValue.getReceiver());
if (msgValue.getSender() != null) {
message.setSender(msgValue.getSender());
}
if (message.getHandler() != null) {
message.setHandler(msgValue.getHandler());
}
message.setSubject(msgValue.getSubject());
message.setBody(msgValue.getBody());
if (message.getParentCase() != null) {
message.setParentCase(msgValue.getParentCase());
}
try {
message.store();
}
catch (IDOStoreException idos) {
throw new IDOCreateException(idos);
}
return message;
}
}