Skip to content

Commit c2d6215

Browse files
author
Ian Saunders
committed
Re-organization of code
Addition of usage tracking
1 parent dfcfeab commit c2d6215

26 files changed

Lines changed: 293 additions & 29 deletions

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ Add this dependency to your project's POM:
1717
<dependency>
1818
<groupId>net.billforward</groupId>
1919
<artifactId>billforward-java</artifactId>
20-
<version>1.2014.258</version>
20+
<version>1.2014.260</version>
2121
</dependency>
2222

2323
### Gradle users
2424

2525
Add this dependency to your project's build file:
2626

27-
compile "net.billforward:billforward-java:1.2014.258"
27+
compile "net.billforward:billforward-java:1.2014.260"
2828

2929
### Others
3030

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>net.billforward</groupId>
55
<artifactId>billforward-java</artifactId>
66
<packaging>jar</packaging>
7-
<version>1.2014.258</version>
7+
<version>1.2014.260</version>
88
<name>billforward-java</name>
99
<url>https://github.com/billforward/bf-java</url>
1010
<licenses>

src/main/java/net/billforward/BillForwardClient.java

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,24 @@
1010
import java.net.URL;
1111
import java.net.URLEncoder;
1212
import java.net.URLStreamHandler;
13+
import java.text.DateFormat;
14+
import java.text.ParseException;
15+
import java.util.Date;
1316
import java.util.HashMap;
1417
import java.util.List;
18+
import java.util.Locale;
1519
import java.util.Map;
1620
import java.util.Scanner;
21+
import java.util.TimeZone;
1722

18-
import net.billforward.amendments.Amendment;
1923
import net.billforward.exception.APIConnectionException;
2024
import net.billforward.exception.APIException;
2125
import net.billforward.exception.AuthenticationException;
2226
import net.billforward.exception.CardException;
2327
import net.billforward.exception.InvalidRequestException;
2428
import net.billforward.gson.typeadapters.RuntimeTypeAdapterFactory;
2529
import net.billforward.model.APIResponse;
30+
import net.billforward.model.amendments.Amendment;
2631
import net.billforward.model.gateways.APIConfiguration;
2732
import net.billforward.model.gateways.GatewayTypeMapping;
2833
import net.billforward.model.notifications.Notification;
@@ -31,6 +36,13 @@
3136
import com.google.gson.FieldNamingPolicy;
3237
import com.google.gson.Gson;
3338
import com.google.gson.GsonBuilder;
39+
import com.google.gson.JsonDeserializationContext;
40+
import com.google.gson.JsonDeserializer;
41+
import com.google.gson.JsonElement;
42+
import com.google.gson.JsonParseException;
43+
import com.google.gson.JsonPrimitive;
44+
import com.google.gson.JsonSerializationContext;
45+
import com.google.gson.JsonSerializer;
3446
import com.google.gson.annotations.Expose;
3547

3648
@SuppressWarnings({ "unchecked", "rawtypes" })
@@ -116,8 +128,10 @@ public String getApiUrl() {
116128
}
117129

118130
//2014-09-12T03:00:17Z
131+
//.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
132+
119133
GSON = new GsonBuilder()
120-
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
134+
.registerTypeAdapter(Date.class, new DateTypeAdapter())
121135
.excludeFieldsWithoutExposeAnnotation()
122136
.registerTypeAdapterFactory(apiConfigAdapter)
123137
.registerTypeAdapterFactory(amendmentConfigAdapter)
@@ -126,7 +140,28 @@ public String getApiUrl() {
126140
.create();
127141
}
128142

129-
143+
private static class DateTypeAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {
144+
private final DateFormat dateFormat;
145+
146+
private DateTypeAdapter() {
147+
dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
148+
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
149+
}
150+
151+
public Date deserialize(JsonElement jsonElement, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
152+
Date date = null;
153+
try {
154+
date = dateFormat.parse(jsonElement.getAsString());
155+
} catch (ParseException e) {
156+
}
157+
return date;
158+
}
159+
160+
public JsonElement serialize(Date date, Type arg1, JsonSerializationContext arg2) {
161+
String dateFormatAsString = dateFormat.format(date);
162+
return new JsonPrimitive(dateFormatAsString);
163+
}
164+
}
130165

131166
/*
132167
* Set this property to override your environment's default

src/main/java/net/billforward/model/Invoice.java

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package net.billforward.model;
22

33
import java.math.BigDecimal;
4+
import java.util.ArrayList;
45
import java.util.Date;
6+
import java.util.List;
57

68
import net.billforward.BillForwardClient;
7-
import net.billforward.amendments.InvoiceNextExecutionAttemptAmendment;
8-
import net.billforward.amendments.InvoiceRecalculationAmendment;
9-
import net.billforward.amendments.IssueInvoiceAmendment;
109
import net.billforward.exception.APIConnectionException;
1110
import net.billforward.exception.APIException;
1211
import net.billforward.exception.AuthenticationException;
1312
import net.billforward.exception.CardException;
1413
import net.billforward.exception.InvalidRequestException;
14+
import net.billforward.model.PricingComponent.PricingComponentChargeType;
15+
import net.billforward.model.amendments.InvoiceNextExecutionAttemptAmendment;
16+
import net.billforward.model.amendments.InvoiceRecalculationAmendment;
17+
import net.billforward.model.amendments.IssueInvoiceAmendment;
1518

1619
import com.google.gson.annotations.Expose;
1720
import com.google.gson.reflect.TypeToken;
@@ -260,4 +263,43 @@ public enum InvoiceType {
260263
Trial,
261264
FinalArrears
262265
}
266+
267+
public void setUsage(int usage) throws AuthenticationException, InvalidRequestException, APIConnectionException, CardException, APIException {
268+
Subscription subscription = Subscription.getByID(this.subscriptionID);
269+
RatePlan ratePlan = subscription.getProductRatePlan();
270+
271+
List<PricingComponentValue> newPricingComponentValues = new ArrayList<PricingComponentValue>();
272+
273+
for(PricingComponent pricingComponent: ratePlan.getPricingComponents()) {
274+
if(pricingComponent.getChargeType() == PricingComponentChargeType.usage) {
275+
276+
PricingComponentValue value = new PricingComponentValue();
277+
value.setSubscriptionID(this.subscriptionID);
278+
value.setPricingComponentID(pricingComponent.getID());
279+
value.setValue(usage);
280+
value.setAppliesFrom(this.getPeriodStart());
281+
value.setAppliesTill(this.getPeriodStart());
282+
newPricingComponentValues.add(value);
283+
}
284+
}
285+
286+
for(PricingComponentValue value : newPricingComponentValues) {
287+
288+
boolean update = false;
289+
for(PricingComponentValue currentValue : subscription.getPricingComponentValues()) {
290+
if(currentValue.getAppliesFrom().equals(value.getAppliesFrom()) &&
291+
currentValue.getAppliesTill().equals(value.getAppliesTill())) {
292+
update = true;
293+
value = currentValue;
294+
break;
295+
}
296+
}
297+
298+
if(update) {
299+
value.save();
300+
} else {
301+
PricingComponentValue.create(value);
302+
}
303+
}
304+
}
263305
}

src/main/java/net/billforward/model/PricingComponentValue.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
import java.util.Date;
44

55
import net.billforward.BillForwardClient;
6+
import net.billforward.exception.APIConnectionException;
7+
import net.billforward.exception.APIException;
8+
import net.billforward.exception.AuthenticationException;
9+
import net.billforward.exception.CardException;
10+
import net.billforward.exception.InvalidRequestException;
611

712
import com.google.gson.annotations.Expose;
813
import com.google.gson.reflect.TypeToken;
@@ -85,6 +90,12 @@ public Date getCreated() {
8590

8691
protected static ResourcePath resourcePath;
8792

93+
94+
public static PricingComponentValue create(PricingComponentValue pricingComponentValue) throws AuthenticationException, InvalidRequestException, APIConnectionException, CardException, APIException {
95+
return create(pricingComponentValue, ResourcePath())[0];
96+
}
97+
98+
8899
public PricingComponentValue(BillForwardClient client_) {
89100
super(client_);
90101
}
@@ -102,6 +113,6 @@ protected static ResourcePath ResourcePath() {
102113
}
103114

104115
static {
105-
resourcePath = new ResourcePath("pricing-component-values", "pricingComponentValue", new TypeToken<APIResponse<Profile>>() {}.getType());
116+
resourcePath = new ResourcePath("pricing-component-values", "pricingComponentValue", new TypeToken<APIResponse<PricingComponentValue>>() {}.getType());
106117
}
107118
}

src/main/java/net/billforward/model/Subscription.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
import java.util.List;
66

77
import net.billforward.BillForwardClient;
8-
import net.billforward.amendments.CancellationAmendment;
9-
import net.billforward.amendments.CancellationAmendment.ServiceEndState;
108
import net.billforward.exception.APIConnectionException;
119
import net.billforward.exception.APIException;
1210
import net.billforward.exception.AuthenticationException;
1311
import net.billforward.exception.CardException;
1412
import net.billforward.exception.InvalidRequestException;
13+
import net.billforward.model.amendments.CancellationAmendment;
14+
import net.billforward.model.amendments.CancellationAmendment.ServiceEndState;
1515

1616
import com.google.gson.annotations.Expose;
1717
import com.google.gson.reflect.TypeToken;
@@ -24,7 +24,6 @@ public class Subscription extends MutableEntity<Subscription> {
2424
@Expose protected String productRatePlanID;
2525
@Expose protected String name;
2626
@Expose protected String description;
27-
// @SerializedName("@type")
2827
@Expose protected String type;
2928
@Expose protected String state;
3029
@Expose protected Date currentPeriodStart;
@@ -38,7 +37,7 @@ public class Subscription extends MutableEntity<Subscription> {
3837
@Expose protected Date updated;
3938
@Expose protected String changedBy;
4039
@Expose protected Date created;
41-
protected RatePlan productRatePlan;
40+
@Expose protected RatePlan productRatePlan;
4241

4342
@Expose protected List<PaymentMethodSubscriptionLink> paymentMethodSubscriptionLinks = new ArrayList<PaymentMethodSubscriptionLink>();
4443
@Expose protected List<PricingComponentValue> pricingComponentValues = new ArrayList<PricingComponentValue>();

src/main/java/net/billforward/amendments/Amendment.java renamed to src/main/java/net/billforward/model/amendments/Amendment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.billforward.amendments;
1+
package net.billforward.model.amendments;
22

33
import java.util.ArrayList;
44
import java.util.Date;

src/main/java/net/billforward/amendments/AmendmentDiscardAmendment.java renamed to src/main/java/net/billforward/model/amendments/AmendmentDiscardAmendment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.billforward.amendments;
1+
package net.billforward.model.amendments;
22

33
import net.billforward.BillForwardClient;
44
import net.billforward.exception.APIConnectionException;

src/main/java/net/billforward/amendments/CancellationAmendment.java renamed to src/main/java/net/billforward/model/amendments/CancellationAmendment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.billforward.amendments;
1+
package net.billforward.model.amendments;
22

33
import net.billforward.BillForwardClient;
44
import net.billforward.exception.APIConnectionException;

src/main/java/net/billforward/amendments/InvoiceNextExecutionAttemptAmendment.java renamed to src/main/java/net/billforward/model/amendments/InvoiceNextExecutionAttemptAmendment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.billforward.amendments;
1+
package net.billforward.model.amendments;
22

33
import java.util.Date;
44

0 commit comments

Comments
 (0)