【Java开源代码栏目提醒】:网学会员鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“WebMenuManager.java”一文,供大家参考学习
package com.cownew.PIS.framework.web.menu;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultElement;
import com.cownew.ctk.common.ExceptionUtils;
import com.cownew.ctk.constant.StringConst;
import com.cownew.ctk.io.ResourceUtils;
public class WebMenuManager
{
private static WebMenuManager instance;
private WebMenuColumnInfo[] columnInfos;
private WebMenuItemInfo[] menuItems;
private WebMenuManager()
{
super();
}
public static WebMenuManager getManager()
{
if (instance == null)
{
instance = new WebMenuManager();
try
{
instance.init();
} catch (UnsupportedEncodingException e)
{
throw ExceptionUtils.toRuntimeException(e);
} catch (DocumentException e)
{
throw ExceptionUtils.toRuntimeException(e);
}
}
return instance;
}
private void init() throws UnsupportedEncodingException, DocumentException
{
InputStream beansXFStream = null;
try
{
beansXFStream = getClass().getResourceAsStream(
"/com/cownew/PIS/framework/web/menu/WebMainMenu.xml");
Document doc = new SAXReader().read(new InputStreamReader(
beansXFStream, StringConst.UTF8));
List colList = doc.selectNodes("//Config/Columns/Column");
columnInfos = new WebMenuColumnInfo[colList.size()];
for (int i = 0, n = colList.size(); i < n; i++)
{
DefaultElement beanElement = (DefaultElement) colList.get(i);
String name = beanElement.attribute("name").getText();
String text = beanElement.getText();
columnInfos[i] = new WebMenuColumnInfo(name,text);
}
List itemList = doc.selectNodes("//Config/MenuItems/Item");
menuItems = new WebMenuItemInfo[itemList.size()];
for (int i = 0, n = itemList.size(); i < n; i++)
{
DefaultElement beanElement = (DefaultElement) itemList.get(i);
String column = beanElement.attribute("column").getText();
String link = beanElement.attribute("link").getText();
String text = beanElement.getText();
menuItems[i] = new WebMenuItemInfo(text,link,column);
}
}finally
{
ResourceUtils.close(beansXFStream);
}
}
/**
* 获取配置文件定义的所有栏目定义
* @return
*/
public WebMenuColumnInfo[] getColumnInfos()
{
return columnInfos;
}
/**
* 获取配置文件定义的所有菜单项定义
* @return
*/
public WebMenuItemInfo[] getMenuItems()
{
return menuItems;
}
/**
* 得到栏目columnName下的所有菜单项
* @param columnName
* @return List中数据类型为WebMenuItemInfo
*/
public List getMenuItems(String columnName)
{
List list = new ArrayList();
//菜单项不是很多,所以这样做不会对效率产生影响
//以后菜单项多了以后可以用map
for(int i=0,n=menuItems.length;i<n;i++)
{
WebMenuItemInfo item = menuItems[i];
if(item.getColumn().equals(columnName))
{
list.add(item);
}
}
return list;
}
}