📄 appssharepersistance.java
字号:
//// ____.// __/\ ______| |__/\. _______// __ .____| | \ | +----+ \// _______| /--| | | - \ _ | : - \_________// \\______: :---| : : | : | \________>// |__\---\_____________:______: :____|____:_____\// /_____|//// . . . i n j a h i a w e t r u s t . . .////// AppsSharePersistance//// NK 12.03.2001//package org.jahia.services.shares;import java.sql.*;import java.util.Vector;import java.util.Enumeration;import org.jahia.services.acl.JahiaBaseACL;import org.jahia.services.acl.JahiaACLException;import org.jahia.settings.JahiaPrivateSettings;import org.jahia.registries.ServicesRegistry;import org.jahia.utils.JahiaTools;import org.jahia.utils.JahiaConsole;import org.jahia.exceptions.JahiaException;import org.jahia.exceptions.JahiaInitializationException;import org.jahia.data.JahiaDOMObject;import org.jahia.data.JahiaDBDOMObject;/** * Persistance Storage of Applications share * * @author Khue ng */public class AppsSharePersistance{ private static AppsSharePersistance m_Instance = null; /** * constructor * */ protected AppsSharePersistance(){ } //-------------------------------------------------------------------------- /** * return the singleton instance of this class * */ public static synchronized AppsSharePersistance getInstance(){ if ( m_Instance == null ){ m_Instance = new AppsSharePersistance(); } return m_Instance; } //-------------------------------------------------------------------------- /** * return the list of all sites having access to an app * * @param int the app ident * @return Enumeration , enumeration of site's keys */ public Enumeration dbGetSites( int appID ) throws JahiaException{ Connection dbConn = null; Statement statement = null; Vector vec = new Vector(); try { String sqlQuery = "SELECT * FROM jahia_apps_share where id_aps_appid=" + appID; dbConn = getDBConnection(); statement = dbConn.createStatement(); if (statement != null) { ResultSet rs = ServicesRegistry.getInstance().getDBPoolService().executeQuery( statement,sqlQuery ); if (rs != null) { int siteID = -1; while (rs.next()) { siteID = rs.getInt("id_aps_siteid"); vec.add(new Integer(siteID)); } } } } catch (SQLException se) { String errorMsg = "Error in dbGetSites : " + se.getMessage(); JahiaConsole.println( "AppsSharePersistance", errorMsg + " -> BAILING OUT" ); throw new JahiaException( "Cannot retrive site keys from the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } finally { closeDBConnection (dbConn); closeStatement (statement); } return vec.elements(); } //-------------------------------------------------------------------------- /** * add a new share between a site and an app * * @param int , the app id * @param int , the site id */ public void dbAddShare( int appID, int siteID ) throws JahiaException{ if ( dbGetShare(appID,siteID)==null ){ try { StringBuffer sqlQuery = new StringBuffer("INSERT INTO jahia_apps_share VALUES("); sqlQuery.append(appID); sqlQuery.append(","); sqlQuery.append(siteID); sqlQuery.append(")"); executeQueryNoResultSet(sqlQuery.toString()); JahiaConsole.println("AppsSharePersistance.dbAddShare", sqlQuery.toString()); } catch (JahiaException je) { String errorMsg = "Error in dbAddShare(int appid, String siteKey) : " + je.getMessage(); JahiaConsole.println( "AppsSharePersistance", errorMsg + " -> BAILING OUT" ); throw new JahiaException( "Cannot add app share in the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } } } //-------------------------------------------------------------------------- /** * remove a share between a site and an app * * @param int the app id * @param int the site id */ public void dbRemoveShare( int appID, int siteID ) throws JahiaException{ try { StringBuffer sqlQuery = new StringBuffer("DELETE FROM jahia_apps_share WHERE id_aps_appid="); sqlQuery.append(" and id_aps_siteid="); sqlQuery.append(siteID); executeQueryNoResultSet(sqlQuery.toString()); } catch (JahiaException je) { String errorMsg = "Error in dbRemoveSite(int id) : " + je.getMessage(); JahiaConsole.println( "AppsSharePersistance", errorMsg + " -> BAILING OUT" ); throw new JahiaException( "Cannot remove share in the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } } //-------------------------------------------------------------------------- /** * remove all share referencing a site * * @param int, the site id */ public void dbSiteRemoveShares( int siteID ) throws JahiaException{ try { StringBuffer sqlQuery = new StringBuffer("DELETE FROM jahia_apps_share WHERE id_aps_siteid ="); sqlQuery.append(siteID); executeQueryNoResultSet(sqlQuery.toString()); } catch (JahiaException je) { String errorMsg = "Error in dbRemoveShares(int siteID) : " + je.getMessage(); JahiaConsole.println( "AppsSharePersistance", errorMsg + " -> BAILING OUT" ); throw new JahiaException( "Cannot remove share for a gived site in the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } } //-------------------------------------------------------------------------- /** * remove all share referencing an app * * @param int, the app id */ public void dbAppRemoveShares( int appID ) throws JahiaException{ try { StringBuffer sqlQuery = new StringBuffer("DELETE FROM jahia_apps_share WHERE id_aps_appid ="); sqlQuery.append(appID); executeQueryNoResultSet(sqlQuery.toString()); } catch (JahiaException je) { String errorMsg = "Error in dbRemoveShares(int appID) : " + je.getMessage(); JahiaConsole.println( "AppsSharePersistance", errorMsg + " -> BAILING OUT" ); throw new JahiaException( "Cannot remove share for a gived app in the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } } //-------------------------------------------------------------------------- /** * return a share object or null if not found * * @param int, the app id * @param int, the site id * @return AppShare, the share bean */ public AppShare dbGetShare( int appID, int siteID ) throws JahiaException{ Connection dbConn = null; Statement statement = null; AppShare share = null; try { StringBuffer sqlQuery = new StringBuffer("SELECT * FROM jahia_apps_share where id_aps_appid="); sqlQuery.append(appID); sqlQuery.append(" and "); sqlQuery.append(" id_aps_siteid= "); sqlQuery.append(siteID); dbConn = getDBConnection(); statement = dbConn.createStatement(); if (statement != null) { ResultSet rs = ServicesRegistry.getInstance().getDBPoolService().executeQuery( statement,sqlQuery.toString() ); while ( rs.next() ){ share = new AppShare(rs.getInt("id_aps_appid"),rs.getInt("id_aps_siteid")); } } } catch (SQLException se) { String errorMsg = "Error in dbGetShare : " + se.getMessage(); JahiaConsole.println( "AppsSharePersistance", errorMsg + " -> BAILING OUT" ); throw new JahiaException( "Cannot retrieve site keys from the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } finally { closeDBConnection (dbConn); closeStatement (statement); } return share; } //-------------------------------------------------------------------------- /** * return a DOM document of application shares content * * @param int the site id * * @return JahiaDOMObject a DOM representation of this object * * @author NK */ public JahiaDOMObject getApplicationSharesAsDOM( int siteID ) throws JahiaException{ Connection dbConn = null; Statement statement = null; String output = null; JahiaDBDOMObject dom = null; try { /* String sqlQuery = "SELECT * FROM jahia_apps_share" +" WHERE id_aps_appid in" +"(SELECT id_jahia_app_def FROM jahia_app_def where jahiaid_jahia_app_def="+siteID+")"; */ String sqlQuery = "SELECT DISTINCT jahia_apps_share.id_aps_appid,jahia_apps_share.id_aps_siteid" +" FROM jahia_apps_share,jahia_app_def" +" WHERE jahia_apps_share.id_aps_appid=" +"jahia_app_def.id_jahia_app_def AND jahia_app_def.jahiaid_jahia_app_def="+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_apps_share",rs); return dom; } } } catch (SQLException se) { String errorMsg = "Error in getApplicationSharesAsDOM(int siteID) : " + se.getMessage(); JahiaConsole.println( "AppsSharePersistance", errorMsg ); throw new JahiaException( "Cannot load data from the database", errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } finally { closeDBConnection (dbConn); closeStatement (statement); } return dom; } //------------------------------------------------------------------------- private void executeQueryNoResultSet(String queryStr) throws JahiaException { Connection dbConn = null; Statement statement = null; try { dbConn = getDBConnection(); statement = dbConn.createStatement(); if (statement != null) { ServicesRegistry.getInstance().getDBPoolService().executeUpdate(statement,queryStr); } } catch (SQLException se) { String errorMsg = "Error in executeQueryNoResultSet(String queryStr) : " + se.getMessage(); JahiaConsole.println( "AppsSharePersistance", errorMsg + " -> BAILING OUT" ); throw new JahiaException( "Cannot execute query" + queryStr, errorMsg, JahiaException.DATABASE_ERROR, JahiaException.CRITICAL ); } finally { closeDBConnection (dbConn); closeStatement (statement); } } //------------------------------------------------------------------------- private Connection getDBConnection () { Connection dbConn = null; try { dbConn = ServicesRegistry.getInstance().getDBPoolService().getConnection (); } catch (NullPointerException ex) { JahiaConsole.println ("AppsSharePersistance", "Null Pointer Exception, DB Pool Service instance might be null!"); } catch (SQLException ex) { JahiaConsole.println ("AppsSharePersistance", "SQL Exception: cannot get a connection."); } return dbConn; } //------------------------------------------------------------------------- private Connection getDBConnection (int debugInfo) { Connection dbConn = null; try { dbConn = ServicesRegistry.getInstance().getDBPoolService().getConnection (debugInfo); } catch (NullPointerException ex) { JahiaConsole.println ("AppsSharePersistance", "Null Pointer Exception, DB Pool Service instance might be null!"); } catch (SQLException ex) { JahiaConsole.println ("AppsSharePersistance", "SQL Exception: cannot get a connection."); } return dbConn; } //------------------------------------------------------------------------- private void closeDBConnection (Connection dbConn) { if (dbConn != null) { try { ServicesRegistry.getInstance().getDBPoolService().freeConnection (dbConn); } catch (SQLException sqlEx) { // just create an exception without raising it, just to notify it // in the logs. JahiaException je = new JahiaException ("Cannot free resources", "Cannot free resources", JahiaException.DATABASE_ERROR, JahiaException.WARNING); } catch (NullPointerException ex) { JahiaConsole.println ("AppsSharePersistance", "Null Pointer Exception, DB Pool Service instance might be null!"); } } } //------------------------------------------------------------------------- private void closeStatement (Statement statement) { // Close the opened statement try { if (statement!=null) { statement.close(); } } catch (SQLException sqlEx) { // just create an exception without raising it, just to notify it // in the logs. JahiaException je = new JahiaException ("Cannot close a statement", "Cannot close a statement", JahiaException.DATABASE_ERROR, JahiaException.WARNING); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -