1 package org.apache.continuum.dao;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collection;
23 import java.util.List;
24
25 import javax.jdo.Extent;
26 import javax.jdo.PersistenceManager;
27 import javax.jdo.Query;
28 import javax.jdo.Transaction;
29
30 import org.apache.continuum.model.release.ContinuumReleaseResult;
31 import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
32 import org.apache.maven.continuum.store.ContinuumStoreException;
33 import org.springframework.stereotype.Repository;
34
35
36
37
38
39 @Repository("continuumReleaseResultDao")
40 public class ContinuumReleaseResultDaoImpl
41 extends AbstractDao
42 implements ContinuumReleaseResultDao
43 {
44 public ContinuumReleaseResult addContinuumReleaseResult( ContinuumReleaseResult releaseResult )
45 throws ContinuumStoreException
46 {
47 return (ContinuumReleaseResult) addObject( releaseResult );
48 }
49
50 public List<ContinuumReleaseResult> getAllContinuumReleaseResults()
51 {
52 return getAllObjectsDetached( ContinuumReleaseResult.class );
53 }
54
55 public ContinuumReleaseResult getContinuumReleaseResult( int releaseResultId )
56 throws ContinuumObjectNotFoundException, ContinuumStoreException
57 {
58 return (ContinuumReleaseResult) getObjectById( ContinuumReleaseResult.class, releaseResultId );
59 }
60
61 public ContinuumReleaseResult getContinuumReleaseResult( int projectId, String releaseGoal, long startTime, long endTime )
62 throws ContinuumStoreException
63 {
64 PersistenceManager pm = getPersistenceManager();
65
66 Transaction tx = pm.currentTransaction();
67
68 try
69 {
70 tx.begin();
71
72 Extent extent = pm.getExtent( ContinuumReleaseResult.class, true );
73
74 Query query = pm.newQuery( extent );
75
76 query.declareImports( "import java.lang.String" );
77
78 query.declareParameters( "int projectId, String releaseGoal, long startTime, long endTime" );
79
80 query.setFilter( "this.project.id == projectId && this.releaseGoal == releaseGoal && this.startTime == startTime && this.endTime == endTime" );
81
82 Object[] params = new Object[4];
83 params[0] = projectId;
84 params[1] = releaseGoal;
85 params[2] = startTime;
86 params[3] = endTime;
87
88 Collection result = (Collection) query.executeWithArray( params );
89
90 if ( result.size() == 0 )
91 {
92 tx.commit();
93
94 return null;
95 }
96
97 Object object = pm.detachCopy( result.iterator().next() );
98
99 tx.commit();
100
101 return (ContinuumReleaseResult) object;
102 }
103 finally
104 {
105 rollback( tx );
106 }
107
108 }
109
110 public List<ContinuumReleaseResult> getContinuumReleaseResultsByProjectGroup( int projectGroupId )
111 {
112 PersistenceManager pm = getPersistenceManager();
113
114 Transaction tx = pm.currentTransaction();
115
116 try
117 {
118 tx.begin();
119
120 Extent extent = pm.getExtent( ContinuumReleaseResult.class, true );
121
122 Query query = pm.newQuery( extent, "projectGroup.id == " + projectGroupId );
123
124 List result = (List) query.execute();
125
126 result = (List) pm.detachCopyAll( result );
127
128 tx.commit();
129
130 return result;
131 }
132 finally
133 {
134 rollback( tx );
135 }
136 }
137
138 public List<ContinuumReleaseResult> getContinuumReleaseResultsByProject( int projectId )
139 {
140 PersistenceManager pm = getPersistenceManager();
141
142 Transaction tx = pm.currentTransaction();
143
144 try
145 {
146 tx.begin();
147
148 Extent extent = pm.getExtent( ContinuumReleaseResult.class, true );
149
150 Query query = pm.newQuery( extent, "project.id == " + projectId );
151
152 List result = (List) query.execute();
153
154 result = (List) pm.detachCopyAll( result );
155
156 tx.commit();
157
158 return result;
159 }
160 finally
161 {
162 rollback( tx );
163 }
164 }
165
166 public void removeContinuumReleaseResult( ContinuumReleaseResult releaseResult )
167 throws ContinuumStoreException
168 {
169 removeObject( releaseResult );
170 }
171
172 }