package com.github.wicketoracle.app.user.standard.mgr; import java.sql.CallableStatement; import java.sql.SQLException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.wicketoracle.oracle.dao.AbstractOracleDAO; import com.github.wicketoracle.oracle.util.CloseResource; final class StandardUserPasswordMgrDAO extends AbstractOracleDAO { /** Log */ private static final Logger LOGGER = LoggerFactory.getLogger( StandardUserPasswordMgrDAO.class ); /** * Constructor * * @param pUsername * The username * @param pPassword * The password * @throws SQLException */ public StandardUserPasswordMgrDAO( final String pUsername, final String pPassword ) throws SQLException { super( pUsername, pPassword ); } /** * * @param pAurid * id of the user whose password is to be changed * @param pPassword * new password */ public void changePassword( final int pUserId, final String pPassword ) throws SQLException { final String dbStatement = " begin " + " sys.dbms_application_info.set_module ( module_name => ? , action_name => ? ); " + " app_user.pk_standard_user_password_mgr.pr_change_password( p_aur_id => ?, p_password => ? );" + " end; "; CallableStatement dbCstmt = null; try { setRole( RequiredRoles.ROLE_STD_USER_PASSWORD_MGR ); LOGGER.debug( "Role set" ); dbCstmt = getConnection().prepareCall( dbStatement ); LOGGER.debug( "DB statement prepared -> {}", dbStatement ); dbCstmt.setString( 1, "PK_STANDARD_USER_PASSWORD_MGR" ); dbCstmt.setString( 2, "PR_CHANGE_PASSWORD" ); dbCstmt.setInt( 3, pUserId ); dbCstmt.setString( 4, pPassword ); LOGGER.debug( "DB params registered" ); dbCstmt.execute(); LOGGER.debug( "DB statement executed" ); } catch ( SQLException sqle ) { LOGGER.error ( "SQL Exception whilst changing a user password -> {}; error code -> {}; sql state -> {};" , new Object [] { sqle.getMessage() , sqle.getErrorCode() , sqle.getSQLState() } ); throw sqle; } finally { CloseResource.close( dbCstmt ); } } }