Details
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemModelDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemModelDao.java
index 762f369..65478c7 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemModelDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceItemModelDao.java
@@ -74,7 +74,7 @@ public class InvoiceItemModelDao extends EntityBase {
}
public InvoiceItemModelDao(final InvoiceItem invoiceItem) {
- this(invoiceItem.getInvoiceItemType(), invoiceItem.getId(), invoiceItem.getAccountId(), invoiceItem.getBundleId(),
+ this(invoiceItem.getId(), invoiceItem.getCreatedDate(), invoiceItem.getInvoiceItemType(), invoiceItem.getInvoiceId(), invoiceItem.getAccountId(), invoiceItem.getBundleId(),
invoiceItem.getSubscriptionId(), invoiceItem.getPlanName(), invoiceItem.getPhaseName(), invoiceItem.getStartDate(), invoiceItem.getEndDate(),
invoiceItem.getAmount(), invoiceItem.getRate(), invoiceItem.getCurrency(), invoiceItem.getLinkedItemId());
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceModelDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceModelDao.java
index a70d129..e648f9c 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceModelDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceModelDao.java
@@ -62,7 +62,8 @@ public class InvoiceModelDao extends EntityBase {
}
public InvoiceModelDao(final Invoice invoice) {
- this(invoice.getId(), invoice.getInvoiceDate(), invoice.getTargetDate(), invoice.getCurrency(), invoice.isMigrationInvoice());
+ this(invoice.getId(), invoice.getCreatedDate(), invoice.getAccountId(), invoice.getInvoiceNumber(), invoice.getInvoiceDate(),
+ invoice.getTargetDate(), invoice.getCurrency(), invoice.isMigrationInvoice());
}
public void addInvoiceItems(final List<InvoiceItemModelDao> invoiceItems) {
diff --git a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
index 860cc53..3c9926d 100644
--- a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
+++ b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
@@ -14,7 +14,7 @@ tableFields(prefix) ::= <<
tableValues(prefix) ::= <<
- accountId
+ :accountId
, :invoiceDate
, :targetDate
, :currency
@@ -23,6 +23,10 @@ tableValues(prefix) ::= <<
, :createdDate
>>
+extraTableFieldsWithComma(prefix) ::= <<
+, record_id as invoice_number
+>>
+
getInvoicesByAccount() ::= <<
SELECT record_id as invoice_number, <allTableFields()>
FROM <tableName()>
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceItemDao.java b/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceItemDao.java
index c3129ef..513a95d 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceItemDao.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceItemDao.java
@@ -29,6 +29,7 @@ import com.ning.billing.invoice.model.CreditBalanceAdjInvoiceItem;
import com.ning.billing.invoice.model.DefaultInvoice;
import com.ning.billing.invoice.model.ExternalChargeInvoiceItem;
import com.ning.billing.invoice.model.FixedPriceInvoiceItem;
+import com.ning.billing.invoice.model.InvoiceItemFactory;
import com.ning.billing.invoice.model.RecurringInvoiceItem;
import com.ning.billing.util.entity.EntityPersistenceException;
@@ -143,7 +144,7 @@ public class TestInvoiceItemDao extends InvoiceDaoTestBase {
createInvoiceItem(creditInvoiceItem, internalCallContext);
final InvoiceItemModelDao savedItem = invoiceItemSqlDao.getById(creditInvoiceItem.getId().toString(), internalCallContext);
- assertEquals(savedItem, creditInvoiceItem);
+ assertEquals(InvoiceItemFactory.fromModelDao(savedItem), creditInvoiceItem);
}
@Test(groups = "slow")
@@ -157,7 +158,7 @@ public class TestInvoiceItemDao extends InvoiceDaoTestBase {
createInvoiceItem(fixedPriceInvoiceItem, internalCallContext);
final InvoiceItemModelDao savedItem = invoiceItemSqlDao.getById(fixedPriceInvoiceItem.getId().toString(), internalCallContext);
- assertEquals(savedItem, fixedPriceInvoiceItem);
+ assertEquals(InvoiceItemFactory.fromModelDao(savedItem), fixedPriceInvoiceItem);
}
@Test(groups = "slow")
@@ -172,6 +173,6 @@ public class TestInvoiceItemDao extends InvoiceDaoTestBase {
createInvoiceItem(externalChargeInvoiceItem, internalCallContext);
final InvoiceItemModelDao savedItem = invoiceItemSqlDao.getById(externalChargeInvoiceItem.getId().toString(), internalCallContext);
- assertEquals(savedItem, externalChargeInvoiceItem);
+ assertEquals(InvoiceItemFactory.fromModelDao(savedItem), externalChargeInvoiceItem);
}
}
diff --git a/util/src/main/java/com/ning/billing/util/dao/LocalDateArgumentFactory.java b/util/src/main/java/com/ning/billing/util/dao/LocalDateArgumentFactory.java
new file mode 100644
index 0000000..6bb2e6d
--- /dev/null
+++ b/util/src/main/java/com/ning/billing/util/dao/LocalDateArgumentFactory.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.util.dao;
+
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Types;
+
+import org.joda.time.LocalDate;
+import org.skife.jdbi.v2.StatementContext;
+import org.skife.jdbi.v2.tweak.Argument;
+import org.skife.jdbi.v2.tweak.ArgumentFactory;
+
+public class LocalDateArgumentFactory implements ArgumentFactory<LocalDate> {
+
+ @Override
+ public boolean accepts(final Class<?> expectedType, final Object value, final StatementContext ctx) {
+ return value instanceof LocalDate;
+ }
+
+ @Override
+ public Argument build(final Class<?> expectedType, final LocalDate value, final StatementContext ctx) {
+ return new LocalDateArgument(value);
+ }
+
+ public static class LocalDateArgument implements Argument {
+
+ private final LocalDate value;
+
+ public LocalDateArgument(final LocalDate value) {
+ this.value = value;
+ }
+
+ @Override
+ public void apply(final int position, final PreparedStatement statement, final StatementContext ctx) throws SQLException {
+ if (value != null) {
+ // ISO8601 format
+ statement.setString(position, value.toString());
+ } else {
+ statement.setNull(position, Types.VARCHAR);
+ }
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("LocalDateArgument");
+ sb.append("{value=").append(value);
+ sb.append('}');
+ return sb.toString();
+ }
+ }
+
+}
diff --git a/util/src/main/resources/com/ning/billing/util/entity/dao/EntitySqlDao.sql.stg b/util/src/main/resources/com/ning/billing/util/entity/dao/EntitySqlDao.sql.stg
index 06d7657..349034c 100644
--- a/util/src/main/resources/com/ning/billing/util/entity/dao/EntitySqlDao.sql.stg
+++ b/util/src/main/resources/com/ning/billing/util/entity/dao/EntitySqlDao.sql.stg
@@ -25,6 +25,9 @@ historyTableValues() ::= <<
/****************************************************/
+/** Add extra fields for SELECT queries **/
+extraTableFieldsWithComma(prefix) ::= ""
+
idField(prefix) ::= <<
<prefix>id
>>
@@ -85,6 +88,7 @@ allTableFields(prefix) ::= <<
<recordIdField(prefix)>
, <idField(prefix)>
, <tableFields(prefix)>
+<extraTableFieldsWithComma(prefix)>
<accountRecordIdFieldWithComma(prefix)>
<tenantRecordIdFieldWithComma(prefix)>
>>
diff --git a/util/src/test/java/com/ning/billing/dbi/DBIProvider.java b/util/src/test/java/com/ning/billing/dbi/DBIProvider.java
index c0c7661..a5d1f3f 100644
--- a/util/src/test/java/com/ning/billing/dbi/DBIProvider.java
+++ b/util/src/test/java/com/ning/billing/dbi/DBIProvider.java
@@ -25,6 +25,7 @@ import org.skife.jdbi.v2.tweak.transactions.SerializableTransactionRunner;
import com.ning.billing.util.dao.DateTimeArgumentFactory;
import com.ning.billing.util.dao.DateTimeZoneArgumentFactory;
import com.ning.billing.util.dao.EnumArgumentFactory;
+import com.ning.billing.util.dao.LocalDateArgumentFactory;
import com.ning.billing.util.dao.UUIDArgumentFactory;
import com.google.inject.Inject;
@@ -67,6 +68,7 @@ public class DBIProvider implements Provider<IDBI> {
dbi.registerArgumentFactory(new UUIDArgumentFactory());
dbi.registerArgumentFactory(new DateTimeZoneArgumentFactory());
dbi.registerArgumentFactory(new DateTimeArgumentFactory());
+ dbi.registerArgumentFactory(new LocalDateArgumentFactory());
dbi.registerArgumentFactory(new EnumArgumentFactory());
// Restart transactions in case of deadlocks