From f55fa6a1f3c427ff035970635aedaec16c0de4f1 Mon Sep 17 00:00:00 2001 From: Vasyl Razinkov Date: Mon, 20 May 2019 16:19:57 +0100 Subject: Fixed Sonar "Blocker Bugs" Fixed potential "thread-Leak" Change-Id: I7efcbd4d7b6b69ca1f234bed8d28cbb8e51e3e25 Signed-off-by: Vasyl Razinkov Issue-ID: PORTAL-584 --- .../onap/portalsdk/analytics/system/DbUtils.java | 193 ++++++++++----------- 1 file changed, 91 insertions(+), 102 deletions(-) (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/DbUtils.java') diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/DbUtils.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/DbUtils.java index d2a97dfe..1f58ada3 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/DbUtils.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/DbUtils.java @@ -33,7 +33,7 @@ * * ============LICENSE_END============================================ * - * + * */ package org.onap.portalsdk.analytics.system; @@ -44,9 +44,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; - import javax.sql.DataSource; - import org.apache.commons.lang3.StringUtils; import org.onap.portalsdk.analytics.error.RaptorException; import org.onap.portalsdk.analytics.error.ReportSQLException; @@ -61,28 +59,28 @@ public class DbUtils { private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DbUtils.class); - private static DataSource dataSource; + private DataSource dataSource; - public DbUtils() {} + public DbUtils() { + } public static Connection getConnection() throws ReportSQLException { try { return AppUtils.getDatasource().getConnection(); - } catch (SQLException ex) { - logger.error(EELFLoggerDelegate.debugLogger, ("Error " + ex)); + } catch (final SQLException ex) { + logger.warn("Failed to get Connection", ex); } return null; } // getConnection - public static void clearConnection(Connection con) throws ReportSQLException { + public static void clearConnection(final Connection con) throws ReportSQLException { try { if ((con != null) && !con.isClosed()) { Globals.getDbUtils().clearConnection(con); } - } catch (SQLException ex) { + } catch (final Exception ex) { + logger.warn("Failed to clear Connection", ex); throw new ReportSQLException(ex.getMessage(), ex.getCause()); - } catch (Exception ex2) { - throw new ReportSQLException(ex2.getMessage(), ex2.getCause()); } } // clearConnection @@ -91,52 +89,53 @@ public class DbUtils { try { con = getConnection(); con.setAutoCommit(false); - - } catch (SQLException ex) { - throw new ReportSQLException(ex.getMessage(), ex.getCause()); - } catch (Exception ex2) { + } catch (final Exception ex2) { + logger.warn("Failed to start Transaction", ex2); throw new ReportSQLException(ex2.getMessage(), ex2.getCause()); } return con; } // startTransaction - public static void commitTransaction(Connection con) throws ReportSQLException { + public static void commitTransaction(final Connection con) throws ReportSQLException { try { con.commit(); - } catch (SQLException ex) { - throw new ReportSQLException(ex.getMessage(), ex.getCause()); - } catch (Exception ex2) { + } catch (final Exception ex2) { + logger.warn("Failed to commit Transaction", ex2); throw new ReportSQLException(ex2.getMessage(), ex2.getCause()); } } // commitTransaction - public static void rollbackTransaction(Connection con) throws ReportSQLException { + public static void rollbackTransaction(final Connection con) throws ReportSQLException { try { con.rollback(); clearConnection(con); - } catch (SQLException ex) { - throw new ReportSQLException(ex.getMessage(), ex.getCause()); - } catch (Exception ex2) { + } catch (final Exception ex2) { + logger.warn("Failed to rollback Transaction", ex2); throw new ReportSQLException(ex2.getMessage(), ex2.getCause()); } } // rollbackTransaction - public static String executeCall(Connection con, String sql, boolean expectResult) throws ReportSQLException { + public static String executeCall(Connection con, final String sql, final boolean expectResult) + throws ReportSQLException { String result = null; try { - if (con.isClosed()) + if (con.isClosed()) { con = getConnection(); + } logger.debug(EELFLoggerDelegate.debugLogger, ("[SQL CALL FROM RAPTOR] [SQL Call] " + sql)); - try (CallableStatement stmt = con.prepareCall(sql)) { - if (expectResult) + try (final CallableStatement stmt = con.prepareCall(sql)) { + if (expectResult) { stmt.registerOutParameter(1, Types.CHAR); + } stmt.executeUpdate(); - if (expectResult) + if (expectResult) { result = stmt.getString(1); + } con.commit(); } - } catch (SQLException e) { + } catch (final SQLException e) { + logger.warn("Failed to execute Call", e); throw new ReportSQLException(e.getMessage(), sql); } finally { clearConnection(con); @@ -145,60 +144,66 @@ public class DbUtils { return result; } // executeCall - public static String executeCall(String sql, boolean expectResult) throws RaptorException { + public static String executeCall(final String sql, final boolean expectResult) + throws RaptorException { Connection con = null; con = getConnection(); - String result = executeCall(con, sql, expectResult); - return result; + return executeCall(con, sql, expectResult); } // executeCall - public static int executeUpdate(Connection con, String sql) throws ReportSQLException { + public static int executeUpdate(final Connection con, final String sql) throws ReportSQLException { int rcode = -1; try (Statement stmt = con.createStatement()) { logger.debug(EELFLoggerDelegate.debugLogger, ("[SQL CALL FROM RAPTOR] [SQL Update] " + sql)); rcode = stmt.executeUpdate(sql); - } catch (SQLException e) { + } catch (final SQLException e) { + logger.warn("Failed to execute Update", e); throw new ReportSQLException(e.getMessage(), sql); } return rcode; } // executeUpdate - public static int executeUpdate(String sql) throws ReportSQLException { - Connection con = null; - try { - con = getConnection(); - int rcode = executeUpdate(con, sql); - if (Globals.getDBType().equals("oracle")) + public static int executeUpdate(final String sql) throws ReportSQLException { + try (final Connection con = getConnection()) { + final int rcode = executeUpdate(con, sql); + if ("oracle".equals(Globals.getDBType())) { con.commit(); - + } return rcode; - } catch (SQLException e) { + } catch (final SQLException e) { + logger.warn("Failed to execute Update", e); throw new ReportSQLException(e.getMessage(), sql); - } finally { - clearConnection(con); } } // executeUpdate - public static DataSet executeQuery(Connection con, String sql) throws ReportSQLException { + public static DataSet executeQuery(final Connection con, final String sql) throws ReportSQLException { return executeQuery(con, sql, Integer.MAX_VALUE); } // executeQuery - public static DataSet executeQuery(Connection con, String sql, int maxRowLimit) throws ReportSQLException { + public static DataSet executeQuery(Connection con, final String sql, final int maxRowLimit) + throws ReportSQLException { try { - if (con.isClosed()) + if (con.isClosed()) { con = getConnection(); - // con. - try (Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql)) { + } + //con. + try (final Statement stmt = con.createStatement(); + final ResultSet rs = stmt.executeQuery(sql)) { logger.debug(EELFLoggerDelegate.debugLogger, ("[SQL CALL FROM RAPTOR] [SQL] " + sql)); return new DataSet(rs, maxRowLimit); } - } catch (SQLException e) { + } catch (final SQLException e) { + logger.warn("Failed to execute Query", e); throw new ReportSQLException(e.getMessage(), sql); } } // executeQuery - public static DataSet executeQuery(String sql, String reportName, String reportID) throws ReportSQLException { - try (Connection con = getConnection(); PreparedStatement preparedStatement = con.prepareStatement(sql);) { + public static DataSet executeQuery(final String sql, final String reportName, final String reportID) + throws ReportSQLException { + + try (final Connection con = getConnection(); + final PreparedStatement preparedStatement = con.prepareStatement(sql);) { + if (StringUtils.isNotBlank(reportID)) { preparedStatement.setString(1, reportID); preparedStatement.setString(2, reportName); @@ -206,95 +211,79 @@ public class DbUtils { preparedStatement.setString(1, reportName); } - try (ResultSet rs = preparedStatement.executeQuery();) { + try (final ResultSet rs = preparedStatement.executeQuery();) { logger.debug(EELFLoggerDelegate.debugLogger, ("[SQL CALL FROM RAPTOR] [SQL] " + sql)); return new DataSet(rs, Integer.MAX_VALUE); } - } catch (SQLException e) { - throw new ReportSQLException(e.getMessage(), sql); - } catch (ReportSQLException ex) { - logger.error(EELFLoggerDelegate.debugLogger, ("Error " + sql)); - throw new ReportSQLException(ex.getMessage(), ex); - } catch (Exception ex1) { - throw new ReportSQLException(ex1.getMessage(), ex1.getCause()); + } catch (final Exception e) { + logger.error(EELFLoggerDelegate.debugLogger, ("Error " + sql), e); + throw new ReportSQLException(e.getMessage(), e.getCause()); } } // executeQuery - public static DataSet executeQuery(String sql) throws ReportSQLException { + public static DataSet executeQuery(final String sql) throws ReportSQLException { return executeQuery(sql, Integer.MAX_VALUE); } // executeQuery - public static DataSet executeQuery(String sql, int maxRowLimit) throws ReportSQLException { - Connection con = null; - try { - con = getConnection(); + public static DataSet executeQuery(final String sql, final int maxRowLimit) throws ReportSQLException { + try (final Connection con = getConnection()) { return executeQuery(con, sql, maxRowLimit); - } catch (ReportSQLException ex) { + } catch (final ReportSQLException ex) { logger.error(EELFLoggerDelegate.debugLogger, ("Error " + sql)); throw new ReportSQLException(ex.getMessage(), ex); - } catch (Exception ex1) { + } catch (final Exception ex1) { + logger.warn("Failed to execute Query", ex1); throw new ReportSQLException(ex1.getMessage(), ex1.getCause()); - } finally { - clearConnection(con); } } // executeQuery - // For ZK Support + //For ZK Support - public static int executeQuery(ReportRuntime rr, int dateOption) { - Connection con = null; - int rowCount = 0; - try { - con = ConnectionUtils.getConnection(rr.getDBInfo()); - String wholeSql = rr.getWholeSQL(); + public static int executeQuery(final ReportRuntime rr, final int dateOption) { - DataColumnType dc = rr.getColumnWhichNeedEnhancedPagination(); + int rowCount = 0; + try (final Connection con = ConnectionUtils.getConnection(rr.getDBInfo());) { + final String wholeSql = rr.getWholeSQL(); + final DataColumnType dc = rr.getColumnWhichNeedEnhancedPagination(); String date_ColId = dc.getColId(); - String dataFormat = dc.getColFormat(); - if (dataFormat != null && dataFormat.length() > 0) + final String dataFormat = dc.getColFormat(); + if (dataFormat != null && dataFormat.length() > 0) { date_ColId = "to_date(" + date_ColId + ", '" + dataFormat + "')"; + } String sql = ""; - if (dateOption == 1) + if (dateOption == 1) { sql = "select count(distinct to_char(" + date_ColId + ", 'YYYY/MM')) from (" + wholeSql + ")"; - else if (dateOption == 3) + } else if (dateOption == 3) { sql = "select count(distinct to_char(" + date_ColId + ", 'YYYY/MM/DD')) from (" + wholeSql + ")"; - else if (dateOption == 2) + } else if (dateOption == 2) { sql = "select count(distinct to_char(" + date_ColId + ", 'YYYY')) from (" + wholeSql + ")"; - DataSet ds = executeQuery(con, sql.toString()); - rowCount = ds.getInt(0, 0); - } catch (ReportSQLException ex) { - logger.error(EELFLoggerDelegate.debugLogger, ("Error " + ex)); - } catch (Exception ex1) { - logger.error(EELFLoggerDelegate.debugLogger, ("Error " + ex1)); - } finally { - try { - clearConnection(con); - } catch (ReportSQLException ex2) { - logger.error(EELFLoggerDelegate.debugLogger, ("Error " + ex2)); } + final DataSet ds = executeQuery(con, sql); + rowCount = ds.getInt(0, 0); + } catch (final Exception ex1) { + logger.warn("Failed to execute Query", ex1); } return rowCount; } - public String nvl(String s) { + public static String nvls(final String s) { return (s == null) ? "" : s; } - public static String nvls(String s) { - return (s == null) ? "" : s; + public static String nvl(final String s, final String sDefault) { + return nvls(s).isEmpty() ? sDefault : s; } - public static String nvl(String s, String sDefault) { - return nvls(s).equals("") ? sDefault : s; + public String nvl(final String s) { + return (s == null) ? "" : s; } - public static DataSource getDataSource() { + public DataSource getDataSource() { return dataSource; } @Autowired - public void setDataSource(DataSource dataSource) { - dataSource = dataSource; + public void setDataSource(final DataSource dataSource) { + this.dataSource = dataSource; } - } // DbUtils -- cgit 1.2.3-korg