/*
* Copyright (C) 2006 Erik Swenson - erik@oreports.com
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have reserved a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
package org.efs.openreports.actions.schedule;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import org.efs.openreports.ORStatics;
import org.efs.openreports.objects.ReportSchedule;
import org.efs.openreports.objects.ReportUser;
import org.efs.openreports.providers.*;
public class ChangeScheduleStateAction extends ActionSupport
{
private static final long serialVersionUID = 4703811534879840963L;
private SchedulerProvider schedulerProvider;
private DateProvider dateProvider;
private UserProvider userProvider;
protected boolean submitOk;
protected boolean submitCancel;
private String scheduleName;
private int userId = Integer.MIN_VALUE;
private String name;
private String description;
private String startDate;
private String scheduleTypeName;
private String scheduleState;
private String buttonName;
public String execute()
{
try
{
ReportUser reportUser = null;
if (userId >= 0)
{
reportUser = userProvider.getUser(new Integer(userId));
}
else
{
reportUser = (ReportUser) ActionContext.getContext().getSession().get(
ORStatics.REPORT_USER);
}
ReportSchedule reportSchedule =
schedulerProvider.getScheduledReport(reportUser, scheduleName);
name = reportSchedule.getReport().getName();
description = reportSchedule.getScheduleDescription();
startDate = dateProvider.formatDate(reportSchedule.getStartDate());
scheduleTypeName = reportSchedule.getScheduleTypeName();
scheduleState = reportSchedule.getScheduleState();
if (!submitOk && !submitCancel)
{
if (scheduleState.equals("Normal")) buttonName = "Pause";
if (scheduleState.equals("Paused")) buttonName = "Resume";
return INPUT;
}
if (submitOk)
{
if (scheduleState.equals("Normal"))
{
schedulerProvider.pauseScheduledReport(reportUser, scheduleName);
}
if (scheduleState.equals("Paused"))
{
schedulerProvider.resumeScheduledReport(reportUser, scheduleName);
}
}
}
catch (Exception e)
{
addActionError(e.getMessage());
return INPUT;
}
return SUCCESS;
}
public void setSchedulerProvider(SchedulerProvider schedulerProvider)
{
this.schedulerProvider = schedulerProvider;
}
public void setSubmitOk(String submitOk)
{
if (submitOk != null) this.submitOk = true;
}
public void setSubmitCancel(String submitCancel)
{
if (submitCancel != null) this.submitCancel = true;
}
public String getScheduleName()
{
return scheduleName;
}
public void setScheduleName(String scheduleName)
{
this.scheduleName = scheduleName;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getScheduleTypeName()
{
return scheduleTypeName;
}
public void setScheduleTypeName(String scheduleTypeName)
{
this.scheduleTypeName = scheduleTypeName;
}
public String getStartDate()
{
return startDate;
}
public void setStartDate(String startDate)
{
this.startDate = startDate;
}
public void setDateProvider(DateProvider dateProvider)
{
this.dateProvider = dateProvider;
}
public void setUserProvider(UserProvider userProvider)
{
this.userProvider = userProvider;
}
public int getUserId()
{
return userId;
}
public void setUserId(int userId)
{
this.userId = userId;
}
public String getScheduleState()
{
return scheduleState;
}
public void setScheduleState(String scheduleState)
{
this.scheduleState = scheduleState;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public String getButtonName()
{
return buttonName;
}
}