killbill-memoizeit
Changes
util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java 2(+2 -0)
Details
diff --git a/util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java b/util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java
index 7027dd4..af7b0df 100644
--- a/util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java
+++ b/util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java
@@ -75,6 +75,7 @@ public class DefaultCustomFieldUserApi implements CustomFieldUserApi {
CUSTOM_FIELD_MODEL_DAO_CUSTOM_FIELD_FUNCTION);
}
+ @Override
public Pagination<CustomField> searchCustomFields(final String fieldName, final String fieldValue, final ObjectType objectType, final Long offset, final Long limit, final TenantContext context) {
return getEntityPaginationNoException(limit,
new SourcePaginationBuilder<CustomFieldModelDao, CustomFieldApiException>() {
@@ -87,6 +88,7 @@ public class DefaultCustomFieldUserApi implements CustomFieldUserApi {
}
+ @Override
public Pagination<CustomField> searchCustomFields(final String fieldName, final ObjectType objectType, final Long offset, final Long limit, final TenantContext context) {
return getEntityPaginationNoException(limit,
new SourcePaginationBuilder<CustomFieldModelDao, CustomFieldApiException>() {
diff --git a/util/src/main/java/org/killbill/billing/util/customfield/dao/CustomFieldSqlDao.java b/util/src/main/java/org/killbill/billing/util/customfield/dao/CustomFieldSqlDao.java
index 141f154..051c253 100644
--- a/util/src/main/java/org/killbill/billing/util/customfield/dao/CustomFieldSqlDao.java
+++ b/util/src/main/java/org/killbill/billing/util/customfield/dao/CustomFieldSqlDao.java
@@ -58,7 +58,6 @@ public interface CustomFieldSqlDao extends EntitySqlDao<CustomFieldModelDao, Cus
@SqlQuery
@SmartFetchSize(shouldStream = true)
public Iterator<CustomFieldModelDao> searchByObjectTypeAndFieldName(@Bind("fieldName") String fieldName,
- @Define("fieldValue") final String fieldValue,
@Bind("objectType") ObjectType objectType,
@Bind("offset") final Long offset,
@Bind("rowCount") final Long rowCount,
@@ -67,8 +66,25 @@ public interface CustomFieldSqlDao extends EntitySqlDao<CustomFieldModelDao, Cus
@SqlQuery
public Long getSearchCountByObjectTypeAndFieldName(@Bind("fieldName") String fieldName,
- @Define("fieldValue") final String fieldValue,
@Bind("objectType") ObjectType objectType,
@SmartBindBean final InternalTenantContext context);
+
+ @SqlQuery
+ @SmartFetchSize(shouldStream = true)
+ public Iterator<CustomFieldModelDao> searchByObjectTypeAndFieldNameValue(@Bind("fieldName") String fieldName,
+ @Bind("fieldValue") final String fieldValue,
+ @Bind("objectType") ObjectType objectType,
+ @Bind("offset") final Long offset,
+ @Bind("rowCount") final Long rowCount,
+ @Define("ordering") final String ordering,
+ @SmartBindBean final InternalTenantContext context);
+
+ @SqlQuery
+ public Long getSearchCountByObjectTypeAndFieldNameValue(@Bind("fieldName") String fieldName,
+ @Bind("fieldValue") final String fieldValue,
+ @Bind("objectType") ObjectType objectType,
+ @SmartBindBean final InternalTenantContext context);
+
+
}
diff --git a/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java b/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
index 07c735d..7ac724f 100644
--- a/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
+++ b/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
@@ -247,9 +247,22 @@ public class DefaultCustomFieldDao extends EntityDaoBase<CustomFieldModelDao, Cu
@Override
public Pagination<CustomFieldModelDao> searchCustomFields(final String fieldName, final ObjectType objectType, final Long offset, final Long limit, final InternalTenantContext context) {
- return searchCustomFields(fieldName, null, objectType, offset, limit, context);
- }
+ return paginationHelper.getPagination(CustomFieldSqlDao.class,
+ new PaginationIteratorBuilder<CustomFieldModelDao, CustomField, CustomFieldSqlDao>() {
+ @Override
+ public Long getCount(final CustomFieldSqlDao customFieldSqlDao, final InternalTenantContext context) {
+ return customFieldSqlDao.getSearchCountByObjectTypeAndFieldName(fieldName, objectType, context);
+ }
+ @Override
+ public Iterator<CustomFieldModelDao> build(final CustomFieldSqlDao customFieldSqlDao, final Long offset, final Long limit, final Ordering ordering, final InternalTenantContext context) {
+ return customFieldSqlDao.searchByObjectTypeAndFieldName(fieldName, objectType, offset, limit, ordering.toString(), context);
+ }
+ },
+ offset,
+ limit,
+ context);
+ }
@Override
public Pagination<CustomFieldModelDao> searchCustomFields(final String fieldName, @Nullable final String fieldValue, final ObjectType objectType, final Long offset, final Long limit, final InternalTenantContext context) {
@@ -257,12 +270,12 @@ public class DefaultCustomFieldDao extends EntityDaoBase<CustomFieldModelDao, Cu
new PaginationIteratorBuilder<CustomFieldModelDao, CustomField, CustomFieldSqlDao>() {
@Override
public Long getCount(final CustomFieldSqlDao customFieldSqlDao, final InternalTenantContext context) {
- return customFieldSqlDao.getSearchCountByObjectTypeAndFieldName(fieldName, fieldValue, objectType, context);
+ return customFieldSqlDao.getSearchCountByObjectTypeAndFieldNameValue(fieldName, fieldValue, objectType, context);
}
@Override
public Iterator<CustomFieldModelDao> build(final CustomFieldSqlDao customFieldSqlDao, final Long offset, final Long limit, final Ordering ordering, final InternalTenantContext context) {
- return customFieldSqlDao.searchByObjectTypeAndFieldName(fieldName, fieldValue, objectType, offset, limit, ordering.toString(), context);
+ return customFieldSqlDao.searchByObjectTypeAndFieldNameValue(fieldName, fieldValue, objectType, offset, limit, ordering.toString(), context);
}
},
offset,
diff --git a/util/src/main/resources/org/killbill/billing/util/customfield/dao/CustomFieldSqlDao.sql.stg b/util/src/main/resources/org/killbill/billing/util/customfield/dao/CustomFieldSqlDao.sql.stg
index 1946810..96a2ab0 100644
--- a/util/src/main/resources/org/killbill/billing/util/customfield/dao/CustomFieldSqlDao.sql.stg
+++ b/util/src/main/resources/org/killbill/billing/util/customfield/dao/CustomFieldSqlDao.sql.stg
@@ -68,27 +68,25 @@ searchQuery(prefix) ::= <<
or <prefix>field_value like :likeSearchKey
>>
-getSearchCountByObjectTypeAndFieldName(fieldValue) ::= <<
+getSearchCountByObjectTypeAndFieldName() ::= <<
select
count(1) as count
from <tableName()>
where
object_type = :objectType
and field_name = :fieldName
-<if(fieldValue)>and field_value = '<fieldValue>'<endif>
<andCheckSoftDeletionWithComma("")>
<AND_CHECK_TENANT("")>
;
>>
-searchByObjectTypeAndFieldName(fieldValue, ordering) ::= <<
+searchByObjectTypeAndFieldName(ordering) ::= <<
select
<allTableFields()>
from <tableName()>
where
object_type = :objectType
and field_name = :fieldName
-<if(fieldValue)>and field_value = '<fieldValue>'<endif>
<andCheckSoftDeletionWithComma("")>
<AND_CHECK_TENANT("")>
order by <recordIdField("")> <ordering>
@@ -96,4 +94,33 @@ limit :rowCount offset :offset
;
>>
+getSearchCountByObjectTypeAndFieldNameValue() ::= <<
+select
+count(1) as count
+from <tableName()>
+where
+object_type = :objectType
+and field_name = :fieldName
+and field_value = :fieldValue
+<andCheckSoftDeletionWithComma("")>
+<AND_CHECK_TENANT("")>
+;
+>>
+
+searchByObjectTypeAndFieldNameValue(ordering) ::= <<
+select
+<allTableFields()>
+from <tableName()>
+where
+object_type = :objectType
+and field_name = :fieldName
+and field_value = :fieldValue
+<andCheckSoftDeletionWithComma("")>
+<AND_CHECK_TENANT("")>
+order by <recordIdField("")> <ordering>
+limit :rowCount offset :offset
+;
+>>
+
+
diff --git a/util/src/test/java/org/killbill/billing/util/customfield/dao/MockCustomFieldDao.java b/util/src/test/java/org/killbill/billing/util/customfield/dao/MockCustomFieldDao.java
index 25bc86e..c4efd7e 100644
--- a/util/src/test/java/org/killbill/billing/util/customfield/dao/MockCustomFieldDao.java
+++ b/util/src/test/java/org/killbill/billing/util/customfield/dao/MockCustomFieldDao.java
@@ -81,6 +81,6 @@ public class MockCustomFieldDao extends MockEntityDaoBase<CustomFieldModelDao, C
@Override
public Pagination<CustomFieldModelDao> searchCustomFields(final String fieldName, final String fieldValue, final ObjectType objectType, final Long offset, final Long limit, final InternalTenantContext context) {
- return null;
+ throw new UnsupportedOperationException();
}
}