killbill-memoizeit
Changes
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java 11(+11 -0)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java 17(+17 -0)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java 14(+14 -0)
osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg 2(+2 -0)
osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql 1(+1 -0)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java 2(+2 -0)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java 1(+1 -0)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java 1(+1 -0)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java 3(+3 -0)
Details
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java
index 0e5b83f..0e31720 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java
@@ -48,6 +48,7 @@ public class BusinessAccount extends BusinessEntityBase {
private final LocalDate lastInvoiceDate;
private final DateTime lastPaymentDate;
private final String lastPaymentStatus;
+ private final Integer nbActiveBundles;
public BusinessAccount(final BusinessAccountModelDao businessAccountModelDao) {
super(businessAccountModelDao.getCreatedDate(),
@@ -80,6 +81,7 @@ public class BusinessAccount extends BusinessEntityBase {
this.lastInvoiceDate = businessAccountModelDao.getLastInvoiceDate();
this.lastPaymentDate = businessAccountModelDao.getLastPaymentDate();
this.lastPaymentStatus = businessAccountModelDao.getLastPaymentStatus();
+ this.nbActiveBundles = businessAccountModelDao.getNbActiveBundles();
}
public String getEmail() {
@@ -170,6 +172,10 @@ public class BusinessAccount extends BusinessEntityBase {
return lastPaymentStatus;
}
+ public Integer getNbActiveBundles() {
+ return nbActiveBundles;
+ }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
@@ -196,6 +202,7 @@ public class BusinessAccount extends BusinessEntityBase {
sb.append(", lastInvoiceDate=").append(lastInvoiceDate);
sb.append(", lastPaymentDate=").append(lastPaymentDate);
sb.append(", lastPaymentStatus='").append(lastPaymentStatus).append('\'');
+ sb.append(", nbActiveBundles='").append(nbActiveBundles).append('\'');
sb.append('}');
return sb.toString();
}
@@ -262,6 +269,9 @@ public class BusinessAccount extends BusinessEntityBase {
if (locale != null ? !locale.equals(that.locale) : that.locale != null) {
return false;
}
+ if (nbActiveBundles != null ? !nbActiveBundles.equals(that.nbActiveBundles) : that.nbActiveBundles != null) {
+ return false;
+ }
if (paymentMethodId != null ? !paymentMethodId.equals(that.paymentMethodId) : that.paymentMethodId != null) {
return false;
}
@@ -309,6 +319,7 @@ public class BusinessAccount extends BusinessEntityBase {
result = 31 * result + (lastInvoiceDate != null ? lastInvoiceDate.hashCode() : 0);
result = 31 * result + (lastPaymentDate != null ? lastPaymentDate.hashCode() : 0);
result = 31 * result + (lastPaymentStatus != null ? lastPaymentStatus.hashCode() : 0);
+ result = 31 * result + (nbActiveBundles != null ? nbActiveBundles.hashCode() : 0);
return result;
}
}
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java
index 11d8cb1..2f31a3b 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java
@@ -18,12 +18,16 @@ package com.ning.billing.osgi.bundles.analytics.dao;
import java.math.BigDecimal;
import java.util.Collection;
+import java.util.List;
import java.util.UUID;
import org.skife.jdbi.v2.Transaction;
import org.skife.jdbi.v2.TransactionStatus;
import com.ning.billing.account.api.Account;
+import com.ning.billing.catalog.api.ProductCategory;
+import com.ning.billing.entitlement.api.user.Subscription;
+import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.osgi.bundles.analytics.AnalyticsRefreshException;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessAccountModelDao;
@@ -91,6 +95,18 @@ public class BusinessAccountDao extends BusinessAnalyticsDaoBase {
}
}
+ final List<SubscriptionBundle> bundles = getSubscriptionBundlesForAccount(account.getId(), context);
+ int nbActiveBundles = 0;
+ for (final SubscriptionBundle bundle : bundles) {
+ final Collection<Subscription> subscriptionsForBundle = getSubscriptionsForBundle(bundle.getId(), context);
+ for (final Subscription subscription : subscriptionsForBundle) {
+ if (ProductCategory.BASE.equals(subscription.getCategory()) &&
+ !(subscription.getEndDate() != null && !subscription.getEndDate().isAfterNow())) {
+ nbActiveBundles++;
+ }
+ }
+ }
+
final Long accountRecordId = getAccountRecordId(account.getId(), context);
final Long tenantRecordId = getTenantRecordId(context);
final ReportGroup reportGroup = getReportGroup(account.getId(), context);
@@ -100,6 +116,7 @@ public class BusinessAccountDao extends BusinessAnalyticsDaoBase {
accountBalance,
lastInvoice,
lastPayment,
+ nbActiveBundles,
creationAuditLog,
tenantRecordId,
reportGroup);
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java
index 4417ec8..234114f 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java
@@ -55,6 +55,7 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
private LocalDate lastInvoiceDate;
private DateTime lastPaymentDate;
private String lastPaymentStatus;
+ private Integer nbActiveBundles;
public BusinessAccountModelDao() { /* When reading from the database */ }
@@ -80,6 +81,7 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
final LocalDate lastInvoiceDate,
final DateTime lastPaymentDate,
final String lastPaymentStatus,
+ final Integer nbActiveBundles,
final DateTime createdDate,
final String createdBy,
final String createdReasonCode,
@@ -122,6 +124,7 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
this.lastInvoiceDate = lastInvoiceDate;
this.lastPaymentDate = lastPaymentDate;
this.lastPaymentStatus = lastPaymentStatus;
+ this.nbActiveBundles = nbActiveBundles;
}
public BusinessAccountModelDao(final Account account,
@@ -129,6 +132,7 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
final BigDecimal balance,
@Nullable final Invoice lastInvoice,
@Nullable final Payment lastPayment,
+ final Integer nbActiveBundles,
final AuditLog creationAuditLog,
final Long tenantRecordId,
@Nullable final ReportGroup reportGroup) {
@@ -154,6 +158,7 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
lastInvoice == null ? null : lastInvoice.getInvoiceDate(),
lastPayment == null ? null : lastPayment.getEffectiveDate(),
lastPayment == null ? null : lastPayment.getPaymentStatus().toString(),
+ nbActiveBundles,
account.getCreatedDate(),
creationAuditLog.getUserName(),
creationAuditLog.getReasonCode(),
@@ -259,6 +264,10 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
return lastPaymentStatus;
}
+ public Integer getNbActiveBundles() {
+ return nbActiveBundles;
+ }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
@@ -285,6 +294,7 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
sb.append(", lastInvoiceDate=").append(lastInvoiceDate);
sb.append(", lastPaymentDate=").append(lastPaymentDate);
sb.append(", lastPaymentStatus='").append(lastPaymentStatus).append('\'');
+ sb.append(", nbActiveBundles='").append(nbActiveBundles).append('\'');
sb.append('}');
return sb.toString();
}
@@ -348,6 +358,9 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
if (migrated != null ? !migrated.equals(that.migrated) : that.migrated != null) {
return false;
}
+ if (nbActiveBundles != null ? !nbActiveBundles.equals(that.nbActiveBundles) : that.nbActiveBundles != null) {
+ return false;
+ }
if (notifiedForInvoices != null ? !notifiedForInvoices.equals(that.notifiedForInvoices) : that.notifiedForInvoices != null) {
return false;
}
@@ -398,6 +411,7 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
result = 31 * result + (lastInvoiceDate != null ? lastInvoiceDate.hashCode() : 0);
result = 31 * result + (lastPaymentDate != null ? lastPaymentDate.hashCode() : 0);
result = 31 * result + (lastPaymentStatus != null ? lastPaymentStatus.hashCode() : 0);
+ result = 31 * result + (nbActiveBundles != null ? nbActiveBundles.hashCode() : 0);
return result;
}
}
diff --git a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
index e5089cb..4184f2e 100644
--- a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
+++ b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
@@ -179,6 +179,7 @@ insert into bac (
, last_invoice_date
, last_payment_date
, last_payment_status
+, nb_active_bundles
, created_date
, created_by
, created_reason_code
@@ -212,6 +213,7 @@ insert into bac (
, :lastInvoiceDate
, :lastPaymentDate
, :lastPaymentStatus
+, :nbActiveBundles
, :createdDate
, :createdBy
, :createdReasonCode
diff --git a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
index 1dca26c..2e30a2f 100644
--- a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
+++ b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
@@ -120,6 +120,7 @@ create table bac (
, last_invoice_date date default null
, last_payment_date datetime default null
, last_payment_status varchar(255) default null
+, nb_active_bundles int(11) default 0
, created_date datetime not null
, created_by varchar(50) not null
, created_reason_code varchar(255) default null
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java
index cbaf426..be3222a 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java
@@ -33,6 +33,7 @@ public class TestBusinessAccount extends AnalyticsTestSuiteNoDB {
BigDecimal.ONE,
invoice,
payment,
+ 3,
auditLog,
tenantRecordId,
reportGroup);
@@ -62,5 +63,6 @@ public class TestBusinessAccount extends AnalyticsTestSuiteNoDB {
Assert.assertEquals(businessAccount.getLastInvoiceDate(), accountModelDao.getLastInvoiceDate());
Assert.assertEquals(businessAccount.getLastPaymentDate(), accountModelDao.getLastPaymentDate());
Assert.assertEquals(businessAccount.getLastPaymentStatus(), accountModelDao.getLastPaymentStatus());
+ Assert.assertEquals(businessAccount.getNbActiveBundles(), accountModelDao.getNbActiveBundles());
}
}
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
index b741810..1634b9d 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
@@ -51,6 +51,7 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
BigDecimal.ONE,
invoice,
payment,
+ 3,
auditLog,
tenantRecordId,
reportGroup);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java
index 5edac27..7a6f40c 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java
@@ -35,6 +35,7 @@ public class TestDefaultAnalyticsUserApi extends AnalyticsTestSuiteWithEmbeddedD
BigDecimal.ONE,
invoice,
payment,
+ 3,
auditLog,
tenantRecordId,
reportGroup);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java
index f451c6f..dccfc17 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java
@@ -32,6 +32,7 @@ public class TestBusinessAccountModelDao extends AnalyticsTestSuiteNoDB {
BigDecimal.ONE,
null,
null,
+ 3,
auditLog,
tenantRecordId,
reportGroup);
@@ -49,6 +50,7 @@ public class TestBusinessAccountModelDao extends AnalyticsTestSuiteNoDB {
BigDecimal.ONE,
invoice,
payment,
+ 3,
auditLog,
tenantRecordId,
reportGroup);
@@ -80,5 +82,6 @@ public class TestBusinessAccountModelDao extends AnalyticsTestSuiteNoDB {
Assert.assertEquals(accountModelDao.getPhone(), account.getPhone());
Assert.assertEquals(accountModelDao.getMigrated(), account.isMigrated());
Assert.assertEquals(accountModelDao.getNotifiedForInvoices(), account.isNotifiedForInvoices());
+ Assert.assertEquals(accountModelDao.getNbActiveBundles(), (Integer) 3);
}
}
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestAnalyticsDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestAnalyticsDao.java
index 2338002..63efa2e 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestAnalyticsDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestAnalyticsDao.java
@@ -37,6 +37,7 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
BigDecimal.ONE,
invoice,
payment,
+ 3,
auditLog,
tenantRecordId,
reportGroup);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
index 2996eb4..55b7496 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
@@ -54,6 +54,7 @@ public class TestBusinessAnalyticsSqlDao extends AnalyticsTestSuiteWithEmbeddedD
new BigDecimal("1.2345"),
invoice,
payment,
+ 3,
auditLog,
tenantRecordId,
reportGroup);