Details
diff --git a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
index 71985e0..a97a630 100644
--- a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
+++ b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
@@ -40,14 +40,17 @@ import com.ning.billing.util.callcontext.UserType;
import com.ning.billing.util.callcontext.DefaultCallContextFactory;
import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.clock.ClockMock;
+import com.ning.billing.util.tag.api.user.TagEventBuilder;
public abstract class AccountDaoTestBase {
private final MysqlTestingHelper helper = new MysqlTestingHelper();
+ protected final TagEventBuilder tagEventBuilder = new TagEventBuilder();
+
protected AccountDao accountDao;
protected AccountEmailDao accountEmailDao;
protected IDBI dbi;
-
+ protected Bus bus;
protected CallContext context;
@BeforeClass(alwaysRun = true)
@@ -63,7 +66,7 @@ public abstract class AccountDaoTestBase {
dbi = helper.getDBI();
- Bus bus = new InMemoryBus();
+ bus = new InMemoryBus();
BusService busService = new DefaultBusService(bus);
((DefaultBusService) busService).startBus();
diff --git a/account/src/test/java/com/ning/billing/account/dao/TestAccountDao.java b/account/src/test/java/com/ning/billing/account/dao/TestAccountDao.java
index ba1d3f6..e846a42 100644
--- a/account/src/test/java/com/ning/billing/account/dao/TestAccountDao.java
+++ b/account/src/test/java/com/ning/billing/account/dao/TestAccountDao.java
@@ -152,7 +152,7 @@ public class TestAccountDao extends AccountDaoTestBase {
TagDefinitionSqlDao tagDescriptionDao = dbi.onDemand(TagDefinitionSqlDao.class);
tagDescriptionDao.create(definition, context);
- TagDao tagDao = new AuditedTagDao(dbi);
+ TagDao tagDao = new AuditedTagDao(dbi, tagEventBuilder, bus);
tagDao.insertTag(account.getId(), ObjectType.ACCOUNT, definition, context);
Map<String, Tag> tagMap = tagDao.loadEntities(account.getId(), ObjectType.ACCOUNT);
diff --git a/api/src/main/java/com/ning/billing/util/api/TagUserApi.java b/api/src/main/java/com/ning/billing/util/api/TagUserApi.java
index 422221a..2be6d6d 100644
--- a/api/src/main/java/com/ning/billing/util/api/TagUserApi.java
+++ b/api/src/main/java/com/ning/billing/util/api/TagUserApi.java
@@ -25,51 +25,41 @@ import com.ning.billing.util.dao.ObjectType;
import com.ning.billing.util.tag.Tag;
import com.ning.billing.util.tag.TagDefinition;
-// TODO: add ability to create, update and remove tags
public interface TagUserApi {
- /***
- *
+ /**
* @return the list of all available tag definitions
*/
public List<TagDefinition> getTagDefinitions();
- /***
- *
+ /**
* @param definitionName Identifies the definition.
- * @param description Describes the use of the definition.
- * @param context The call context, for auditing purposes
+ * @param description Describes the use of the definition.
+ * @param context The call context, for auditing purposes
* @return the newly created tag definition
* @throws TagDefinitionApiException
*/
public TagDefinition create(String definitionName, String description, CallContext context) throws TagDefinitionApiException;
- /***
- *
+ /**
* @param definitionName Identifies the definition.
- * @param context The call context, for auditing purposes
- * @throws TagDefinitionApiException
- */
- public void deleteAllTagsForDefinition(String definitionName, CallContext context) throws TagDefinitionApiException;
-
- /***
- *
- * @param definitionName Identifies the definition.
- * @param context The call context, for auditing purposes
+ * @param context The call context, for auditing purposes
* @throws TagDefinitionApiException
*/
public void deleteTagDefinition(String definitionName, CallContext context) throws TagDefinitionApiException;
- /**
- *
- * @param name
- * @return the tag with this definition
+ /**
+ * @param name
+ * @return the tag with this definition
* @throws TagDefinitionApiException
- */
- public TagDefinition getTagDefinition(String name) throws TagDefinitionApiException;
+ */
+ public TagDefinition getTagDefinition(String name) throws TagDefinitionApiException;
public void addTags(UUID objectId, ObjectType objectType, List<TagDefinition> tagDefinitions, CallContext context);
+
public void addTag(UUID objectId, ObjectType objectType, TagDefinition tagDefinition, CallContext context);
+
public void removeTags(UUID objectId, ObjectType objectType, List<TagDefinition> tagDefinitions, CallContext context);
+
public void removeTag(UUID objectId, ObjectType objectType, TagDefinition tagDefinition, CallContext context);
public Map<String, Tag> getTags(UUID objectId, ObjectType objectType);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
index 70ca921..4c4677e 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
@@ -24,11 +24,13 @@ import com.ning.billing.dbi.MysqlTestingHelper;
import com.ning.billing.invoice.notification.MockNextBillingDatePoster;
import com.ning.billing.invoice.notification.NextBillingDatePoster;
import com.ning.billing.util.api.TagUserApi;
+import com.ning.billing.util.bus.Bus;
+import com.ning.billing.util.bus.InMemoryBus;
import com.ning.billing.util.callcontext.TestCallContext;
import com.ning.billing.util.clock.ClockMock;
import com.ning.billing.util.tag.api.DefaultTagUserApi;
+import com.ning.billing.util.tag.api.user.TagEventBuilder;
import com.ning.billing.util.tag.dao.AuditedTagDao;
-import com.ning.billing.util.tag.dao.MockTagDao;
import com.ning.billing.util.tag.dao.MockTagDefinitionDao;
import com.ning.billing.util.tag.dao.TagDao;
import org.apache.commons.io.IOUtils;
@@ -49,6 +51,8 @@ import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.tag.dao.TagDefinitionDao;
public abstract class InvoiceDaoTestBase extends InvoicingTestBase {
+ protected final TagEventBuilder tagEventBuilder = new TagEventBuilder();
+
protected IDBI dbi;
private MysqlTestingHelper mysqlTestingHelper;
protected InvoiceDao invoiceDao;
@@ -59,6 +63,7 @@ public abstract class InvoiceDaoTestBase extends InvoicingTestBase {
protected Clock clock;
protected CallContext context;
protected InvoiceGenerator generator;
+ protected Bus bus;
private final InvoiceConfig invoiceConfig = new InvoiceConfig() {
@Override
@@ -83,7 +88,7 @@ public abstract class InvoiceDaoTestBase extends InvoicingTestBase {
NextBillingDatePoster nextBillingDatePoster = new MockNextBillingDatePoster();
final TagDefinitionDao tagDefinitionDao = new MockTagDefinitionDao();
- final TagDao tagDao = new AuditedTagDao(dbi);
+ final TagDao tagDao = new AuditedTagDao(dbi, tagEventBuilder, bus);
final TagUserApi tagUserApi = new DefaultTagUserApi(tagDefinitionDao, tagDao);
invoiceDao = new DefaultInvoiceDao(dbi, nextBillingDatePoster, tagUserApi);
invoiceDao.test();
@@ -96,6 +101,8 @@ public abstract class InvoiceDaoTestBase extends InvoicingTestBase {
clock = new ClockMock();
context = new TestCallContext("Invoice Dao Tests");
generator = new DefaultInvoiceGenerator(clock, invoiceConfig);
+ bus = new InMemoryBus();
+ bus.start();
assertTrue(true);
}
@@ -119,6 +126,7 @@ public abstract class InvoiceDaoTestBase extends InvoicingTestBase {
@AfterClass(alwaysRun = true)
protected void tearDown() {
+ bus.stop();
mysqlTestingHelper.stopMysql();
assertTrue(true);
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
index 97d7532..e4ab210 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTests.java
@@ -656,7 +656,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
invoiceDao.create(invoice, context);
invoiceDao.setWrittenOff(invoice.getId(), context);
- TagDao tagDao = new AuditedTagDao(dbi);
+ TagDao tagDao = new AuditedTagDao(dbi, tagEventBuilder, bus);
Map<String, Tag> tags = tagDao.loadEntities(invoice.getId(), ObjectType.INVOICE);
assertEquals(tags.size(), 1);
assertTrue(tags.containsKey(ControlTagType.WRITTEN_OFF.toString()));
@@ -687,7 +687,7 @@ public class InvoiceDaoTests extends InvoiceDaoTestBase {
invoiceDao.create(invoice, context);
invoiceDao.setWrittenOff(invoice.getId(), context);
- TagDao tagDao = new AuditedTagDao(dbi);
+ TagDao tagDao = new AuditedTagDao(dbi, tagEventBuilder, bus);
Map<String, Tag> tags = tagDao.loadEntities(invoice.getId(), ObjectType.INVOICE);
assertEquals(tags.size(), 1);
assertTrue(tags.containsKey(ControlTagType.WRITTEN_OFF.toString()));
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagService.java b/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagService.java
index e5627e5..0a1fa28 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagService.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagService.java
@@ -21,8 +21,8 @@ import com.ning.billing.util.api.TagService;
import com.ning.billing.util.api.TagUserApi;
public class DefaultTagService implements TagService {
-
private static final String TAG_DEFINITION_SERVICE_NAME = "tag-service";
+
private final TagUserApi api;
@Inject
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagUserApi.java b/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagUserApi.java
index 4a065de..93de7f8 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagUserApi.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagUserApi.java
@@ -35,7 +35,7 @@ public class DefaultTagUserApi implements TagUserApi {
private final TagDao tagDao;
@Inject
- public DefaultTagUserApi(TagDefinitionDao tagDefinitionDao, TagDao tagDao) {
+ public DefaultTagUserApi(final TagDefinitionDao tagDefinitionDao, final TagDao tagDao) {
this.tagDefinitionDao = tagDefinitionDao;
this.tagDao = tagDao;
}
@@ -51,41 +51,35 @@ public class DefaultTagUserApi implements TagUserApi {
}
@Override
- public void deleteAllTagsForDefinition(final String definitionName, final CallContext context)
- throws TagDefinitionApiException {
- tagDefinitionDao.deleteAllTagsForDefinition(definitionName, context);
+ public void deleteTagDefinition(final String definitionName, final CallContext context) throws TagDefinitionApiException {
+ tagDefinitionDao.deleteTagDefinition(definitionName, context);
}
@Override
- public void deleteTagDefinition(final String definitionName, final CallContext context) throws TagDefinitionApiException {
- tagDefinitionDao.deleteAllTagsForDefinition(definitionName, context);
+ public TagDefinition getTagDefinition(final String name)
+ throws TagDefinitionApiException {
+ return tagDefinitionDao.getByName(name);
}
- @Override
- public TagDefinition getTagDefinition(final String name)
- throws TagDefinitionApiException {
- return tagDefinitionDao.getByName(name);
- }
-
@Override
- public void addTags(UUID objectId, ObjectType objectType, List<TagDefinition> tagDefinitions, CallContext context) {
+ public void addTags(final UUID objectId, final ObjectType objectType, final List<TagDefinition> tagDefinitions, final CallContext context) {
tagDao.insertTags(objectId, objectType, tagDefinitions, context);
}
@Override
- public void addTag(UUID objectId, ObjectType objectType, TagDefinition tagDefinition, CallContext context) {
+ public void addTag(final UUID objectId, final ObjectType objectType, final TagDefinition tagDefinition, final CallContext context) {
tagDao.insertTag(objectId, objectType, tagDefinition, context);
}
@Override
- public void removeTag(UUID objectId, ObjectType objectType, TagDefinition tagDefinition, CallContext context) {
+ public void removeTag(final UUID objectId, final ObjectType objectType, final TagDefinition tagDefinition, final CallContext context) {
tagDao.deleteTag(objectId, objectType, tagDefinition, context);
}
@Override
- public void removeTags(UUID objectId, ObjectType objectType, List<TagDefinition> tagDefinitions, CallContext context) {
+ public void removeTags(final UUID objectId, final ObjectType objectType, final List<TagDefinition> tagDefinitions, final CallContext context) {
// TODO: consider making this batch
- for (TagDefinition tagDefinition : tagDefinitions) {
+ for (final TagDefinition tagDefinition : tagDefinitions) {
tagDao.deleteTag(objectId, objectType, tagDefinition, context);
}
}
@@ -94,26 +88,4 @@ public class DefaultTagUserApi implements TagUserApi {
public Map<String, Tag> getTags(final UUID objectId, final ObjectType objectType) {
return tagDao.loadEntities(objectId, objectType);
}
-
-// @Override
-// public Tag createControlTags(String controlTagName) throws TagDefinitionApiException {
-// ControlTagType type = null;
-// for(ControlTagType t : ControlTagType.values()) {
-// if(t.toString().equals(controlTagName)) {
-// type = t;
-// }
-// }
-//
-// if(type == null) {
-// throw new TagDefinitionApiException(ErrorCode.CONTROL_TAG_DOES_NOT_EXIST, controlTagName);
-// }
-// return new DefaultControlTag(type);
-// }
-//
-// @Override
-// public Tag createDescriptiveTags(List) throws TagDefinitionApiException {
-// TagDefinition tagDefinition = getTagDefinition(tagDefinitionName);
-//
-// return new DescriptiveTag(tagDefinition);
-// }
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/AuditedTagDao.java b/util/src/main/java/com/ning/billing/util/tag/dao/AuditedTagDao.java
index cf40ee2..c34985f 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/AuditedTagDao.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/AuditedTagDao.java
@@ -31,6 +31,7 @@ import com.google.inject.Inject;
import com.ning.billing.ErrorCode;
import com.ning.billing.invoice.api.InvoiceApiException;
import com.ning.billing.util.ChangeType;
+import com.ning.billing.util.bus.Bus;
import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.dao.AuditedCollectionDaoBase;
import com.ning.billing.util.dao.EntityAudit;
@@ -44,12 +45,17 @@ import com.ning.billing.util.tag.DefaultControlTag;
import com.ning.billing.util.tag.DescriptiveTag;
import com.ning.billing.util.tag.Tag;
import com.ning.billing.util.tag.TagDefinition;
+import com.ning.billing.util.tag.api.user.TagEventBuilder;
public class AuditedTagDao extends AuditedCollectionDaoBase<Tag, Tag> implements TagDao {
private final TagSqlDao tagSqlDao;
+ private final TagEventBuilder tagEventBuilder;
+ private final Bus bus;
@Inject
- public AuditedTagDao(final IDBI dbi) {
+ public AuditedTagDao(final IDBI dbi, final TagEventBuilder tagEventBuilder, final Bus bus) {
+ this.tagEventBuilder = tagEventBuilder;
+ this.bus = bus;
this.tagSqlDao = dbi.onDemand(TagSqlDao.class);
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/DefaultTagDefinitionDao.java b/util/src/main/java/com/ning/billing/util/tag/dao/DefaultTagDefinitionDao.java
index 39970da..049c42d 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/DefaultTagDefinitionDao.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/DefaultTagDefinitionDao.java
@@ -19,31 +19,41 @@ package com.ning.billing.util.tag.dao;
import java.util.ArrayList;
import java.util.List;
-import com.ning.billing.util.callcontext.CallContext;
-import com.ning.billing.util.tag.ControlTagType;
import org.skife.jdbi.v2.IDBI;
+import org.skife.jdbi.v2.Transaction;
+import org.skife.jdbi.v2.TransactionStatus;
+import org.skife.jdbi.v2.exceptions.TransactionFailedException;
+
import com.google.inject.Inject;
import com.ning.billing.ErrorCode;
import com.ning.billing.util.api.TagDefinitionApiException;
+import com.ning.billing.util.bus.Bus;
+import com.ning.billing.util.callcontext.CallContext;
+import com.ning.billing.util.tag.ControlTagType;
import com.ning.billing.util.tag.DefaultTagDefinition;
import com.ning.billing.util.tag.TagDefinition;
+import com.ning.billing.util.tag.api.user.TagEventBuilder;
public class DefaultTagDefinitionDao implements TagDefinitionDao {
- private final TagDefinitionSqlDao dao;
+ private final TagDefinitionSqlDao tagDefinitionSqlDao;
+ private final TagEventBuilder tagEventBuilder;
+ private final Bus bus;
@Inject
- public DefaultTagDefinitionDao(IDBI dbi) {
- this.dao = dbi.onDemand(TagDefinitionSqlDao.class);
+ public DefaultTagDefinitionDao(final IDBI dbi, final TagEventBuilder tagEventBuilder, final Bus bus) {
+ this.tagEventBuilder = tagEventBuilder;
+ this.bus = bus;
+ this.tagDefinitionSqlDao = dbi.onDemand(TagDefinitionSqlDao.class);
}
@Override
public List<TagDefinition> getTagDefinitions() {
- // get user definitions from the database
- List<TagDefinition> definitionList = new ArrayList<TagDefinition>();
- definitionList.addAll(dao.get());
+ // Get user definitions from the database
+ final List<TagDefinition> definitionList = new ArrayList<TagDefinition>();
+ definitionList.addAll(tagDefinitionSqlDao.get());
- // add control tag definitions
- for (ControlTagType controlTag : ControlTagType.values()) {
+ // Add control tag definitions
+ for (final ControlTagType controlTag : ControlTagType.values()) {
definitionList.add(new DefaultTagDefinition(controlTag.toString(), controlTag.getDescription(), true));
}
@@ -52,35 +62,51 @@ public class DefaultTagDefinitionDao implements TagDefinitionDao {
@Override
public TagDefinition getByName(final String definitionName) {
- // add control tag definitions
- for (ControlTagType controlTag : ControlTagType.values()) {
- if(definitionName.equals(controlTag.name())) {
+ // Add control tag definitions
+ for (final ControlTagType controlTag : ControlTagType.values()) {
+ if (definitionName.equals(controlTag.name())) {
return new DefaultTagDefinition(controlTag.toString(), controlTag.getDescription(), true);
}
}
- return dao.getByName(definitionName);
+
+ return tagDefinitionSqlDao.getByName(definitionName);
}
@Override
public TagDefinition create(final String definitionName, final String description,
final CallContext context) throws TagDefinitionApiException {
+ // Make sure a control tag with this name don't already exist
if (isControlTagName(definitionName)) {
throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_CONFLICTS_WITH_CONTROL_TAG, definitionName);
}
- TagDefinition existingDefinition = dao.getByName(definitionName);
-
- if (existingDefinition != null) {
- throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_ALREADY_EXISTS, definitionName);
+ try {
+ return tagDefinitionSqlDao.inTransaction(new Transaction<TagDefinition, TagDefinitionSqlDao>() {
+ @Override
+ public TagDefinition inTransaction(final TagDefinitionSqlDao transactional, final TransactionStatus status) throws Exception {
+ // Make sure the tag definition doesn't exist already
+ final TagDefinition existingDefinition = tagDefinitionSqlDao.getByName(definitionName);
+ if (existingDefinition != null) {
+ throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_ALREADY_EXISTS, definitionName);
+ }
+
+ final TagDefinition definition = new DefaultTagDefinition(definitionName, description, false);
+ tagDefinitionSqlDao.create(definition, context);
+
+ return definition;
+ }
+ });
+ } catch (TransactionFailedException exception) {
+ if (exception.getCause() instanceof TagDefinitionApiException) {
+ throw (TagDefinitionApiException) exception.getCause();
+ } else {
+ throw exception;
+ }
}
-
- TagDefinition definition = new DefaultTagDefinition(definitionName, description, false);
- dao.create(definition, context);
- return definition;
}
private boolean isControlTagName(final String definitionName) {
- for (ControlTagType controlTagName : ControlTagType.values()) {
+ for (final ControlTagType controlTagName : ControlTagType.values()) {
if (controlTagName.toString().equals(definitionName)) {
return true;
}
@@ -90,27 +116,33 @@ public class DefaultTagDefinitionDao implements TagDefinitionDao {
}
@Override
- public void deleteAllTagsForDefinition(final String definitionName, final CallContext context) throws TagDefinitionApiException {
- TagDefinition existingDefinition = dao.getByName(definitionName);
- if (existingDefinition == null) {
- throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_DOES_NOT_EXIST, definitionName);
- }
-
- dao.deleteAllTagsForDefinition(definitionName, context);
- }
-
- @Override
public void deleteTagDefinition(final String definitionName, final CallContext context) throws TagDefinitionApiException {
- if (dao.tagDefinitionUsageCount(definitionName) > 0) {
- throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_IN_USE, definitionName);
- }
-
- TagDefinition existingDefinition = dao.getByName(definitionName);
-
- if (existingDefinition == null) {
- throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_DOES_NOT_EXIST, definitionName);
+ try {
+ tagDefinitionSqlDao.inTransaction(new Transaction<Void, TagDefinitionSqlDao>() {
+ @Override
+ public Void inTransaction(final TagDefinitionSqlDao transactional, final TransactionStatus status) throws Exception {
+ // Make sure the tag definition exists
+ final TagDefinition existingDefinition = tagDefinitionSqlDao.getByName(definitionName);
+ if (existingDefinition == null) {
+ throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_DOES_NOT_EXIST, definitionName);
+ }
+
+ // Make sure it is not used currently
+ if (tagDefinitionSqlDao.tagDefinitionUsageCount(definitionName) > 0) {
+ throw new TagDefinitionApiException(ErrorCode.TAG_DEFINITION_IN_USE, definitionName);
+ }
+
+ tagDefinitionSqlDao.deleteTagDefinition(definitionName, context);
+
+ return null;
+ }
+ });
+ } catch (TransactionFailedException exception) {
+ if (exception.getCause() instanceof TagDefinitionApiException) {
+ throw (TagDefinitionApiException) exception.getCause();
+ } else {
+ throw exception;
+ }
}
-
- dao.deleteTagDefinition(definitionName, context);
}
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagBinder.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagBinder.java
index d2d4a6f..d1a8a7c 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagBinder.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagBinder.java
@@ -26,6 +26,7 @@ import org.skife.jdbi.v2.SQLStatement;
import org.skife.jdbi.v2.sqlobject.Binder;
import org.skife.jdbi.v2.sqlobject.BinderFactory;
import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
+
import com.ning.billing.util.tag.Tag;
@BindingAnnotation(TagBinder.TagBinderFactory.class)
@@ -33,9 +34,9 @@ import com.ning.billing.util.tag.Tag;
@Target({ElementType.PARAMETER})
public @interface TagBinder {
public static class TagBinderFactory implements BinderFactory {
- public Binder build(Annotation annotation) {
+ public Binder build(final Annotation annotation) {
return new Binder<TagBinder, Tag>() {
- public void bind(SQLStatement q, TagBinder bind, Tag tag) {
+ public void bind(final SQLStatement q, final TagBinder bind, final Tag tag) {
q.bind("id", tag.getId().toString());
q.bind("tagDefinitionName", tag.getTagDefinitionName());
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagDao.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagDao.java
index 4e29fc2..db059ce 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagDao.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagDao.java
@@ -16,86 +16,19 @@
package com.ning.billing.util.tag.dao;
-import com.ning.billing.invoice.api.InvoiceApiException;
+import java.util.List;
+import java.util.UUID;
+
import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.dao.AuditedCollectionDao;
import com.ning.billing.util.dao.ObjectType;
import com.ning.billing.util.tag.Tag;
import com.ning.billing.util.tag.TagDefinition;
-import java.util.List;
-import java.util.UUID;
-
public interface TagDao extends AuditedCollectionDao<Tag> {
void insertTag(UUID objectId, ObjectType objectType, TagDefinition tagDefinition, CallContext context);
void insertTags(UUID objectId, ObjectType objectType, List<TagDefinition> tagDefinitions, CallContext context);
void deleteTag(UUID objectId, ObjectType objectType, TagDefinition tagDefinition, CallContext context);
-
-//@Override
-// public List<Tag> getTagList() {
-// return tagStore.getEntityList();
-// }
-//
-// @Override
-// public boolean hasTag(final TagDefinition tagDefinition) {
-// return tagStore.containsTagForDefinition(tagDefinition);
-// }
-//
-// @Override
-// public boolean hasTag(ControlTagType controlTagType) {
-// return tagStore.containsTagForControlTagType(controlTagType);
-// }
-//
-// @Override
-// public void addTag(final TagDefinition definition) {
-// Tag tag = new DescriptiveTag(definition);
-// tagStore.add(tag) ;
-// }
-//
-// @Override
-// public void addTags(final List<Tag> tags) {
-// this.tagStore.add(tags);
-// }
-//
-// @Override
-// public void addTagsFromDefinitions(final List<TagDefinition> tagDefinitions) {
-// if (tagStore != null) {
-// List<Tag> tags = new ArrayList<Tag>();
-// if (tagDefinitions != null) {
-// for (TagDefinition tagDefinition : tagDefinitions) {
-// try {
-// ControlTagType controlTagType = ControlTagType.valueOf(tagDefinition.getName());
-// tags.add(new DefaultControlTag(controlTagType));
-// } catch (IllegalArgumentException ex) {
-// tags.add(new DescriptiveTag(tagDefinition));
-// }
-// }
-// }
-//
-// this.tagStore.add(tags);
-// }
-// }
-//
-// @Override
-// public void clearTags() {
-// this.tagStore.clear();
-// }
-//
-// @Override
-// public void removeTag(final TagDefinition tagDefinition) {
-// tagStore.remove(tagDefinition);
-// }
-//
-// @Override
-// public boolean generateInvoice() {
-// return tagStore.generateInvoice();
-// }
-//
-// @Override
-// public boolean processPayment() {
-// return tagStore.processPayment();
-// }
-
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagDefinitionDao.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagDefinitionDao.java
index 112ff75..ae645ea 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagDefinitionDao.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagDefinitionDao.java
@@ -18,8 +18,8 @@ package com.ning.billing.util.tag.dao;
import java.util.List;
-import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.api.TagDefinitionApiException;
+import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.tag.TagDefinition;
public interface TagDefinitionDao {
@@ -29,7 +29,5 @@ public interface TagDefinitionDao {
public TagDefinition create(String definitionName, String description, CallContext context) throws TagDefinitionApiException;
- public void deleteAllTagsForDefinition(String definitionName, CallContext context) throws TagDefinitionApiException;
-
public void deleteTagDefinition(String definitionName, CallContext context) throws TagDefinitionApiException;
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagDefinitionSqlDao.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagDefinitionSqlDao.java
index f273c56..4a7dd1c 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagDefinitionSqlDao.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagDefinitionSqlDao.java
@@ -25,11 +25,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
-import com.ning.billing.util.callcontext.CallContext;
-import com.ning.billing.util.callcontext.CallContextBinder;
-import com.ning.billing.util.entity.dao.EntitySqlDao;
-import com.ning.billing.util.tag.DefaultTagDefinition;
-import com.ning.billing.util.tag.TagDefinition;
import org.skife.jdbi.v2.SQLStatement;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.sqlobject.Bind;
@@ -39,12 +34,19 @@ import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
+import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
+import com.ning.billing.util.callcontext.CallContext;
+import com.ning.billing.util.callcontext.CallContextBinder;
+import com.ning.billing.util.entity.dao.EntitySqlDao;
+import com.ning.billing.util.tag.DefaultTagDefinition;
+import com.ning.billing.util.tag.TagDefinition;
+
@ExternalizedSqlViaStringTemplate3
@RegisterMapper(TagDefinitionSqlDao.TagDefinitionMapper.class)
-public interface TagDefinitionSqlDao extends EntitySqlDao<TagDefinition> {
+public interface TagDefinitionSqlDao extends EntitySqlDao<TagDefinition>, Transactional<TagDefinitionSqlDao> {
@Override
@SqlUpdate
public void create(@TagDefinitionBinder final TagDefinition entity, @CallContextBinder final CallContext context);
@@ -64,9 +66,9 @@ public interface TagDefinitionSqlDao extends EntitySqlDao<TagDefinition> {
public class TagDefinitionMapper implements ResultSetMapper<TagDefinition> {
@Override
public TagDefinition map(final int index, final ResultSet result, final StatementContext context) throws SQLException {
- UUID id = UUID.fromString(result.getString("id"));
- String name = result.getString("name");
- String description = result.getString("description");
+ final UUID id = UUID.fromString(result.getString("id"));
+ final String name = result.getString("name");
+ final String description = result.getString("description");
return new DefaultTagDefinition(id, name, description, false);
}
}
@@ -87,4 +89,4 @@ public interface TagDefinitionSqlDao extends EntitySqlDao<TagDefinition> {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagHistoryBinder.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagHistoryBinder.java
index 67bb3ca..05d9414 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagHistoryBinder.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagHistoryBinder.java
@@ -16,30 +16,30 @@
package com.ning.billing.util.tag.dao;
-import com.ning.billing.util.dao.EntityHistory;
-import com.ning.billing.util.dao.MappedEntity;
-import com.ning.billing.util.tag.Tag;
-import org.skife.jdbi.v2.SQLStatement;
-import org.skife.jdbi.v2.sqlobject.Binder;
-import org.skife.jdbi.v2.sqlobject.BinderFactory;
-import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
-
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.skife.jdbi.v2.SQLStatement;
+import org.skife.jdbi.v2.sqlobject.Binder;
+import org.skife.jdbi.v2.sqlobject.BinderFactory;
+import org.skife.jdbi.v2.sqlobject.BindingAnnotation;
+
+import com.ning.billing.util.dao.EntityHistory;
+import com.ning.billing.util.tag.Tag;
+
@BindingAnnotation(TagHistoryBinder.TagHistoryBinderFactory.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER})
public @interface TagHistoryBinder {
public static class TagHistoryBinderFactory implements BinderFactory {
@Override
- public Binder build(Annotation annotation) {
+ public Binder build(final Annotation annotation) {
return new Binder<TagHistoryBinder, EntityHistory<Tag>>() {
@Override
- public void bind(SQLStatement q, TagHistoryBinder bind, EntityHistory<Tag> tagHistory) {
+ public void bind(final SQLStatement q, final TagHistoryBinder bind, final EntityHistory<Tag> tagHistory) {
q.bind("recordId", tagHistory.getValue());
q.bind("changeType", tagHistory.getChangeType().toString());
q.bind("id", tagHistory.getId().toString());
@@ -48,4 +48,4 @@ public @interface TagHistoryBinder {
};
}
}
-}
\ No newline at end of file
+}
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
index bf08dcd..da0083d 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagMapper.java
@@ -20,11 +20,10 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
-import com.ning.billing.util.dao.MapperBase;
-import org.joda.time.DateTime;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
+import com.ning.billing.util.dao.MapperBase;
import com.ning.billing.util.tag.ControlTagType;
import com.ning.billing.util.tag.DefaultControlTag;
import com.ning.billing.util.tag.DescriptiveTag;
@@ -33,16 +32,16 @@ import com.ning.billing.util.tag.Tag;
public class TagMapper extends MapperBase implements ResultSetMapper<Tag> {
@Override
public Tag map(final int index, final ResultSet result, final StatementContext context) throws SQLException {
- String name = result.getString("tag_definition_name");
+ final String name = result.getString("tag_definition_name");
ControlTagType thisTagType = null;
- for (ControlTagType controlTagType : ControlTagType.values()) {
+ for (final ControlTagType controlTagType : ControlTagType.values()) {
if (name.equals(controlTagType.toString())) {
thisTagType = controlTagType;
}
}
- UUID id = UUID.fromString(result.getString("id"));
+ final UUID id = UUID.fromString(result.getString("id"));
if (thisTagType == null) {
return new DescriptiveTag(id, name);
} else {
diff --git a/util/src/main/java/com/ning/billing/util/tag/dao/TagSqlDao.java b/util/src/main/java/com/ning/billing/util/tag/dao/TagSqlDao.java
index bde62e7..5f4b8bb 100644
--- a/util/src/main/java/com/ning/billing/util/tag/dao/TagSqlDao.java
+++ b/util/src/main/java/com/ning/billing/util/tag/dao/TagSqlDao.java
@@ -40,32 +40,32 @@ import com.ning.billing.util.tag.Tag;
@RegisterMapper(TagMapper.class)
public interface TagSqlDao extends UpdatableEntityCollectionSqlDao<Tag>, Transactional<TagSqlDao>, Transmogrifier {
@Override
- @SqlBatch(transactional=false)
+ @SqlBatch(transactional = false)
public void insertFromTransaction(@Bind("objectId") final String objectId,
@ObjectTypeBinder final ObjectType objectType,
@TagBinder final Collection<Tag> tags,
@CallContextBinder final CallContext context);
@Override
- @SqlBatch(transactional=false)
+ @SqlBatch(transactional = false)
public void updateFromTransaction(@Bind("objectId") final String objectId,
@ObjectTypeBinder final ObjectType objectType,
@TagBinder final Collection<Tag> tags,
@CallContextBinder final CallContext context);
@Override
- @SqlBatch(transactional=false)
+ @SqlBatch(transactional = false)
public void deleteFromTransaction(@Bind("objectId") final String objectId,
@ObjectTypeBinder final ObjectType objectType,
@TagBinder final Collection<Tag> tags,
@CallContextBinder final CallContext context);
@Override
- @SqlBatch(transactional=false)
+ @SqlBatch(transactional = false)
public void addHistoryFromTransaction(@Bind("objectId") final String objectId,
- @ObjectTypeBinder final ObjectType objectType,
- @TagHistoryBinder final List<EntityHistory<Tag>> histories,
- @CallContextBinder final CallContext context);
+ @ObjectTypeBinder final ObjectType objectType,
+ @TagHistoryBinder final List<EntityHistory<Tag>> histories,
+ @CallContextBinder final CallContext context);
@SqlUpdate
public void addTagFromTransaction(@Bind("id") final String tagId,
@@ -84,4 +84,4 @@ public interface TagSqlDao extends UpdatableEntityCollectionSqlDao<Tag>, Transac
public Tag findTag(@Bind("tagDefinitionName") final String tagName,
@Bind("objectId") final String objectId,
@ObjectTypeBinder final ObjectType objectType);
-}
\ No newline at end of file
+}
diff --git a/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java b/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
index 330b204..20efa9c 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DefaultControlTag.java
@@ -48,21 +48,25 @@ public class DefaultControlTag extends DescriptiveTag implements ControlTag {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((controlTagType == null) ? 0
- : controlTagType.hashCode());
+ : controlTagType.hashCode());
return result;
}
@Override
- public boolean equals(Object obj) {
- if (this == obj)
+ public boolean equals(final Object obj) {
+ if (this == obj) {
return true;
- if (!super.equals(obj))
+ }
+ if (!super.equals(obj)) {
return false;
- if (getClass() != obj.getClass())
+ }
+ if (getClass() != obj.getClass()) {
return false;
- DefaultControlTag other = (DefaultControlTag) obj;
- if (controlTagType != other.controlTagType)
+ }
+ final DefaultControlTag other = (DefaultControlTag) obj;
+ if (controlTagType != other.controlTagType) {
return false;
+ }
return true;
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/DefaultTagDefinition.java b/util/src/main/java/com/ning/billing/util/tag/DefaultTagDefinition.java
index bd951d5..139a66c 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DefaultTagDefinition.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DefaultTagDefinition.java
@@ -17,6 +17,7 @@
package com.ning.billing.util.tag;
import java.util.UUID;
+
import com.ning.billing.util.entity.EntityBase;
public class DefaultTagDefinition extends EntityBase implements TagDefinition {
@@ -24,17 +25,17 @@ public class DefaultTagDefinition extends EntityBase implements TagDefinition {
private final String description;
private final Boolean isControlTag;
- public DefaultTagDefinition(String name, String description, Boolean isControlTag) {
+ public DefaultTagDefinition(final String name, final String description, final Boolean isControlTag) {
this(UUID.randomUUID(), name, description, isControlTag);
}
- public DefaultTagDefinition(UUID id, String name, String description, Boolean isControlTag) {
+ public DefaultTagDefinition(final UUID id, final String name, final String description, final Boolean isControlTag) {
super(id);
this.name = name;
this.description = description;
this.isControlTag = isControlTag;
}
-
+
@Override
public String getName() {
return name;
diff --git a/util/src/main/java/com/ning/billing/util/tag/DefaultTagStore.java b/util/src/main/java/com/ning/billing/util/tag/DefaultTagStore.java
index a35b424..8bbe9e8 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DefaultTagStore.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DefaultTagStore.java
@@ -37,9 +37,9 @@ public class DefaultTagStore extends EntityCollectionBase<Tag> implements TagSto
* @return true if no tags contraindicate payment processing
*/
public boolean processPayment() {
- for (Tag tag : entities.values()) {
+ for (final Tag tag : entities.values()) {
if (tag instanceof ControlTag) {
- ControlTag controlTag = (ControlTag) tag;
+ final ControlTag controlTag = (ControlTag) tag;
if (controlTag.getControlTagType() == ControlTagType.AUTO_PAY_OFF) {
return false;
}
@@ -49,15 +49,16 @@ public class DefaultTagStore extends EntityCollectionBase<Tag> implements TagSto
return true;
}
- /***
+ /**
* Collates the contents of the TagStore to determine if invoices should be generated
+ *
* @return true if no tags contraindicate invoice generation
*/
@Override
public boolean generateInvoice() {
- for (Tag tag : entities.values()) {
+ for (final Tag tag : entities.values()) {
if (tag instanceof ControlTag) {
- ControlTag controlTag = (ControlTag) tag;
+ final ControlTag controlTag = (ControlTag) tag;
if (controlTag.getControlTagType() == ControlTagType.AUTO_INVOICING_OFF) {
return false;
}
@@ -69,7 +70,7 @@ public class DefaultTagStore extends EntityCollectionBase<Tag> implements TagSto
@Override
public boolean containsTagForDefinition(final TagDefinition tagDefinition) {
- for (Tag tag : entities.values()) {
+ for (final Tag tag : entities.values()) {
if (tag.getTagDefinitionName().equals(tagDefinition.getName())) {
return true;
}
@@ -80,7 +81,7 @@ public class DefaultTagStore extends EntityCollectionBase<Tag> implements TagSto
@Override
public boolean containsTagForControlTagType(final ControlTagType controlTagType) {
- for (Tag tag : entities.values()) {
+ for (final Tag tag : entities.values()) {
if (tag.getTagDefinitionName().equals(controlTagType.toString())) {
return true;
}
@@ -90,8 +91,8 @@ public class DefaultTagStore extends EntityCollectionBase<Tag> implements TagSto
}
@Override
- public Tag remove(TagDefinition tagDefinition) {
- Tag tag = entities.get(tagDefinition.getName());
+ public Tag remove(final TagDefinition tagDefinition) {
+ final Tag tag = entities.get(tagDefinition.getName());
return (tag == null) ? null : entities.remove(tag);
}
-}
\ No newline at end of file
+}
diff --git a/util/src/main/java/com/ning/billing/util/tag/DescriptiveTag.java b/util/src/main/java/com/ning/billing/util/tag/DescriptiveTag.java
index 3f875be..7c87e7b 100644
--- a/util/src/main/java/com/ning/billing/util/tag/DescriptiveTag.java
+++ b/util/src/main/java/com/ning/billing/util/tag/DescriptiveTag.java
@@ -24,19 +24,19 @@ public class DescriptiveTag extends EntityBase implements Tag {
private final String tagDefinitionName;
// use to hydrate objects from the persistence layer
- public DescriptiveTag(UUID id, String tagDefinitionName) {
+ public DescriptiveTag(final UUID id, final String tagDefinitionName) {
super(id);
this.tagDefinitionName = tagDefinitionName;
}
// use to create new objects
- public DescriptiveTag(TagDefinition tagDefinition) {
+ public DescriptiveTag(final TagDefinition tagDefinition) {
super();
this.tagDefinitionName = tagDefinition.getName();
}
// use to create new objects
- public DescriptiveTag(String tagDefinitionName) {
+ public DescriptiveTag(final String tagDefinitionName) {
super();
this.tagDefinitionName = tagDefinitionName;
}
@@ -56,26 +56,29 @@ public class DescriptiveTag extends EntityBase implements Tag {
final int prime = 31;
int result = 1;
result = prime * result + ((tagDefinitionName == null) ? 0
- : tagDefinitionName.hashCode());
+ : tagDefinitionName.hashCode());
return result;
}
@Override
- public boolean equals(Object obj) {
- if (this == obj)
+ public boolean equals(final Object obj) {
+ if (this == obj) {
return true;
- if (obj == null)
+ }
+ if (obj == null) {
return false;
- if (getClass() != obj.getClass())
+ }
+ if (getClass() != obj.getClass()) {
return false;
- DescriptiveTag other = (DescriptiveTag) obj;
+ }
+ final DescriptiveTag other = (DescriptiveTag) obj;
if (tagDefinitionName == null) {
- if (other.tagDefinitionName != null)
+ if (other.tagDefinitionName != null) {
return false;
- }
- else if (!tagDefinitionName.equals(other.tagDefinitionName))
+ }
+ } else if (!tagDefinitionName.equals(other.tagDefinitionName)) {
return false;
+ }
return true;
}
-
}
diff --git a/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDao.java b/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDao.java
index 9253c07..09e757d 100644
--- a/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDao.java
+++ b/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDao.java
@@ -17,13 +17,6 @@
package com.ning.billing.util.tag.dao;
import javax.annotation.Nullable;
-
-import com.ning.billing.util.callcontext.CallContext;
-import com.ning.billing.util.dao.ObjectType;
-import com.ning.billing.util.tag.Tag;
-import com.ning.billing.util.tag.TagDefinition;
-import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -31,34 +24,41 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
+import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
+
+import com.ning.billing.util.callcontext.CallContext;
+import com.ning.billing.util.dao.ObjectType;
+import com.ning.billing.util.tag.Tag;
+import com.ning.billing.util.tag.TagDefinition;
+
public class MockTagDao implements TagDao {
- private Map<UUID, List<Tag>> tagStore = new HashMap<UUID, List<Tag>>();
+ private final Map<UUID, List<Tag>> tagStore = new HashMap<UUID, List<Tag>>();
@Override
public void saveEntitiesFromTransaction(final Transmogrifier dao, final UUID objectId, final ObjectType objectType,
- final List<Tag> tags, final CallContext context) {
+ final List<Tag> tags, final CallContext context) {
tagStore.put(objectId, tags);
}
@Override
- public void saveEntities(UUID objectId, ObjectType objectType, List<Tag> tags, CallContext context) {
- tagStore.put(objectId, tags) ;
+ public void saveEntities(final UUID objectId, final ObjectType objectType, final List<Tag> tags, final CallContext context) {
+ tagStore.put(objectId, tags);
}
@Override
- public Map<String, Tag> loadEntities(UUID objectId, ObjectType objectType) {
+ public Map<String, Tag> loadEntities(final UUID objectId, final ObjectType objectType) {
return getMap(tagStore.get(objectId));
}
@Override
- public Map<String, Tag> loadEntitiesFromTransaction(Transmogrifier dao, UUID objectId, ObjectType objectType) {
+ public Map<String, Tag> loadEntitiesFromTransaction(final Transmogrifier dao, final UUID objectId, final ObjectType objectType) {
return getMap(tagStore.get(objectId));
}
private Map<String, Tag> getMap(@Nullable final List<Tag> tags) {
- Map<String, Tag> map = new HashMap<String, Tag>();
+ final Map<String, Tag> map = new HashMap<String, Tag>();
if (tags != null) {
- for (Tag tag : tags) {
+ for (final Tag tag : tags) {
map.put(tag.getTagDefinitionName(), tag);
}
}
@@ -68,8 +68,8 @@ public class MockTagDao implements TagDao {
@Override
public void insertTag(final UUID objectId, final ObjectType objectType,
final TagDefinition tagDefinition, final CallContext context) {
- Tag tag = new Tag() {
- private UUID id = UUID.randomUUID();
+ final Tag tag = new Tag() {
+ private final UUID id = UUID.randomUUID();
@Override
public String getTagDefinitionName() {
@@ -92,7 +92,7 @@ public class MockTagDao implements TagDao {
@Override
public void insertTags(final UUID objectId, final ObjectType objectType,
final List<TagDefinition> tagDefinitions, final CallContext context) {
- for (TagDefinition tagDefinition : tagDefinitions) {
+ for (final TagDefinition tagDefinition : tagDefinitions) {
insertTag(objectId, objectType, tagDefinition, context);
}
}
@@ -100,11 +100,11 @@ public class MockTagDao implements TagDao {
@Override
public void deleteTag(final UUID objectId, final ObjectType objectType,
final TagDefinition tagDefinition, final CallContext context) {
- List<Tag> tags = tagStore.get(objectId);
+ final List<Tag> tags = tagStore.get(objectId);
if (tags != null) {
- Iterator<Tag> tagIterator = tags.iterator();
+ final Iterator<Tag> tagIterator = tags.iterator();
while (tagIterator.hasNext()) {
- Tag tag = tagIterator.next();
+ final Tag tag = tagIterator.next();
if (tag.getTagDefinitionName().equals(tagDefinition.getName())) {
tagIterator.remove();
}
diff --git a/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDefinitionDao.java b/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDefinitionDao.java
index 5b5956b..d7a3e63 100644
--- a/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDefinitionDao.java
+++ b/util/src/test/java/com/ning/billing/util/tag/dao/MockTagDefinitionDao.java
@@ -21,8 +21,8 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.api.TagDefinitionApiException;
+import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.tag.DefaultTagDefinition;
import com.ning.billing.util.tag.TagDefinition;
@@ -42,18 +42,13 @@ public class MockTagDefinitionDao implements TagDefinitionDao {
@Override
public TagDefinition create(final String definitionName, final String description,
final CallContext context) throws TagDefinitionApiException {
- TagDefinition tag = new DefaultTagDefinition(definitionName, description, false);
+ final TagDefinition tag = new DefaultTagDefinition(definitionName, description, false);
tags.put(definitionName, tag);
return tag;
}
@Override
- public void deleteAllTagsForDefinition(final String definitionName, final CallContext context) throws TagDefinitionApiException {
- tags.remove(definitionName);
- }
-
- @Override
public void deleteTagDefinition(final String definitionName, final CallContext context) throws TagDefinitionApiException {
tags.remove(definitionName);
}
diff --git a/util/src/test/java/com/ning/billing/util/tag/MockTagStoreModuleSql.java b/util/src/test/java/com/ning/billing/util/tag/MockTagStoreModuleSql.java
index 6dbc537..d7a704b 100644
--- a/util/src/test/java/com/ning/billing/util/tag/MockTagStoreModuleSql.java
+++ b/util/src/test/java/com/ning/billing/util/tag/MockTagStoreModuleSql.java
@@ -19,11 +19,13 @@ package com.ning.billing.util.tag;
import org.skife.jdbi.v2.Handle;
import org.skife.jdbi.v2.IDBI;
+import org.skife.jdbi.v2.tweak.HandleCallback;
import com.ning.billing.dbi.MysqlTestingHelper;
import com.ning.billing.mock.glue.MockClockModule;
+import com.ning.billing.util.bus.Bus;
+import com.ning.billing.util.bus.InMemoryBus;
import com.ning.billing.util.glue.TagStoreModule;
-import org.skife.jdbi.v2.tweak.HandleCallback;
public class MockTagStoreModuleSql extends TagStoreModule {
private MysqlTestingHelper helper;
@@ -34,13 +36,14 @@ public class MockTagStoreModuleSql extends TagStoreModule {
bind(IDBI.class).toInstance(helper.getDBI());
bind(MysqlTestingHelper.class).toInstance(helper);
install(new MockClockModule());
+ bind(Bus.class).toInstance(new InMemoryBus());
super.configure();
}
public void execute(final String ddl) {
helper.getDBI().withHandle(new HandleCallback<Void>() {
@Override
- public Void withHandle(Handle handle) throws Exception {
+ public Void withHandle(final Handle handle) throws Exception {
handle.execute(ddl);
return null;
}
diff --git a/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java b/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
index b452203..8dcd638 100644
--- a/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
+++ b/util/src/test/java/com/ning/billing/util/tag/TestTagStore.java
@@ -22,14 +22,6 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
-import com.ning.billing.invoice.api.InvoiceApiException;
-import com.ning.billing.util.callcontext.CallContext;
-import com.ning.billing.util.callcontext.CallOrigin;
-import com.ning.billing.util.callcontext.UserType;
-import com.ning.billing.util.callcontext.DefaultCallContextFactory;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.dao.ObjectType;
-import com.ning.billing.util.tag.dao.TagDao;
import org.apache.commons.io.IOUtils;
import org.joda.time.DateTime;
import org.joda.time.Seconds;
@@ -38,15 +30,23 @@ import org.skife.jdbi.v2.IDBI;
import org.skife.jdbi.v2.tweak.HandleCallback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.testng.annotations.Guice;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import com.google.inject.Inject;
import com.ning.billing.dbi.MysqlTestingHelper;
-
+import com.ning.billing.invoice.api.InvoiceApiException;
import com.ning.billing.util.api.TagDefinitionApiException;
+import com.ning.billing.util.bus.Bus;
+import com.ning.billing.util.callcontext.CallContext;
+import com.ning.billing.util.callcontext.CallOrigin;
+import com.ning.billing.util.callcontext.DefaultCallContextFactory;
+import com.ning.billing.util.callcontext.UserType;
+import com.ning.billing.util.clock.Clock;
+import com.ning.billing.util.dao.ObjectType;
+import com.ning.billing.util.tag.dao.TagDao;
import com.ning.billing.util.tag.dao.TagDefinitionDao;
import static org.testng.Assert.assertEquals;
@@ -55,7 +55,7 @@ import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-@Test(groups={"slow"})
+@Test(groups = {"slow"})
@Guice(modules = MockTagStoreModuleSql.class)
public class TestTagStore {
@Inject
@@ -66,19 +66,22 @@ public class TestTagStore {
@Inject
private TagDao tagDao;
-
+
@Inject
private TagDefinitionDao tagDefinitionDao;
@Inject
private Clock clock;
+ @Inject
+ private Bus bus;
+
private TagDefinition testTag;
private final Logger log = LoggerFactory.getLogger(TestTagStore.class);
private CallContext context;
- @BeforeClass(groups="slow")
+ @BeforeClass(groups = "slow")
protected void setup() throws IOException {
// Health check test to make sure MySQL is setup properly
try {
@@ -88,20 +91,20 @@ public class TestTagStore {
helper.initDb(utilDdl);
context = new DefaultCallContextFactory(clock).createCallContext("Tag store test", CallOrigin.TEST, UserType.TEST);
-
+ bus.start();
+
cleanupTags();
tagDefinitionDao.create("tag1", "First tag", context);
testTag = tagDefinitionDao.create("testTag", "Second tag", context);
- }
- catch (Throwable t) {
+ } catch (Throwable t) {
log.error("Failed to start tag store tests", t);
fail(t.toString());
}
}
- @AfterClass(groups="slow")
- public void stopMysql()
- {
+ @AfterClass(groups = "slow")
+ public void stopMysql() {
+ bus.stop();
if (helper != null) {
helper.stopMysql();
}
@@ -111,7 +114,7 @@ public class TestTagStore {
try {
helper.getDBI().withHandle(new HandleCallback<Void>() {
@Override
- public Void withHandle(Handle handle) throws Exception {
+ public Void withHandle(final Handle handle) throws Exception {
handle.createScript("delete from tag_definitions").execute();
handle.createScript("delete from tag_definition_history").execute();
handle.createScript("delete from tags").execute();
@@ -122,52 +125,53 @@ public class TestTagStore {
} catch (Throwable ignore) {
}
}
- @Test(groups="slow")
+
+ @Test(groups = "slow")
public void testTagCreationAndRetrieval() {
- UUID accountId = UUID.randomUUID();
+ final UUID accountId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
- Tag tag = new DescriptiveTag(testTag);
+ final TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
+ final Tag tag = new DescriptiveTag(testTag);
tagStore.add(tag);
tagDao.saveEntities(accountId, ObjectType.ACCOUNT, tagStore.getEntityList(), context);
- Map<String, Tag> savedTags = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
+ final Map<String, Tag> savedTags = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
assertEquals(savedTags.size(), 1);
- Tag savedTag = savedTags.get(tag.getTagDefinitionName());
+ final Tag savedTag = savedTags.get(tag.getTagDefinitionName());
assertEquals(savedTag.getTagDefinitionName(), tag.getTagDefinitionName());
assertEquals(savedTag.getId(), tag.getId());
}
- @Test(groups="slow")
+ @Test(groups = "slow")
public void testControlTagCreation() {
- UUID accountId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
+ final UUID accountId = UUID.randomUUID();
+ final TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
- ControlTag tag = new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF);
+ final ControlTag tag = new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF);
tagStore.add(tag);
assertEquals(tagStore.generateInvoice(), false);
- List<Tag> tagList = tagStore.getEntityList();
+ final List<Tag> tagList = tagStore.getEntityList();
tagDao.saveEntities(accountId, ObjectType.ACCOUNT, tagList, context);
tagStore.clear();
assertEquals(tagStore.getEntityList().size(), 0);
- Map<String, Tag> tagMap = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
+ final Map<String, Tag> tagMap = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
assertEquals(tagMap.size(), 1);
assertEquals(tagMap.containsKey(ControlTagType.AUTO_INVOICING_OFF.toString()), true);
}
- @Test(groups="slow")
+ @Test(groups = "slow")
public void testDescriptiveTagCreation() {
- UUID accountId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
+ final UUID accountId = UUID.randomUUID();
+ final TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
- String definitionName = "SomeTestTag";
+ final String definitionName = "SomeTestTag";
TagDefinition tagDefinition = null;
try {
tagDefinition = tagDefinitionDao.create(definitionName, "Test tag for some test purpose", context);
@@ -175,7 +179,7 @@ public class TestTagStore {
fail("Tag definition creation failed.", e);
}
- DescriptiveTag tag = new DescriptiveTag(tagDefinition);
+ final DescriptiveTag tag = new DescriptiveTag(tagDefinition);
tagStore.add(tag);
assertEquals(tagStore.generateInvoice(), true);
@@ -184,18 +188,18 @@ public class TestTagStore {
tagStore.clear();
assertEquals(tagStore.getEntityList().size(), 0);
- Map<String, Tag> tagMap = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
+ final Map<String, Tag> tagMap = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
assertEquals(tagMap.size(), 1);
assertEquals(tagMap.containsKey(ControlTagType.AUTO_INVOICING_OFF.toString()), false);
}
- @Test(groups="slow")
+ @Test(groups = "slow")
public void testMixedTagCreation() {
- UUID accountId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
+ final UUID accountId = UUID.randomUUID();
+ final TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
- String definitionName = "MixedTagTest";
+ final String definitionName = "MixedTagTest";
TagDefinition tagDefinition = null;
try {
tagDefinition = tagDefinitionDao.create(definitionName, "Test tag for some test purpose", context);
@@ -203,11 +207,11 @@ public class TestTagStore {
fail("Tag definition creation failed.", e);
}
- DescriptiveTag descriptiveTag = new DescriptiveTag(tagDefinition);
+ final DescriptiveTag descriptiveTag = new DescriptiveTag(tagDefinition);
tagStore.add(descriptiveTag);
assertEquals(tagStore.generateInvoice(), true);
- ControlTag controlTag = new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF);
+ final ControlTag controlTag = new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF);
tagStore.add(controlTag);
assertEquals(tagStore.generateInvoice(), false);
@@ -216,39 +220,39 @@ public class TestTagStore {
tagStore.clear();
assertEquals(tagStore.getEntityList().size(), 0);
- Map<String, Tag> tagMap = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
+ final Map<String, Tag> tagMap = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
assertEquals(tagMap.size(), 2);
assertEquals(tagMap.containsKey(ControlTagType.AUTO_INVOICING_OFF.toString()), true);
}
- @Test(groups="slow")
+ @Test(groups = "slow")
public void testControlTags() {
- UUID accountId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
+ final UUID accountId = UUID.randomUUID();
+ final TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
assertEquals(tagStore.generateInvoice(), true);
assertEquals(tagStore.processPayment(), true);
- ControlTag invoiceTag = new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF);
+ final ControlTag invoiceTag = new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF);
tagStore.add(invoiceTag);
assertEquals(tagStore.generateInvoice(), false);
assertEquals(tagStore.processPayment(), true);
- ControlTag paymentTag = new DefaultControlTag(ControlTagType.AUTO_PAY_OFF);
+ final ControlTag paymentTag = new DefaultControlTag(ControlTagType.AUTO_PAY_OFF);
tagStore.add(paymentTag);
assertEquals(tagStore.generateInvoice(), false);
assertEquals(tagStore.processPayment(), false);
}
- @Test(groups="slow", expectedExceptions = TagDefinitionApiException.class)
+ @Test(groups = "slow", expectedExceptions = TagDefinitionApiException.class)
public void testTagDefinitionCreationWithControlTagName() throws TagDefinitionApiException {
- String definitionName = ControlTagType.AUTO_PAY_OFF.toString();
+ final String definitionName = ControlTagType.AUTO_PAY_OFF.toString();
tagDefinitionDao.create(definitionName, "This should break", context);
}
- @Test(groups="slow")
+ @Test(groups = "slow")
public void testTagDefinitionDeletionForUnusedDefinition() throws TagDefinitionApiException {
- String definitionName = "TestTag1234";
+ final String definitionName = "TestTag1234";
tagDefinitionDao.create(definitionName, "Some test tag", context);
TagDefinition tagDefinition = tagDefinitionDao.getByName(definitionName);
@@ -259,54 +263,52 @@ public class TestTagStore {
assertNull(tagDefinition);
}
- @Test(groups="slow", expectedExceptions = TagDefinitionApiException.class)
+ @Test(groups = "slow", expectedExceptions = TagDefinitionApiException.class)
public void testTagDefinitionDeletionForDefinitionInUse() throws TagDefinitionApiException {
- String definitionName = "TestTag12345";
+ final String definitionName = "TestTag12345";
tagDefinitionDao.create(definitionName, "Some test tag", context);
- TagDefinition tagDefinition = tagDefinitionDao.getByName(definitionName);
+ final TagDefinition tagDefinition = tagDefinitionDao.getByName(definitionName);
assertNotNull(tagDefinition);
- UUID objectId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(objectId, ObjectType.ACCOUNT);
- Tag tag = new DescriptiveTag(tagDefinition);
+ final UUID objectId = UUID.randomUUID();
+ final TagStore tagStore = new DefaultTagStore(objectId, ObjectType.ACCOUNT);
+ final Tag tag = new DescriptiveTag(tagDefinition);
tagStore.add(tag);
tagDao.saveEntities(objectId, ObjectType.ACCOUNT, tagStore.getEntityList(), context);
- Map<String, Tag> tagMap = tagDao.loadEntities(objectId, ObjectType.ACCOUNT);
+ final Map<String, Tag> tagMap = tagDao.loadEntities(objectId, ObjectType.ACCOUNT);
assertEquals(tagMap.size(), 1);
tagDefinitionDao.deleteTagDefinition(definitionName, context);
}
- @Test(groups="slow")
- public void testDeleteAllTagsForDefinitionInUse() {
- String definitionName = "TestTag1234567";
+ @Test(groups = "slow")
+ public void testDeleteTagBeforeDeleteTagDefinition() {
+ final String definitionName = "TestTag1234567";
try {
tagDefinitionDao.create(definitionName, "Some test tag", context);
} catch (TagDefinitionApiException e) {
fail("Could not create tag definition", e);
}
- TagDefinition tagDefinition = tagDefinitionDao.getByName(definitionName);
+ final TagDefinition tagDefinition = tagDefinitionDao.getByName(definitionName);
assertNotNull(tagDefinition);
- UUID objectId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(objectId, ObjectType.ACCOUNT);
- Tag tag = new DescriptiveTag(tagDefinition);
+ final UUID objectId = UUID.randomUUID();
+ final TagStore tagStore = new DefaultTagStore(objectId, ObjectType.ACCOUNT);
+ final Tag tag = new DescriptiveTag(tagDefinition);
tagStore.add(tag);
tagDao.saveEntities(objectId, ObjectType.ACCOUNT, tagStore.getEntityList(), context);
- Map<String, Tag> tagMap = tagDao.loadEntities(objectId, ObjectType.ACCOUNT);
+ final Map<String, Tag> tagMap = tagDao.loadEntities(objectId, ObjectType.ACCOUNT);
assertEquals(tagMap.size(), 1);
- try {
- tagDefinitionDao.deleteAllTagsForDefinition(definitionName, context);
- } catch (TagDefinitionApiException e) {
- fail("Could not delete tagStore for tag definition", e);
- }
+ tagDao.deleteTag(objectId, ObjectType.ACCOUNT, tagDefinition, context);
+ final Map<String, Tag> tagMapAfterDeletion = tagDao.loadEntities(objectId, ObjectType.ACCOUNT);
+ assertEquals(tagMapAfterDeletion.size(), 0);
try {
tagDefinitionDao.deleteTagDefinition(definitionName, context);
@@ -315,97 +317,50 @@ public class TestTagStore {
}
}
- @Test(groups="slow")
- public void testDeleteAllTagsForDefinitionNotInUse() {
- String definitionName = "TestTag4321";
- try {
- tagDefinitionDao.create(definitionName, "Some test tag", context);
- } catch (TagDefinitionApiException e) {
- fail("Could not create tag definition", e);
- }
-
- TagDefinition tagDefinition = tagDefinitionDao.getByName(definitionName);
- assertNotNull(tagDefinition);
-
- try {
- tagDefinitionDao.deleteAllTagsForDefinition(definitionName, context);
- } catch (TagDefinitionApiException e) {
- fail("Could not delete tagStore for tag definition", e);
- }
-
- try {
- tagDefinitionDao.deleteTagDefinition(definitionName, context);
- } catch (TagDefinitionApiException e) {
- fail("Could not delete tag definition", e);
- }
- }
-
- @Test(groups="slow", expectedExceptions = TagDefinitionApiException.class)
- public void testDeleteAllTagsForDefinitionWithWrongName() throws TagDefinitionApiException {
- String definitionName = "TestTag654321";
- String wrongDefinitionName = "TestTag564321";
- try {
- tagDefinitionDao.create(definitionName, "Some test tag", context);
- } catch (TagDefinitionApiException e) {
- fail("Could not create tag definition", e);
- }
-
- TagDefinition tagDefinition = tagDefinitionDao.getByName(definitionName);
- assertNotNull(tagDefinition);
-
- tagDefinitionDao.deleteAllTagsForDefinition(wrongDefinitionName, context);
-
- try {
- tagDefinitionDao.deleteTagDefinition(definitionName, context);
- } catch (TagDefinitionApiException e) {
- fail("Could not delete tag definition", e);
- }
- }
-
- @Test(groups="slow")
+ @Test(groups = "slow")
public void testGetTagDefinitions() {
- List<TagDefinition> definitionList = tagDefinitionDao.getTagDefinitions();
+ final List<TagDefinition> definitionList = tagDefinitionDao.getTagDefinitions();
assertTrue(definitionList.size() >= ControlTagType.values().length);
}
@Test
public void testTagInsertAudit() {
- UUID accountId = UUID.randomUUID();
+ final UUID accountId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
- Tag tag = new DescriptiveTag(testTag);
+ final TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
+ final Tag tag = new DescriptiveTag(testTag);
tagStore.add(tag);
tagDao.saveEntities(accountId, ObjectType.ACCOUNT, tagStore.getEntityList(), context);
- Map<String, Tag> savedTags = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
+ final Map<String, Tag> savedTags = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
assertEquals(savedTags.size(), 1);
- Tag savedTag = savedTags.get(tag.getTagDefinitionName());
+ final Tag savedTag = savedTags.get(tag.getTagDefinitionName());
assertEquals(savedTag.getTagDefinitionName(), tag.getTagDefinitionName());
assertEquals(savedTag.getId(), tag.getId());
- Handle handle = dbi.open();
- String query = String.format("select * from audit_log a inner join tag_history th on a.record_id = th.history_record_id where a.table_name = 'tag_history' and th.id='%s' and a.change_type='INSERT'",
+ final Handle handle = dbi.open();
+ final String query = String.format("select * from audit_log a inner join tag_history th on a.record_id = th.history_record_id where a.table_name = 'tag_history' and th.id='%s' and a.change_type='INSERT'",
tag.getId().toString());
- List<Map<String, Object>> result = handle.select(query);
+ final List<Map<String, Object>> result = handle.select(query);
handle.close();
assertNotNull(result);
assertEquals(result.size(), 1);
assertEquals(result.get(0).get("change_type"), "INSERT");
assertNotNull(result.get(0).get("change_date"));
- DateTime changeDate = new DateTime(result.get(0).get("change_date"));
+ final DateTime changeDate = new DateTime(result.get(0).get("change_date"));
assertTrue(Seconds.secondsBetween(changeDate, context.getCreatedDate()).getSeconds() < 2);
assertEquals(result.get(0).get("changed_by"), context.getUserName());
}
@Test
public void testTagDeleteAudit() {
- UUID accountId = UUID.randomUUID();
+ final UUID accountId = UUID.randomUUID();
- TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
- Tag tag = new DescriptiveTag(testTag);
+ final TagStore tagStore = new DefaultTagStore(accountId, ObjectType.ACCOUNT);
+ final Tag tag = new DescriptiveTag(testTag);
tagStore.add(tag);
tagDao.saveEntities(accountId, ObjectType.ACCOUNT, tagStore.getEntityList(), context);
@@ -413,38 +368,38 @@ public class TestTagStore {
tagStore.remove(tag);
tagDao.saveEntities(accountId, ObjectType.ACCOUNT, tagStore.getEntityList(), context);
- Map<String, Tag> savedTags = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
+ final Map<String, Tag> savedTags = tagDao.loadEntities(accountId, ObjectType.ACCOUNT);
assertEquals(savedTags.size(), 0);
- Handle handle = dbi.open();
- String query = String.format("select * from audit_log a inner join tag_history th on a.record_id = th.history_record_id where a.table_name = 'tag_history' and th.id='%s' and a.change_type='DELETE'",
- tag.getId().toString());
- List<Map<String, Object>> result = handle.select(query);
+ final Handle handle = dbi.open();
+ final String query = String.format("select * from audit_log a inner join tag_history th on a.record_id = th.history_record_id where a.table_name = 'tag_history' and th.id='%s' and a.change_type='DELETE'",
+ tag.getId().toString());
+ final List<Map<String, Object>> result = handle.select(query);
handle.close();
assertNotNull(result);
assertEquals(result.size(), 1);
assertNotNull(result.get(0).get("change_date"));
- DateTime changeDate = new DateTime(result.get(0).get("change_date"));
+ final DateTime changeDate = new DateTime(result.get(0).get("change_date"));
assertTrue(Seconds.secondsBetween(changeDate, context.getUpdatedDate()).getSeconds() < 2);
assertEquals(result.get(0).get("changed_by"), context.getUserName());
}
@Test
public void testAddTag() {
- UUID objectId = UUID.randomUUID();
- ObjectType objectType = ObjectType.INVOICE;
- TagDefinition tagDefinition = new DefaultTagDefinition("test tag", "test", false);
+ final UUID objectId = UUID.randomUUID();
+ final ObjectType objectType = ObjectType.INVOICE;
+ final TagDefinition tagDefinition = new DefaultTagDefinition("test tag", "test", false);
tagDao.insertTag(objectId, objectType, tagDefinition, context);
- Map<String, Tag> savedTags = tagDao.loadEntities(objectId, objectType);
+ final Map<String, Tag> savedTags = tagDao.loadEntities(objectId, objectType);
assertEquals(savedTags.size(), 1);
}
@Test
public void testRemoveTag() throws InvoiceApiException {
- UUID objectId = UUID.randomUUID();
- ObjectType objectType = ObjectType.INVOICE;
- TagDefinition tagDefinition = new DefaultTagDefinition("test tag", "test", false);
+ final UUID objectId = UUID.randomUUID();
+ final ObjectType objectType = ObjectType.INVOICE;
+ final TagDefinition tagDefinition = new DefaultTagDefinition("test tag", "test", false);
tagDao.insertTag(objectId, objectType, tagDefinition, context);
Map<String, Tag> savedTags = tagDao.loadEntities(objectId, objectType);
assertEquals(savedTags.size(), 1);
@@ -456,10 +411,10 @@ public class TestTagStore {
@Test
public void testSetTags() {
- UUID objectId = UUID.randomUUID();
- ObjectType objectType = ObjectType.INVOICE;
+ final UUID objectId = UUID.randomUUID();
+ final ObjectType objectType = ObjectType.INVOICE;
- List<Tag> tags = new ArrayList<Tag>();
+ final List<Tag> tags = new ArrayList<Tag>();
tags.add(new DescriptiveTag("test 1"));
tags.add(new DescriptiveTag("test 2"));
tags.add(new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF));