/*
* $Id: EmailHomeImpl.java,v 1.3 2006/06/01 15:20:02 thomas Exp $
* Created on May 16, 2006
*
* Copyright (C) 2006 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.core.contact.data;
import java.rmi.RemoteException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.logging.Level;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import com.idega.data.IDOEntity;
import com.idega.data.IDOFactory;
import com.idega.data.IDOStoreException;
import com.idega.user.data.Group;
import com.idega.user.data.User;
import com.idega.util.ListUtil;
import com.idega.util.StringUtil;
/**
*
* Last modified: $Date: 2006/06/01 15:20:02 $ by $Author: thomas $
*
* @author <a href="mailto:thomas@idega.com">thomas</a>
* @version $Revision: 1.3 $
*/
public class EmailHomeImpl extends IDOFactory implements EmailHome {
private static final long serialVersionUID = -3828302165942058939L;
@Override
protected Class<Email> getEntityInterfaceClass() {
return Email.class;
}
public Email create() throws javax.ejb.CreateException {
return (Email) super.createIDO();
}
/*
* (non-Javadoc)
* @see com.idega.core.contact.data.EmailHome#findByPrimaryKey(java.lang.Object)
*/
@Override
public Email findByPrimaryKey(Object pk) {
try {
return (Email) super.findByPrimaryKeyIDO(pk);
} catch (FinderException e) {
java.util.logging.Logger.getLogger(getClass().getName()).log(
Level.WARNING,
"Failed to find email by primary key: " + pk);
}
return null;
}
public Collection<Email> findEmailsForUser(com.idega.user.data.User user) throws FinderException, RemoteException {
EmailBMPBean entity = (EmailBMPBean) idoCheckOutPooledEntity();
java.util.Collection<Object> ids = entity.ejbFindEmailsForUser(user);
return this.getEntityCollectionForPrimaryKeys(ids);
}
public Collection<Email> findEmailsForUser(int iUserId) throws FinderException {
EmailBMPBean entity = (EmailBMPBean) idoCheckOutPooledEntity();
java.util.Collection<Object> ids = entity.ejbFindEmailsForUser(iUserId);
return this.getEntityCollectionForPrimaryKeys(ids);
}
public Email findEmailForUser(com.idega.user.data.User user, EmailType emailType) throws FinderException, RemoteException {
com.idega.data.IDOEntity entity = this.idoCheckOutPooledEntity();
Object pk = ((EmailBMPBean) entity).ejbFindEmailForUser(user, emailType);
this.idoCheckInPooledEntity(entity);
return this.findByPrimaryKey(pk);
}
/**
* Just a shortcut for the main email type
*/
public Email findMainEmailForUser(com.idega.user.data.User user) throws FinderException, RemoteException {
com.idega.data.IDOEntity entity = this.idoCheckOutPooledEntity();
Object pk = ((EmailBMPBean) entity).ejbFindMainEmailForUser(user);
this.idoCheckInPooledEntity(entity);
return this.findByPrimaryKey(pk);
}
public Email findEmailForGroup(Group group, EmailType emailType) throws FinderException, RemoteException {
com.idega.data.IDOEntity entity = this.idoCheckOutPooledEntity();
Object pk = ((EmailBMPBean) entity).ejbFindEmailForGroup(group, emailType);
this.idoCheckInPooledEntity(entity);
return this.findByPrimaryKey(pk);
}
/**
* Just a shortcut for the main email type
*/
public Email findMainEmailForGroup(Group group) throws FinderException, RemoteException {
com.idega.data.IDOEntity entity = this.idoCheckOutPooledEntity();
Object pk = ((EmailBMPBean) entity).ejbFindMainEmailForGroup(group);
return this.findByPrimaryKey(pk);
}
public Email findByPrimaryKeyLegacy(int id) throws java.sql.SQLException{
try{
return findByPrimaryKey(id);
}
catch(javax.ejb.FinderException fe){
throw new java.sql.SQLException(fe.getMessage());
}
}
public Email findByPrimaryKey(int id) throws javax.ejb.FinderException{
return (Email) super.findByPrimaryKeyIDO(id);
}
public Email createLegacy(){
try{
return create();
}
catch(javax.ejb.CreateException ce){
throw new RuntimeException("CreateException:"+ce.getMessage());
}
}
public Collection<Email> findMainEmailsForUsers(Collection<User> users) throws FinderException {
IDOEntity entity = this.idoCheckOutPooledEntity();
Collection<Integer> ids = ((EmailBMPBean) entity).ejbFindMainEmailsForUsers(users);
return this.findByPrimaryKeyCollection(ids);
}
/*
* (non-Javadoc)
* @see com.idega.core.contact.data.EmailHome#findByEmailAddress(java.util.Collection)
*/
@Override
public Collection<Email> findByEmailAddress(Collection<String> emailAddress) {
EmailBMPBean entity = (EmailBMPBean) idoCheckOutPooledEntity();
Collection<Object> ids = entity.ejbFindByEmailAddress(emailAddress);
try {
return getEntityCollectionForPrimaryKeys(ids);
} catch (FinderException e) {
java.util.logging.Logger.getLogger(getClass().getName()).log(
Level.WARNING,
"Failed to get " + this.getClass().getName() +
"'s by id's: " + ids);
}
return Collections.emptyList();
}
/*
* (non-Javadoc)
* @see com.idega.core.contact.data.EmailHome#findByEmailAddressPart(java.lang.String)
*/
@Override
public Collection<Email> findByEmailAddressPart(String emailAddress) {
if (StringUtil.isEmpty(emailAddress)) {
return Collections.emptyList();
}
EmailBMPBean entity = (EmailBMPBean) idoCheckOutPooledEntity();
Collection<Object> ids = entity.ejbFindByEmailAddressPart(emailAddress);
try {
return getEntityCollectionForPrimaryKeys(ids);
} catch (FinderException e) {
java.util.logging.Logger.getLogger(getClass().getName()).log(
Level.WARNING,
"Failed to get " + this.getClass().getName() +
"'s by id's: " + ids);
}
return Collections.emptyList();
}
/*
* (non-Javadoc)
* @see com.idega.core.contact.data.EmailHome#update(java.lang.String, java.lang.String)
*/
@Override
public Email update(String primaryKey, String emailAddress) {
Email email = null;
if (!StringUtil.isEmpty(primaryKey)) {
email = findByPrimaryKey(primaryKey);
}
if (!StringUtil.isEmpty(emailAddress)) {
if (email == null) {
Collection<Email> emails = findByEmailAddress(Arrays.asList(emailAddress));
if (!ListUtil.isEmpty(emails)) {
email = emails.iterator().next();
} else {
try {
email = createEntity();
} catch (CreateException e) {
java.util.logging.Logger.getLogger(getClass().getName()).log(
Level.WARNING,
"Failed to create " + getEntityBeanClass().getName() +
" cause of: ", e);
return null;
}
}
}
email.setEmailAddress(emailAddress);
}
try {
email.store();
return email;
} catch (IDOStoreException e) {
java.util.logging.Logger.getLogger(getClass().getName()).log(
Level.WARNING,
"Failed to store " + getEntityBeanClass().getName() +
" cause of: ", e);
}
return null;
}
}