/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package hudson.plugins.disk_usage.unused; import antlr.ANTLRException; import hudson.Extension; import hudson.Util; import hudson.model.AbstractProject; import hudson.model.AperiodicWork; import hudson.model.Item; import hudson.model.ItemGroup; import hudson.model.TaskListener; import hudson.plugins.disk_usage.DiskUsageCalculation; import hudson.plugins.disk_usage.DiskUsageJenkinsAction; import hudson.plugins.disk_usage.DiskUsagePlugin; import hudson.plugins.disk_usage.DiskUsageUtil; import hudson.plugins.disk_usage.ProjectBuildChecker; import hudson.scheduler.CronTab; import java.io.File; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import jenkins.model.Jenkins; /** * * @author Lucie Votypkova */ @Extension public class DiskUsageNotUsedDataCalculationThread extends DiskUsageCalculation { //last scheduled task; private static DiskUsageCalculation currentTask; public DiskUsageNotUsedDataCalculationThread(){ super("Calculation of not used data"); } @Override public DiskUsageCalculation getLastTask() { return currentTask; } public CronTab getCronTab() throws ANTLRException{ String cron = Jenkins.getInstance().getPlugin(DiskUsagePlugin.class).getConfiguration().getCountIntervalForNotUsedData(); CronTab tab = new CronTab(cron); return tab; } @Override protected void execute(TaskListener tl) throws IOException, InterruptedException { if(!isCancelled() && startExecution()){ for(Item item : Jenkins.getInstance().getItems()){ if(item instanceof AbstractProject){ ProjectBuildChecker.valideBuildData((AbstractProject)item); } } } DiskUsageUtil.calculateDiskUsageNotLoadedJobs(Jenkins.getInstance()); DiskUsageJenkinsAction.getInstance().actualizeCashedNotLoadedJobsData(); // plugin.getNotUsedDataDiskUsage().save(); } @Override public AperiodicWork getNewInstance() { if(currentTask!=null){ currentTask.cancel(); } else{ cancel(); } currentTask = new DiskUsageNotUsedDataCalculationThread(); return currentTask; } private boolean startExecution(){ DiskUsagePlugin plugin = Jenkins.getInstance().getPlugin(DiskUsagePlugin.class); if(!plugin.getConfiguration().isCalculationNotUsedDataEnabled()) return false; return !isExecutingMoreThenOneTimes(); } }