cmsuserdriver.java
来自「找了很久才找到到源代码」· Java 代码 · 共 1,629 行 · 第 1/5 页
JAVA
1,629 行
*/
public void deleteUserInGroup(CmsDbContext dbc, CmsUUID userId, CmsUUID groupId) throws CmsDataAccessException {
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = getSqlManager().getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_GROUPS_REMOVE_USER_FROM_GROUP_2");
stmt.setString(1, groupId.toString());
stmt.setString(2, userId.toString());
stmt.executeUpdate();
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#destroy()
*/
public void destroy() throws Throwable {
m_sqlManager = null;
m_driverManager = null;
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SHUTDOWN_DRIVER_1, getClass().getName()));
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#existsGroup(org.opencms.db.CmsDbContext, java.lang.String)
*/
public boolean existsGroup(CmsDbContext dbc, String groupFqn) throws CmsDataAccessException {
ResultSet res = null;
PreparedStatement stmt = null;
Connection conn = null;
boolean result = false;
try {
conn = getSqlManager().getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_GROUPS_READ_BY_NAME_2");
stmt.setString(1, CmsOrganizationalUnit.getSimpleName(groupFqn));
stmt.setString(2, CmsOrganizationalUnit.SEPARATOR + CmsOrganizationalUnit.getParentFqn(groupFqn));
res = stmt.executeQuery();
// create new Cms group object
if (res.next()) {
result = true;
while (res.next()) {
// do nothing only move through all rows because of mssql odbc driver
}
} else {
result = false;
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return result;
}
/**
* @see org.opencms.db.I_CmsUserDriver#existsUser(org.opencms.db.CmsDbContext, java.lang.String)
*/
public boolean existsUser(CmsDbContext dbc, String userFqn) throws CmsDataAccessException {
PreparedStatement stmt = null;
ResultSet res = null;
Connection conn = null;
boolean result = false;
try {
conn = getSqlManager().getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_READ_BY_NAME_2");
stmt.setString(1, CmsOrganizationalUnit.getSimpleName(userFqn));
stmt.setString(2, CmsOrganizationalUnit.SEPARATOR + CmsOrganizationalUnit.getParentFqn(userFqn));
res = stmt.executeQuery();
if (res.next()) {
result = true;
while (res.next()) {
// do nothing only move through all rows because of mssql odbc driver
}
} else {
result = false;
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return result;
}
/**
* @see org.opencms.db.I_CmsUserDriver#fillDefaults(org.opencms.db.CmsDbContext)
*/
public void fillDefaults(CmsDbContext dbc) throws CmsInitException {
try {
internalCreateDefaultGroups(dbc, "", "");
} catch (CmsException e) {
if (CmsLog.INIT.isErrorEnabled()) {
CmsLog.INIT.error(Messages.get().getBundle().key(Messages.INIT_DEFAULT_USERS_CREATION_FAILED_0), e);
}
throw new CmsInitException(Messages.get().container(Messages.ERR_INITIALIZING_USER_DRIVER_0), e);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#getGroups(org.opencms.db.CmsDbContext, org.opencms.security.CmsOrganizationalUnit, boolean, boolean)
*/
public List getGroups(CmsDbContext dbc, CmsOrganizationalUnit orgUnit, boolean includeSubOus, boolean readRoles)
throws CmsDataAccessException {
// compose the query
String sqlQuery = createRoleQuery("C_GROUPS_GET_GROUPS_0", includeSubOus, readRoles);
// adjust parameter to use with LIKE
String ouFqn = CmsOrganizationalUnit.SEPARATOR + orgUnit.getName();
if (includeSubOus) {
ouFqn += "%";
}
// execute it
List groups = new ArrayList();
ResultSet res = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
// create statement
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatementForSql(conn, sqlQuery);
stmt.setString(1, ouFqn);
stmt.setInt(2, I_CmsPrincipal.FLAG_GROUP_ROLE);
res = stmt.executeQuery();
// create new Cms group objects
while (res.next()) {
groups.add(internalCreateGroup(res));
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return groups;
}
/**
* @see org.opencms.db.I_CmsUserDriver#getOrganizationalUnits(org.opencms.db.CmsDbContext, org.opencms.security.CmsOrganizationalUnit, boolean)
*/
public List getOrganizationalUnits(CmsDbContext dbc, CmsOrganizationalUnit parent, boolean includeChildren)
throws CmsDataAccessException {
List orgUnits = new ArrayList();
try {
CmsResource parentFolder = internalOrgUnitFolder(dbc, parent);
Iterator itResources = m_driverManager.readResources(
dbc,
parentFolder,
CmsResourceFilter.DEFAULT,
includeChildren).iterator();
while (itResources.hasNext()) {
CmsResource resource = (CmsResource)itResources.next();
orgUnits.add(internalCreateOrgUnitFromResource(dbc, resource));
}
} catch (CmsException e) {
throw new CmsDataAccessException(e.getMessageContainer(), e);
}
return orgUnits;
}
/**
* @see org.opencms.db.I_CmsUserDriver#getResourcesForOrganizationalUnit(org.opencms.db.CmsDbContext, org.opencms.security.CmsOrganizationalUnit)
*/
public List getResourcesForOrganizationalUnit(CmsDbContext dbc, CmsOrganizationalUnit orgUnit)
throws CmsDataAccessException {
List result = new ArrayList();
try {
CmsResource ouResource = m_driverManager.readResource(dbc, orgUnit.getId(), CmsResourceFilter.ALL);
Iterator itPaths = internalResourcesForOrgUnit(dbc, ouResource).iterator();
while (itPaths.hasNext()) {
String path = (String)itPaths.next();
result.add(m_driverManager.readResource(dbc, path, CmsResourceFilter.ALL));
}
} catch (CmsException e) {
throw new CmsDataAccessException(e.getMessageContainer(), e);
}
return result;
}
/**
* @see org.opencms.db.I_CmsUserDriver#getSqlManager()
*/
public CmsSqlManager getSqlManager() {
return m_sqlManager;
}
/**
* @see org.opencms.db.I_CmsUserDriver#getUsers(org.opencms.db.CmsDbContext, org.opencms.security.CmsOrganizationalUnit, boolean)
*/
public List getUsers(CmsDbContext dbc, CmsOrganizationalUnit orgUnit, boolean recursive)
throws CmsDataAccessException {
List users = new ArrayList();
ResultSet res = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
// create statement
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_USERS_GET_USERS_FOR_ORGUNIT_1");
String param = CmsOrganizationalUnit.SEPARATOR + orgUnit.getName();
if (recursive) {
param += "%";
}
stmt.setString(1, param);
res = stmt.executeQuery();
// create new Cms group objects
while (res.next()) {
users.add(internalCreateUser(dbc, res));
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return users;
}
/**
* @see org.opencms.db.I_CmsDriver#init(org.opencms.db.CmsDbContext, org.opencms.configuration.CmsConfigurationManager, java.util.List, org.opencms.db.CmsDriverManager)
*/
public void init(
CmsDbContext dbc,
CmsConfigurationManager configurationManager,
List successiveDrivers,
CmsDriverManager driverManager) {
Map configuration = configurationManager.getConfiguration();
ExtendedProperties config;
if (configuration instanceof ExtendedProperties) {
config = (ExtendedProperties)configuration;
} else {
config = new ExtendedProperties();
config.putAll(configuration);
}
String poolUrl = config.get("db.user.pool").toString();
String classname = config.get("db.user.sqlmanager").toString();
m_sqlManager = this.initSqlManager(classname);
m_sqlManager.init(I_CmsUserDriver.DRIVER_TYPE_ID, poolUrl);
m_driverManager = driverManager;
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_ASSIGNED_POOL_1, poolUrl));
}
m_digestAlgorithm = config.getString(CmsDriverManager.CONFIGURATION_DB + ".user.digest.type", "MD5");
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_DIGEST_ALGORITHM_1, m_digestAlgorithm));
}
m_digestFileEncoding = config.getString(
CmsDriverManager.CONFIGURATION_DB + ".user.digest.encoding",
CmsEncoder.ENCODING_UTF_8);
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_DIGEST_ENCODING_1, m_digestFileEncoding));
}
// create the digest
try {
m_digest = MessageDigest.getInstance(m_digestAlgorithm);
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(
Messages.INIT_DIGEST_ENC_3,
m_digest.getAlgorithm(),
m_digest.getProvider().getName(),
String.valueOf(m_digest.getProvider().getVersion())));
}
} catch (NoSuchAlgorithmException e) {
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SET_DIGEST_ERROR_0), e);
}
}
if ((successiveDrivers != null) && !successiveDrivers.isEmpty()) {
if (LOG.isWarnEnabled()) {
LOG.warn(Messages.get().getBundle().key(
Messages.LOG_SUCCESSIVE_DRIVERS_UNSUPPORTED_1,
getClass().getName()));
}
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#initSqlManager(String)
*/
public org.opencms.db.generic.CmsSqlManager initSqlManager(String classname) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?