/*
* Copyright 2008-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package es.alvsanand.webpage.db.dao.admin;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import es.alvsanand.webpage.db.QueryBean;
import es.alvsanand.webpage.db.dao.DAOException;
import es.alvsanand.webpage.db.dao.DAOHelper;
import es.alvsanand.webpage.model.Avatar;
import es.alvsanand.webpage.model.User;
/**
* Implementation of the <code>es.alvsanand.webpage.db.dao.security.AvatarDAO</code>
*
* @author alvaro.santos
* @date 28/07/2010
*
*/
public class AvatarDAOImpl extends DAOHelper implements AvatarDAO{
/**
* Name of the query for delete an avatar
*/
private final static String DELETE_AVATAR_NQ = "DELETE from Avatar avatar WHERE avatar.idAvatar = :idAvatar";
/**
* Name of the query for obtaining an avatar by idAvatar
*/
private final static String FIND_AVATAR_NQ = "SELECT avatar FROM Avatar avatar WHERE avatar.idAvatar = :idAvatar";
/**
* Name of the query for obtaining an avatar by User
*/
private final static String FIND_AVATAR_BY_USER_NQ = "SELECT avatar FROM Avatar avatar WHERE avatar.idUser = :idUser";
/**
* Name of the query for selecting all avatars
*/
private final static String FIND_ALL_AVATAR_NQ = "SELECT avatar FROM Avatar avatar";
/**
* Name of the query for obtaining the count of avatars
*/
private final static String COUNT_AVATAR_NQ = "SELECT count(avatar) FROM Avatar avatar";
/* (non-Javadoc)
* @see es.alvsanand.webpage.db.dao.cms.AvatarDAO#getAvatars(es.alvsanand.webpage.db.QueryBean)
*/
public List<Avatar> getAvatars(QueryBean queryBean) throws DAOException{
try{
EntityManager entityManager = getEntityManager();
Query q = getQuery(entityManager, FIND_ALL_AVATAR_NQ, queryBean);
Object resultObj = q.getResultList();
List<Avatar> result = new java.util.ArrayList<Avatar>((List<Avatar>)resultObj);
entityManager.close();
return result;
}
catch(NoResultException noResultException){
return null;
}
catch(Throwable e){
throw new DAOException("Error getting Avatar beans: " + e.getMessage(), e);
}
}
/* (non-Javadoc)
* @see es.alvsanand.webpage.db.dao.cms.AvatarDAO#getAvatar(es.alvsanand.webpage.model.Avatar)
*/
public Avatar getAvatar(Avatar avatar) throws DAOException{
try{
if(avatar==null || avatar.getIdAvatar()==null){
throw new IllegalArgumentException();
}
EntityManager entityManager = getEntityManager();
Query q = getQuery(entityManager, FIND_AVATAR_NQ, null);
q.setParameter("idAvatar", avatar.getIdAvatar());
Object resultObj = q.getSingleResult();
Avatar result = (Avatar)resultObj;
entityManager.close();
return result;
}
catch(NoResultException noResultException){
return null;
}
catch(Throwable e){
throw new DAOException("Error getting Avatar bean by Key: " + e.getMessage(), e);
}
}
/* (non-Javadoc)
* @see es.alvsanand.webpage.db.dao.admin.AvatarDAO#getAvatarByUser(es.alvsanand.webpage.model.User)
*/
public Avatar getAvatarByUser(User user) throws DAOException{
try{
if(user==null || user.getIdUser()==null){
throw new IllegalArgumentException();
}
EntityManager entityManager = getEntityManager();
Query q = getQuery(entityManager, FIND_AVATAR_BY_USER_NQ, null);
q.setParameter("idUser", user.getIdUser());
Object resultObj = q.getSingleResult();
Avatar result = (Avatar)resultObj;
entityManager.close();
return result;
}
catch(NoResultException noResultException){
return null;
}
catch(Throwable e){
throw new DAOException("Error getting Avatar bean by user: " + e.getMessage(), e);
}
}
/* (non-Javadoc)
* @see es.alvsanand.webpage.db.dao.cms.AvatarDAO#getAvatarCount()
*/
public int getAvatarCount() throws DAOException{
try{
EntityManager entityManager = getEntityManager();
Query q = getQuery(entityManager, COUNT_AVATAR_NQ, null);
Object resultObj = q.getSingleResult();
entityManager.close();
return ((Integer)resultObj).intValue();
}
catch(NoResultException noResultException){
return 0;
}
catch(Throwable e){
throw new DAOException("Error getting count of Avatar beans: " + e.getMessage(), e);
}
}
/* (non-Javadoc)
* @see es.alvsanand.webpage.db.dao.cms.AvatarDAO#deleteAvatar(es.alvsanand.webpage.model.Avatar)
*/
public void deleteAvatar(Avatar avatar) throws DAOException {
if(avatar!=null && avatar.getIdAvatar()!=null){
EntityManager entityManager = getEntityManager();
try{
//Deleting Avatar
{
Query q = getQuery(entityManager, DELETE_AVATAR_NQ, null);
q.setParameter("idAvatar", avatar.getIdAvatar());
q.executeUpdate();
}
}
catch(Throwable e){
throw new DAOException("Error deleting Avatar bean: " + e.getMessage(), e);
}
finally{
entityManager.close();
}
}
else{
throw new DAOException("Error deleting Avatar bean: the avatar is null or empty");
}
}
/* (non-Javadoc)
* @see es.alvsanand.webpage.db.dao.cms.AvatarDAO#saveOrUpdateAvatar(es.alvsanand.webpage.model.Avatar)
*/
public void saveOrUpdateAvatar(Avatar avatar) throws DAOException {
if(avatar!=null){
EntityManager entityManager = getEntityManager();
try{
avatar = entityManager.merge(avatar);
entityManager.persist(avatar);
}
catch(Throwable e){
throw new DAOException("Error saving or updating Avatar bean: " + e.getMessage(), e);
}
finally{
entityManager.close();
}
}
else{
throw new DAOException("Error saving or updating Avatar bean: the avatar is null or empty");
}
}
}