📄 forumcontroller.java
字号:
/* * XP Forum * * Copyright (c) 2002-2003 RedSoft Group. All rights reserved. * */package org.redsoft.forum.web;import org.redsoft.forum.ForumConstants;import org.redsoft.forum.dao.DAOFactory;import org.redsoft.forum.dao.ThreadDAO;import org.redsoft.forum.exception.CategoryNotFoundException;import org.redsoft.forum.exception.DAOException;import org.redsoft.forum.security.User;import javax.security.auth.Subject;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.ArrayList;import java.util.Collection;/** * Display a list of threads and allow use to navigate the list of * threads * * @author Charles Huang * @version 1.0 * @since JDK 1.4 */public class ForumController { // Holds a collection of threads retrieved from DB private Collection threadList; // Holds the category private int category = 1; // Holds the start index of the threads private int startIndex = 1; // Holds the current user id private String userID = null; /** * Constructor * */ public ForumController() { } public void perform( final HttpServletRequest request, final HttpServletResponse response ){ String categoryString = request.getParameter( ForumConstants.FORUM_ID_PARAM ); final Subject subject = (Subject)request.getSession().getAttribute(ForumConstants.USER_KEY); if( subject != null ){ userID = ( (User)subject.getPrincipals( User.class ).iterator().next() ).getName(); } if( categoryString == null || categoryString.length() == 0 ){ categoryString = (String)request.getAttribute( ForumConstants.FORUM_ID_PARAM ); } final String action = request.getParameter( ForumConstants.ACTION_PARAM ); if( categoryString != null && categoryString.length() > 0 ){ category = Integer.parseInt( categoryString ); } if( action != null && action.length() > 0 ){ startIndex = Integer.parseInt( request.getParameter(ForumConstants.START_INDEX_PARAM) ); // If action = next,increase the start index if( action.equals("next") ){ startIndex = startIndex + ForumConstants.MAX_THREADS_PER_PAGE; } // If action = previous else if( action.equals("previous") ){ startIndex = startIndex - ForumConstants.MAX_THREADS_PER_PAGE; if( startIndex < 1 ){ startIndex = 1; } }else if( action.equals("remove") ){ removeThreads( request ); } } } /** * Gets all the top-level threads for the current forum * * @param startIndex - The index of the first displayed thread * @param length - The quantity of the threads displayed in current screen * @return Collection - A collection of top-level threads for the forum */ private Collection getThreads( final int startIndex, final int length ){ final ThreadDAO dao = DAOFactory.getInstance().getThreadDAO(); try{ threadList = dao.findByCategory( category, startIndex,length ); } catch ( final CategoryNotFoundException categoryNotFoundException ){ categoryNotFoundException.printStackTrace(); } catch (DAOException daoe) { daoe.printStackTrace(); return new ArrayList(); } return threadList; } /** * Remove selected threads * */ private void removeThreads( final HttpServletRequest request ){ final String[] seletedThreads = request.getParameterValues( "remove" ); final ThreadDAO dao = DAOFactory.getInstance().getThreadDAO(); if( seletedThreads != null && seletedThreads.length > 0 ){ try{ for( int index = 0; index < seletedThreads.length; index++ ){ dao.removeThread( Long.parseLong( seletedThreads[ index ] ) ); } } catch (DAOException daoe) { daoe.printStackTrace(); } } } /** * GEts all the top-level threads given the start index * * @return Collection - A collection of threads */ public Collection getThreads(){ return getThreads( startIndex, ForumConstants.MAX_THREADS_PER_PAGE ); } /** * Return the start index of the threads in current page * * @return int - The start index of the threads in the page */ public int getStartIndex(){ return startIndex; } /** * Returns the total count of all top-leve threads under a category * * @return int - The total count of threads under a category */ public int getTotalCount(){ final ThreadDAO dao = DAOFactory.getInstance().getThreadDAO(); int count = 0; try{ count = dao.findCountByCategory( category ); } catch (DAOException daoe) { daoe.printStackTrace(); } return count; } /** * Return the selected forum id which is the category in Thread definition * * @return int - The selected forum id */ public int getSelectedForum(){ return category; } /** * Check if the current user has an adminsitrator role * * @return boolean - True if the current user is in a administrator role */ public boolean isAdmin(){ //TODO:Use role-based authrization by using JAAS or other machanism // Currently just simple use the explicit id to determine if the user // has administration privillage if( userID != null && userID.equals("ADMIN") ){ return true; }else{ return false; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -