⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rollermenumodel.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
字号:
package org.roller.presentation.tags.menu;import org.apache.commons.digester.Digester;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.roller.RollerException;import org.roller.config.RollerConfig;import org.roller.pojos.UserData;import org.roller.presentation.RollerRequest;import org.xml.sax.SAXException;import java.io.InputStream;import java.util.Hashtable;import java.util.Iterator;import java.util.List;import java.util.Vector;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;///////////////////////////////////////////////////////////////////////////////**  * @author David M Johnson */ public class RollerMenuModel extends BaseRollerMenu implements MenuModel{    private static Log mLogger =         LogFactory.getFactory().getInstance(RollerMenuModel.class);        	private String mMenuId = null;	/** Vector of MenuImpl objects */	private Vector mMenus = new Vector();	/** Key used to store selected menu in request */	public static final String MENU_KEY = "rmk";	/** Key used to store selected menu item in request */	public static final String MENU_ITEM_KEY = "rmik";	//------------------------------------------------------------------------	/** Construct menu model based on menu XML */		public RollerMenuModel( String menuId, String config, ServletContext ctx )	{		try		{			mMenuId = menuId;			Digester digester = new Digester();			digester.push(this);			//digester.setDebug(99);			//digester.setClassLoader( getClass().getClassLoader() );			//digester.setValidating(true);			String menuPath = "menu-bar/menu";			String menuItemPath = "menu-bar/menu/menu-item";			digester.addObjectCreate( menuPath,			 	"org.roller.presentation.tags.menu.MenuImpl");			digester.addSetProperties( menuPath );			digester.addSetNext( menuPath,"addMenu",			 	"org.roller.presentation.tags.menu.Menu");			digester.addObjectCreate( menuItemPath,			 	"org.roller.presentation.tags.menu.MenuItemImpl");			digester.addSetProperties( menuItemPath );			digester.addSetNext( menuItemPath, "addItem",			 	"org.roller.presentation.tags.menu.MenuItemImpl");			InputStream input = ctx.getResourceAsStream(config);			try 			{				digester.parse(input);				if ( getMenus() != null )				{					Vector menus = getMenus();					for (int i=0; i<menus.size(); i++)					{						MenuImpl menu = (MenuImpl)menus.elementAt(i);						menu.setMenuId( mMenuId );						Vector menuItems = menu.getMenuItems();						if ( menuItems != null )						{						  for (int j=0; j<menuItems.size(); j++ )						  {							  MenuItemImpl item = 							  	(MenuItemImpl)menuItems.elementAt(j);							  item.setMenuId( mMenuId );						  }						}					}				}			} 			catch (SAXException e) 			{                mLogger.error("Unexpected exception",e);			}            finally             {                if ( input!=null )                {                    try { input.close(); }                     catch (Exception e) { mLogger.error("Unexpected exception",e); };                }            }		}			catch (Exception e)       	{            mLogger.error("Unexpected exception",e);		}	}	//----------------------------------------------- MenuModel implementation	public Vector getMenus()	{		return mMenus;	}	//----------------------------------------------------	public Menu getSelectedMenu( HttpServletRequest req ) throws RollerException	{		MenuImpl def = null;		MenuImpl selected = null; 		for ( int i=0; i<mMenus.size(); i++ ) 		{			MenuImpl menu = (MenuImpl)mMenus.elementAt(i);			if ( menu.isSelected( req ) )			{				selected = menu;				break;			}			if (def == null)			{				def = menu;			}		}		if ( selected != null )		{			return selected;		}		else		{			return def;		}	}	//----------------------------------------------------	public void addMenu( Menu menu )	{		mMenus.addElement( menu );	}	//------------------------------------------------------------------------	/** Create params based on incoming request */	static Hashtable createParams( HttpServletRequest req )	{		Hashtable params = new Hashtable();		RollerRequest rreq = RollerRequest.getRollerRequest(req);		try		{			UserData user = rreq.getUser();			String fid =                 rreq.getFolder()==null ? null : rreq.getFolder().getId();			if ( user != null ) 			{				params.put( RollerRequest.USERNAME_KEY, user.getUserName() );			}			if ( fid != null ) 			{				params.put( RollerRequest.FOLDERID_KEY, fid );			}		}		catch (Exception e)		{			mLogger.error("ERROR getting user in menu model", e);		}		return params;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -