View Javadoc
1 /* 2 * Copyright (c) 2003 3 * Information Desire GmbH 4 * All rights reserved. 5 */ 6 package com.infodesire.infobit.dao; 7 8 import com.infodesire.infobit.security.SecurityProvider; 9 import com.infodesire.infobit.hibernate.SessionProvider; 10 import com.infodesire.infobit.InfobitException; 11 12 import net.sf.hibernate.Session; 13 import net.sf.hibernate.Query; 14 import net.sf.hibernate.HibernateException; 15 16 import org.apache.commons.logging.Log; 17 import org.apache.commons.logging.LogFactory; 18 19 import java.io.Serializable; 20 21 import java.util.Map; 22 import java.util.List; 23 import java.util.Iterator; 24 /*** 25 * implements base DAO capabilities. - low level persistence and security 26 * checking derived classes shall do transaction management 27 * 28 * @author konstantin 29 * @created August 8, 2003 30 * @version $Revision: 1.7 $ 31 */ 32 public class BaseDAO { 33 private static Log _log = LogFactory.getLog(BaseDAO.class); 34 35 private SecurityProvider _securityProvider; 36 37 private SessionProvider _sessionProvider; 38 39 40 /*** 41 * Constructor for the InfobitDAO object 42 * 43 * @param sec Description of Parameter 44 * @param sess Description of Parameter 45 */ 46 public BaseDAO(SecurityProvider sec, SessionProvider sess) { 47 setSessionProvider(sess); 48 setSecurityProvider(sec); 49 } 50 51 52 /*** 53 * Gets the SecurityProvider attribute of the InfobitDAO object 54 * 55 * @return The SecurityProvider value 56 */ 57 public SecurityProvider getSecurityProvider() { 58 return _securityProvider; 59 } 60 61 62 /*** 63 * Gets the SessionProvider attribute of the InfobitDAO object 64 * 65 * @return The SessionProvider value 66 */ 67 public SessionProvider getSessionProvider() { 68 return _sessionProvider; 69 } 70 71 72 /*** 73 * Sets the SecurityProvider attribute of the InfobitDAO object 74 * 75 * @param securityProvider The new SecurityProvider value 76 */ 77 public void setSecurityProvider(SecurityProvider securityProvider) { 78 _securityProvider = securityProvider; 79 } 80 81 82 /*** 83 * Sets the SessionProvider attribute of the InfobitDAO object 84 * 85 * @param sessionProvider The new SessionProvider value 86 */ 87 public void setSessionProvider(SessionProvider sessionProvider) { 88 _sessionProvider = sessionProvider; 89 } 90 91 92 /*** 93 * perform query somebody already rigged up for us 94 * 95 * @param query Description of Parameter 96 * @return Description of the Returned Value 97 * @exception Exception Description of Exception 98 */ 99 public List performQuery(String query) throws Exception { 100 List retval; 101 Session sess = getSessionProvider().getSession(); 102 try { 103 retval = sess.find(query); 104 } catch (Exception ex) { 105 _log.error("exception while performing query , session killed", ex); 106 getSessionProvider().rollback(); 107 getSessionProvider().returnCloseSession(sess); 108 throw ex; 109 } 110 getSessionProvider().returnSession(sess); 111 return retval; 112 } 113 114 115 /*** 116 * perform hibernate query. 117 * 118 * @param name name of the query 119 * @param parameters map of parameters 120 * @return result list 121 * @exception Exception thrown by hibernate 122 */ 123 public List performQuery(String name, Map parameters) throws Exception { 124 Session sess = null; 125 List retval = null; 126 Query query = null; 127 String param = null; 128 129 sess = getSessionProvider().getSession(); 130 try { 131 //tr = sess.beginTransaction(); 132 query = sess.getNamedQuery(name); 133 for (Iterator iter = parameters.keySet().iterator(); iter.hasNext(); ) { 134 param = (String) iter.next(); 135 query.setParameter(param, parameters.get(param)); 136 } 137 retval = query.list(); 138 } catch (Exception ex) { 139 _log.error("exception while performing query , session killed", ex); 140 getSessionProvider().rollback(); 141 getSessionProvider().returnCloseSession(sess); 142 throw ex; 143 } 144 getSessionProvider().returnSession(sess); 145 return retval; 146 } 147 148 149 /*** 150 * load persistent entity 151 * 152 * @param clazz Description of Parameter 153 * @param id Description of Parameter 154 * @return Description of the Returned Value 155 * @exception Exception Description of Exception 156 */ 157 public Object doLoad(Class clazz, Serializable id) throws Exception { 158 Session sess = getSessionProvider().getSession(); 159 Object retval = null; 160 try { 161 retval = sess.load(clazz, id); 162 } catch (Exception ex) { 163 _log.error("exception while updating object , transaction was rolled back. session killed", ex); 164 getSessionProvider().returnCloseSession(sess); 165 throw ex; 166 } 167 168 getSessionProvider().returnSession(sess); 169 return retval; 170 } 171 172 173 /*** 174 * perform transactionally safe object creation 175 * 176 * @param obj Description of Parameter 177 * @return Description of the Returned Value 178 * @exception Exception Description of Exception 179 */ 180 Serializable doCreate(Object obj) throws Exception { 181 Session sess = null; 182 Object retval; 183 Serializable id; 184 sess = getSessionProvider().getSession(); 185 try { 186 id = sess.save(obj); 187 188 } catch (Exception ex) { 189 _log.error("exception while creating object , transaction was rolled back. session killed", ex); 190 getSessionProvider().rollback(); 191 getSessionProvider().returnCloseSession(sess); 192 throw ex; 193 } 194 //sess.evict(obj); 195 getSessionProvider().returnSession(sess); 196 return id; 197 } 198 199 200 /*** 201 * update state of persistent object 202 * 203 * @param obj object to be updated 204 * @exception Exception thrown on behaf of hibernate 205 */ 206 void doUpdate(Object obj) throws Exception { 207 Session sess = null; 208 Object retval; 209 sess = getSessionProvider().getSession(); 210 try { 211 sess.update(obj); 212 } catch (Exception ex) { 213 _log.error("exception while updating object , transaction was rolled back. session killed", ex); 214 getSessionProvider().rollback(); 215 getSessionProvider().returnCloseSession(sess); 216 throw ex; 217 } 218 219 getSessionProvider().returnSession(sess); 220 } 221 222 223 /*** 224 * delete object from datastore 225 * 226 * @param obj object to be removed 227 * @exception Exception thrown on behalf of hibernate 228 */ 229 void doRemove(Object obj) throws Exception { 230 Session sess = getSessionProvider().getSession(); 231 try { 232 if (!sess.contains(obj)) { 233 Object o = sess.load(obj.getClass(), ((BaseEntityImpl) obj).getId()); 234 sess.delete(o); 235 } 236 else { 237 sess.delete(obj); 238 } 239 } catch (Exception ex) { 240 _log.error("exception while updating object , transaction was rolled back. session killed", ex); 241 getSessionProvider().rollback(); 242 getSessionProvider().returnCloseSession(sess); 243 throw ex; 244 } 245 246 getSessionProvider().returnSession(sess); 247 248 } 249 }

This page was automatically generated by Maven