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
15
16
17 public final class ObservingSiteDaoImpl
18 implements ObservingSiteDao {
19
20
21
22
23 private final EntityManager entityManager;
24
25
26
27
28
29 protected ObservingSiteDaoImpl (final EntityManager entityManager) {
30 super();
31 this.entityManager = entityManager;
32 }
33
34
35
36
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
46
47
48 public ObservingSite find (final long id) {
49 return this.entityManager.find(ObservingSiteImpl.class, new Long(id));
50 }
51
52
53
54
55
56
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
66
67
68
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
86
87
88
89
90 public void remove (final ObservingSite observingSite) {
91 this.entityManager.remove(observingSite);
92 }
93
94
95
96
97
98 @Override
99 public String toString () {
100 return "ObservingSiteDaoImpl";
101 }
102
103 }