package org.jvnet.hudson.plugins.shelveproject;
import hudson.model.AbstractProject;
import hudson.model.Action;
import hudson.model.Hudson;
import hudson.security.Permission;
import org.kohsuke.stapler.HttpRedirect;
import org.kohsuke.stapler.HttpResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.util.logging.Logger;
public class ShelveProjectAction
implements Action
{
final static Logger LOGGER = Logger.getLogger( ShelveProjectAction.class.getName() );
private AbstractProject project;
private boolean isShelvingProject;
public ShelveProjectAction( AbstractProject project )
{
this.project = project;
this.isShelvingProject = false;
}
public String getIconFileName()
{
if ( Hudson.getInstance().hasPermission( Permission.DELETE ) )
{
return "edit-delete.gif";
}
else
{
return null;
}
}
public String getDisplayName()
{
return "Shelve Project";
}
public String getUrlName()
{
return "shelve";
}
public AbstractProject getProject()
{
return project;
}
public boolean isShelvingProject()
{
return isShelvingProject;
}
@SuppressWarnings({"UnusedDeclaration"})
public HttpResponse doShelveProject()
throws IOException, ServletException
{
Hudson.getInstance().checkPermission( Permission.DELETE );
if ( !isShelvingProject() )
{
LOGGER.info( "Shelving project [" + getProject().getName() + "]." );
// Shelving the project could take some time, so add it as a task
Hudson.getInstance().getQueue().schedule( new ShelveProjectTask( project ), 0 );
}
return createRedirectToMainPage();
}
private HttpRedirect createRedirectToMainPage()
{
return new HttpRedirect( Hudson.getInstance().getRootUrl() );
}
}