/**
* Copyright (C) 2015 Orange
* 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.
*/
package com.francetelecom.clara.cloud.service.scheduled;
import com.francetelecom.clara.cloud.service.OpsService;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.StatefulJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Service;
/**
* ScheduledDatabasePurgeMonitor
*/
@Service
public class ScheduledDatabasePurgeMonitor extends QuartzJobBean implements StatefulJob, ApplicationContextAware {
private final static Logger logger = LoggerFactory.getLogger(ScheduledDatabasePurgeMonitor.class.getName());
private boolean welcomeDisplayed = false;
@Autowired
private OpsService opsService;
private String purgeCronExpression;
private Boolean enabled;
private void welcomeMessage() {
String welcomeMsg = "Scheduled database purge monitor *disabled*";
if (getEnabled().booleanValue()) {
welcomeMsg = "Scheduled database purge monitor *enabled* [cron expression:" + getPurgeCronExpression() + "]";
}
logger.info(welcomeMsg);
welcomeDisplayed = true;
}
public void purgeDatabase() {
logger.info("purgeDatabase");
opsService.purgeDatabase();
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (applicationContext != null && !welcomeDisplayed) {
welcomeMessage();
}
}
public void setPurgeCronExpression(String purgeCronExpression) {
this.purgeCronExpression = purgeCronExpression;
}
public String getPurgeCronExpression() {
return purgeCronExpression;
}
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
public void setOpsService(OpsService opsService) {
this.opsService = opsService;
}
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
purgeDatabase();
}
}