📄 jahiagroupmanagerdbservice.java
字号:
CloseStatement (statement); } return dom; } //-------------------------------------------------------------------------- /** * return a DOM document of all group props of a site * * @param int the site id * * @return JahiaDOMObject a DOM representation of this object * * @author NK */ public JahiaDOMObject getGroupPropsAsDOM( int siteID ) throws JahiaException{ Connection dbConn = null; Statement statement = null; String output = null; JahiaDBDOMObject dom = null; try { String sqlQuery = "SELECT DISTINCT jahia_grp_prop.id_jahia_grp,jahia_grp_prop.name_jahia_grp_prop,jahia_grp_prop.value_jahia_grp_prop FROM jahia_grp_prop ,jahia_grps WHERE jahia_grp_prop.id_jahia_grp=" +"jahia_grps.id_jahia_grps AND jahia_grps.siteid_jahia_grps="+siteID; dbConn = getDBConnection(0); statement = dbConn.createStatement(); if (statement != null) { ResultSet rs = ServicesRegistry.getInstance().getDBPoolService().executeQuery( statement,sqlQuery ); if (rs != null) { dom = new JahiaDBDOMObject(); dom.addTable("jahia_grp_prop",rs); return dom; } } } catch (SQLException se) { String errorMsg = "Error in getGroupPropsAsDOM(int siteID) : " + se.getMessage(); JahiaConsole.println( "JahiaGroupManagerDBService", errorMsg ); throw new JahiaException( "Cannot load groups props from the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } finally { CloseDBConnection (dbConn); CloseStatement (statement); } return dom; } //-------------------------------------------------------------------------- /** * return a DOM document of all application role groups of a site * * @param int the site id * * @return JahiaDOMObject a DOM representation of this object * * @author NK */ public JahiaDOMObject getAppRoleGroupsAsDOM( int siteID ) throws JahiaException{ Connection dbConn = null; Statement statement = null; String output = null; JahiaDBDOMObject dom = null; Vector grps = GroupsTools.getGroups( siteID, true); try { String sqlQuery = ""; int size = grps.size(); if ( size==0 ){ dom = new JahiaDBDOMObject(); dom.addTable("jahia_grps",null); return dom; } else { StringBuffer buff = new StringBuffer("SELECT DISTINCT id_jahia_grps,name_jahia_grps,key_jahia_grps,siteid_jahia_grps FROM jahia_grps where key_jahia_grps IN("); JahiaGroup grp = null; for ( int i=0 ; i<size ; i++ ){ grp = (JahiaGroup)grps.get(i); buff.append("'"); buff.append(grp.getGroupKey ()); buff.append("'"); if (i<(size-1)){ buff.append(","); } } buff.append(")"); sqlQuery = buff.toString(); } dbConn = getDBConnection(0); statement = dbConn.createStatement(); if (statement != null) { ResultSet rs = ServicesRegistry.getInstance().getDBPoolService().executeQuery( statement,sqlQuery ); if (rs != null) { dom = new JahiaDBDOMObject(); dom.addTable("jahia_grps",rs); return dom; } } } catch (SQLException se) { String errorMsg = "Error in getAppRoleGroupsAsDOM(int siteID) : " + se.getMessage(); JahiaConsole.println( "JahiaGroupManagerDBService", errorMsg ); throw new JahiaException( "Cannot load groups from the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } finally { CloseDBConnection (dbConn); CloseStatement (statement); } return dom; } //-------------------------------------------------------------------------- /** * return a DOM document of all user group access for a site * * @param int the site id * * @return JahiaDOMObject a DOM representation of this object * * @author NK */ public JahiaDOMObject getUserGroupAccessAsDOM( int siteID ) throws JahiaException{ class UsrGrpAccessFilter implements DBRowDataFilter { private int siteID = -1; public UsrGrpAccessFilter(int siteID){ this.siteID = siteID; } public boolean inValue(Hashtable vals){ if ( vals == null ){ return false; } String val = null; try { val = (String)vals.get("id_jahia_grps"); return ( val.endsWith(":"+this.siteID) ); } catch ( Throwable t ){ JahiaConsole.println("getUserGroupAccessAsDOM","Error parsing " + val); //t.printStackTrace(); } return false; } } Connection dbConn = null; Statement statement = null; String output = null; JahiaDBDOMObject dom = null; UsrGrpAccessFilter usrGrpAccessFilter = new UsrGrpAccessFilter(siteID); try { String sqlQuery = "SELECT DISTINCT jahia_grp_access.id_jahia_member," +"jahia_grp_access.id_jahia_grps,jahia_grp_access.membertype_grp_access" +" FROM jahia_grp_access,jahia_users,jahia_grps " +"WHERE (jahia_grp_access.membertype_grp_access=1 " +"AND jahia_grp_access.id_jahia_member=" +"jahia_users.key_jahia_users AND jahia_users.siteid_jahia_users="+siteID+") " +"OR (jahia_grp_access.membertype_grp_access=2 AND jahia_grp_access.id_jahia_member=" +"jahia_grps.key_jahia_grps AND jahia_grps.siteid_jahia_grps="+siteID+")"; //String sqlQuery = "SELECT * FROM jahia_grp_access"; dbConn = getDBConnection(0); statement = dbConn.createStatement(); if (statement != null) { ResultSet rs = ServicesRegistry.getInstance().getDBPoolService().executeQuery( statement,sqlQuery ); if (rs != null) { dom = new JahiaDBDOMObject(); dom.addTable("jahia_grp_access",rs,usrGrpAccessFilter); return dom; } } } catch (SQLException se) { String errorMsg = "Error in getUserGroupAccessAsDOM(int siteID) : " + se.getMessage(); JahiaConsole.println( "JahiaGroupManagerDBService", errorMsg ); throw new JahiaException( "Cannot load groups from the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } finally { CloseDBConnection (dbConn); CloseStatement (statement); } return dom; } //-------------------------------------------------------------------------- /** * return a DOM document of all application group access for a site * Here users and groups have access to application role groups ( not normal groups ) * * @param int the site id * * @return JahiaDOMObject a DOM representation of this object * * @author NK */ public JahiaDOMObject getAppGroupAccessAsDOM( int siteID ) throws JahiaException{ Connection dbConn = null; Statement statement = null; String output = null; JahiaDBDOMObject dom = null; Vector grps = GroupsTools.getGroups( siteID, true); try { String sqlQuery = ""; int size = grps.size(); if ( size==0 ){ dom = new JahiaDBDOMObject(); dom.addTable("jahia_grp_access",null); return dom; } else { StringBuffer buff = new StringBuffer("SELECT DISTINCT id_jahia_member,id_jahia_grps,membertype_grp_access FROM jahia_grp_access where id_jahia_grps IN("); JahiaGroup grp = null; for ( int i=0 ; i<size ; i++ ){ grp = (JahiaGroup)grps.get(i); buff.append("'"); buff.append(grp.getGroupKey ()); buff.append("'"); if (i<(size-1)){ buff.append(","); } } buff.append(")"); sqlQuery = buff.toString(); } dbConn = getDBConnection(0); statement = dbConn.createStatement(); if (statement != null) { ResultSet rs = ServicesRegistry.getInstance().getDBPoolService().executeQuery( statement,sqlQuery ); if (rs != null) { dom = new JahiaDBDOMObject(); dom.addTable("jahia_grp_access",rs); return dom; } } } catch (SQLException se) { String errorMsg = "Error in getAppGroupAccessAsDOM(int siteID) : " + se.getMessage(); JahiaConsole.println( "JahiaGroupManagerDBService", errorMsg ); throw new JahiaException( "Cannot load groups from the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } finally { CloseDBConnection (dbConn); CloseStatement (statement); } return dom; } //---------------------------------------------------------------------------- /** * */ private void toConsole (String message) { JahiaConsole.println ("GroupManager", message); } //------------------------------------------------------------------------- private void toDebug (String message) { if (false) { JahiaConsole.println("JahiaGroupManagerDBService.toDebug", message); } } //------------------------------------------------------------------------- private boolean isNameValid (String name) { if (name == null) { return false; } if (name.length() == 0) { return false; } String authorizedCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789"; char[] chars = authorizedCharacters.toCharArray(); char[] nameBuffer = name.toCharArray(); boolean badCharFound = false; int i = 0; while ((i < nameBuffer.length) && (!badCharFound)) { int j = 0; boolean ok = false; while ((j < chars.length) && (!ok)) { if (chars[j] == nameBuffer[i]) { ok = true; } j++; } badCharFound = (!ok); if (badCharFound) { toDebug ("--/ Bad character found in group name ["+name+"] at position "+Integer.toString(i)); } i++; } return (!badCharFound); } //------------------------------------------------------------------------- private Connection getDBConnection (int debugInfo) { Connection dbConn = null; try { dbConn = mDBPoolService.getConnection (debugInfo); } catch (NullPointerException ex) { toConsole ("Null Pointer Exception, DB Pool Service instance might be null!"); } catch (SQLException ex) { toConsole ("SQL Exception: cannot get a connection."); } return dbConn; } //------------------------------------------------------------------------- private void CloseDBConnection (Connection dbConn) { if ((mDBPoolService != null) && (dbConn != null)) { try { mDBPoolService.freeConnection (dbConn); } catch (SQLException sqlEx) { // FIXME -Fulco- : Don't know yet what to do with this exception. // It should be logged somewhere ! } } } //------------------------------------------------------------------------- private void CloseStatement (Statement statement) { // Close the opened statement try { if (statement!=null) { statement.close(); } } catch (SQLException sqlEx) { // FIXME -Fulco- : Don't know yet what to do with this exception. // It should be logged somewhere ! } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -