/*This retrieves two parameters, combines them and send back*/ public static String[] getStringValuesFromDatabaseForInternalRoles( Connection dbConnection, String sqlStmt, Object... params) throws UserStoreException { String[] values = new String[0]; PreparedStatement prepStmt = null; ResultSet rs = null; try { prepStmt = dbConnection.prepareStatement(sqlStmt); if (params != null && params.length > 0) { for (int i = 0; i < params.length; i++) { Object param = params[i]; if (param == null) { throw new UserStoreException("Null data provided."); } else if (param instanceof String) { prepStmt.setString(i + 1, (String) param); } else if (param instanceof Integer) { prepStmt.setInt(i + 1, (Integer) param); } } } rs = prepStmt.executeQuery(); List<String> lst = new ArrayList<String>(); while (rs.next()) { String name = rs.getString(1); String domain = rs.getString(2); if (domain != null) { UserCoreUtil.addDomainToName(name, domain); } lst.add(name); } if (lst.size() > 0) { values = lst.toArray(new String[lst.size()]); } return values; } catch (SQLException e) { log.error(e.getMessage(), e); log.error("Using sql : " + sqlStmt); throw new UserStoreException(e.getMessage(), e); } finally { DatabaseUtil.closeAllConnections(null, rs, prepStmt); } }
public static void udpateUserRoleMappingInBatchModeForInternalRoles( Connection dbConnection, String sqlStmt, String primaryDomain, Object... params) throws UserStoreException { PreparedStatement prepStmt = null; boolean localConnection = false; try { prepStmt = dbConnection.prepareStatement(sqlStmt); int batchParamIndex = -1; if (params != null && params.length > 0) { for (int i = 0; i < params.length; i++) { Object param = params[i]; if (param == null) { throw new UserStoreException("Null data provided."); } else if (param instanceof String[]) { batchParamIndex = i; } else if (param instanceof String) { prepStmt.setString(i + 1, (String) param); } else if (param instanceof Integer) { prepStmt.setInt(i + 1, (Integer) param); } } } if (batchParamIndex != -1) { String[] values = (String[]) params[batchParamIndex]; for (String value : values) { String strParam = (String) value; // add domain if not set strParam = UserCoreUtil.addDomainToName(strParam, primaryDomain); // get domain from name String domainParam = UserCoreUtil.extractDomainFromName(strParam); if (domainParam != null) { domainParam = domainParam.toUpperCase(); } // set domain to sql prepStmt.setString(params.length + 1, domainParam); // remove domain before persisting String nameWithoutDomain = UserCoreUtil.removeDomainFromName(strParam); // set name in sql prepStmt.setString(batchParamIndex + 1, nameWithoutDomain); prepStmt.addBatch(); } } int[] count = prepStmt.executeBatch(); if (log.isDebugEnabled()) { log.debug( "Executed a batch update. Query is : " + sqlStmt + ": and result is" + Arrays.toString(count)); } if (localConnection) { dbConnection.commit(); } } catch (SQLException e) { log.error(e.getMessage(), e); log.error("Using sql : " + sqlStmt); throw new UserStoreException(e.getMessage(), e); } finally { if (localConnection) { DatabaseUtil.closeAllConnections(dbConnection); } DatabaseUtil.closeAllConnections(null, prepStmt); } }