package com.ice.jcvsweb.action;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ice.jcvsweb.bean.JCVSUser;
import com.ice.jcvsweb.bean.JCVSError;
import com.ice.jcvsweb.bean.JCVSProject;
import com.ice.jcvsweb.bean.JCVSProjectView;
import com.ice.jcvsweb.form.EditViewForm;
import com.ice.jcvsweb.manager.JCVSUserManager;
import com.ice.jcvsweb.manager.JCVSPermManager;
import com.ice.jcvsweb.manager.JCVSProjectManager;
public
class SaveView
extends JCVSAction
{
public ActionForward
execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws Exception
{
String forwardName = "failure";
HttpSession session = request.getSession();
ServletContext ctx = session.getServletContext();
JCVSUser user = this.establishUser( request );
JCVSProjectManager projectMgr = this.getProjectManager( ctx );
JCVSUserManager userMgr = this.getUserManager( ctx );
JCVSPermManager permMgr = this.getPermissionManager( ctx );
EditViewForm viewForm = (EditViewForm) form;
if ( user == null )
{
JCVSError err = new JCVSError();
err.setException( new Throwable( "NULL USER" ) );
err.setTitle( "FATAL The user is not established." );
this.postAndLogError( request, err );
}
else if ( viewForm == null )
{
JCVSError err = new JCVSError();
err.setException( new Throwable( "FATAL NULL VIEWFORM" ) );
err.setTitle( "FATAL EditViewForm is null." );
this.postAndLogError( request, err );
}
else
{
String viewKey = viewForm.getKey();
String projKey = viewForm.getProjectKey();
JCVSProject editProject = projectMgr.getProject( projKey );
JCVSProjectView editView = editProject.getView( viewKey );
if ( editProject == null )
{
JCVSError err = new JCVSError();
err.setException( new Throwable( "NULL PROJECT" ) );
err.setTitle( "FATAL The project '"+projKey+"' is null." );
this.postAndLogError( request, err );
}
else if ( ! permMgr.getUserCanEdit( user, editProject ) )
{
forwardName = "notallowed";
this.setReasonMessage( request,
"You are not the owner of the project,"
+ "and you have not been granted "
+ "administrative permission for the project." );
}
else
{
this.setEditMode( request, true );
this.setPageTitle( request, projKey );
editView.setName( viewForm.getName().trim() );
editView.setTitle( viewForm.getTitle().trim() );
editView.setCvsTag( viewForm.getCvsTag().trim() );
editView.setCvsModule( viewForm.getCvsModule().trim() );
editView.setDescription( viewForm.getDescription().trim() );
String jump = viewForm.getJump().trim();
while ( jump.startsWith( "/" ) )
{
jump = jump.substring( 1 );
}
editView.setJump( jump );
try {
projectMgr.saveProject( editProject );
this.setEditProjectBean( request, editProject );
forwardName = "editproject";
}
catch ( IOException ex )
{
JCVSError err = new JCVSError();
err.setException( ex );
err.setTitle( "Save project view '"
+ editView.getViewName() + "' failed." );
err.setShortMessage
( "An error occurred while saving the project view." );
this.postAndLogError( request, err );
}
}
}
return mapping.findForward( forwardName );
}
}
|