killbill-uncached

Added api calls to create tags

3/21/2012 10:04:20 PM

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);
+    }
 }