@Override public void init(Properties props) throws ConfigurationException { dbSvc = getDbLibService(); if(dbSvc == null) { LOG.error("SvcLogic cannot acquire DBLIB_SERVICE"); return; } try { dbSvc.getData("select 1 from DUAL", new ArrayList<String>(), null); LOG.debug("SQL test was successful"); } catch (SQLException e) { LOG.error("Failed SQL test", e); } }
@Override public void activate(String module, String rpc, String version, String mode) throws SvcLogicException { String deactivateSql = "UPDATE SVC_LOGIC SET active = 'N' WHERE module = ? AND rpc = ? AND mode = ?"; String activateSql = "UPDATE SVC_LOGIC SET active = 'Y' WHERE module = ? AND rpc = ? AND mode = ? AND version = ?"; ArrayList<String> args = new ArrayList<>(); args.add(module); args.add(rpc); args.add(mode); try { dbSvc.writeData(deactivateSql, args, null); args.add(version); dbSvc.writeData(activateSql, args, null); } catch (Exception e) { throw new SvcLogicException("Could not activate graph", e); } }
public Connection getConnection() throws SQLException { return(dbSvc.getConnection()); }
public void delete(String module, String rpc, String version, String mode) throws SvcLogicException { String deleteGraphSql = "DELETE FROM SVC_LOGIC WHERE module = ? AND rpc = ? AND version = ? AND mode = ?"; ArrayList<String> args = new ArrayList<>(); args.add(module); args.add(rpc); args.add(version); args.add(mode); try { dbSvc.writeData(deleteGraphSql, args, null); } catch (Exception e) { throw new SvcLogicException("Could not delete object from database", e); } }
} else { ResultSet results = null; try (Connection conn = dblibSvc.getConnection(); PreparedStatement stmt = conn.prepareStatement("SELECT CAST(AES_DECRYPT(?, ?) AS CHAR(50)) FROM DUAL")) {
private static int getLastSequenceNumber(String tableName, String requestId) throws SQLException { String sql = "SELECT sequence_number FROM " + tableName + " WHERE request_id = '" + requestId + "' ORDER BY sequence_number DESC"; CachedRowSet rs = null; try { rs = dbLibService.getData(sql, null, null); if (rs.next()) { return rs.getInt("sequence_number"); } } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { LOG.warn("Failed to close CachedRowSet", e); } } } return 0; } }
@Override public boolean logDeviceInteraction(String instanceId, String requestId, String creationDate, String logText) { String queryString = "INSERT INTO "+ Constants.DEVICE_INTERFACE_LOG_TABLE_NAME+"("+ Constants.SERVICE_INSTANCE_ID_FIELD_NAME+","+ Constants.REQUEST_ID_FIELD_NAME+","+ Constants.CREATION_DATE_FIELD_NAME+","+ Constants.LOG_FIELD_NAME+") "; queryString += "values(?,?,?,?)"; ArrayList<String> argList = new ArrayList<>(); argList.add(instanceId); argList.add(requestId); argList.add(creationDate); argList.add(logText); try { dbLibService.writeData(queryString, argList, schema); } catch (SQLException e) { logger.error("Logging Device interaction failed - "+ queryString); throw new DataAccessException(e); } return true; }
dbConn = dbSvc.getConnection();
@Override public String retrieveConfigFileName(String xmlID) { String fileContent = ""; String queryString = "select " + Constants.FILE_CONTENT_TABLE_FIELD_NAME + " " + "from " + Constants.CONFIGFILES_TABLE_NAME + " " + "where " + Constants.FILE_NAME_TABLE_FIELD_NAME + " = ?"; ArrayList<String> argList = new ArrayList<>(); argList.add(xmlID); try { final CachedRowSet data = dbLibService.getData(queryString, argList, schema); if (data.first()) { fileContent = data.getString(Constants.FILE_CONTENT_TABLE_FIELD_NAME); } } catch (Exception e) { logger.error("Error Accessing Database " + e); throw new DataAccessException(e); } return fileContent; }
@Override public void update(String key, Map<TransactionConstants.TRANSACTION_ATTRIBUTES, String> updateColumns) throws APPCException { ArrayList<String> values = new ArrayList<>(); StringBuilder queryBuilder = new StringBuilder("UPDATE TRANSACTIONS SET "); for (Map.Entry<TransactionConstants.TRANSACTION_ATTRIBUTES, String> entry : updateColumns.entrySet()) { queryBuilder.append(entry.getKey().getColumnName() + " = ? ,"); values.add(entry.getValue()); } queryBuilder.deleteCharAt(queryBuilder.lastIndexOf(",")); queryBuilder.append(WHERE + TRANSACTION_ID.getColumnName() + " = ?"); values.add(appcInstanceId + "~" + key); String query = queryBuilder.toString(); try { dbLibService.writeData(query, values, SCHEMA); } catch (SQLException e) { logger.error("Error in updating records " + e); throw new APPCException(ERROR_ACCESSING_DATABASE, e); } if (logger.isTraceEnabled()) { logger.trace("Transaction data updated successfully"); } }
PreparedStatement storeGraphStmt = null; try { dbConn = dbSvc.getConnection(); boolean oldAutoCommit = dbConn.getAutoCommit(); dbConn.setAutoCommit(false);
public QueryStatus query(String resource, boolean localOnly, String select, String key, String prefix, String orderBy, SvcLogicContext ctx) throws SvcLogicException { DbLibService dblibSvc = getDbLibService(); if (dblibSvc == null) { return (QueryStatus.FAILURE); } String sqlQuery = resolveCtxVars(key, ctx); try { CachedRowSet results = dblibSvc.getData(sqlQuery, null, null); QueryStatus retval = QueryStatus.SUCCESS; if (!results.next()) { retval = QueryStatus.NOT_FOUND; LOG.debug("No data found"); } else { saveCachedRowSetToCtx(results, ctx, prefix, dblibSvc); } return (retval); } catch (Exception e) { LOG.error("Caught SQL exception", e); return (QueryStatus.FAILURE); } }
public static void saveIncomingResponse(String requestId, int httpResponseCode, String response) { try { init(); if (!incomingEnabled) return; int seqnum = getLastSequenceNumber("INCOMING_MESSAGE", requestId); if (seqnum == 0) { LOG.warn("Failed to save response for request-id: " + requestId + ": Request record not found in INCOMING_MESSAGE"); return; } String now = df.format(new Date()); String sql = "UPDATE INCOMING_MESSAGE SET http_response_code = ?, response = ?,\n" + " duration = timestampdiff(MICROSECOND, start_time, ?) / 1000\n" + "WHERE request_id = ? AND sequence_number = ?"; ArrayList<String> data = new ArrayList<>(); data.add(String.valueOf(httpResponseCode)); data.add(response); data.add(now); data.add(requestId); data.add(String.valueOf(seqnum)); dbLibService.writeData(sql, data, null); } catch (Exception e) { LOG.warn("Failed to save response for request-id: " + requestId, e); } }
CachedRowSet resultSet = dbLibService.getData(queryString.toString(), argList, SCHEMA); while (resultSet.next()) { String name = resultSet.getString(TRANSACTION_ATTRIBUTES.STATE.getColumnName());
public void activate(SvcLogicGraph graph) throws SvcLogicException { String deactivateSql = "UPDATE SVC_LOGIC SET active = 'N' WHERE module = ? AND rpc = ? AND mode = ?"; String activateSql = "UPDATE SVC_LOGIC SET active = 'Y' WHERE module = ? AND rpc = ? AND mode = ? AND version = ?"; ArrayList<String> args = new ArrayList<>(); args.add(graph.getModule()); args.add(graph.getRpc()); args.add(graph.getMode()); try { dbSvc.writeData(deactivateSql, args, null); args.add(graph.getVersion()); dbSvc.writeData(activateSql, args, null); } catch (Exception e) { throw new SvcLogicException("Could not activate graph", e); } }
@Override public Integer getInProgressRequestsCount() throws APPCException { final String inProgressRequestCountQuery = "SELECT COUNT(*) as VALUE FROM " + TransactionConstants.TRANSACTIONS + WHERE + STATE.getColumnName() + " IN (?,?) "; ArrayList<String> checkInProgressParams = new ArrayList<>(); checkInProgressParams.add(RequestStatus.RECEIVED.name()); checkInProgressParams.add(RequestStatus.ACCEPTED.name()); try(CachedRowSet rowSet=dbLibService.getData(inProgressRequestCountQuery,checkInProgressParams,SCHEMA)){ if (rowSet.first()) { int count = rowSet.getInt("VALUE"); logger.info("In progress request count fetched from database successfully."); return count; } } catch (SQLException e) { logger.error("Error checking in progress request count in the transaction table", e); throw new APPCException(ERROR_ACCESSING_DATABASE, e); } logger.error("Error checking in progress request count in the transaction table"); throw new APPCException(ERROR_ACCESSING_DATABASE); }
public static void saveOutgoingResponse(String requestId, int httpResponseCode, String response) { try { init(); if (!outgoingEnabled) return; int seqnum = getLastSequenceNumber("OUTGOING_MESSAGE", requestId); if (seqnum == 0) { LOG.warn("Failed to save outgoing response for request-id: " + requestId + ": Request record not found in OUTGOING_MESSAGE"); return; } String now = df.format(new Date()); String sql = "UPDATE OUTGOING_MESSAGE SET http_response_code = ?, response = ?,\n" + " duration = timestampdiff(MICROSECOND, start_time, ?) / 1000\n" + "WHERE request_id = ? AND sequence_number = ?"; ArrayList<String> data = new ArrayList<>(); data.add(String.valueOf(httpResponseCode)); data.add(response); data.add(now); data.add(requestId); data.add(String.valueOf(seqnum)); dbLibService.writeData(sql, data, null); } catch (Exception e) { LOG.warn("Failed to save outgoing response for request-id: " + requestId, e); } }
public static String getServiceInstanceId(String requestId) throws SQLException { init(); String sql = "SELECT service_instance_id FROM OUTGOING_MESSAGE WHERE request_id = '" + requestId + "' ORDER BY sequence_number DESC"; CachedRowSet rs = null; try { rs = dbLibService.getData(sql, null, null); if (rs.next()) { return rs.getString("service_instance_id"); } } finally { if (rs != null) { try { rs.close(); } catch (Exception e) { LOG.warn("Failed to close CachedRowSet", e); } } } return null; }