1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 package org.ogf.graap.wsag.wsrf.persistence;
36
37 import javax.persistence.EntityManager;
38 import javax.persistence.RollbackException;
39
40 import org.apache.log4j.Logger;
41 import org.ogf.graap.wsag.api.Agreement;
42 import org.ogf.graap.wsag.server.persistence.EmfRegistry;
43 import org.ogf.graap.wsag.server.persistence.PersistentAgreement;
44 import org.w3.x2005.x08.addressing.EndpointReferenceType;
45
46
47
48
49
50
51
52
53 public class WsDatabasePersistentAgreement implements PersistentAgreement
54 {
55
56 private final Logger log = Logger.getLogger( WsDatabasePersistentAgreement.class );
57
58 private EndpointReferenceType epr;
59
60 private PersistentAgreement agreement;
61
62 private String factoryId;
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 public WsDatabasePersistentAgreement( PersistentAgreement agreement, EndpointReferenceType epr,
78 String agreementFactoryId )
79 {
80
81 this.epr = epr;
82 this.agreement = agreement;
83 this.factoryId = agreementFactoryId;
84 }
85
86
87
88
89 public void save() throws Exception
90 {
91 log.warn( "WsDatabasePersistentAgreement -> save()" );
92
93
94 EntityManager em = EmfRegistry.getEntityManager();
95
96
97 em.getTransaction().begin();
98
99 AgreementEprContainer agreementEprContainer = null;
100 try
101 {
102
103 agreementEprContainer = new AgreementEprContainer();
104 agreementEprContainer.setAgreementId( agreement.getAgreement().getAgreementId() );
105 agreementEprContainer.setAgreementFactoryId( factoryId );
106 agreementEprContainer.setEpr( epr );
107
108
109 em.persist( agreementEprContainer );
110
111
112 em.getTransaction().commit();
113 }
114 catch ( RollbackException ex )
115 {
116 log.error( "Could not persist the agreements' EPR. Rollback the commit." );
117
118 em.getTransaction().rollback();
119
120 throw new Exception( "Could not persist the agreements' EPR." );
121 }
122
123
124 try
125 {
126 agreement.save();
127 }
128 catch ( Exception ex )
129 {
130
131 em.getTransaction().begin();
132 em.remove( agreementEprContainer );
133 em.getTransaction().commit();
134 }
135
136
137 em.close();
138 }
139
140
141
142
143 public EndpointReferenceType getAgreementEPR()
144 {
145 return epr;
146 }
147
148
149
150
151
152
153 public void setAgreementEPR( EndpointReferenceType agreementEpr )
154 {
155 this.epr = agreementEpr;
156 }
157
158 @Override
159 public String toString()
160 {
161 return "WsDatabasePersistentAgreement [agreementId: '" + agreement.getAgreement().getAgreementId()
162 + "', name: '" + agreement.getAgreement().getName() + "', agreementFactoryId: '" + factoryId
163 + "']";
164 }
165
166
167
168
169
170
171 public Agreement getAgreement()
172 {
173 return agreement.getAgreement();
174 }
175
176
177
178
179
180
181 public void load() throws Exception
182 {
183 agreement.load();
184 }
185 }