package binky.reportrunner.ui.actions.group;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.apache.log4j.Logger;
import binky.reportrunner.data.RunnerDashboardItem;
import binky.reportrunner.data.RunnerDashboardItem.ItemType;
import binky.reportrunner.data.RunnerJob;
import binky.reportrunner.service.DashboardService;
import binky.reportrunner.service.ReportService;
import binky.reportrunner.ui.actions.base.StandardRunnerAction;
import binky.reportrunner.ui.actions.job.beans.DisplayJob;
public class ShowGroup extends StandardRunnerAction {
private static final long serialVersionUID = 1L;
private List<RunnerDashboardItem> items;
private DashboardService dashboardService;
private Logger logger = Logger.getLogger(ShowGroup.class);
private List<DisplayJob> jobs;
private ReportService jobService;
@Override
public String execute() throws Exception {
items = new LinkedList<RunnerDashboardItem>();
if (!super.getSessionUser().getIsAdmin()
&& !super.doesUserHaveGroup(groupName)) {
return ERROR;
} else {
items = dashboardService.getItemsForGroup(this.groupName);
if (logger.isDebugEnabled()) {
if (items != null) {
logger.debug("items size is: " + items.size()
+ " for group: " + groupName);
} else {
logger.debug("items are null for group: " + groupName);
}
}
List<DisplayJob> jobs = new LinkedList<DisplayJob>();
for (RunnerJob job : jobService.listJobs(groupName)) {
if (logger.isDebugEnabled()) logger.debug("found job " + job.getPk().getJobName());
DisplayJob dJob = new DisplayJob();
String jobName = job.getPk().getJobName();
String groupName = job.getPk().getGroup().getGroupName();
SimpleDateFormat sdf = new SimpleDateFormat(
"dd-MM-yyyy HH:mm:ss");
dJob.setIsScheduleActive(jobService.isJobActive(jobName,
groupName));
if (dJob.getIsScheduleActive()) {
Date prevRun = jobService.getPreviousRunTime(jobName, groupName);
if (prevRun!=null) {
dJob.setPreviousRunTime(sdf.format(prevRun));
}
dJob.setNextRunTime(sdf.format(jobService
.getNextRunTime(jobName, groupName)));
}
dJob.setIsScheduled(((job.getCronString() != null) && !job
.getCronString().isEmpty()) && job.isScheduled());
dJob.setGroupName(groupName);
dJob.setJobName(jobName);
dJob.setDescription(job.getDescription());
jobs.add(dJob);
}
this.jobs = jobs;
}
return SUCCESS;
}
public List<RunnerDashboardItem> getItems() {
return items;
}
public List<DisplayJob> getJobs() {
return jobs;
}
public void setDashboardService(DashboardService dashboardService) {
this.dashboardService = dashboardService;
}
public void setJobService(ReportService jobService) {
this.jobService = jobService;
}
public final List<ItemType> getItemTypes() {
return Arrays.asList(ItemType.values());
}
}