Quartz调度程序没有触发

时间:2016-04-20 07:19:30

标签: java quartz-scheduler

我使用石英调度程序自动运行进程。但它没有奏效。我按照以下步骤构建了该过程。

这是我的第一步,

    BackUpModeOperator backUpModeOperator = new BackUpModeOperator();
    backUpModeOperator.createBackUpMode();     

    BackUpMode backUpMode = backUpModeOperator.getBackUpMode(1);

    Calendar c = Calendar.getInstance();
    c.setTimeInMillis(System.currentTimeMillis());
    int day_of_week = c.get(Calendar.DAY_OF_WEEK);

    System.out.println("Day Of Week - " + day_of_week);

    int HOUR = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
    int MINUTE = Calendar.getInstance().get(Calendar.MINUTE);

    AutoBackUp autoBackUp = new AutoBackUp();

    if (backUpMode != null)
    {
        if (backUpMode.isMode() == true)
        {
            String day = backUpMode.getDay();
            String[] split = day.split(",");
            for (String split1 : split)
            {
                Integer dt = Integer.parseInt(split1);
                System.out.println("dt - " + split1);

                if (dt == day_of_week)
                {
                    if (backUpMode.getBackUpTime() != null)
                    {
                        Time backUpTime = backUpMode.getBackUpTime();
                        String toString = backUpTime.toString();

                        String[] split2 = toString.split(":");
                        Integer hour = 0;
                        Integer minute = 0;
                        for (int j = 0; j < split2.length; j++)
                        {
                            hour = Integer.parseInt(split2[0]);
                            minute = Integer.parseInt(split2[1]);
                        }

                        if (HOUR == hour && MINUTE == minute)
                        {
                            try
                            {
                                autoBackUp.createAutoBackUp(HOUR, MINUTE);
                            } catch (SchedulerException ex)
                            {
                                ex.printStackTrace();
                            }
                        } else
                        {
                        }
                    }

                    break;
                }
            }
        }
    }

然后我构建了一个调度程序类,

AutoBackUp.java

import java.util.Date;
import static org.quartz.DateBuilder.todayAt;
import static org.quartz.DateBuilder.tomorrowAt;
import static org.quartz.JobBuilder.newJob;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import org.quartz.Trigger;
import static org.quartz.TriggerBuilder.newTrigger;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;


public class AutoBackUp
{

    Scheduler scheduler;

    int dayHour;
    int dayMinute;

    public void createAutoBackUp(int hour, int minute) throws SchedulerException
    {
        scheduler = new StdSchedulerFactory().getScheduler();
        JobKey backUpJobKey = new JobKey("backUpJob", "backUpGroup");

        TriggerKey backUpTriggerKey = new TriggerKey("backUpTrigger", "backUpTriggerGroup");

        boolean checkExists = scheduler.checkExists(backUpJobKey);

        dayHour = hour;
        dayMinute = minute;

        scheduleJob(AutoBackupCreator.class, checkExists, backUpJobKey, backUpTriggerKey, dayHour, dayMinute);

    }

    private void scheduleJob(Class c, boolean checkExists, JobKey jobKey, TriggerKey triggerKey, int day_hour, int day_minute)
    {
        System.out.println("Print First Line");

        JobDetail jobDetail = null;

        if (c.isInstance(new AutoBackupCreator()))
        {
            System.out.println("Print Second Line");

            jobDetail = newJob(AutoBackupCreator.class).withIdentity(jobKey).build();
        }

        System.out.println("Print Third Line");

        Date providedDate = todayAt(day_hour, day_minute, 0);
        Date currentDate = new Date();

        System.out.println("Print Fourth Line");

        if (currentDate.before(providedDate))
        {
            System.out.println("todayAt() can be perfomed");
        } else
        {
            System.out.println("tomorrowAt() can be perfomed");
        }

        Trigger trigger = newTrigger().withIdentity(triggerKey)
                .withSchedule(simpleSchedule().withIntervalInHours(24).repeatForever())
                .startAt(currentDate.before(providedDate) ? (todayAt(day_hour, day_minute, 0)) : (tomorrowAt(day_hour, day_minute, 0))).build();

        try
        {
            if (checkExists)
            {
                scheduler.start();
                scheduler.rescheduleJob(triggerKey, trigger);
                System.out.println("Job Re-scheduled");
            } else
            {
                scheduler.start();
                scheduler.scheduleJob(jobDetail, trigger);
                System.out.println("Job Scheduled");
            }
        } catch (SchedulerException ex)
        {
            ex.printStackTrace();
        }

    }

}

此自动任务基于预先保存的时间。

这是我的最后一步,

AutoBackupCreator.java

import com.theace.backupsystem.bean.SaveFileLocations;
import com.theace.backupsystem.compression.CompressFolder;
import com.theace.backupsystem.operations.LocationOperator;
import java.io.File;
import java.io.IOException;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileSystemView;
import org.apache.commons.io.FileUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class AutoBackupCreator implements Job
{

    public static File temp;

    @Override
    public void execute(JobExecutionContext jec) throws JobExecutionException
    {
        runAutomatedBackUp();
    }

    public void runAutomatedBackUp()
    {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
        String bacDate = dateFormat.format(date);

        LocationOperator locationOperator = new LocationOperator();
        SaveFileLocations lastRecord = locationOperator.getLastRecord();

        FileSystemView fsv = FileSystemView.getFileSystemView();

        List<File> files = new ArrayList<>();
        List<File> srcFiles = new ArrayList<>();

        SaveFileLocations fileLocations = new SaveFileLocations();

        if (lastRecord != null)
        {
            String srcfileLocation = lastRecord.getSrcfileLocation();
            String[] srcFile = srcfileLocation.split(",");

            long size = 0;

            for (String srcFile1 : srcFile)
            {
                File file = new File(srcFile1);

                if (file.exists() == true)
                {
                    files.add(file);
                } else
                {
                    JOptionPane.showMessageDialog(null, "There isn't such a file.", "Warning", 1);
                    break;
                }

            }

            for (int i = 0; i < files.size(); i++)
            {
                long sizeOfFiles = FileUtils.sizeOf(files.get(i));
                size = size + sizeOfFiles;
            }

            double fileSizes = size / (1024 * 1024);

            for (int i = 0; i < files.size(); i++)
            {
                if (fsv.getSystemTypeDescription(files.get(i)).contains("Local Disk")
                        || fsv.getSystemTypeDescription(files.get(i)).contains("Removable Disk"))
                {

                    long usableSpace = files.get(i).getUsableSpace();
                    double partitionSize = usableSpace / (1024 * 1024);

                    if (partitionSize > fileSizes)
                    {
                        temp = new File(files.get(i).getAbsolutePath() + "\\" + bacDate + "_backup");
                        temp.mkdir();
                    } else
                    {
                        JOptionPane.showMessageDialog(null, "There is low disk space", "Warning", 1);
                    }

                }
            }

            for (int i = 0; i < files.size(); i++)
            {
                if (files.get(i).isDirectory())
                {
                    try
                    {
                        FileUtils.copyDirectoryToDirectory(files.get(i), temp);
                        srcFiles.add(files.get(i));
                    } catch (IOException ex)
                    {
                        ex.printStackTrace();
                    }
                } else if (files.get(i).isFile())
                {
                    try
                    {
                        FileUtils.copyFileToDirectory(files.get(i), temp);
                        srcFiles.add(files.get(i));
                    } catch (IOException ex)
                    {
                        ex.printStackTrace();
                    }
                }

            }

            StringBuilder stringBuilder = new StringBuilder();
            String first = null;

            CompressFolder compressFolder = new CompressFolder();

            if (lastRecord.getDestinationLocation().contains(".zip"))
            {
                try
                {
                    File nFile = new File(new File(lastRecord.getDestinationLocation()).getAbsolutePath() + "\\" + bacDate + "_backup.zip");

                    compressFolder.createZip(temp.getPath(), nFile.getPath());

                    try
                    {
                        for (int i = 0; i < srcFiles.size(); i++)
                        {
                            stringBuilder.append(srcFiles.get(i).getPath());
                            stringBuilder.append(",");
                        }

                        first = stringBuilder.toString();
                        first = first.trim();
                        first = first.substring(0, first.length() - 1);

                    } finally
                    {
                        stringBuilder = null;
                    }

                    fileLocations.setLocationId(lastRecord.getLocationId());
                    fileLocations.setSrcfileLocation(first);
                    fileLocations.setDestinationLocation(nFile.getPath());
                    Timestamp currentTimestamp = getCurrentTimestamp();
                    fileLocations.setSaveDate(currentTimestamp);

                    String result = locationOperator.updateSavedLocation(fileLocations);
                    if (result != null)
                    {
                        Integer integer = Integer.parseInt(result);

                        if (integer > 0)
                        {
                            FileUtils.deleteDirectory(temp);
                            JOptionPane.showMessageDialog(null, "Backup Created ", "Success", 1);
                        } else
                        {
                            JOptionPane.showMessageDialog(null, "Backup Failed ", "Warning", 1);
                        }
                    }
                } catch (Exception ex)
                {
                    ex.printStackTrace();
                }
            } else if (lastRecord.getDestinationLocation().contains(".tar"))
            {
                try
                {
                    File nFile = new File(new File(lastRecord.getDestinationLocation()).getAbsolutePath() + "\\" + bacDate + "_backup.tar");

                    compressFolder.createTar(temp.getPath(), nFile.getPath());

                    try
                    {
                        for (int i = 0; i < srcFiles.size(); i++)
                        {
                            stringBuilder.append(srcFiles.get(i).getPath());
                            stringBuilder.append(",");
                        }

                        first = stringBuilder.toString();
                        first = first.trim();
                        first = first.substring(0, first.length() - 1);

                    } finally
                    {
                        stringBuilder = null;
                    }

                    fileLocations.setLocationId(lastRecord.getLocationId());
                    fileLocations.setSrcfileLocation(first);
                    fileLocations.setDestinationLocation(nFile.getPath());
                    Timestamp currentTimestamp = getCurrentTimestamp();
                    fileLocations.setSaveDate(currentTimestamp);

                    String result = locationOperator.updateSavedLocation(fileLocations);
                    if (result != null)
                    {
                        Integer integer = Integer.parseInt(result);

                        if (integer > 0)
                        {
                            FileUtils.deleteDirectory(temp);
                            JOptionPane.showMessageDialog(null, "Backup Created ", "Success", 1);
                        } else
                        {
                            JOptionPane.showMessageDialog(null, "Backup Failed ", "Warning", 1);
                        }
                    }
                } catch (Exception ex)
                {
                    ex.printStackTrace();
                }
            } else if (lastRecord.getDestinationLocation().contains(".tar.gz"))
            {
                try
                {
                    File nFile = new File(new File(lastRecord.getDestinationLocation()).getAbsolutePath() + "\\" + bacDate + "_backup.tar.gz");

                    compressFolder.createTar(temp.getPath(), nFile.getPath());

                    try
                    {
                        for (int i = 0; i < srcFiles.size(); i++)
                        {
                            stringBuilder.append(srcFiles.get(i).getPath());
                            stringBuilder.append(",");
                        }

                        first = stringBuilder.toString();
                        first = first.trim();
                        first = first.substring(0, first.length() - 1);

                    } finally
                    {
                        stringBuilder = null;
                    }

                    fileLocations.setLocationId(lastRecord.getLocationId());
                    fileLocations.setSrcfileLocation(first);
                    fileLocations.setDestinationLocation(nFile.getPath());
                    Timestamp currentTimestamp = getCurrentTimestamp();
                    fileLocations.setSaveDate(currentTimestamp);

                    String result = locationOperator.updateSavedLocation(fileLocations);
                    if (result != null)
                    {
                        Integer integer = Integer.parseInt(result);

                        if (integer > 0)
                        {
                            FileUtils.deleteDirectory(temp);
                            JOptionPane.showMessageDialog(null, "Backup Created ", "Success", 1);
                        } else
                        {
                            JOptionPane.showMessageDialog(null, "Backup Failed ", "Warning", 1);
                        }
                    }
                } catch (Exception ex)
                {
                    ex.printStackTrace();
                }
            } else if (lastRecord.getDestinationLocation().contains(".gz"))
            {
                try
                {
                    File nFile = new File(new File(lastRecord.getDestinationLocation()).getAbsolutePath() + "\\" + bacDate + "_backup.gz");

                    compressFolder.createTar(temp.getPath(), nFile.getPath());

                    try
                    {
                        for (int i = 0; i < srcFiles.size(); i++)
                        {
                            stringBuilder.append(srcFiles.get(i).getPath());
                            stringBuilder.append(",");
                        }

                        first = stringBuilder.toString();
                        first = first.trim();
                        first = first.substring(0, first.length() - 1);

                    } finally
                    {
                        stringBuilder = null;
                    }

                    fileLocations.setLocationId(lastRecord.getLocationId());
                    fileLocations.setSrcfileLocation(first);
                    fileLocations.setDestinationLocation(nFile.getPath());
                    Timestamp currentTimestamp = getCurrentTimestamp();
                    fileLocations.setSaveDate(currentTimestamp);

                    String result = locationOperator.updateSavedLocation(fileLocations);
                    if (result != null)
                    {
                        Integer integer = Integer.parseInt(result);

                        if (integer > 0)
                        {
                            FileUtils.deleteDirectory(temp);
                            JOptionPane.showMessageDialog(null, "Backup Created ", "Success", 1);
                        } else
                        {
                            JOptionPane.showMessageDialog(null, "Backup Failed ", "Warning", 1);
                        }
                    }

                } catch (Exception ex)
                {
                    ex.printStackTrace();
                }
            } else
            {

                File file = new File(new File(lastRecord.getDestinationLocation()).getAbsolutePath() + "\\" + bacDate + "_backup");
                file.mkdir();
                try
                {
                    FileUtils.copyDirectoryToDirectory(temp, file);
                    FileUtils.deleteDirectory(temp);

                } catch (Exception ex)
                {
                    ex.printStackTrace();
                }

            }

        }

    }

    public Timestamp getCurrentTimestamp()
    {
        Date date = new Date();
        Timestamp timestamp = new Timestamp(date.getTime());
        return timestamp;
    }

}

这总是触发tomorrowAt(),但我想触发今天()。

对此有任何想法。

谢谢。

0 个答案:

没有答案