package gw.api.web.purge uses gw.api.locale.DisplayKey uses com.guidewire.pc.domain.purge.PCPurgeStrategy uses gw.api.database.Query uses gw.api.system.PCDependenciesGateway uses gw.api.system.PLDependenciesGateway uses gw.api.util.DateUtil uses gw.api.util.DisplayableException uses gw.transaction.Transaction @ReadOnly class PurgeTestPageHelper { var _showPurgeSucceeded : boolean as readonly ShowPurgeSucceeded var _purgeSucceededMessage : String as readonly PurgeSucceededMessage function doFlushWorkQueues() { _showPurgeSucceeded = false PLDependenciesGateway.getBatchProcessManager().startBatchProcess(BatchProcessType.TC_WORKFLOW, null) PLDependenciesGateway.getBatchProcessManager().startBatchProcess(BatchProcessType.TC_PURGEWORKFLOWS, null) PLDependenciesGateway.getBatchProcessManager().startBatchProcess(BatchProcessType.TC_PURGEWORKFLOWLOGS, null) } function runPurgeBatchProcess() { _showPurgeSucceeded = false PLDependenciesGateway.getBatchProcessManager().startBatchProcess(BatchProcessType.TC_PURGE, null) } function isSelectedVersion(periodPublicID: String, job : Job): boolean { if (job == null) { return false } if (periodPublicID.equals(job.SelectedVersion.PublicID)) { return true } return false } function isPurgeable(period: PolicyPeriod, job : Job) : boolean { if (isSelectedVersion(period.PublicID, job) || period.isDoNotDestroy() || period.getPolicy().isDoNotDestroy()) { return false } return true } function purgeJob(job : Job, skipValidationForPurgingJob : boolean) { _showPurgeSucceeded = false if (job == null){ throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.NoJobSelected")) } var jobNum = job.JobNumber if (skipValidationForPurgingJob) { PCDependenciesGateway.getPurger().sendJobToBePurged(job) } else { Transaction.runWithNewBundle(\ bundle -> { if (PCPurgeStrategy.canPurgeJob(job, DateUtil.currentDate())) { PCDependenciesGateway.getPurger().sendJobToBePurged(job) } else { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.JobFailedValidationForPurging", job)) } }) } job = getJobAndPolicyPeriods(jobNum) if (job != null) { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.UnableToPurgeJob", job)) } _showPurgeSucceeded = true _purgeSucceededMessage = DisplayKey.get("Web.Purge.Validations.JobPurgeSuccessful", jobNum) } function pruneJob(job : Job, skipValidationForPruningJob : boolean) { _showPurgeSucceeded = false if (job == null){ throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.MustEnterJobNumber")) } if (job.Periods.Count == 1) { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.JobAlreadyInPrunedState", job)) } var jobNum = job.JobNumber for (period in job.Periods) { if (!isSelectedVersion(period.PublicID, job)) { var canPruneJob = true if (skipValidationForPruningJob) { canPruneJob = PCPurgeStrategy.canPrune(job) } else { canPruneJob = PCPurgeStrategy.canPruneJob(job, DateUtil.currentDate()) && PCPurgeStrategy.canPrunePolicyPeriod(period) } if (canPruneJob) { PCDependenciesGateway.getPurger().sendPolicyPeriodToBePurged(period) } else { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.JobFailedValidationForPruning", job)) } } } if (job.Periods.Count > 1) { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.UnableToPruneJob", job)) } _showPurgeSucceeded = true _purgeSucceededMessage = DisplayKey.get("Web.Purge.Validations.JobPruneSuccessful", jobNum) } function purgePolicyPeriod(period : PolicyPeriod, skipValidationForPurgingPolicyPeriod : boolean) { _showPurgeSucceeded = false var job = period.Job var jobNumber = job.JobNumber if (period == null) { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.NoPeriodSelected")) } if (not PCPurgeStrategy.canPrune(job)) { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.JobFailedValidationForPruning", job)) } if (skipValidationForPurgingPolicyPeriod) { _showPurgeSucceeded = PCDependenciesGateway.getPurger().sendPolicyPeriodToBePurged(period) } else { if (PCPurgeStrategy.canPrunePolicyPeriod(period)) { _showPurgeSucceeded = PCDependenciesGateway.getPurger().sendPolicyPeriodToBePurged(period) } else { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.PeriodFailedValidation")) } } if (_showPurgeSucceeded) { _purgeSucceededMessage = DisplayKey.get("Web.Purge.Validations.PeriodPurgeSuccessful", jobNumber) } else { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.UnableToPurgePeriod", job)) } } function findJob(jobID : String, handleJob(job : Job)) { _showPurgeSucceeded = false //_jobToPurgeOrPrune = null if (not jobID.HasContent) { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.MustEnterJobNumber")) } var job = getJobAndPolicyPeriods(jobID) handleJob(job) if (job == null) { throw new DisplayableException(DisplayKey.get("Web.Purge.Validations.JobDoesNotExist", jobID)) } } private function getJobAndPolicyPeriods(jobNumber: String) : Job { var jobQuery = Query.make(Job) jobQuery.compare(Job#JobNumber, Equals, jobNumber) return jobQuery.select().AtMostOneRow } }