Details
diff --git a/tenant/src/main/java/com/ning/billing/tenant/dao/DefaultTenantDao.java b/tenant/src/main/java/com/ning/billing/tenant/dao/DefaultTenantDao.java
index a7084a5..959d8bd 100644
--- a/tenant/src/main/java/com/ning/billing/tenant/dao/DefaultTenantDao.java
+++ b/tenant/src/main/java/com/ning/billing/tenant/dao/DefaultTenantDao.java
@@ -114,7 +114,7 @@ public class DefaultTenantDao extends EntityDaoBase<TenantModelDao, Tenant, Tena
return ImmutableList.copyOf(Collections2.transform(tenantKV, new Function<TenantKVModelDao, String>() {
@Override
public String apply(final TenantKVModelDao in) {
- return in.getValue();
+ return in.getTenantValue();
}
}));
}
@@ -138,7 +138,12 @@ public class DefaultTenantDao extends EntityDaoBase<TenantModelDao, Tenant, Tena
transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Void>() {
@Override
public Void inTransaction(final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory) throws Exception {
- entitySqlDaoWrapperFactory.become(TenantKVSqlDao.class).markTenantKeyAsDeleted(key, context);
+ final List<TenantKVModelDao> tenantKVs = entitySqlDaoWrapperFactory.become(TenantKVSqlDao.class).getTenantValueForKey(key, context);
+ for (TenantKVModelDao cur : tenantKVs) {
+ if (cur.getTenantKey().equals(key)) {
+ entitySqlDaoWrapperFactory.become(TenantKVSqlDao.class).markTenantKeyAsDeleted(cur.getId().toString(), context);
+ }
+ }
return null;
}
});
diff --git a/tenant/src/main/java/com/ning/billing/tenant/dao/TenantKVModelDao.java b/tenant/src/main/java/com/ning/billing/tenant/dao/TenantKVModelDao.java
index 516ce59..362bbbe 100644
--- a/tenant/src/main/java/com/ning/billing/tenant/dao/TenantKVModelDao.java
+++ b/tenant/src/main/java/com/ning/billing/tenant/dao/TenantKVModelDao.java
@@ -27,25 +27,26 @@ import com.ning.billing.util.entity.dao.EntityModelDao;
public class TenantKVModelDao extends EntityBase implements EntityModelDao<TenantKV> {
- private String key;
- private String value;
+ private String tenantKey;
+ private String tenantValue;
+
private Boolean isActive;
public TenantKVModelDao() { /* For the DAO mapper */ }
public TenantKVModelDao(final UUID id, final DateTime createdDate, final DateTime updatedDate, final String key, final String value) {
super(id, createdDate, updatedDate);
- this.key = key;
- this.value = value;
+ this.tenantKey = key;
+ this.tenantValue = value;
this.isActive = true;
}
- public String getKey() {
- return key;
+ public String getTenantKey() {
+ return tenantKey;
}
- public String getValue() {
- return value;
+ public String getTenantValue() {
+ return tenantValue;
}
public Boolean getIsActive() {
@@ -56,8 +57,8 @@ public class TenantKVModelDao extends EntityBase implements EntityModelDao<Tenan
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("TenantKVModelDao");
- sb.append("{key='").append(key).append('\'');
- sb.append(", value='").append(value).append('\'');
+ sb.append("{key='").append(tenantKey).append('\'');
+ sb.append(", value='").append(tenantValue).append('\'');
sb.append(", isActive=").append(isActive);
sb.append('}');
return sb.toString();
@@ -80,10 +81,10 @@ public class TenantKVModelDao extends EntityBase implements EntityModelDao<Tenan
if (isActive != null ? !isActive.equals(that.isActive) : that.isActive != null) {
return false;
}
- if (key != null ? !key.equals(that.key) : that.key != null) {
+ if (tenantKey != null ? !tenantKey.equals(that.tenantKey) : that.tenantKey != null) {
return false;
}
- if (value != null ? !value.equals(that.value) : that.value != null) {
+ if (tenantValue != null ? !tenantValue.equals(that.tenantValue) : that.tenantValue != null) {
return false;
}
@@ -93,8 +94,8 @@ public class TenantKVModelDao extends EntityBase implements EntityModelDao<Tenan
@Override
public int hashCode() {
int result = super.hashCode();
- result = 31 * result + (key != null ? key.hashCode() : 0);
- result = 31 * result + (value != null ? value.hashCode() : 0);
+ result = 31 * result + (tenantKey != null ? tenantKey.hashCode() : 0);
+ result = 31 * result + (tenantValue != null ? tenantValue.hashCode() : 0);
result = 31 * result + (isActive != null ? isActive.hashCode() : 0);
return result;
}
diff --git a/tenant/src/main/java/com/ning/billing/tenant/dao/TenantKVSqlDao.java b/tenant/src/main/java/com/ning/billing/tenant/dao/TenantKVSqlDao.java
index f75be0f..0ff9119 100644
--- a/tenant/src/main/java/com/ning/billing/tenant/dao/TenantKVSqlDao.java
+++ b/tenant/src/main/java/com/ning/billing/tenant/dao/TenantKVSqlDao.java
@@ -35,11 +35,11 @@ import com.ning.billing.util.entity.dao.EntitySqlDaoStringTemplate;
public interface TenantKVSqlDao extends EntitySqlDao<TenantKVModelDao, TenantKV> {
@SqlQuery
- public List<TenantKVModelDao> getTenantValueForKey(@Bind("key") final String key,
+ public List<TenantKVModelDao> getTenantValueForKey(@Bind("tenantKey") final String key,
@BindBean final InternalTenantContext context);
@SqlUpdate
@Audited(ChangeType.DELETE)
- public void markTenantKeyAsDeleted(@Bind("key") final String key,
+ public void markTenantKeyAsDeleted(@Bind("id")final String id,
@BindBean final InternalCallContext context);
}
diff --git a/tenant/src/main/resources/com/ning/billing/tenant/dao/TenantKVSqlDao.sql.stg b/tenant/src/main/resources/com/ning/billing/tenant/dao/TenantKVSqlDao.sql.stg
index 20edb99..b44b46c 100644
--- a/tenant/src/main/resources/com/ning/billing/tenant/dao/TenantKVSqlDao.sql.stg
+++ b/tenant/src/main/resources/com/ning/billing/tenant/dao/TenantKVSqlDao.sql.stg
@@ -3,8 +3,8 @@ group TenantKVSqlDao: EntitySqlDao;
tableName() ::= "tenant_kvs"
tableFields(prefix) ::= <<
- <prefix>t_key
-, <prefix>t_value
+ <prefix>tenant_key
+, <prefix>tenant_value
, <prefix>is_active
, <prefix>created_date
, <prefix>created_by
@@ -13,8 +13,8 @@ tableFields(prefix) ::= <<
>>
tableValues() ::= <<
- :key
-, :value
+ :tenantKey
+, :tenantValue
, :isActive
, :createdDate
, :createdBy
@@ -31,7 +31,8 @@ getTenantValueForKey() ::= <<
select
<allTableFields("t.")>
from <tableName()> t
-where t.t_key = :key
+where t.tenant_key = :tenantKey
+and t.is_active = 1
<AND_CHECK_TENANT("t.")>
;
>>
@@ -39,7 +40,7 @@ where t.t_key = :key
markTenantKeyAsDeleted() ::= <<
update <tableName()> t
set t.is_active = 0
-where t.t_key = :key
+where t.id = :id
<AND_CHECK_TENANT("t.")>
;
>>
diff --git a/tenant/src/main/resources/com/ning/billing/tenant/ddl.sql b/tenant/src/main/resources/com/ning/billing/tenant/ddl.sql
index 4096d11..664a2e0 100644
--- a/tenant/src/main/resources/com/ning/billing/tenant/ddl.sql
+++ b/tenant/src/main/resources/com/ning/billing/tenant/ddl.sql
@@ -21,12 +21,13 @@ CREATE TABLE tenant_kvs (
record_id int(11) unsigned NOT NULL AUTO_INCREMENT,
id char(36) NOT NULL,
tenant_record_id int(11) unsigned default null,
- t_key varchar(64) NOT NULL,
- t_value varchar(1024) NOT NULL,
+ tenant_key varchar(64) NOT NULL,
+ tenant_value varchar(1024) NOT NULL,
+ is_active bool DEFAULT 1,
created_date datetime NOT NULL,
created_by varchar(50) NOT NULL,
updated_date datetime DEFAULT NULL,
updated_by varchar(50) DEFAULT NULL,
PRIMARY KEY(record_id)
) ENGINE=innodb;
-CREATE INDEX tenant_kvs_key ON tenant_kvs(tenant_record_id, t_key);
+CREATE INDEX tenant_kvs_key ON tenant_kvs(tenant_key);