📄 grpusrengineresourcebundle.java
字号:
//// ____.// __/\ ______| |__/\. _______// __ .____| | \ | +----+ \// _______| /--| | | - \ _ | : - \_________// \\______: :---| : : | : | \________>// |__\---\_____________:______: :____|____:_____\// /_____|//// . . . i n j a h i a w e t r u s t . . .//////// NK 18.02.2002 - added in Jahia//package org.jahia.resourcebundle;import java.util.Enumeration;import java.util.Hashtable;import java.util.Locale;import java.util.ResourceBundle;import java.security.acl.Group;import java.security.Principal;import javax.servlet.*; // ServletExceptionimport javax.servlet.http.*; // HttpServletRequest, HttpSerlvetResponseimport org.jahia.services.pages.JahiaPage;import org.jahia.utils.JahiaConsole;import org.jahia.params.ParamBean;import org.jahia.services.usermanager.*;import org.jahia.registries.ServicesRegistry;/** * Tools to handles Pages engine resource bundle for a given principal. * * @author Khue Nguyen * @version 1.0 */public class GrpUsrEngineResourceBundle{ private static final String CLASS_NAME = GrpUsrEngineResourceBundle.class.getName(); private static GrpUsrEngineResourceBundle mInstance ; private Hashtable usrResources ; private Hashtable grpResources ; private GrpUsrEngineResourceBundle(){ usrResources = new Hashtable(); grpResources = new Hashtable(); } public static synchronized GrpUsrEngineResourceBundle getInstance(){ if ( mInstance == null ){ mInstance = new GrpUsrEngineResourceBundle(); } return mInstance; } /** * Add a resource bundle * * @param JahiaPage page * @param Principal p, a JahiaUser or JahiaGroup * @param ResourceBundle res */ public void addResourceBundle(JahiaPage page, Principal p, ResourceBundle res){ if ( page == null || res == null || p == null ) return; boolean isGroup = ( p instanceof Group ); String key; if ( isGroup ){ key = ((JahiaGroup)p).getGroupKey(); JahiaConsole.println(CLASS_NAME+".addResourceBundle","Added grp res. bun. : " + key ) ; grpResources.put( JahiaResourceBundle.ENGINE_DEFAULT_RESOURCE_BUNDLE + "_" + page.getID() + "_" + key , res ); } else { key = ((JahiaUser)p).getUserKey(); JahiaConsole.println(CLASS_NAME+".addResourceBundle","Added user res. bun. : " + key ) ; usrResources.put( JahiaResourceBundle.ENGINE_DEFAULT_RESOURCE_BUNDLE + "_" + page.getID() + "_" + key , res ); } } /** * Returns a resource bundle for a given page and a given principal * * @param JahiaPage page * @param Principal p, a JahiaUser or JahiaGroup * @return ResourceBundle res */ public ResourceBundle getResourceBundle(JahiaPage page, Principal p){ if ( page == null || p == null ) return null; boolean isGroup = ( p instanceof Group ); String key; if ( isGroup ){ key = ((JahiaGroup)p).getGroupKey(); //JahiaConsole.println(CLASS_NAME+".getResourceBundle","For group : " + key ) ; } else { key = ((JahiaUser)p).getUserKey(); //JahiaConsole.println(CLASS_NAME+".getResourceBundle","For user : " + key ) ; } ResourceBundle res; if ( !isGroup ){ res = (ResourceBundle)usrResources.get( JahiaResourceBundle.ENGINE_DEFAULT_RESOURCE_BUNDLE + "_" + page.getID() + "_" + key ); if ( res == null ) res = getGrpResourceBundle(page,p); } else { res = getGrpResourceBundle(page,p); } return res; } /** * Returns a resource bundle for a given JahiaUser looking at its group membership * * @param JahiaPage page * @param Principal p, a JahiaUser or JahiaGroup * @return ResourceBundle res */ private ResourceBundle getGrpResourceBundle(JahiaPage page, Principal p){ //JahiaConsole.println(CLASS_NAME+".getGrpResourceBundle()","Started looking for page :" + page.getID()); if ( page == null || p == null ) return null; JahiaGroup grp; String grpKey; String key ; String resName = JahiaResourceBundle.ENGINE_DEFAULT_RESOURCE_BUNDLE + "_" + page.getID() + "_"; ResourceBundle res = null; Enumeration keys = grpResources.keys(); while (keys.hasMoreElements()){ grpKey = ""; key = (String)keys.nextElement(); //JahiaConsole.println(CLASS_NAME+".getGrpResourceBundle()","res key found :" + key); if ( key.startsWith(resName) ){ grpKey = key.substring(resName.length(),key.length()); //JahiaConsole.println(CLASS_NAME+".getGrpResourceBundle()","groupkey :" + grpKey); grp = ServicesRegistry.getInstance().getJahiaGroupManagerService().lookupGroup(grpKey); if ( grp != null && grp.isMember(p)){ //JahiaConsole.println(CLASS_NAME+".getGrpResourceBundle()","user " + ((JahiaUser)p).getUsername() + " is member of group :" + grpKey); res = (ResourceBundle)grpResources.get(key); if ( res != null ) return res; } } } return res; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -