📄 jiverequest.java
字号:
/** * $Header: /home/coolserv/.cvs/coolserv/jive/source/taglib/com/coolservlets/forum/tags/JiveRequest.java,v 1.3 2000/12/11 00:16:14 gnielsen Exp $ * $Revision: 1.3 $ * $Date: 2000/12/11 00:16:14 $ * * Copyright (C) 2000 CoolServlets.com. All rights reserved. * * =================================================================== * The Apache Software License, Version 1.1 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by * CoolServlets.com (http://www.coolservlets.com)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Jive" and "CoolServlets.com" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please * contact webmaster@coolservlets.com. * * 5. Products derived from this software may not be called "Jive", * nor may "Jive" appear in their name, without prior written * permission of CoolServlets.com. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL COOLSERVLETS.COM OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of CoolServlets.com. For more information * on CoolServlets.com, please see <http://www.coolservlets.com>. */package com.coolservlets.forum.tags;import java.util.*;import java.text.*;import javax.servlet.*;import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;import javax.servlet.http.*;import com.coolservlets.forum.*;import com.coolservlets.util.*; /** * Maintains Jive state information for the current request. * <p> * Created by the <b>authorize</b> tag and is the class that is tied * to the <b>authorize</b> script variable to provide access by JSP * page authors to request data using <jsp:getProperty/>. * <p> * Provides methods required for maintaining the request state information * for use by other tags. * @see AuthorizeTag * @see JiveState * * @author Glenn Nielsen */public class JiveRequest{ private JiveState js = null; private ForumFactory ff = null; private PageContext pageContext = null; private ProfileManager pm = null; private List forums = null; private List error = new java.util.LinkedList(); /** * JiveRequest frequently needs to use the JiveState, * so just set it once. * * @param JiveState */ public final void setJiveState(JiveState j) { js = j; } /** * Get the list of Forums user is authorized to view. * Used by the <b>forum</b> and <b>forum_loop</b> tags. * * @return a List of Forums */ public final List getForums(Map match) throws JspException { checkJiveState(); if( forums == null ) { forums = new java.util.LinkedList(); Iterator vf = ff.forums(); while( vf.hasNext() ) { Forum forum = (Forum)vf.next(); boolean match_made = true; String prop; String value; for(Iterator it=match.keySet().iterator();it.hasNext();) { prop = (String)it.next(); if( (value = forum.getProperty(prop)) == null ) { match_made = false; break; } if( !value.equals((String)match.get(prop)) ) { match_made = false; break; } } if( match_made ) { forums.add( forum ); } } } return forums; }/* public final List getForums(Map match) throws JspException { checkJiveState(); if( forums == null ) { forums = new java.util.LinkedList(); Iterator vf = ff.forums(match); Fix Me while( vf.hasNext() ) { forums.add( vf.next() ); } } return forums; }*/ /** * Gets the current forum user is viewing by current thread or * defaults to first forum. * * Used by the <b>forum</b> and <b>thread</b> tags. * * @return currently selected Forum */ public final Forum getForum() throws JspException { Forum cf = null; checkJiveState(); int threadid = js.getForumID(); if( threadid < 0 ) { java.util.LinkedList forums = (java.util.LinkedList)getForums(new HashMap()); if( forums.size() > 0 ) { cf = (Forum)forums.get(0); js.setForumID(cf.getID()); } } else { try { cf = ff.getForum(threadid); } catch(ForumNotFoundException e) { throw new JspException("Jive forum tag, could not find forum with ID:" + threadid); } catch(UnauthorizedException e) { throw new JspException("Jive forum tag, user not authorized for forum with ID:" + threadid); } } if( cf == null ) { throw new JspException("Jive forum tag, no forums available for user."); } return cf; } /** * Gets the current forum user is viewing by current thread or * defaults to first thread in current forum. * * Used by the <b>thread</b> tag. * * @return currently selected Thread */ public final ForumThread getThread() throws JspException { Forum cf = getForum(); ForumThread ct = null; int threadid = js.getThreadID(); if( threadid < 0 ) { Iterator threads = cf.threads(0,1); if( threads.hasNext() ) { ct = (ForumThread)threads.next(); } } else { try { ct = cf.getThread(threadid); } catch(ForumThreadNotFoundException e) { throw new JspException("Could not find thread with ID:" + threadid); } } if( ct == null ) { throw new JspException("Jive thread tag, no threads available for user."); } return ct; } /** * Gets the current message user is viewing by current message or * defaults to first message in current thread. * * Used by the <b>message</b> tag. * * @return currently selected Message */ public final ForumMessage getMessage() throws JspException { ForumThread ct = getThread(); ForumMessage cm = null; int messageid = js.getMessageID(); try { if( messageid < 0 ) { cm = ct.getRootMessage(); } else { cm = ct.getMessage(messageid); } } catch(ForumMessageNotFoundException e) { throw new JspException("Could not find message with messageID: " + messageid); } if( cm == null ) { throw new JspException("Jive message tag, no messages available for user."); } return cm; } /** * NumberOfForums property which can be obtained by the JSP page * using the <b>authorize</b> script variable with * <jsp:getProperty name=<i>"id"</i> property="numberOfForums"/> * * @return number of Forums user is authorized to view */ public final String getNumberOfForums() throws JspException { return "" + getForumFactory().getForumCount(); } /** * Date and time of users last visit (integer) property which can be * obtained by the JSP page using the <b>authorize</b> script variable with * <jsp:getProperty name=<i>"id"</i> property="lastVisit"/> * * @return date and time of users last visit */ public final String getLastVisit() { return "" + js.getLastVisit().getTime(); } /** * Method used by many tags to add an error to the list of errors * which can be returned using the <b>error_loop</b> tag. */ public final void addError(String err) { error.add((Object)new StringBuffer(err)); } /** * Method used by <b>if_error</b> and <b>error_loop</b> tags to * get the list of user errors. * * @return a List of user errors */ public final List getErrorList() { return error; } /** * Used by the JSP page to set the error for the current request * using the <b>authorize</b> script variable with * <jsp:setProperty name=<i>"id"</i> property="error" value="<i>string</i>"/> */ public final void setError(String err) { error.clear(); error.add((Object)new StringBuffer(err)); } /** * Test whether current user is anonymous. * * @return boolean - true or false */ public final boolean isAnonymous() { if( js.getLoggedIn() ) return false; return true; } /** * MessageDepth property which can be obtained by the JSP page * using the <b>authorize</b> script variable with * <jsp:getProperty name=<i>"id"</i> property="messageDepth"/> * * @return user message_depth display preference */ public final String getMessageDepth() { return "" + js.getMessageDepth(); } /** * Used by the JSP page to set the message_depth display preferences of * user for current session using the <b>authorize</b> script variable with * <jsp:setProperty name=<i>"id"</i> property="messageDepth" value="<i>integer</i>"/> */ public final void setMessageDepth(String s) { try { js.setMessageDepth(Integer.valueOf(s).intValue()); } catch(NumberFormatException e) { } } /** * ThreadDepth property which can be obtained by the JSP page * using the <b>authorize</b> script variable with * <jsp:getProperty name=<i>"id"</i> property="threadDepth"/> * * @return user thread_depth display preference */ public final String getThreadDepth() { return "" + js.getThreadDepth(); } /** * Used by the JSP page to set the thread_depth display preferences of * user for current session using the <b>authorize</b> script variable with * <jsp:setProperty name=<i>"id"</i> property="theadDepth" value="<i>integer</i>"/> */ public final void setThreadDepth(String s) { try { js.setThreadDepth(Integer.valueOf(s).intValue()); } catch(NumberFormatException e) { } } /** * ItemsPerPage property which can be obtained by the JSP page * using the <b>authorize</b> script variable with * <jsp:getProperty name=<i>"id"</i> property="itemsPerPage"/> * * @return user items_per_page display preference */ public final String getItemsPerPage() { return "" + js.getItemsPerPage(); } /** * Used by the JSP page to set the items_per_page display preferences of * user for current session using the <b>authorize</b> script variable with * <jsp:setProperty name=<i>"id"</i> property="itemsPerPage" value="<i>integer</i>"/> */ public final void setItemsPerPage(String s) { try { js.setItemsPerPage(Integer.valueOf(s).intValue()); } catch(NumberFormatException e) { } } /** * Generate a random password. * * @return an 8 character password */ public final String GeneratePassword() { return StringUtils.randomString(8); } /** * Method used by many tags to get the ForumFactory. * * @return ForumFactory */ public final ForumFactory getForumFactory() throws JspException { checkJiveState(); return ff; } /** * Method used by many tags to get the User ProfileManager. * * @return User ProfileManager */ public final ProfileManager getProfileManager() throws JspException { checkJiveState(); if( pm == null ) pm = ff.getProfileManager(); if( pm == null ) throw new JspException("Could not get ProfileManager."); return pm; } /** * Method used by many JiveRequest methods to make sure * the necessary resources are available. * * @throws JspException if a resource can not be found */ private void checkJiveState() throws JspException { if( js == null || js.getAuthorization() == null ) throw new JspException("JiveState not set for JiveRequest"); if( ff == null ) ff = ForumFactory.getInstance(js.getAuthorization()); if( ff == null ) throw new JspException("Could not get ForumFactory."); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -