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.api.types;
36
37 import java.util.HashMap;
38 import java.util.Map;
39
40 import org.apache.xmlbeans.XmlObject;
41 import org.ogf.graap.wsag.api.Agreement;
42 import org.ogf.graap.wsag.api.AgreementOffer;
43 import org.ogf.schemas.graap.wsAgreement.AgreementContextType;
44 import org.ogf.schemas.graap.wsAgreement.AgreementPropertiesDocument;
45 import org.ogf.schemas.graap.wsAgreement.AgreementPropertiesType;
46 import org.ogf.schemas.graap.wsAgreement.AgreementRoleType;
47 import org.ogf.schemas.graap.wsAgreement.AgreementStateDefinition;
48 import org.ogf.schemas.graap.wsAgreement.AgreementStateType;
49 import org.ogf.schemas.graap.wsAgreement.GuaranteeTermStateDefinition;
50 import org.ogf.schemas.graap.wsAgreement.GuaranteeTermStateType;
51 import org.ogf.schemas.graap.wsAgreement.GuaranteeTermType;
52 import org.ogf.schemas.graap.wsAgreement.ServiceDescriptionTermType;
53 import org.ogf.schemas.graap.wsAgreement.ServiceTermStateDefinition;
54 import org.ogf.schemas.graap.wsAgreement.ServiceTermStateType;
55 import org.ogf.schemas.graap.wsAgreement.TemplateDocument;
56 import org.ogf.schemas.graap.wsAgreement.TermTreeType;
57 import org.w3c.dom.Text;
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 public abstract class AbstractAgreementType extends WSAGXmlType implements Agreement
73 {
74
75
76
77
78 protected AgreementPropertiesType agreementProperties;
79
80
81
82
83 protected static final String DEFAULT_SDT_XPATH =
84 "declare namespace wsag='http://schemas.ggf.org/graap/2007/03/ws-agreement';"
85 + "$this/wsag:Terms/wsag:All//wsag:ServiceDescriptionTerm";
86
87
88
89
90 protected static final String DEFAULT_GUARANTEE_TERM_XPATH =
91 "declare namespace wsag='http://schemas.ggf.org/graap/2007/03/ws-agreement';"
92 + "$this/wsag:Terms/wsag:All//wsag:GuaranteeTerm";
93
94
95
96
97 private Map<String, XmlObject> persistedExecutionContext = new HashMap<String, XmlObject>();
98
99
100
101
102 private Map<String, Object> transcientExecutionContext = new HashMap<String, Object>();
103
104
105
106
107
108
109
110
111
112
113 public AbstractAgreementType( AgreementOffer offer )
114 {
115 super();
116 initialize( offer );
117 }
118
119
120
121
122
123
124
125 public AbstractAgreementType( AgreementPropertiesType agreementPropertiesType )
126 {
127 super();
128 this.agreementProperties = agreementPropertiesType;
129 }
130
131
132
133
134
135 public AbstractAgreementType()
136 {
137 super();
138
139 TemplateDocument templateDoc = TemplateDocument.Factory.newInstance();
140
141 templateDoc.addNewTemplate();
142
143 templateDoc.getTemplate().setAgreementId( "ID" );
144 templateDoc.getTemplate().addNewContext().setServiceProvider( AgreementRoleType.AGREEMENT_RESPONDER );
145
146 TermTreeType terms = templateDoc.getTemplate().addNewTerms();
147
148
149
150
151
152
153
154 Text text = terms.getDomNode().getOwnerDocument().createTextNode( " " );
155 terms.getDomNode().appendChild( text );
156
157 initialize( new AgreementOfferType( templateDoc.getTemplate() ) );
158 }
159
160
161
162
163
164
165 public boolean validate()
166 {
167 return validate( agreementProperties );
168 }
169
170
171
172
173
174
175
176
177 protected void initialize( AgreementOffer offer )
178 {
179 initialize( offer, DEFAULT_SDT_XPATH, DEFAULT_GUARANTEE_TERM_XPATH );
180 }
181
182
183
184
185
186
187
188
189
190
191
192
193 protected void initialize( AgreementOffer offer, String sdtXPath, String guaranteeTermXPath )
194 {
195
196
197
198 agreementProperties = AgreementPropertiesDocument.Factory.newInstance().addNewAgreementProperties();
199
200 agreementProperties.setAgreementId( offer.getAgreementId() );
201 agreementProperties.addNewContext().set( offer.getContext() );
202 agreementProperties.addNewTerms().set( offer.getTerms() );
203
204 agreementProperties.addNewAgreementState().setState( AgreementStateDefinition.OBSERVED );
205
206
207
208
209
210 XmlObject[] sdtArray = offer.getXMLObject().selectPath( sdtXPath );
211 for ( int i = 0; i < sdtArray.length; i++ )
212 {
213 ServiceDescriptionTermType sdt = (ServiceDescriptionTermType) sdtArray[i];
214 ServiceTermStateType sdtState = agreementProperties.addNewServiceTermState();
215
216 sdtState.setTermName( sdt.getName() );
217 sdtState.setState( ServiceTermStateDefinition.NOT_READY );
218 }
219
220
221
222
223
224 XmlObject[] guaranteeArray = offer.getXMLObject().selectPath( guaranteeTermXPath );
225 for ( int i = 0; i < guaranteeArray.length; i++ )
226 {
227 GuaranteeTermType guarantee = (GuaranteeTermType) guaranteeArray[i];
228 GuaranteeTermStateType guaranteeState = agreementProperties.addNewGuaranteeTermState();
229
230 guaranteeState.setTermName( guarantee.getName() );
231 guaranteeState.setState( GuaranteeTermStateDefinition.NOT_DETERMINED );
232 }
233 }
234
235
236
237
238
239
240
241
242
243 public final void notifyReload( Map<String, XmlObject> executionCtx )
244 {
245 persistedExecutionContext = executionCtx;
246 notifyReinitialized( persistedExecutionContext );
247 }
248
249
250
251
252
253
254
255
256
257
258
259 protected void notifyReinitialized( Map<String, XmlObject> persistedExecutionCtx )
260 {
261 }
262
263
264
265
266 public String getAgreementId()
267 {
268 return agreementProperties.getAgreementId();
269 }
270
271
272
273
274 public AgreementContextType getContext()
275 {
276 return agreementProperties.getContext();
277 }
278
279
280
281
282 public String getName()
283 {
284 return agreementProperties.getName();
285 }
286
287
288
289
290 public TermTreeType getTerms()
291 {
292 return agreementProperties.getTerms();
293 }
294
295
296
297
298
299
300
301 public void setAgreementId( String agreementId )
302 {
303 agreementProperties.setAgreementId( agreementId );
304 setChanged();
305 }
306
307
308
309
310
311
312
313 public void setContext( AgreementContextType context )
314 {
315 agreementProperties.setContext( context );
316 setChanged();
317 }
318
319
320
321
322
323
324
325 public void setName( String name )
326 {
327 agreementProperties.setName( name );
328 setChanged();
329 }
330
331
332
333
334
335
336
337 public void setTerms( TermTreeType terms )
338 {
339 agreementProperties.setTerms( terms );
340 setChanged();
341 }
342
343
344
345
346 public AgreementStateType getState()
347 {
348 return agreementProperties.getAgreementState();
349 }
350
351
352
353
354 public GuaranteeTermStateType[] getGuaranteeTermStates()
355 {
356 GuaranteeTermStateType[] guarateeStates = agreementProperties.getGuaranteeTermStateArray();
357
358 if ( guarateeStates == null )
359 {
360 return new GuaranteeTermStateType[0];
361 }
362
363 return guarateeStates;
364 }
365
366
367
368
369 public ServiceTermStateType[] getServiceTermStates()
370 {
371 ServiceTermStateType[] serviceStates = agreementProperties.getServiceTermStateArray();
372
373 if ( serviceStates == null )
374 {
375 return new ServiceTermStateType[0];
376 }
377
378 return serviceStates;
379 }
380
381
382
383
384
385
386
387 public void setState( AgreementStateType agreementState )
388 {
389 agreementProperties.setAgreementState( agreementState );
390 setChanged();
391 }
392
393
394
395
396
397
398
399 public void setGuaranteeTermStates( GuaranteeTermStateType[] guaranteeTermStateList )
400 {
401 agreementProperties.setGuaranteeTermStateArray( guaranteeTermStateList );
402 setChanged();
403 }
404
405
406
407
408
409
410
411 public void setServiceTermStates( ServiceTermStateType[] serviceTermStateList )
412 {
413 agreementProperties.setServiceTermStateArray( serviceTermStateList );
414 setChanged();
415 }
416
417
418
419
420
421
422 public XmlObject getXMLObject()
423 {
424 return agreementProperties;
425 }
426
427
428
429
430
431
432
433 public void setXmlObject( AgreementPropertiesType properties )
434 {
435 agreementProperties = properties;
436 setChanged();
437 }
438
439
440
441
442 public AbstractAgreementType getAgreementInstance()
443 {
444 return this;
445 }
446
447
448
449
450
451
452 public Map<String, XmlObject> getExecutionContext()
453 {
454 return persistedExecutionContext;
455 }
456
457
458
459
460
461
462 public Map<String, Object> getTransientExecutionContext()
463 {
464 return transcientExecutionContext;
465 }
466
467
468 }