From 972ddcb11de03f2f368218b5e3d6d3db995c3f75 Mon Sep 17 00:00:00 2001 From: Olivier DAIRAY Date: Tue, 9 Jan 2018 10:35:25 +0100 Subject: [PATCH] Add TefpsSubscriberClient (#4) --- README.md | 30 ++++++++- .../dto/subscriber/LightSubscriberDTO.java | 66 +++++++++++++++++++ .../subscriber/TefpsSubscriberClient.java | 62 +++++++++++++++++ .../tefpsclients/tv/TefpsTvClient.java | 4 +- 4 files changed, 158 insertions(+), 4 deletions(-) create mode 100644 java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/dto/subscriber/LightSubscriberDTO.java create mode 100644 java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/subscriber/TefpsSubscriberClient.java diff --git a/README.md b/README.md index 679f81e..97e5e67 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,9 @@ ## Available clients - Java7 TefpsTvClient +- Java7 TefpsSubscriberClient -### Java7 TefpsTvClient - Installation +### Java7 All clients - Installation Add maven dependency to your pom.xml @@ -25,7 +26,7 @@ import fr.polyconseil.smartcity.tefpsclients.auth.OAuth2HttpClient; import fr.polyconseil.smartcity.tefpsclient.dto.tv.ParkingRightDTO; //... - +// Instantiate client TefpsTvClient client = new TefpsTvClient(new OAuth2HttpClient( "http://tefps-directory-host:port", "clientId", @@ -33,5 +34,30 @@ TefpsTvClient client = new TefpsTvClient(new OAuth2HttpClient( "http://tefps-tv-host:port" ); +// Fetch Parking Right Sample ParkingRightDTO parkingRight = client.fetchTv("cityId", "tvId"); + +// Delete Parking Right Sample +ParkingRightDTO parkingRight = client.deleteTv("cityId", "tvId"); +``` + + +### Java7 TefpsSubscriberClient - Usage + +```java +import fr.polyconseil.smartcity.tefpsclient.subscriber.TefpsSubscriberClient; +import fr.polyconseil.smartcity.tefpsclients.auth.OAuth2HttpClient; +import fr.polyconseil.smartcity.tefpsclient.dto.subscriber.LightSubscriberDTO; + +//... +// Instantiate client +TefpsSubscriberClient client = new TefpsSubscriberClient(new OAuth2HttpClient( + "http://tefps-directory-host:port", + "clientId", + "clientSecret"), + "http://tefps-subscription-host:port" +); + +// Fetch Subscriber Sample +LightSubscriberDTO subscriber = client.fetchSubscriber("cityId", "subscriberId"); ``` \ No newline at end of file diff --git a/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/dto/subscriber/LightSubscriberDTO.java b/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/dto/subscriber/LightSubscriberDTO.java new file mode 100644 index 0000000..0c83de1 --- /dev/null +++ b/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/dto/subscriber/LightSubscriberDTO.java @@ -0,0 +1,66 @@ +package fr.polyconseil.smartcity.tefpsclients.dto.subscriber; + +import java.util.Date; +import java.util.List; + +public class LightSubscriberDTO { + private String subscriberId; + + private String plate; + + private String subscriptionPlanId; + + private Date startOfValidityDatetime; + + private Date endOfValidityDatetime; + + private List validityAreas; + + public String getSubscriberId() { + return subscriberId; + } + + public void setSubscriberId(String subscriberId) { + this.subscriberId = subscriberId; + } + + public String getPlate() { + return plate; + } + + public void setPlate(String plate) { + this.plate = plate; + } + + public String getSubscriptionPlanId() { + return subscriptionPlanId; + } + + public void setSubscriptionPlanId(String subscriptionPlanId) { + this.subscriptionPlanId = subscriptionPlanId; + } + + public Date getStartOfValidityDatetime() { + return startOfValidityDatetime; + } + + public void setStartOfValidityDatetime(Date startOfValidityDatetime) { + this.startOfValidityDatetime = startOfValidityDatetime; + } + + public Date getEndOfValidityDatetime() { + return endOfValidityDatetime; + } + + public void setEndOfValidityDatetime(Date endOfValidityDatetime) { + this.endOfValidityDatetime = endOfValidityDatetime; + } + + public List getValidityAreas() { + return validityAreas; + } + + public void setValidityAreas(List validityAreas) { + this.validityAreas = validityAreas; + } +} \ No newline at end of file diff --git a/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/subscriber/TefpsSubscriberClient.java b/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/subscriber/TefpsSubscriberClient.java new file mode 100644 index 0000000..1411644 --- /dev/null +++ b/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/subscriber/TefpsSubscriberClient.java @@ -0,0 +1,62 @@ +package fr.polyconseil.smartcity.tefpsclients.subscriber; + +import fr.polyconseil.smartcity.tefpsclients.auth.OAuth2HttpClient; +import fr.polyconseil.smartcity.tefpsclients.dto.subscriber.LightSubscriberDTO; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Date; +import java.util.List; + +public class TefpsSubscriberClient { + + private static final String SUBSCRIBER_API = "/api/cities/{cityId}/subscribers/{id}"; + private String subscriberUrl; + private OAuth2HttpClient oAuth2Client; + + public TefpsSubscriberClient(OAuth2HttpClient oAuth2Client, String subscriberUrl) { + this.oAuth2Client = oAuth2Client; + this.subscriberUrl = subscriberUrl; + } + + public void createOrUpdateSubscriber( + String cityId, + String subscriberId, + String plate, + String subscriptionPlanId, + Date startOfValidityDatetime, + Date endOfValidityDatetime, + List validityAreas + ) throws IOException, URISyntaxException { + + LightSubscriberDTO dto = new LightSubscriberDTO(); + dto.setSubscriberId(subscriberId); + dto.setPlate(plate); + dto.setSubscriptionPlanId(subscriptionPlanId); + dto.setStartOfValidityDatetime(startOfValidityDatetime); + dto.setEndOfValidityDatetime(endOfValidityDatetime); + dto.setValidityAreas(validityAreas); + + oAuth2Client.put( + buildURI(cityId, subscriberId), + dto, + null + ); + } + + public LightSubscriberDTO fetchSubscriber(String cityId, String subscriberId) throws IOException, URISyntaxException { + return oAuth2Client.get( + buildURI(cityId, subscriberId), + LightSubscriberDTO.class + ); + } + + public void deleteSubscriber(String cityId, String subscriberId) throws IOException, URISyntaxException { + oAuth2Client.delete(buildURI(cityId, subscriberId)); + } + + private URI buildURI(String cityId, String subscriberId) throws URISyntaxException { + return OAuth2HttpClient.buildURI(subscriberUrl, SUBSCRIBER_API, cityId, subscriberId); + } +} diff --git a/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/tv/TefpsTvClient.java b/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/tv/TefpsTvClient.java index 33c1f88..1409834 100644 --- a/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/tv/TefpsTvClient.java +++ b/java7/src/main/java/fr/polyconseil/smartcity/tefpsclients/tv/TefpsTvClient.java @@ -80,7 +80,7 @@ public ParkingRightDTO patchTv( @Nullable Integer price, @Nullable Map pricingContext ) throws IOException, URISyntaxException { - List patchList = new ArrayList(); + List patchList = new ArrayList<>(); if (endDatetime != null) { PatchObject patch = new PatchObject(); @@ -124,7 +124,7 @@ public void deleteTv(String cityId, String tvId) throws IOException, URISyntaxEx oAuth2Client.delete(buildURI(cityId, tvId)); } - private URI buildURI(String cityId, String tvId) throws IOException, URISyntaxException { + private URI buildURI(String cityId, String tvId) throws URISyntaxException { return OAuth2HttpClient.buildURI(tvUrl, TV_API, cityId, tvId); } }