Index: grails-app/controllers/com/lemans/ds/catalog/CatalogInstanceController.groovy =================================================================== diff -u -rdc8a88f1e4456e715bcb72a83bdcf81c0b8d6111 -rd08022acd9a8e39e47a4c3b79af1f289a8c45d89 --- grails-app/controllers/com/lemans/ds/catalog/CatalogInstanceController.groovy (.../CatalogInstanceController.groovy) (revision dc8a88f1e4456e715bcb72a83bdcf81c0b8d6111) +++ grails-app/controllers/com/lemans/ds/catalog/CatalogInstanceController.groovy (.../CatalogInstanceController.groovy) (revision d08022acd9a8e39e47a4c3b79af1f289a8c45d89) @@ -9,7 +9,7 @@ CatalogInstanceManagerService catalogInstanceManagerService def index() { - Map criteria = common() + pagination() + filters(['year', 'marketingName', 'catalogId']) + Map criteria = common() + pagination() + filters(['year', 'marketingName', 'catalogId', 'catalogName']) renderPaginated catalogInstanceService.findAll(criteria) } Index: grails-app/services/com/lemans/ds/catalog/CatalogInstanceService.groovy =================================================================== diff -u -rdc8a88f1e4456e715bcb72a83bdcf81c0b8d6111 -rd08022acd9a8e39e47a4c3b79af1f289a8c45d89 --- grails-app/services/com/lemans/ds/catalog/CatalogInstanceService.groovy (.../CatalogInstanceService.groovy) (revision dc8a88f1e4456e715bcb72a83bdcf81c0b8d6111) +++ grails-app/services/com/lemans/ds/catalog/CatalogInstanceService.groovy (.../CatalogInstanceService.groovy) (revision d08022acd9a8e39e47a4c3b79af1f289a8c45d89) @@ -8,7 +8,7 @@ Map findAll(Map criteria) { criteria.sorting = criteria?.sorting ?: 'catalogInstanceId+DESC' - dqx(criteria)?.executeFrom('dbo.CatalogInstance', clauses(criteria)) + dqx(criteria)?.executeFrom('(SELECT ci.*, c.catalogName FROM dbo.CatalogInstance ci LEFT OUTER JOIN dbo.Catalog c ON c.catalogId = ci.catalogId)', clauses(criteria)) } Map findOne(Map criteria) { @@ -18,8 +18,17 @@ List clauses(Map criteria) { List clauses = [] if (criteria.year) { clauses << 'year = :year'} - if (criteria.marketingName) { clauses << 'marketingName = :marketingName' } + if (criteria.marketingName) { + clauses << "marketingName like '${replaceAsteriskToPercentageForLikeSearch(criteria.catalogName)}'" } + if (criteria.catalogName) { + clauses << "catalogName like '${replaceAsteriskToPercentageForLikeSearch(criteria.catalogName)}'" } if (criteria.catalogId) { clauses << 'catalogId = :catalogId' } + clauses << 'dateDeleted IS NULL' clauses } + + + String replaceAsteriskToPercentageForLikeSearch(String input) { + input.replaceAll('(?