Skip to content
Snippets Groups Projects
ChangeSessionTimeoutAction.java 1.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • HMoss's avatar
    HMoss committed
    package edu.ncsu.csc.itrust.action;
    
    import edu.ncsu.csc.itrust.dao.DAOFactory;
    import edu.ncsu.csc.itrust.dao.mysql.AccessDAO;
    import edu.ncsu.csc.itrust.exception.DBException;
    import edu.ncsu.csc.itrust.exception.FormValidationException;
    
    /**
     * Used to change the session timeout, sessionTimeout.jsp. Note that a change to this timeout only gets
     * reflected on new sessions.
     * 
     */
    public class ChangeSessionTimeoutAction {
    	private AccessDAO accessDAO;
    
    	/**
    	 * Sets up defualts.
    	 * 
    	 * @param factory
    	 */
    	public ChangeSessionTimeoutAction(DAOFactory factory) {
    		this.accessDAO = factory.getAccessDAO();
    	}
    
    	/**
    	 * Changes the session timeout, the complicated logic of this is somewhat regrettably in the DAO,
    	 * {@link AccessDAO}
    	 * 
    	 * @param minuteString
    	 *            Pass the number of minutes in the form of a string, greater than 0.
    	 * @throws FormValidationException
    	 * @throws DBException
    	 */
    	public void changeSessionTimeout(String minuteString) throws FormValidationException, DBException {
    		try {
    			Integer minutes = Integer.valueOf(minuteString);
    			if (minutes < 1)
    				throw new FormValidationException("Must be a number greater than 0");
    			accessDAO.setSessionTimeoutMins(minutes);
    		} catch (NumberFormatException e) {
    			throw new FormValidationException("That is not a number");
    		}
    	}
    
    	/**
    	 * Returns the current session timeout in minutes, as reflected in the database
    	 * 
    	 * @return the number of minutes it would take for an inactive session to timeout
    	 * @throws DBException
    	 */
    	public int getSessionTimeout() throws DBException {
    		return accessDAO.getSessionTimeoutMins();
    	}
    }