package com.transmem.action; import java.util.logging.Logger; import javax.servlet.ServletException; import java.io.IOException; import java.sql.SQLException; import java.sql.Connection; import java.util.ArrayList; import com.transmem.data.db.Databases; import com.transmem.data.db.Projects; import com.transmem.data.db.Users; import com.transmem.data.db.Roles; /** * Action class for deleting a project. * * @version 0.1 * @author Ted Wen * @date Jan. 2007 */ public class DeleteProjectAction extends BaseAction { private Logger log_ = Logger.getLogger(DeleteProjectAction.class.getName()); public DeleteProjectAction() { super(); } public void execute(ServletParams param) throws ServletException, IOException { log_.entering("AddProjectAction","execute"); Session session = param.getSession(); Users usr = session.getUser(); if (usr == null) { log_.severe("User not login"); param.sendError(MessageCode.ERR_NOT_LOGIN); return; } String projectids = param.getParameter("project"); int pid = 0; try { pid = Integer.parseInt(projectids); } catch (NumberFormatException e) { log_.severe("NumberFormatException when converting request parameter project to int:"+projectids); param.sendError(MessageCode.ERR_PROJECT_ID); return; } Connection conn = null; try { conn = getConnection(param,Databases.CATEGORY_USER,true); try { Projects project = new Projects(conn); project.queryByPrimaryKey(pid); if (project.getProjectID()==pid) { try { project.delete(pid); } catch (SQLException dx) { log_.severe("SQLException when delete project"+dx); param.sendError(MessageCode.ERR_DELETE_PROJECT); return; } ArrayList<Projects> projects = project.queryProjectsByMember(usr.getUserID()); session.setProjectList(projects); setNextPage(PageLinks.PROJECT_PAGE); //check for number projects Roles r = new Roles(conn, usr.getRole()); int numprjs = projects.size(); if (numprjs < r.getLevel()) { session.removeEnoughProjects(); } log_.info("project "+pid+" deleted, and "+projects.size()+" projects reloaded into session"); } else { log_.warning("project id different,pid="+pid+" while loaded="+project.getProjectID()); param.sendError(MessageCode.ERR_PROJECT_ID); return; } } catch (SQLException x) { log_.severe("SQLException when query project:"+pid); param.sendError(MessageCode.ERR_PROJECT_QUERY); } } catch (SQLException x) { log_.severe("SQLException when getConnection(USER)"+x); param.sendError(MessageCode.ERR_DB_CONNECT); return; } finally { if (conn != null) try { conn.close(); } catch (SQLException e) {} } } }