cmsuserdriver.java
来自「找了很久才找到到源代码」· Java 代码 · 共 1,629 行 · 第 1/5 页
JAVA
1,629 行
return CmsSqlManager.getInstance(classname);
}
/**
* @see org.opencms.db.I_CmsUserDriver#publishAccessControlEntries(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsProject, org.opencms.util.CmsUUID, org.opencms.util.CmsUUID)
*/
public void publishAccessControlEntries(
CmsDbContext dbc,
CmsProject offlineProject,
CmsProject onlineProject,
CmsUUID offlineId,
CmsUUID onlineId) throws CmsDataAccessException {
PreparedStatement stmt = null;
Connection conn = null;
ResultSet res = null;
// at first, we remove all access contries of this resource in the online project
m_driverManager.getUserDriver().removeAccessControlEntries(dbc, onlineProject, onlineId);
// then, we copy the access control entries from the offline project into the online project
try {
CmsUUID dbcProjectId = dbc.getProjectId();
dbc.setProjectId(CmsUUID.getNullUUID());
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, offlineProject, "C_ACCESS_READ_ENTRIES_1");
stmt.setString(1, offlineId.toString());
res = stmt.executeQuery();
dbc.setProjectId(dbcProjectId);
while (res.next()) {
CmsAccessControlEntry ace = internalCreateAce(res, onlineId);
if ((ace.getFlags() & CmsAccessControlEntry.ACCESS_FLAGS_DELETED) == 0) {
m_driverManager.getUserDriver().writeAccessControlEntry(dbc, onlineProject, ace);
}
}
} 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);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#readAccessControlEntries(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.util.CmsUUID, boolean)
*/
public List readAccessControlEntries(CmsDbContext dbc, CmsProject project, CmsUUID resource, boolean inheritedOnly)
throws CmsDataAccessException {
List aceList = new ArrayList();
PreparedStatement stmt = null;
Connection conn = null;
ResultSet res = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, project, "C_ACCESS_READ_ENTRIES_1");
String resId = resource.toString();
stmt.setString(1, resId);
res = stmt.executeQuery();
// create new CmsAccessControlEntry and add to list
while (res.next()) {
CmsAccessControlEntry ace = internalCreateAce(res);
if ((ace.getFlags() & CmsAccessControlEntry.ACCESS_FLAGS_DELETED) > 0) {
continue;
}
if (inheritedOnly && !ace.isInheriting()) {
continue;
}
if (inheritedOnly && ace.isInheriting()) {
ace.setFlags(CmsAccessControlEntry.ACCESS_FLAGS_INHERITED);
}
aceList.add(ace);
}
return aceList;
} 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);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#readAccessControlEntry(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.util.CmsUUID, org.opencms.util.CmsUUID)
*/
public CmsAccessControlEntry readAccessControlEntry(
CmsDbContext dbc,
CmsProject project,
CmsUUID resource,
CmsUUID principal) throws CmsDataAccessException {
CmsAccessControlEntry ace = null;
PreparedStatement stmt = null;
Connection conn = null;
ResultSet res = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, project, "C_ACCESS_READ_ENTRY_2");
stmt.setString(1, resource.toString());
stmt.setString(2, principal.toString());
res = stmt.executeQuery();
// create new CmsAccessControlEntry
if (res.next()) {
ace = internalCreateAce(res);
while (res.next()) {
// do nothing only move through all rows because of mssql odbc driver
}
} else {
res.close();
res = null;
throw new CmsDbEntryNotFoundException(Messages.get().container(
Messages.ERR_NO_ACE_FOUND_2,
resource,
principal));
}
return ace;
} 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);
}
}
/**
* @see org.opencms.db.I_CmsUserDriver#readChildGroups(org.opencms.db.CmsDbContext, java.lang.String)
*/
public List readChildGroups(CmsDbContext dbc, String parentGroupFqn) throws CmsDataAccessException {
List children = new ArrayList();
ResultSet res = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
// get parent group
CmsGroup parent = m_driverManager.getUserDriver().readGroup(dbc, parentGroupFqn);
// parent group exists, so get all children
if (parent != null) {
// create statement
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_GROUPS_GET_CHILD_1");
stmt.setString(1, parent.getId().toString());
res = stmt.executeQuery();
// create new Cms group objects
while (res.next()) {
children.add(internalCreateGroup(res));
}
}
} catch (SQLException e) {
throw new CmsDbSqlException(Messages.get().container(
Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
// close all db-resources
m_sqlManager.closeAll(dbc, conn, stmt, res);
}
return children;
}
/**
* @see org.opencms.db.I_CmsUserDriver#readGroup(org.opencms.db.CmsDbContext, org.opencms.util.CmsUUID)
*/
public CmsGroup readGroup(CmsDbContext dbc, CmsUUID groupId) throws CmsDataAccessException {
CmsGroup group = null;
ResultSet res = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_GROUPS_READ_BY_ID_1");
// read the group from the database
stmt.setString(1, groupId.toString());
res = stmt.executeQuery();
// create new Cms group object
if (res.next()) {
group = internalCreateGroup(res);
while (res.next()) {
// do nothing only move through all rows because of mssql odbc driver
}
} else {
CmsMessageContainer message = Messages.get().container(Messages.ERR_NO_GROUP_WITH_ID_1, groupId);
if (LOG.isDebugEnabled()) {
LOG.debug(message.key());
}
throw new CmsDbEntryNotFoundException(message);
}
} 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 group;
}
/**
* @see org.opencms.db.I_CmsUserDriver#readGroup(org.opencms.db.CmsDbContext, java.lang.String)
*/
public CmsGroup readGroup(CmsDbContext dbc, String groupFqn) throws CmsDataAccessException {
CmsGroup group = null;
ResultSet res = null;
PreparedStatement stmt = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatement(conn, "C_GROUPS_READ_BY_NAME_2");
// read the group from the database
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()) {
group = internalCreateGroup(res);
while (res.next()) {
// do nothing only move through all rows because of mssql odbc driver
}
} else {
CmsMessageContainer message = org.opencms.db.Messages.get().container(
org.opencms.db.Messages.ERR_UNKNOWN_GROUP_1,
groupFqn);
if (LOG.isWarnEnabled()) {
// this may happen while deleting an orgunit and its roles
LOG.warn(message.key());
} else if (LOG.isDebugEnabled()) {
LOG.debug(message.key(), new Exception());
}
throw new CmsDbEntryNotFoundException(message);
}
} 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 group;
}
/**
* @see org.opencms.db.I_CmsUserDriver#readGroupsOfUser(CmsDbContext, CmsUUID, String, boolean, String, boolean)
*/
public List readGroupsOfUser(
CmsDbContext dbc,
CmsUUID userId,
String ouFqn,
boolean includeChildOus,
String remoteAddress,
boolean readRoles) throws CmsDataAccessException {
// compose the query
String sqlQuery = createRoleQuery("C_GROUPS_GET_GROUPS_OF_USER_1", includeChildOus, readRoles);
// adjust parameter to use with LIKE
String ouFqnParam = CmsOrganizationalUnit.SEPARATOR + ouFqn;
if (includeChildOus) {
ouFqnParam += "%";
}
// execute it
List groups = new ArrayList();
PreparedStatement stmt = null;
ResultSet res = null;
Connection conn = null;
try {
conn = m_sqlManager.getConnection(dbc);
stmt = m_sqlManager.getPreparedStatementForSql(conn, sqlQuery);
// get all all groups of the user
stmt.setString(1, userId.toString());
stmt.setString(2, ouFqnParam);
stmt.setInt(3, I_CmsPrincipal.FLAG_GROUP_ROLE);
res = stmt.executeQuery();
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#readOrganizationalUnit(org.opencms.db.CmsDbContext, String)
*/
public CmsOrganizationalUnit readOrganizationalUnit(CmsDbContext dbc, String ouFqn) throws CmsDataAccessException {
try {
CmsResource resource = m_driverManager.readResource(
dbc,
ORGUNIT_BASE_FOLDER + ouFqn,
CmsResourceFilter.DEFAULT);
return internalCreateOrgUnitFromResource(dbc, resource);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?