class RasterEntrySearchService { static expose = ['xfire'] boolean transactional = true List runQuery(RasterEntryQuery rasterEntryQuery, Map params) { def clause = rasterEntryQuery.createClause() def rasterEntries = RasterEntry.createCriteria().list(params) { if ( rasterEntryQuery?.searchTag ) { def name def value switch ( rasterEntryQuery?.searchTag?.name ) { case "custom": def pair = rasterEntryQuery?.searchTagValue?.split("="); name = pair[0].trim() value = pair[1].trim() value = "%${value}%" break default: name = rasterEntryQuery?.searchTag?.name value = "%${rasterEntryQuery?.searchTagValue}%" break } if ( name && value ) { metadataTags { and { ilike("name", name) ilike("value", value) } } } } if ( clause ) addToCriteria(clause) } return rasterEntries } }