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 361b6f5..a7084a5 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
@@ -110,7 +110,7 @@ public class DefaultTenantDao extends EntityDaoBase<TenantModelDao, Tenant, Tena
return transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<List<String>>() {
@Override
public List<String> inTransaction(final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory) throws Exception {
- final List<TenantKVModelDao> tenantKV = entitySqlDaoWrapperFactory.become(TenantKVSqlDao.class).getTenantValueForKey(key, context.getTenantRecordId());
+ final List<TenantKVModelDao> tenantKV = entitySqlDaoWrapperFactory.become(TenantKVSqlDao.class).getTenantValueForKey(key, context);
return ImmutableList.copyOf(Collections2.transform(tenantKV, new Function<TenantKVModelDao, String>() {
@Override
public String apply(final TenantKVModelDao in) {
@@ -126,7 +126,8 @@ 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).insertTenantKeyValue(UUID.randomUUID().toString(), key, value, context.getTenantRecordId(), context);
+ final TenantKVModelDao tenantKVModelDao = new TenantKVModelDao(UUID.randomUUID(), context.getCreatedDate(), context.getUpdatedDate(), key, value);
+ entitySqlDaoWrapperFactory.become(TenantKVSqlDao.class).create(tenantKVModelDao, context);
return null;
}
});
@@ -137,7 +138,7 @@ 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).deleteTenantKey(key, context.getTenantRecordId());
+ entitySqlDaoWrapperFactory.become(TenantKVSqlDao.class).markTenantKeyAsDeleted(key, 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 3eb3955..516ce59 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
@@ -29,6 +29,7 @@ public class TenantKVModelDao extends EntityBase implements EntityModelDao<Tenan
private String key;
private String value;
+ private Boolean isActive;
public TenantKVModelDao() { /* For the DAO mapper */ }
@@ -36,6 +37,7 @@ public class TenantKVModelDao extends EntityBase implements EntityModelDao<Tenan
super(id, createdDate, updatedDate);
this.key = key;
this.value = value;
+ this.isActive = true;
}
public String getKey() {
@@ -46,12 +48,17 @@ public class TenantKVModelDao extends EntityBase implements EntityModelDao<Tenan
return value;
}
+ public Boolean getIsActive() {
+ return isActive;
+ }
+
@Override
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(", isActive=").append(isActive);
sb.append('}');
return sb.toString();
}
@@ -70,6 +77,9 @@ public class TenantKVModelDao extends EntityBase implements EntityModelDao<Tenan
final TenantKVModelDao that = (TenantKVModelDao) o;
+ if (isActive != null ? !isActive.equals(that.isActive) : that.isActive != null) {
+ return false;
+ }
if (key != null ? !key.equals(that.key) : that.key != null) {
return false;
}
@@ -85,6 +95,7 @@ public class TenantKVModelDao extends EntityBase implements EntityModelDao<Tenan
int result = super.hashCode();
result = 31 * result + (key != null ? key.hashCode() : 0);
result = 31 * result + (value != null ? value.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 ccef4fd..f75be0f 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
@@ -16,60 +16,30 @@
package com.ning.billing.tenant.dao;
-import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.List;
-import java.util.UUID;
-import org.joda.time.DateTime;
-import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
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.tweak.ResultSetMapper;
-import com.ning.billing.tenant.api.DefaultTenantKV;
import com.ning.billing.tenant.api.TenantKV;
-import com.ning.billing.tenant.dao.TenantKVSqlDao.TenantKVMapper;
+import com.ning.billing.util.audit.ChangeType;
import com.ning.billing.util.callcontext.InternalCallContext;
-import com.ning.billing.util.dao.MapperBase;
-import com.ning.billing.util.dao.UuidMapper;
+import com.ning.billing.util.callcontext.InternalTenantContext;
+import com.ning.billing.util.entity.dao.Audited;
import com.ning.billing.util.entity.dao.EntitySqlDao;
import com.ning.billing.util.entity.dao.EntitySqlDaoStringTemplate;
@EntitySqlDaoStringTemplate
-@RegisterMapper({UuidMapper.class, TenantKVMapper.class})
public interface TenantKVSqlDao extends EntitySqlDao<TenantKVModelDao, TenantKV> {
- // TODO should take a context
-
@SqlQuery
public List<TenantKVModelDao> getTenantValueForKey(@Bind("key") final String key,
- @Bind("tenantRecordId") Long tenantRecordId);
-
- @SqlUpdate
- public void insertTenantKeyValue(@Bind("id") String id,
- @Bind("key") final String key,
- @Bind("value") final String value,
- @Bind("tenantRecordId") Long tenantRecordId,
- @BindBean final InternalCallContext context);
+ @BindBean final InternalTenantContext context);
@SqlUpdate
- public void deleteTenantKey(@Bind("key") final String key,
- @Bind("tenantRecordId") Long tenantRecordId);
-
- public class TenantKVMapper extends MapperBase implements ResultSetMapper<TenantKV> {
-
- @Override
- public TenantKV map(final int index, final ResultSet result, final StatementContext context) throws SQLException {
- final UUID id = getUUID(result, "id");
- final String key = result.getString("t_key");
- final String value = result.getString("t_value");
- final DateTime createdDate = getDateTime(result, "created_date");
- final DateTime updatedDate = getDateTime(result, "updated_date");
- return new DefaultTenantKV(id, key, value, createdDate, updatedDate);
- }
- }
+ @Audited(ChangeType.DELETE)
+ public void markTenantKeyAsDeleted(@Bind("key") final String key,
+ @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 ce66a1a..20edb99 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
@@ -1,58 +1,45 @@
-group TenantKVSqlDao;
-
-
-tenantKVFields(prefix) ::= <<
- <prefix>record_id,
- <prefix>id,
- <prefix>tenant_record_id,
- <prefix>t_key,
- <prefix>t_value,
- <prefix>created_date,
- <prefix>created_by,
- <prefix>updated_date,
- <prefix>updated_by
+group TenantKVSqlDao: EntitySqlDao;
+
+tableName() ::= "tenant_kvs"
+
+tableFields(prefix) ::= <<
+ <prefix>t_key
+, <prefix>t_value
+, <prefix>is_active
+, <prefix>created_date
+, <prefix>created_by
+, <prefix>updated_date
+, <prefix>updated_by
>>
-insertTenantKeyValue() ::= <<
- INSERT INTO tenant_kvs (
- id
- , tenant_record_id
- , t_key
- , t_value
- , created_date
- , created_by
- , updated_date
- , updated_by
- ) VALUES (
- :id
- , :tenantRecordId
- , :key
- , :value
- , :createdDate
- , :userName
- , :updatedDate
- , :userName
- );
+tableValues() ::= <<
+ :key
+, :value
+, :isActive
+, :createdDate
+, :createdBy
+, :updatedDate
+, :updatedBy
>>
+accountRecordIdFieldWithComma() ::= ""
-getTenantValueForKey() ::= <<
- SELECT <tenantKVFields()>
- FROM tenant_kvs
- WHERE
- tenant_record_id = :tenantRecordId AND t_key = :key
- ;
->>
+accountRecordIdValueWithComma() ::= ""
-deleteTenantKey() ::= <<
- DELETE FROM tenant_kvs
- WHERE
- tenant_record_id = :tenantRecordId AND t_key = :key
- ;
+getTenantValueForKey() ::= <<
+select
+ <allTableFields("t.")>
+from <tableName()> t
+where t.t_key = :key
+<AND_CHECK_TENANT("t.")>
+;
>>
-
-test() ::= <<
- SELECT 1 FROM tenants;
+markTenantKeyAsDeleted() ::= <<
+update <tableName()> t
+set t.is_active = 0
+where t.t_key = :key
+<AND_CHECK_TENANT("t.")>
+;
>>