001/** 002 * Copyright 2011 The Kuali Foundation Licensed under the 003 * Educational Community License, Version 2.0 (the "License"); you may 004 * not use this file except in compliance with the License. You may 005 * obtain a copy of the License at 006 * 007 * http://www.osedu.org/licenses/ECL-2.0 008 * 009 * Unless required by applicable law or agreed to in writing, 010 * software distributed under the License is distributed on an "AS IS" 011 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 012 * or implied. See the License for the specific language governing 013 * permissions and limitations under the License. 014 */ 015 016package org.kuali.mobility.push.dao; 017 018import java.util.List; 019 020import javax.persistence.EntityManager; 021import javax.persistence.NoResultException; 022import javax.persistence.PersistenceContext; 023import javax.persistence.Query; 024 025import org.kuali.mobility.push.entity.Sender; 026import org.springframework.stereotype.Repository; 027import org.springframework.transaction.annotation.Transactional; 028 029/** 030 * Implementation of the Sender Data Access Object. 031 * 032 * @author Kuali Mobility Team (mobility.dev@kuali.org) 033 * @since 2.0.0 034 */ 035@Repository 036public class SenderDaoImpl implements SenderDao{ 037 038 /** A reference to a logger */ 039 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(DeviceDaoImpl.class); 040 041 @PersistenceContext 042 private EntityManager entityManager; 043 044 /** 045 * Creates new instance of the <code>DeviceDaoImpl</code>. 046 */ 047 public SenderDaoImpl(){} 048 049 /* 050 * (non-Javadoc) 051 * @see org.kuali.mobility.push.dao.SenderDao#findAllSenders() 052 */ 053 public List<Sender> findAllSenders(){ 054 Query query = entityManager.createQuery("select s from Sender s order by s.name"); 055 return query.getResultList(); 056 } 057 058 /* 059 * (non-Javadoc) 060 * @see org.kuali.mobility.push.dao.SenderDao#findAllUnhiddenSenders() 061 */ 062 public List<Sender> findAllUnhiddenSenders(){ 063 Query query = entityManager.createQuery("select s from Sender s where s.hidden = 0 order by s.name"); 064 return query.getResultList(); 065 } 066 067 /* 068 * (non-Javadoc) 069 * @see org.kuali.mobility.push.dao.SenderDao#findSenderById(long) 070 */ 071 public Sender findSenderById(long id){ 072 Query query = entityManager.createQuery("select s from Sender s where s.id = :id"); 073 query.setParameter("id", id); 074 Sender s; 075 try{ 076 s = (Sender)query.getSingleResult(); 077 }catch(NoResultException e){ 078 LOG.info("Sender with id " + id + " was not found or was invalid."); 079 return null; 080 } 081 return s; } 082 083 /* 084 * (non-Javadoc) 085 * @see org.kuali.mobility.push.dao.SenderDao#findSenderByName(java.lang.String) 086 */ 087 public Sender findSenderByName(String name){ 088 Query query = entityManager.createQuery("select s from Sender s where s.name = :name"); 089 query.setParameter("name", name); 090 Sender s; 091 try{ 092 s = (Sender)query.getSingleResult(); 093 }catch(NoResultException e){ 094 LOG.info("Sender with name " + name + " was not found or was invalid."); 095 return null; 096 } 097 return s; 098 } 099 100 /* 101 * (non-Javadoc) 102 * @see org.kuali.mobility.push.dao.SenderDao#findSenderBySenderKey(java.lang.String) 103 */ 104 public Sender findSenderBySenderKey(String senderKey){ 105 Query query = entityManager.createQuery("select s from Sender s where s.senderKey = :senderKey"); 106 query.setParameter("senderKey", senderKey); 107 Sender s; 108 try{ 109 s = (Sender)query.getSingleResult(); 110 }catch(NoResultException e){ 111 LOG.info("Sender with senderKey " + senderKey + " was not found or was invalid."); 112 return null; 113 } 114 return s; 115 } 116 117 /* 118 * (non-Javadoc) 119 * @see org.kuali.mobility.push.dao.SenderDao#findSenderByShortName(java.lang.String) 120 */ 121 public Sender findSenderByShortName(String shortName){ 122 Query query = entityManager.createQuery("select s from Sender s where s.shortName = :shortName"); 123 query.setParameter("shortName", shortName); 124 Sender s; 125 try{ 126 s = (Sender)query.getSingleResult(); 127 }catch(NoResultException e){ 128 LOG.info("Sender with Shortname " + shortName + " was not found or was invalid."); 129 return null; 130 } 131 return s; 132 } 133 134 /* 135 * (non-Javadoc) 136 * @see org.kuali.mobility.push.dao.SenderDao#isValidSenderKey(java.lang.String) 137 */ 138 public boolean isValidSenderKey(String senderKey){ 139 Query query = entityManager.createQuery("select s from Sender s where s.senderKey = :senderKey"); 140 query.setParameter("senderKey", senderKey); 141 try{ 142 query.getSingleResult(); 143 }catch(Exception e){ 144 LOG.info("SenderKey " + senderKey + " was not found or was invalid."); 145 return false; 146 } 147 return true; 148 } 149 150 /* 151 * (non-Javadoc) 152 * @see org.kuali.mobility.push.dao.SenderDao#saveSender(org.kuali.mobility.push.entity.Sender) 153 */ 154 public void saveSender(Sender sender){ 155 LOG.info("SenderDaoImpl.saveSender"); 156 if(sender == null){ 157 return; 158 } 159 LOG.info("SenderDaoImpl.saveSender : id = " + sender.getId()); 160 if(sender.getId() == null){ 161 LOG.info("SenderDaoImpl.saveSender : persist"); 162 entityManager.persist(sender); 163 }else{ 164 LOG.info("SenderDaoImpl.saveSender : merge"); 165 entityManager.merge(sender); 166 } 167 } 168 169 /* 170 * (non-Javadoc) 171 * @see org.kuali.mobility.push.dao.SenderDao#removeSender(org.kuali.mobility.push.entity.Sender) 172 */ 173 @Transactional 174 public boolean removeSender(Sender sender){ 175 boolean result = true; 176 if(sender == null){ 177 return false; 178 } 179 if(sender.getId() != null){ 180 try{ 181 Sender s = entityManager.find(Sender.class, sender.getId()); 182 entityManager.remove(s); 183 }catch(Exception e){ 184 LOG.info("Exception Caught: " + e.getMessage()); 185 result = false; 186 } 187 } 188 return result; 189 } 190 191 /** A reference to the <code>EntityManager</code> */ /** 192 * Returns the reference to the <code>EntityManager</code> 193 * @return The reference to the <code>EntityManager</code> 194 */ 195 public EntityManager getEntityManager() { 196 return entityManager; 197 } 198 199 /** 200 * Sets the reference to the <code>EntityManager</code> 201 * @param entityManager The reference to the <code>EntityManager</code> 202 */ 203 public void setEntityManager(EntityManager entityManager) { 204 this.entityManager = entityManager; 205 } 206}