1 package com.atlassian.user.impl.hibernate;
2
3 import java.util.Iterator;
4
5 import net.sf.hibernate.HibernateException;
6 import net.sf.hibernate.Query;
7 import net.sf.hibernate.Session;
8 import net.sf.hibernate.SessionFactory;
9
10 import org.springframework.orm.hibernate.HibernateCallback;
11 import org.springframework.orm.hibernate.SessionFactoryUtils;
12 import org.springframework.orm.hibernate.support.HibernateDaoSupport;
13
14 import com.atlassian.user.ExternalEntity;
15
16 public class DefaultExternalEntityDAO extends HibernateDaoSupport implements ExternalEntityDAO
17 {
18
19
20
21 public static final String EXTERNAL_ENTITY_PREFIX = "ATLUSER_";
22 public static final String EXTERNAL_ENTITY_TYPE = "EXT";
23
24 public DefaultExternalEntityDAO(SessionFactory sessionFactory)
25 {
26 setSessionFactory(sessionFactory);
27 }
28
29 public ExternalEntity getExternalEntity(final String externalEntityName)
30 {
31 return (ExternalEntity) getHibernateTemplate().execute(new HibernateCallback()
32 {
33 public Object doInHibernate(Session session) throws HibernateException
34 {
35 Query queryObject = session.getNamedQuery("atluser.externalEntity_findExternalEntity");
36 SessionFactoryUtils.applyTransactionTimeout(queryObject, getSessionFactory());
37
38 Iterator iterator = queryObject.setString("externalEntityName", externalEntityName).iterate();
39 if (iterator.hasNext())
40 return iterator.next();
41 else
42 return null;
43 }
44 });
45 }
46
47 public void removeExternalEntity(String externalEntityName)
48 {
49 getHibernateTemplate().delete(getExternalEntity(externalEntityName));
50 getHibernateTemplate().flush();
51 }
52
53 public void saveExternalEntity(ExternalEntity externalEntity)
54 {
55 getHibernateTemplate().save(externalEntity);
56 getHibernateTemplate().flush();
57 }
58
59
60 public ExternalEntity createExternalEntity(String externalEntityName)
61 {
62 DefaultHibernateExternalEntity externalEntity = new DefaultHibernateExternalEntity();
63 externalEntity.setName(externalEntityName);
64 externalEntity.setType(EXTERNAL_ENTITY_TYPE);
65 saveExternalEntity(externalEntity);
66 return externalEntity;
67 }
68 }