?? cmsuserdriver.java
字號:
// get a JDBC connection from the reserved JDBC pools
conn = m_sqlManager.getConnection(dbc, ((Integer)reservedParam).intValue());
}
// write data to database
stmt = m_sqlManager.getPreparedStatement(conn, "C_ORACLE_USERS_ADD");
stmt.setString(1, id.toString());
stmt.setString(2, name);
stmt.setString(3, m_sqlManager.validateEmpty(password)); // imported passwords are already encrypted
stmt.setString(4, m_sqlManager.validateEmpty(description));
stmt.setString(5, m_sqlManager.validateEmpty(firstname));
stmt.setString(6, m_sqlManager.validateEmpty(lastname));
stmt.setString(7, m_sqlManager.validateEmpty(email));
stmt.setLong(8, lastlogin);
stmt.setInt(9, flags);
stmt.setString(10, m_sqlManager.validateEmpty(address));
stmt.setInt(11, type);
stmt.executeUpdate();
stmt.close();
stmt = null;
internalWriteUserInfo(dbc, id, additionalInfos, reservedParam);
} catch (SQLException e) {
throw new CmsDbSqlException(org.opencms.db.generic.Messages.get().container(
org.opencms.db.generic.Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
return readUser(dbc, id);
}
/**
* @see org.opencms.db.I_CmsUserDriver#initSqlManager(String)
*/
public org.opencms.db.generic.CmsSqlManager initSqlManager(String classname) {
return CmsSqlManager.getInstance(classname);
}
/**
* @see org.opencms.db.I_CmsUserDriver#writeUser(org.opencms.db.CmsDbContext, org.opencms.file.CmsUser)
*/
public void writeUser(CmsDbContext dbc, CmsUser user) throws CmsDataAccessException {
PreparedStatement stmt = null;
Connection conn = null;
try {
// get connection
conn = m_sqlManager.getConnection(dbc);
// write data to database
stmt = m_sqlManager.getPreparedStatement(conn, "C_ORACLE_USERS_WRITE");
stmt.setString(1, m_sqlManager.validateEmpty(user.getDescription()));
stmt.setString(2, m_sqlManager.validateEmpty(user.getFirstname()));
stmt.setString(3, m_sqlManager.validateEmpty(user.getLastname()));
stmt.setString(4, m_sqlManager.validateEmpty(user.getEmail()));
stmt.setLong(5, user.getLastlogin());
stmt.setInt(6, user.getFlags());
stmt.setString(7, m_sqlManager.validateEmpty(user.getAddress()));
stmt.setInt(8, user.getType());
stmt.setString(9, user.getId().toString());
stmt.executeUpdate();
stmt.close();
stmt = null;
internalWriteUserInfo(dbc, user.getId(), user.getAdditionalInfo(), null);
} catch (SQLException e) {
throw new CmsDbSqlException(org.opencms.db.generic.Messages.get().container(
org.opencms.db.generic.Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} finally {
m_sqlManager.closeAll(dbc, conn, stmt, null);
}
}
/**
* Writes the user info as blob.<p>
*
* @param dbc the database context
* @param userId the user id
* @param additionalInfo the additional user info
* @param reservedParam for future use
*
* @throws CmsDataAccessException if something goes wrong
*/
private void internalWriteUserInfo(CmsDbContext dbc, CmsUUID userId, Map additionalInfo, Object reservedParam)
throws CmsDataAccessException {
PreparedStatement stmt = null;
PreparedStatement commit = null;
PreparedStatement rollback = null;
ResultSet res = null;
Connection conn = null;
boolean wasInTransaction = false;
try {
// serialize the user info
byte[] value = internalSerializeAdditionalUserInfo(additionalInfo);
// get connection
if (reservedParam == null) {
// get a JDBC connection from the OpenCms standard {online|offline|backup} pools
conn = m_sqlManager.getConnection(dbc);
} else {
// get a JDBC connection from the reserved JDBC pools
conn = m_sqlManager.getConnection(dbc, ((Integer)reservedParam).intValue());
}
wasInTransaction = !conn.getAutoCommit();
if (!wasInTransaction) {
conn.setAutoCommit(false);
}
// update user_info in this special way because of using blob
stmt = m_sqlManager.getPreparedStatement(conn, "C_ORACLE_USERS_UPDATEINFO");
stmt.setString(1, userId.toString());
res = ((DelegatingResultSet)stmt.executeQuery()).getInnermostDelegate();
if (!res.next()) {
throw new CmsDbEntryNotFoundException(Messages.get().container(Messages.ERR_NO_USER_WITH_ID_1, userId));
}
// write serialized user info
OutputStream output = getOutputStreamFromBlob(res, "USER_INFO");
output.write(value);
output.close();
value = null;
if (!wasInTransaction) {
commit = m_sqlManager.getPreparedStatement(conn, "C_COMMIT");
commit.execute();
m_sqlManager.closeAll(dbc, null, commit, null);
}
m_sqlManager.closeAll(dbc, null, stmt, res);
commit = null;
stmt = null;
res = null;
if (!wasInTransaction) {
conn.setAutoCommit(true);
}
} catch (SQLException e) {
throw new CmsDbSqlException(org.opencms.db.generic.Messages.get().container(
org.opencms.db.generic.Messages.ERR_GENERIC_SQL_1,
CmsDbSqlException.getErrorQuery(stmt)), e);
} catch (IOException e) {
throw new CmsDbIoException(Messages.get().container(Messages.ERR_SERIALIZING_USER_DATA_1, userId), e);
} finally {
if (res != null) {
try {
res.close();
} catch (SQLException exc) {
// ignore
}
}
if (commit != null) {
try {
commit.close();
} catch (SQLException exc) {
// ignore
}
}
if (!wasInTransaction) {
if (stmt != null) {
try {
rollback = m_sqlManager.getPreparedStatement(conn, "C_ROLLBACK");
rollback.execute();
rollback.close();
} catch (SQLException se) {
// ignore
}
try {
stmt.close();
} catch (SQLException exc) {
// ignore
}
}
if (conn != null) {
try {
conn.setAutoCommit(true);
conn.close();
} catch (SQLException se) {
// ignore
}
}
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -