Details
diff --git a/api/src/main/java/com/ning/billing/ErrorCode.java b/api/src/main/java/com/ning/billing/ErrorCode.java
index 4dcf09f..baaa3c4 100644
--- a/api/src/main/java/com/ning/billing/ErrorCode.java
+++ b/api/src/main/java/com/ning/billing/ErrorCode.java
@@ -131,6 +131,8 @@ public enum ErrorCode {
TAG_DEFINITION_ALREADY_EXISTS(3901, "The tag definition name already exists (name: %s)"),
TAG_DEFINITION_DOES_NOT_EXIST(3902, "The tag definition name does not exist (name: %s)"),
TAG_DEFINITION_IN_USE(3903, "The tag definition name is currently in use (name: %s)"),
+
+ CONTROL_TAG_DOES_NOT_EXIST(3904, "The control tag does not exist (name: %s)"),
/*
*
diff --git a/api/src/main/java/com/ning/billing/util/api/TagDefinitionApiException.java b/api/src/main/java/com/ning/billing/util/api/TagDefinitionApiException.java
index 81750cb..a67f1ad 100644
--- a/api/src/main/java/com/ning/billing/util/api/TagDefinitionApiException.java
+++ b/api/src/main/java/com/ning/billing/util/api/TagDefinitionApiException.java
@@ -20,6 +20,8 @@ import com.ning.billing.BillingExceptionBase;
import com.ning.billing.ErrorCode;
public class TagDefinitionApiException extends BillingExceptionBase {
+ private static final long serialVersionUID = 1L;
+
public TagDefinitionApiException(Throwable cause, int code, final String msg) {
super(cause, code, msg);
}
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
index 1434f8f..37a1020 100644
--- a/api/src/main/java/com/ning/billing/util/api/TagDefinitionService.java
+++ b/api/src/main/java/com/ning/billing/util/api/TagDefinitionService.java
@@ -19,5 +19,5 @@ package com.ning.billing.util.api;
import com.ning.billing.lifecycle.KillbillService;
public interface TagDefinitionService extends KillbillService {
- public TagDefinitionUserApi getTagDefinitionUserApi();
+ public TagUserApi getTagDefinitionUserApi();
}
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 a598275..5f87a6a 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,7 +17,7 @@
package com.ning.billing.util.glue;
import com.google.inject.AbstractModule;
-import com.ning.billing.util.api.TagDefinitionUserApi;
+import com.ning.billing.util.api.TagUserApi;
import com.ning.billing.util.tag.api.DefaultTagDefinitionUserApi;
import com.ning.billing.util.tag.dao.DefaultTagDefinitionDao;
import com.ning.billing.util.tag.dao.TagDefinitionDao;
@@ -36,6 +36,6 @@ public class TagStoreModule extends AbstractModule
protected void configure()
{
installDaos();
- bind(TagDefinitionUserApi.class).to(DefaultTagDefinitionUserApi.class).asEagerSingleton();
+ bind(TagUserApi.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
index 0e1f99e..d24ac9a 100644
--- 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
@@ -18,19 +18,19 @@ 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;
+import com.ning.billing.util.api.TagUserApi;
public class DefaultTagDefinitionService implements TagDefinitionService {
private static final String TAG_DEFINITION_SERVICE_NAME = "tag-service";
- private final TagDefinitionUserApi api;
+ private final TagUserApi api;
@Inject
- public DefaultTagDefinitionService(final TagDefinitionUserApi api) {
+ public DefaultTagDefinitionService(final TagUserApi api) {
this.api = api;
}
@Override
- public TagDefinitionUserApi getTagDefinitionUserApi() {
+ public TagUserApi getTagDefinitionUserApi() {
return api;
}
diff --git a/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagDefinitionUserApi.java b/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagDefinitionUserApi.java
index 8489993..03e9740 100644
--- a/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagDefinitionUserApi.java
+++ b/util/src/main/java/com/ning/billing/util/tag/api/DefaultTagDefinitionUserApi.java
@@ -17,13 +17,21 @@
package com.ning.billing.util.tag.api;
import java.util.List;
+
+import org.joda.time.DateTime;
+
import com.google.inject.Inject;
+import com.ning.billing.ErrorCode;
import com.ning.billing.util.api.TagDefinitionApiException;
-import com.ning.billing.util.api.TagDefinitionUserApi;
+import com.ning.billing.util.api.TagUserApi;
+import com.ning.billing.util.tag.ControlTagType;
+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.dao.TagDefinitionDao;
-public class DefaultTagDefinitionUserApi implements TagDefinitionUserApi {
+public class DefaultTagDefinitionUserApi implements TagUserApi {
private TagDefinitionDao dao;
@Inject
@@ -56,4 +64,28 @@ public class DefaultTagDefinitionUserApi implements TagDefinitionUserApi {
throws TagDefinitionApiException {
return dao.getByName(name);
}
+
+ @Override
+ public Tag createControlTag(String controlTagName, String addedBy,
+ DateTime addedDate) 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(addedBy, addedDate, type);
+ }
+
+ @Override
+ public Tag createDescriptiveTag(String tagDefinitionName, String addedBy,
+ DateTime addedDate) throws TagDefinitionApiException {
+ TagDefinition tagDefinition = getTagDefinition(tagDefinitionName);
+
+ return new DescriptiveTag(tagDefinition, addedBy, addedDate);
+ }
}