View Javadoc

1   package org.minetti.astrodevice.server.hibernate.dao;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   import javax.persistence.EntityManager;
6   import javax.persistence.Query;
7   import org.minetti.astrodevice.server.core.dao.ObservingSiteDao;
8   import org.minetti.astrodevice.server.core.object.CelestialLimitPoint;
9   import org.minetti.astrodevice.server.core.object.ObservingSite;
10  import org.minetti.astrodevice.server.hibernate.object.CelestialLimitPointImpl;
11  import org.minetti.astrodevice.server.hibernate.object.ObservingSiteImpl;
12  
13  /**
14   * DAO for observing sites with Hibernate framework.
15   * @author Jean-Philippe MINETTI
16   */
17  public final class ObservingSiteDaoImpl
18  		implements ObservingSiteDao {
19  
20  	/**
21  	 * Entity manager.
22  	 */
23  	private final EntityManager entityManager;
24  
25  	/**
26  	 * Hidden constructor.
27  	 * @param entityManager Entity manager.
28  	 */
29  	protected ObservingSiteDaoImpl (final EntityManager entityManager) {
30  		super();
31  		this.entityManager = entityManager;
32  	}
33  
34  	/*
35  	 * (non-Javadoc)
36  	 * @see org.minetti.astrodevice.server.core.dao.ObservingSiteDao#find()
37  	 */
38  	@SuppressWarnings("unchecked")
39  	public List<ObservingSite> find () {
40  		final Query query = this.entityManager.createNamedQuery("allObservingSiteQuery");
41  		return query.getResultList();
42  	}
43  
44  	/*
45  	 * (non-Javadoc)
46  	 * @see org.minetti.astrodevice.server.core.dao.ObservingSiteDao#find(long)
47  	 */
48  	public ObservingSite find (final long id) {
49  		return this.entityManager.find(ObservingSiteImpl.class, new Long(id));
50  	}
51  
52  	/*
53  	 * (non-Javadoc)
54  	 * @see
55  	 * org.minetti.astrodevice.server.core.dao.ObservingSiteDao#persist(org.minetti.astrodevice.
56  	 * server.core.object.ObservingSite)
57  	 */
58  	public ObservingSite persist (final ObservingSite observingSite) {
59  		final ObservingSite persistantObservingSite = new ObservingSiteImpl(observingSite);
60  		this.entityManager.persist(persistantObservingSite);
61  		return persistantObservingSite;
62  	}
63  
64  	/*
65  	 * (non-Javadoc)
66  	 * @see
67  	 * org.minetti.astrodevice.server.core.dao.ObservingSiteDao#update(org.minetti.astrodevice.server
68  	 * .core.object. ObservingSite)
69  	 */
70  	public void update (final ObservingSite observingSite) {
71  		final List<CelestialLimitPoint> newLimitPointList = new ArrayList<CelestialLimitPoint>();
72  		for (final CelestialLimitPoint celestialLimitPoint : observingSite.getCelestialLimitPointSet()) {
73  			if (!(celestialLimitPoint instanceof CelestialLimitPointImpl)) {
74  				newLimitPointList.add(celestialLimitPoint);
75  			}
76  		}
77  		for (final CelestialLimitPoint celestialLimitPoint : newLimitPointList) {
78  			observingSite.getCelestialLimitPointSet().remove(celestialLimitPoint);
79  			observingSite.getCelestialLimitPointSet().add(new CelestialLimitPointImpl(celestialLimitPoint));
80  		}
81  		this.entityManager.merge(observingSite);
82  	}
83  
84  	/*
85  	 * (non-Javadoc)
86  	 * @see
87  	 * org.minetti.astrodevice.server.core.dao.ObservingSiteDao#remove(org.minetti.astrodevice.server
88  	 * .core.object. ObservingSite)
89  	 */
90  	public void remove (final ObservingSite observingSite) {
91  		this.entityManager.remove(observingSite);
92  	}
93  
94  	/*
95  	 * (non-Javadoc)
96  	 * @see java.lang.Object#toString()
97  	 */
98  	@Override
99  	public String toString () {
100 		return "ObservingSiteDaoImpl";
101 	}
102 
103 }