package gw.rating.rtm uses com.guidewire.pc.domain.PCBulkInsertWorkQueueBase uses gw.api.database.IQuery uses gw.api.database.IQueryBuilder uses gw.api.database.Relop uses gw.api.system.PCConfigParameters uses gw.api.system.PCLoggerCategory uses java.util.Date uses java.util.Iterator class RateBookExportResultPurgeWorkQueue extends PCBulkInsertWorkQueueBase { construct() { super(BatchProcessType.TC_PURGERATEBOOKEXPORTRESULT, StandardWorkItem, RateBookExportResult) } protected override function findTargets(query: IQueryBuilder): Iterator { if (!PCConfigParameters.PurgeRateBookExportResultEnabled.getValue()) { // If purge is disabled, we want the query to return nothing. ID can't be null, so this should do it. query.compare(RateBookExportResult.ID_PROP.get(), Relop.Equals, null); } else { var latestDateForPurgePeriod = Date.Now.addDays(-PCConfigParameters.RateBookExportResultAgeForPurging.getValue()) query.compare(RateBookExportResult.UPDATETIME_PROP.get(), Relop.LessThanOrEquals, latestDateForPurgePeriod); } return (query as IQuery).withLogSQL(true).select().iterator() } override function processWorkItem(workItem: StandardWorkItem) { PCLoggerCategory.RATEFLOW.info("RateBookExportResult " + RateBookExportResult.ID_PROP + " purge started by work item " + workItem.getDisplayName()) var tempStoreToEvaluate = extractTarget(workItem) if (tempStoreToEvaluate != null) { tempStoreToEvaluate.remove() tempStoreToEvaluate.Bundle.commit() } PCLoggerCategory.RATEFLOW.info("RateBookExportResult " + RateBookExportResult.ID_PROP + " purge is completed by work item " + workItem.getDisplayName()) } }