killbill-aplcache

Details

diff --git a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
index ff70192..4b4cfc7 100644
--- a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
+++ b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
@@ -42,6 +42,7 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
     private final String locale;
     private final String address1;
     private final String address2;
+    private final String companyName;
     private final String city;
     private final String stateOrProvince;
     private final String country;
@@ -56,14 +57,16 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
         this(id, data.getExternalKey(), data.getEmail(), data.getName(), data.getFirstNameLength(),
                 data.getCurrency(), data.getBillCycleDay(), data.getPaymentProviderName(),
                 data.getTimeZone(), data.getLocale(),
-                data.getAddress1(), data.getAddress2(), data.getCity(), data.getStateOrProvince(), data.getCountry(),
+                data.getAddress1(), data.getAddress2(), data.getCompanyName(),
+                data.getCity(), data.getStateOrProvince(), data.getCountry(),
                 data.getPostalCode(), data.getPhone());
     }
 
     public DefaultAccount(final UUID id, final String externalKey, final String email, final String name, final int firstNameLength,
                           final Currency currency, final int billCycleDay, final String paymentProviderName,
                           final DateTimeZone timeZone, final String locale,
-                          final String address1, final String address2, final String city,
+                          final String address1, final String address2, final String companyName,
+                          final String city,
                           final String stateOrProvince, final String country, final String postalCode, final String phone) {
         super(id);
         this.externalKey = externalKey;
@@ -77,6 +80,7 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
         this.locale = locale;
         this.address1 = address1;
         this.address2 = address2;
+        this.companyName = companyName;
         this.city = city;
         this.stateOrProvince = stateOrProvince;
         this.postalCode = postalCode;
@@ -147,6 +151,11 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
     }
 
     @Override
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    @Override
     public String getCity() {
         return city;
     }
diff --git a/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java b/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
index c229fcc..3a303a1 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/AccountBuilder.java
@@ -37,6 +37,7 @@ public class AccountBuilder {
     private String locale;
     private String address1;
     private String address2;
+    private String companyName;
     private String city;
     private String stateOrProvince;
     private String country;
@@ -107,6 +108,11 @@ public class AccountBuilder {
         return this;
     }
 
+    public AccountBuilder companyName(final String companyName) {
+        this.companyName = companyName;
+        return this;
+    }
+
     public AccountBuilder city(final String city) {
         this.city = city;
         return this;
@@ -136,7 +142,7 @@ public class AccountBuilder {
         return new DefaultAccount(id, externalKey, email, name, firstNameLength,
                                   currency, billingCycleDay, paymentProviderName,
                                   timeZone, locale,
-                                  address1, address2, city, stateOrProvince, country,
+                                  address1, address2, companyName, city, stateOrProvince, country,
                                   postalCode, phone);
     }
 }
diff --git a/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java b/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java
index ecfa6b9..42feebe 100644
--- a/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java
+++ b/account/src/main/java/com/ning/billing/account/dao/AccountSqlDao.java
@@ -86,6 +86,7 @@ public interface AccountSqlDao extends EntityDao<Account>, Transactional<Account
 
             String address1 = result.getString("address1");
             String address2 = result.getString("address2");
+            String companyName = result.getString("company_name");
             String city = result.getString("city");
             String stateOrProvince = result.getString("state_or_province");
             String postalCode = result.getString("postal_code");
@@ -99,6 +100,7 @@ public interface AccountSqlDao extends EntityDao<Account>, Transactional<Account
                                          .paymentProviderName(paymentProviderName)
                                          .timeZone(timeZone).locale(locale)
                                          .address1(address1).address2(address2)
+                                         .companyName(companyName)
                                          .city(city).stateOrProvince(stateOrProvince)
                                          .postalCode(postalCode).country(country)
                                          .build();
@@ -131,6 +133,7 @@ public interface AccountSqlDao extends EntityDao<Account>, Transactional<Account
 
                         q.bind("address1", account.getAddress1());
                         q.bind("address2", account.getAddress2());
+                        q.bind("companyName", account.getCompanyName());
                         q.bind("city", account.getCity());
                         q.bind("stateOrProvince", account.getStateOrProvince());
                         q.bind("country", account.getCountry());
diff --git a/account/src/main/resources/com/ning/billing/account/dao/AccountSqlDao.sql.stg b/account/src/main/resources/com/ning/billing/account/dao/AccountSqlDao.sql.stg
index e684869..59cc9a3 100644
--- a/account/src/main/resources/com/ning/billing/account/dao/AccountSqlDao.sql.stg
+++ b/account/src/main/resources/com/ning/billing/account/dao/AccountSqlDao.sql.stg
@@ -4,11 +4,11 @@ create() ::= <<
     INSERT INTO accounts
       (id, external_key, email, name, first_name_length, currency, billing_cycle_day,
       payment_provider_name, time_zone, locale,
-      address1, address2, city, state_or_province, country, postal_code, phone)
+      address1, address2, company_name, city, state_or_province, country, postal_code, phone)
     VALUES
       (:id, :externalKey, :email, :name, :firstNameLength, :currency, :billingCycleDay,
       :paymentProviderName, :timeZone, :locale,
-      :address1, :address2, :city, :stateOrProvince, :country, :postalCode, :phone);
+      :address1, :address2, :companyName, :city, :stateOrProvince, :country, :postalCode, :phone);
 >>
 
 update() ::= <<
@@ -16,7 +16,7 @@ update() ::= <<
     SET external_key = :externalKey, email = :email, name = :name, first_name_length = :firstNameLength,
         currency = :currency, billing_cycle_day = :billingCycleDay, payment_provider_name = :paymentProviderName,
         time_zone = :timeZone, locale = :locale,
-        address1 = :address1, address2 = :address2, city = :city, state_or_province = :stateOrProvince,
+        address1 = :address1, address2 = :address2, company_name = :companyName, city = :city, state_or_province = :stateOrProvince,
         country = :country, postal_code = :postalCode, phone = :phone
     WHERE id = :id;
 >>
@@ -24,7 +24,7 @@ update() ::= <<
 getAccountByKey() ::= <<
     select id, external_key, email, name, first_name_length, currency, billing_cycle_day,
       payment_provider_name, time_zone, locale,
-      address1, address2, city, state_or_province, country, postal_code, phone
+      address1, address2, company_name, city, state_or_province, country, postal_code, phone
     from accounts
     where external_key = :externalKey;
 >>
@@ -32,7 +32,7 @@ getAccountByKey() ::= <<
 getById() ::= <<
     select id, external_key, email, name, first_name_length, currency, billing_cycle_day,
       payment_provider_name, time_zone, locale,
-      address1, address2, city, state_or_province, country, postal_code, phone
+      address1, address2, company_name, city, state_or_province, country, postal_code, phone
     from accounts
     where id = :id;
 >>
@@ -40,7 +40,7 @@ getById() ::= <<
 get() ::= <<
     select id, external_key, email, name, first_name_length, currency, billing_cycle_day,
       payment_provider_name, time_zone, locale,
-      address1, address2, city, state_or_province, country, postal_code, phone
+      address1, address2, company_name, city, state_or_province, country, postal_code, phone
     from accounts;
 >>
 
diff --git a/account/src/main/resources/com/ning/billing/account/ddl.sql b/account/src/main/resources/com/ning/billing/account/ddl.sql
index 2458ab0..5f3ac8c 100644
--- a/account/src/main/resources/com/ning/billing/account/ddl.sql
+++ b/account/src/main/resources/com/ning/billing/account/ddl.sql
@@ -12,6 +12,7 @@ CREATE TABLE accounts (
     locale varchar(5) DEFAULT NULL,
     address1 varchar(100) DEFAULT NULL,
     address2 varchar(100) DEFAULT NULL,
+    company_name varchar(50) DEFAULT NULL,
     city varchar(50) DEFAULT NULL,
     state_or_province varchar(50) DEFAULT NULL,
     country varchar(50) DEFAULT NULL,
@@ -20,4 +21,5 @@ CREATE TABLE accounts (
     PRIMARY KEY(id)
 ) ENGINE=innodb;
 CREATE UNIQUE INDEX accounts_external_key ON accounts(external_key);
-CREATE UNIQUE INDEX accounts_email ON accounts(email);
\ No newline at end of file
+CREATE UNIQUE INDEX accounts_email ON accounts(email);
+
diff --git a/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java b/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
index 24a65ef..1d4d2dc 100644
--- a/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
+++ b/account/src/test/java/com/ning/billing/account/dao/TestSimpleAccountDao.java
@@ -207,6 +207,11 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
             }
 
             @Override
+            public String getCompanyName() {
+                return null;
+            }
+
+            @Override
             public String getCity() {
                 return null;
             }
@@ -255,11 +260,12 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
         DefaultAccount account = new DefaultAccount(accountId, "extKey123456", "myemail123456@glam.com",
                                                     "John Smith", 4, Currency.USD, 15, null,
                                                     DateTimeZone.forID("America/Cambridge_Bay"), "EN-CA",
-                                                    null, null, null, null, null, null, null);
+                                                    null, null, null, null, null, null, null, null);
         accountDao.create(account);
 
         String address1 = "123 address 1";
         String address2 = "456 address 2";
+        String companyName = "Some Company";
         String city = "Cambridge Bay";
         String stateOrProvince = "Nunavut";
         String country = "Canada";
@@ -269,7 +275,7 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
         DefaultAccount updatedAccount = new DefaultAccount(accountId, "extKey123456", "myemail123456@glam.com",
                                                     "John Smith", 4, Currency.USD, 15, null,
                                                     DateTimeZone.forID("America/Cambridge_Bay"), "EN-CA",
-                                                    address1, address2, city, stateOrProvince, country,
+                                                    address1, address2, companyName, city, stateOrProvince, country,
                                                     postalCode, phone);
 
         accountDao.update(updatedAccount);
@@ -280,6 +286,7 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
         assertEquals(savedAccount.getId(), accountId);
         assertEquals(savedAccount.getAddress1(), address1);
         assertEquals(savedAccount.getAddress2(), address2);
+        assertEquals(savedAccount.getCompanyName(), companyName);
         assertEquals(savedAccount.getCity(), city);
         assertEquals(savedAccount.getStateOrProvince(), stateOrProvince);
         assertEquals(savedAccount.getCity(), city);
@@ -294,14 +301,14 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
         DefaultAccount account = new DefaultAccount(accountId, "extKey654321", "myemail654321@glam.com",
                                                     "John Smith", 4, Currency.USD, 15, null,
                                                     DateTimeZone.forID("America/Cambridge_Bay"), "EN-CA",
-                                                    "123 address 1", "456 address 2", "Cambridge Bay",
+                                                    "123 address 1", "456 address 2", null, "Cambridge Bay",
                                                     "Nunavut", "Canada", "X0B 0C0", "18001112222");
         accountDao.create(account);
 
         DefaultAccount updatedAccount = new DefaultAccount(accountId, "extKey654321", "myemail654321@glam.com",
                                                     "John Smith", 4, Currency.USD, 15, null,
                                                     DateTimeZone.forID("America/Cambridge_Bay"), "EN-CA",
-                                                    null, null, null, null, null, null, null);
+                                                    null, null, null, null, null, null, null, null);
 
         accountDao.update(updatedAccount);
 
@@ -311,6 +318,7 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
         assertEquals(savedAccount.getId(), accountId);
         assertEquals(savedAccount.getAddress1(), null);
         assertEquals(savedAccount.getAddress2(), null);
+        assertEquals(savedAccount.getCompanyName(), null);
         assertEquals(savedAccount.getCity(), null);
         assertEquals(savedAccount.getStateOrProvince(), null);
         assertEquals(savedAccount.getCity(), null);
@@ -325,12 +333,12 @@ public class TestSimpleAccountDao extends AccountDaoTestBase {
 
         DefaultAccount account = new DefaultAccount(accountId, originalExternalKey, "myemail1337@glam.com",
                                                     "John Smith", 4, Currency.USD, 15, null,
-                                                    null, null, null, null, null, null, null, null, null);
+                                                    null, null, null, null, null, null, null, null, null, null);
         accountDao.create(account);
 
         DefaultAccount updatedAccount = new DefaultAccount(accountId, "extKey1338", "myemail1337@glam.com",
                                                     "John Smith", 4, Currency.USD, 15, null,
-                                                    null, null, null, null, null, null, null, null, null);
+                                                    null, null, null, null, null, null, null, null, null, null);
         accountDao.update(updatedAccount);
     }
 }
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
index d5584ec..02f4a0c 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
@@ -107,6 +107,11 @@ public class MockAccount implements Account
     }
 
     @Override
+    public String getCompanyName() {
+        return null;
+    }
+
+    @Override
     public String getCity() {
         return null;
     }
diff --git a/api/src/main/java/com/ning/billing/account/api/AccountData.java b/api/src/main/java/com/ning/billing/account/api/AccountData.java
index 82f1845..adeb1f9 100644
--- a/api/src/main/java/com/ning/billing/account/api/AccountData.java
+++ b/api/src/main/java/com/ning/billing/account/api/AccountData.java
@@ -45,6 +45,8 @@ public interface AccountData {
 
     public String getAddress2();
 
+    public String getCompanyName();
+
     public String getCity();
 
     public String getStateOrProvince();
diff --git a/api/src/main/java/com/ning/billing/util/api/TagDefinitionService.java b/api/src/main/java/com/ning/billing/util/api/TagDefinitionService.java
new file mode 100644
index 0000000..1434f8f
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/util/api/TagDefinitionService.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2010-2011 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.api;
+
+import com.ning.billing.lifecycle.KillbillService;
+
+public interface TagDefinitionService extends KillbillService {
+    public TagDefinitionUserApi getTagDefinitionUserApi();
+}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadAccount.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadAccount.java
index 0e027df..8b4870b 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadAccount.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/BrainDeadAccount.java
@@ -91,6 +91,11 @@ public class BrainDeadAccount implements Account {
     }
 
     @Override
+    public String getCompanyName() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
     public String getCity() {
         throw new UnsupportedOperationException();
     }
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestApiBase.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestApiBase.java
index fc5a749..5e994aa 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestApiBase.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestApiBase.java
@@ -332,6 +332,11 @@ public abstract class TestApiBase {
             }
 
             @Override
+            public String getCompanyName() {
+                return null;
+            }
+
+            @Override
             public String getCity() {
                 return null;  
             }
diff --git a/util/src/main/java/com/ning/billing/util/glue/TagStoreModule.java b/util/src/main/java/com/ning/billing/util/glue/TagStoreModule.java
index 86f42ad..039ce2b 100644
--- a/util/src/main/java/com/ning/billing/util/glue/TagStoreModule.java
+++ b/util/src/main/java/com/ning/billing/util/glue/TagStoreModule.java
@@ -17,8 +17,10 @@
 package com.ning.billing.util.glue;
 
 import com.google.inject.AbstractModule;
+import com.ning.billing.util.api.TagDefinitionUserApi;
 import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.clock.DefaultClock;
+import com.ning.billing.util.tag.api.DefaultTagDefinitionUserApi;
 import com.ning.billing.util.tag.dao.DefaultTagDefinitionDao;
 import com.ning.billing.util.tag.dao.TagDefinitionDao;
 import com.ning.billing.util.tag.dao.TagDefinitionSqlDao;
@@ -33,5 +35,6 @@ public class TagStoreModule extends AbstractModule
         bind(TagDefinitionSqlDao.class).toProvider(TagDescriptionDaoProvider.class).asEagerSingleton();
         bind(TagDefinitionDao.class).to(DefaultTagDefinitionDao.class).asEagerSingleton();
         bind(TagStoreSqlDao.class).toProvider(TagStoreDaoProvider.class).asEagerSingleton();
+        bind(TagDefinitionUserApi.class).to(DefaultTagDefinitionUserApi.class).asEagerSingleton();
     }
 }
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagDefinitionService.java b/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagDefinitionService.java
new file mode 100644
index 0000000..0e1f99e
--- /dev/null
+++ b/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagDefinitionService.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2010-2011 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.tag.api;
+
+import com.google.inject.Inject;
+import com.ning.billing.util.api.TagDefinitionService;
+import com.ning.billing.util.api.TagDefinitionUserApi;
+
+public class DefaultTagDefinitionService implements TagDefinitionService {
+    private static final String TAG_DEFINITION_SERVICE_NAME = "tag-service";
+    private final TagDefinitionUserApi api;
+
+    @Inject
+    public DefaultTagDefinitionService(final TagDefinitionUserApi api) {
+        this.api = api;
+    }
+
+    @Override
+    public TagDefinitionUserApi getTagDefinitionUserApi() {
+        return api;
+    }
+
+    @Override
+    public String getName() {
+        return TAG_DEFINITION_SERVICE_NAME;
+    }
+}