diff options
author | 2019-07-30 03:15:39 +0000 | |
---|---|---|
committer | 2019-07-30 03:15:39 +0000 | |
commit | a4257150ebd9bfbb0da0b877e951164b0495881a (patch) | |
tree | 322cb25fb5d36177fc0c8a288aef84fe73dfe763 /vid-app-common/src/main/java/org/onap/vid/job/impl/DeleteOldJobsSchedulerInitializer.java | |
parent | 8d1798f51550316224d07a628ff630ed4ab818f7 (diff) | |
parent | e601bbdc43bae9a08e2e10c5139a6f76b47860d7 (diff) |
Merge "Implant vid-app-common org.onap.vid.job (main and test)"
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/job/impl/DeleteOldJobsSchedulerInitializer.java')
-rw-r--r-- | vid-app-common/src/main/java/org/onap/vid/job/impl/DeleteOldJobsSchedulerInitializer.java | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/job/impl/DeleteOldJobsSchedulerInitializer.java b/vid-app-common/src/main/java/org/onap/vid/job/impl/DeleteOldJobsSchedulerInitializer.java new file mode 100644 index 000000000..ad4b8c95a --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/job/impl/DeleteOldJobsSchedulerInitializer.java @@ -0,0 +1,96 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.vid.job.impl; + + +import static org.quartz.CronScheduleBuilder.dailyAtHourAndMinute; + +import com.google.common.collect.ImmutableMap; +import java.util.Random; +import java.util.concurrent.TimeUnit; +import javax.annotation.PostConstruct; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.util.SystemProperties; +import org.onap.vid.exceptions.GenericUncheckedException; +import org.onap.vid.job.JobsBrokerService; +import org.quartz.JobBuilder; +import org.quartz.JobDataMap; +import org.quartz.JobDetail; +import org.quartz.SchedulerException; +import org.quartz.Trigger; +import org.quartz.TriggerBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; +import org.springframework.stereotype.Component; + +@Component +public class DeleteOldJobsSchedulerInitializer { + + private JobsBrokerService jobsBrokerService; + private SchedulerFactoryBean schedulerFactoryBean; + private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DeleteOldJobsSchedulerInitializer.class); + + @Autowired + public DeleteOldJobsSchedulerInitializer( + JobsBrokerService jobsBrokerService, + SchedulerFactoryBean schedulerFactoryBean + ) { + this.jobsBrokerService = jobsBrokerService; + this.schedulerFactoryBean = schedulerFactoryBean; + } + + @PostConstruct + public void init() { + try { + JobDetail jobDetail = createJobDetail(); + Trigger deleteOldJobsTrigger = createTrigger(); + schedulerFactoryBean.getScheduler().scheduleJob(jobDetail, deleteOldJobsTrigger); + } catch (SchedulerException e) { + logger.error(EELFLoggerDelegate.errorLogger, "Failed to schedule trigger for delete old jobs: {}", e.getMessage()); + throw new GenericUncheckedException(e); + } + } + + JobDetail createJobDetail() { + int days = Integer.parseInt(SystemProperties.getProperty("vid.asyncJob.howLongToKeepOldJobsInDays")); + long secondsAgo = TimeUnit.DAYS.toSeconds(days); + return JobBuilder.newJob().ofType(DeleteOldJobsWorker.class) + .withIdentity("DeleteOldJobsWorker") + .withDescription("worker that delete old vid jobs from DB") + .setJobData(new JobDataMap(ImmutableMap.of( + "jobsBrokerService", jobsBrokerService, + "secondsAgo", secondsAgo + ))) + .build(); + } + + Trigger createTrigger() { + int minutes = new Random(System.nanoTime()).nextInt(59); + int hours = 6; + logger.info("trigger for DeleteOldJobs is {}:{} ", hours, minutes); + + return TriggerBuilder.newTrigger() + .withIdentity("DeleteOldJobsTrigger") + .withDescription("Trigger to run delete old vid jobs worker") + .withSchedule(dailyAtHourAndMinute(hours, minutes)) + .build(); + } +} |