source: ccr/trunk/nhin-vista/projects/NHINC/Current/Product/Production/Gateway/SubscriptionRepository/src/gov/hhs/fha/nhinc/subscription/repository/service/FileSubscriptionRepository.java@ 507

Last change on this file since 507 was 507, checked in by George Lilly, 15 years ago

NHIN gateway and adaptor for use on linux with VistA EHR and RPMS

File size: 6.5 KB
Line 
1package gov.hhs.fha.nhinc.subscription.repository.service;
2
3import gov.hhs.fha.nhinc.nhinclib.NullChecker;
4import gov.hhs.fha.nhinc.subscription.repository.data.Criterion;
5import gov.hhs.fha.nhinc.subscription.repository.data.SubscriptionCriteria;
6import gov.hhs.fha.nhinc.subscription.repository.data.SubscriptionRecord;
7import gov.hhs.fha.nhinc.subscription.repository.data.SubscriptionRecordList;
8import gov.hhs.fha.nhinc.subscription.repository.data.SubscriptionReference;
9import gov.hhs.fha.nhinc.subscription.repository.data.SubscriptionType;
10import gov.hhs.fha.nhinc.subscription.repository.manager.Manager;
11import java.util.List;
12
13/**
14 * File based subscription repository implementation
15 *
16 * @author Neil Webb
17 */
18class FileSubscriptionRepository implements SubscriptionRepositoryService
19{
20 public SubscriptionReference storeSubscription(SubscriptionRecord subscriptionRecord)
21 {
22 SubscriptionReference reference = null;
23 if (subscriptionRecord != null)
24 {
25 Manager mgr = new Manager();
26 mgr.addSubscription(subscriptionRecord);
27 reference = subscriptionRecord.getSubscription().getSubscriptionReference();
28 }
29 return reference;
30 }
31
32 public void deleteSubscription(SubscriptionRecord subscriptionRecord)
33 {
34 if ((subscriptionRecord != null) && (subscriptionRecord.getSubscription() != null) && (subscriptionRecord.getSubscription().getSubscriptionReference() != null))
35 {
36 Manager mgr = new Manager();
37 mgr.removeSubscription(subscriptionRecord.getSubscription().getSubscriptionReference());
38 }
39 }
40
41 public SubscriptionRecordList retrieveByCriteria(SubscriptionCriteria subscriptionCriteria, SubscriptionType subscriptionType)
42 {
43 SubscriptionRecordList subscriptionRecords = new SubscriptionRecordList();
44 // Only process if one or more criterion values are provided
45 if ((subscriptionCriteria != null) && ((subscriptionCriteria.getCriteria() != null) && (!subscriptionCriteria.getCriteria().isEmpty())) || ((subscriptionCriteria.getTopicExpression() != null) && NullChecker.isNotNullish(subscriptionCriteria.getTopicExpression().getTopicExpressionValue())))
46 {
47 Manager mgr = new Manager();
48 SubscriptionRecordList allRecords = mgr.loadSubscriptionList();
49 if (allRecords != null)
50 {
51 for (SubscriptionRecord record : allRecords)
52 {
53 if ((record.getSubscription() != null) && (record.getSubscription().getSubscriptionCriteria() != null) && (record.getSubscription().getSubscriptionCriteria().getCriteria() != null) && (record.getType().equals(subscriptionType)))
54 {
55 SubscriptionCriteria recordSubscriptionCriteria = record.getSubscription().getSubscriptionCriteria();
56
57 boolean match = true;
58 // Subscriber patient matching
59 if (subscriptionCriteria.getSubscriberPatient() != null)
60 {
61 match = subscriptionCriteria.getSubscriberPatient().equals(recordSubscriptionCriteria.getSubscriberPatient());
62 }
63
64 // Subscribee patient matching
65 if (match && (subscriptionCriteria.getSubscribeePatient() != null))
66 {
67 match = subscriptionCriteria.getSubscribeePatient().equals(recordSubscriptionCriteria.getSubscribeePatient());
68 }
69
70 if (match && (subscriptionCriteria.getCriteria() != null))
71 {
72 // Criteria matching
73 List<Criterion> recordCriteria = recordSubscriptionCriteria.getCriteria();
74
75 if (!recordCriteria.containsAll(subscriptionCriteria.getCriteria()))
76 {
77 match = false;
78 }
79 }
80
81 if(match && (subscriptionCriteria.getTopicExpression() != null) && NullChecker.isNotNullish(subscriptionCriteria.getTopicExpression().getTopicExpressionValue()))
82 {
83 match = ((recordSubscriptionCriteria.getTopicExpression() != null) && (subscriptionCriteria.getTopicExpression().getTopicExpressionValue().equals(recordSubscriptionCriteria.getTopicExpression().getTopicExpressionValue())));
84 }
85
86 if (match)
87 {
88 subscriptionRecords.add(record);
89 }
90 }
91 }
92 }
93 }
94 return subscriptionRecords;
95 }
96
97 public SubscriptionRecord retrieveBySubscriptionReference(SubscriptionReference subscriptionReference, SubscriptionType subscriptionType)
98 {
99 SubscriptionRecord record = null;
100 if (subscriptionReference != null)
101 {
102 Manager mgr = new Manager();
103 SubscriptionRecordList allRecords = mgr.loadSubscriptionList();
104 if (allRecords != null)
105 {
106 for (SubscriptionRecord retRec : allRecords)
107 {
108 if ((retRec.getSubscription() != null) && (subscriptionReference.equals(retRec.getSubscription().getSubscriptionReference())) && (retRec.getType().equals(subscriptionType)))
109 {
110 record = retRec;
111 break;
112 }
113 }
114 }
115 }
116 return record;
117 }
118
119 public SubscriptionRecordList retrieveByParentSubscriptionReference(SubscriptionReference parentSubscriptionReference, SubscriptionType subscriptionType)
120 {
121 SubscriptionRecordList records = new SubscriptionRecordList();
122 if (parentSubscriptionReference != null)
123 {
124 Manager mgr = new Manager();
125 SubscriptionRecordList allRecords = mgr.loadSubscriptionList();
126 if (allRecords != null)
127 {
128 for (SubscriptionRecord retRec : allRecords)
129 {
130 if ((retRec.getSubscription() != null) && (parentSubscriptionReference.equals(retRec.getSubscription().getParentSubscriptionReference())) && (retRec.getType().equals(subscriptionType)))
131 {
132 records.add(retRec);
133 }
134 }
135 }
136 }
137 return records;
138 }
139}
Note: See TracBrowser for help on using the repository browser.