Skip to content
This repository was archived by the owner on Jul 1, 2025. It is now read-only.

Commit 3e94ec3

Browse files
committed
Merge pull request #58 from jateeter/master
Subscription/ThirdParty Integration
2 parents 0e37045 + 961b43d commit 3e94ec3

File tree

9 files changed

+58
-8
lines changed

9 files changed

+58
-8
lines changed

src/main/java/org/energyos/espi/common/domain/Subscription.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
import javax.xml.bind.annotation.XmlType;
3737
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
3838

39+
import java.util.ArrayList;
3940
import java.util.Calendar;
41+
import java.util.List;
4042
import java.util.Set;
4143

4244
/**
@@ -94,8 +96,8 @@ public class Subscription
9496

9597
@XmlTransient
9698
@ManyToMany
97-
@LazyCollection(LazyCollectionOption.FALSE)
98-
private Set<UsagePoint> usagePoints;
99+
@LazyCollection(LazyCollectionOption.TRUE)
100+
private List<UsagePoint> usagePoints;
99101

100102
public Calendar lastUpdate;
101103

@@ -131,11 +133,11 @@ public Calendar getLastUpdate() {
131133
return lastUpdate;
132134
}
133135

134-
public Set<UsagePoint> getUsagePoints() {
136+
public List<UsagePoint> getUsagePoints() {
135137
return usagePoints;
136138
}
137139

138-
public void setUsagePoints(Set<UsagePoint> usagePoints) {
140+
public void setUsagePoints(List<UsagePoint> usagePoints) {
139141
this.usagePoints = usagePoints;
140142
}
141143

src/main/java/org/energyos/espi/common/repositories/jpa/SubscriptionRepositoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public Subscription findById(Long id) {
7070
@Transactional
7171
public void deleteById(Long id) {
7272
Subscription subscription = findById(id);
73-
Set<UsagePoint> ups = subscription.getUsagePoints();
73+
List<UsagePoint> ups = subscription.getUsagePoints();
7474
Iterator<UsagePoint> it = ups.iterator();
7575
while (it.hasNext()) {
7676
UsagePoint up = it.next();

src/main/java/org/energyos/espi/common/service/ApplicationInformationService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,7 @@ public ApplicationInformation findByDataCustodianClientId(
5454
public void setApplicationInformation(ApplicationInformation applicationInformation);
5555

5656
public String getDataCustodianResourceEndpoint();
57+
58+
public String getThirdPartyNotifyURI();
5759

5860
}

src/main/java/org/energyos/espi/common/service/ResourceService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ List<IdentifiedObject> findByAllParentsHref(String relatedHref,
4444
<T extends IdentifiedObject> Long findIdByXPath(Long id1, Long id2, Long id3, Long id4, Class<T> clazz);
4545

4646
<T extends IdentifiedObject> EntryTypeIterator findEntryTypeIterator(Class<T> clazz);
47+
48+
<T extends IdentifiedObject> EntryTypeIterator findEntryTypeIterator(List<Long> ids, Class<T> clazz);
4749

4850
<T extends IdentifiedObject> EntryType findEntryType(long id1, Class<T> clazz);
4951

src/main/java/org/energyos/espi/common/service/SubscriptionService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,7 @@ public interface SubscriptionService {
5151
public Subscription findById(Long retailCustomerId, Long subscriptionId);
5252

5353
public Subscription findByUUID(UUID uuid);
54+
55+
public List<Long> findUsagePointIds(Long subscriptionId);
5456

5557
}

src/main/java/org/energyos/espi/common/service/impl/ApplicationInformationServiceImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,4 +202,12 @@ public ApplicationInformation importResource(InputStream stream) {
202202
return applicationInformation;
203203
}
204204

205+
@Override
206+
public String getThirdPartyNotifyURI() {
207+
ApplicationInformation applicationInformation;
208+
// TODO note the assumption on the first (seed) entry
209+
applicationInformation = resourceService.findById(1L, ApplicationInformation.class);
210+
return applicationInformation.getThirdPartyNotifyUri();
211+
}
212+
205213
}

src/main/java/org/energyos/espi/common/service/impl/ExportServiceImpl.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,9 @@ public void exportSubscription(String subscriptionHashedId, OutputStream stream,
485485
@Override
486486
public void exportBatchSubscription(long subscriptionId, OutputStream stream, ExportFilter exportFilter) throws IOException {
487487
String hrefFragment = "/Batch/Subscription/" + subscriptionId;
488-
exportEntriesFull(subscriptionService.findEntryTypeIterator(subscriptionId), stream, exportFilter, hrefFragment);
488+
// first find all the usagePointIds this subscription is related to
489+
List<Long> usagePointIdList = subscriptionService.findUsagePointIds(subscriptionId);
490+
exportEntriesFull(resourceService.findEntryTypeIterator(usagePointIdList, UsagePoint.class), stream, exportFilter, hrefFragment);
489491
}
490492

491493
@Override
@@ -574,9 +576,11 @@ private String adjustFragment(String fragment, EntryType entry ) {
574576
// TODO here need the proper URI fragment for a subscription
575577
result = "/RetailCustomer/" + rc.getId() + "/UsagePoint"; }
576578
if (fragment.contains("Subscription")) {
579+
// the entry contains a valid usagepoint at this stage
580+
//
577581
UsagePoint up = entry.getContent().getUsagePoint();
578582
RetailCustomer rc = up.getRetailCustomer();
579-
// TODO here need the proper URI fragment for a subscription
583+
580584
result = "/RetailCustomer/" + rc.getId() + "/UsagePoint";
581585
}
582586
if (fragment.contains("/Batch/RetailCustomer")) {

src/main/java/org/energyos/espi/common/service/impl/ResourceServiceImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,12 @@ public void setRepository(ResourceRepository repository) {
139139
@Override
140140
public <T extends IdentifiedObject> EntryTypeIterator findEntryTypeIterator(Class<T> clazz) {
141141
List<Long> idList = repository.findAllIds(clazz);
142+
return findEntryTypeIterator(idList, clazz);
143+
}
144+
145+
@Override
146+
public <T extends IdentifiedObject> EntryTypeIterator findEntryTypeIterator(List<Long> ids, Class<T> clazz) {
147+
List<Long> idList = ids;
142148
EntryTypeIterator result = null;
143149
try {
144150
result = (new EntryTypeIterator(this, idList, clazz));
@@ -149,7 +155,7 @@ public <T extends IdentifiedObject> EntryTypeIterator findEntryTypeIterator(Clas
149155
}
150156
return result;
151157
}
152-
158+
153159
@Override
154160
public <T extends IdentifiedObject> EntryType findEntryType(long id1, Class<T> clazz) {
155161
EntryType result = null;

src/main/java/org/energyos/espi/common/service/impl/SubscriptionServiceImpl.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.energyos.espi.common.utils.DateConverter;
3333
import org.energyos.espi.common.utils.EntryTypeIterator;
3434
import org.energyos.espi.common.utils.ExportFilter;
35+
import org.hibernate.mapping.Set;
3536
import org.springframework.beans.factory.annotation.Autowired;
3637
import org.springframework.beans.factory.annotation.Qualifier;
3738
import org.springframework.security.oauth2.provider.OAuth2Authentication;
@@ -75,6 +76,16 @@ public Subscription createSubscription(OAuth2Authentication authentication) {
7576
subscription.setUUID(UUID.randomUUID());
7677
subscription.setApplicationInformation(applicationInformationService.findByClientId(authentication.getOAuth2Request().getClientId()));
7778
subscription.setRetailCustomer((RetailCustomer)authentication.getPrincipal());
79+
subscription.setUsagePoints(new ArrayList<UsagePoint> ());
80+
// set up the subscription's usagePoints list. Keep in mind that right
81+
// now this is ALL usage points belonging to the RetailCustomer.
82+
// TODO - scope this to only a selected (proper) subset of the usagePoints.
83+
List <Long> upIds = resourceService.findAllIdsByXPath(subscription.getRetailCustomer().getId(), UsagePoint.class);
84+
Iterator <Long> it = upIds.iterator();
85+
while (it.hasNext()) {
86+
UsagePoint usagePoint = resourceService.findById(it.next(), UsagePoint.class);
87+
subscription.getUsagePoints().add(usagePoint);
88+
}
7889
subscription.setLastUpdate(new GregorianCalendar());
7990
subscriptionRepository.persist(subscription);
8091

@@ -214,4 +225,17 @@ public Subscription findById(Long retailCustomerId, Long subscriptionId) {
214225
return subscriptionRepository.findById(subscriptionId);
215226
}
216227

228+
@Override
229+
public List<Long> findUsagePointIds(Long subscriptionId) {
230+
231+
List<Long> result = new ArrayList<Long>();
232+
Subscription subscription = subscriptionRepository.findById(subscriptionId);
233+
Iterator<UsagePoint> it = subscription.getUsagePoints().iterator();
234+
while (it.hasNext()) {
235+
result.add(it.next().getId());
236+
}
237+
238+
return result;
239+
}
240+
217241
}

0 commit comments

Comments
 (0)