package com.lemans.ds.search import grails.validation.Validateable /** * Created by vramisetti on 3/9/2017. */ class GenericSearchCommand implements Validateable { String q String partNumber String partStatusCode String partDescr String marketingDescr String brandCode String brandName String vendorId String vendorName String vendorPartNumber String subComCode String productId String categoryId Integer assignableCategoryId Integer brandId Integer subComCodeId Integer attributeNameId Integer attributeValueId String assignableProductId Integer mediaTypeId String productName Integer modelFamilyId Integer modelId Integer startYear Integer endYear Boolean isDigiActive String mode String flagId String goliveStartDate String goliveEndDate Integer partQcChangeGroupOnlyFlag Integer productQcChangeGroupOnlyFlag Boolean hiddenFlag String hiddenStartDate String hiddenEndDate String partQcChangeGroup String productQcChangeGroup String mediaTypeCode String originalFileName Boolean unassociated Integer mediaClassificationId Integer languageId Boolean noGoliveDate String categorySpecialist String warehouse Boolean isActive Integer qcApprovalStatusId Integer catalogCodeId String changedBy String renewalStartDate String renewalEndDate Boolean noRenewalDate static constraints = { q nullable: true, minSize: 2 partNumber nullable: true, minSize: 2 partStatusCode nullable: true, minSize: 1 partDescr nullable: true, minSize: 2 marketingDescr nullable: true, minSize: 2 brandCode nullable: true, minSize: 2 brandName nullable: true, minSize: 2 vendorId nullable: true, minSize: 2 vendorName nullable: true, minSize: 2 vendorPartNumber nullable: true, minSize: 2 subComCode nullable: true productId nullable: true attributeNameId nullable: true attributeValueId nullable: true modelFamilyId nullable: true modelId nullable: true startYear nullable: true endYear nullable: true categoryId nullable:true assignableCategoryId nullable: true brandId nullable: true subComCodeId nullable: true assignableProductId nullable: true isDigiActive nullable: true mode nullable: true flagId nullable: true goliveStartDate nullable: true goliveEndDate nullable: true partQcChangeGroupOnlyFlag nullable:true productQcChangeGroupOnlyFlag nullable:true hiddenFlag nullable: true hiddenStartDate nullable: true hiddenEndDate nullable: true partQcChangeGroup nullable: true productQcChangeGroup nullable: true unassociated nullable: true languageId nullable: true categorySpecialist nullable: true warehouse nullable: true qcApprovalStatusId nullable: true isActive nullable: true catalogCodeId nullable: true changedBy nullable: true renewalStartDate nullable: true renewalEndDate nullable: true noRenewalDate nullable: true } String setPartNumber(String partNumber) { this.partNumber = removeSpecialCharsAndConvertAsteriskToPercentage(partNumber) } String setVendorPartNumber(String vendorPartNumber) { this.vendorPartNumber = removeSpecialCharsAndConvertAsteriskToPercentage(vendorPartNumber) } void setPartDescr(String partDescr) { this.partDescr = replaceAsteriskToPercentageForLikeSearch(partDescr) } String removeSpecialCharsAndConvertAsteriskToPercentage(String input) { replaceAsteriskToPercentageForLikeSearch(replaceAllSpecialCharsExceptAsterisk(input)) } String replaceAllSpecialCharsExceptAsterisk(String input) { input.replaceAll('[^a-zA-Z0-9\\\\*]|\\\\(?![*])', '') } String replaceAsteriskToPercentageForLikeSearch(String input) { input.replaceAll('(?