All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.payneteasy.superfly.service.job.SendNotificationOnceJob Maven / Gradle / Ivy

package com.payneteasy.superfly.service.job;

import com.payneteasy.superfly.notification.AbstractNotification;
import com.payneteasy.superfly.notification.LogoutNotification;
import com.payneteasy.superfly.notification.NotificationException;
import com.payneteasy.superfly.notification.UsersChangedNotification;
import com.payneteasy.superfly.notification.strategy.NotificationSendStrategy;
import com.payneteasy.superfly.utils.SchedulerUtils;
import org.quartz.JobExecutionContext;
import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Map;

public class SendNotificationOnceJob extends BaseJob {

    private static final Logger logger = LoggerFactory.getLogger(SendNotificationOnceJob.class);

    private String beanName;
    private AbstractNotification notification;
    private int retriesLeft;

    public void setBeanName(String beanName) {
        this.beanName = beanName;
    }

    public void setNotification(AbstractNotification notification) {
        this.notification = notification;
    }

    public void setRetriesLeft(int retriesLeft) {
        this.retriesLeft = retriesLeft;
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void doExecute(JobExecutionContext context) throws SchedulerException {
        NotificationSendStrategy sendStrategy = getNotificationSendStrategy(context, beanName);

        if(sendStrategy==null) {
            logger.info("Notification strategy is null");
            return ;
        }

        try {
            if (notification instanceof LogoutNotification) {
                sendStrategy.send((LogoutNotification) notification);
            } else if (notification instanceof UsersChangedNotification) {
                sendStrategy.send((UsersChangedNotification) notification);
            } else {
                throw new IllegalArgumentException("Unknown notification type: " + notification.getClass());
            }
        } catch (NotificationException e) {
            logger.error("Error while trying to send a notification, no more retries, dropping: " + notification.toString(), e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy