aboutsummaryrefslogtreecommitdiffstats
path: root/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/main/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/main/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImpl.java')
-rw-r--r--appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/main/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImpl.java252
1 files changed, 127 insertions, 125 deletions
diff --git a/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/main/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImpl.java b/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/main/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImpl.java
index 15ed9ad4b..0acb2b5a0 100644
--- a/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/main/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImpl.java
+++ b/appc-dispatcher/appc-dispatcher-common/transaction-recorder/src/main/java/org/onap/appc/transactionrecorder/impl/TransactionRecorderImpl.java
@@ -19,7 +19,6 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- *
* ============LICENSE_END=========================================================
*/
@@ -37,17 +36,17 @@ import org.onap.ccsdk.sli.core.dblib.DbLibService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.sql.rowset.CachedRowSet;
import java.sql.SQLException;
+import javax.sql.rowset.CachedRowSet;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.time.temporal.ChronoUnit;
import static org.onap.appc.transactionrecorder.objects.TransactionConstants.TRANSACTION_ATTRIBUTES.*;
import static org.onap.appc.transactionrecorder.objects.TransactionConstants.*;
@@ -74,44 +73,41 @@ public class TransactionRecorderImpl implements TransactionRecorder {
*/
@Override
public void store(TransactionRecord record) throws APPCException {
- if (logger.isTraceEnabled()) {
- logger.trace("Transaction data insertion into DB");
- }
- final String STORE_DATE_QUERY = TransactionConstants.INSERT_INTO + TransactionConstants.TRANSACTIONS +
- "(" + TRANSACTION_ID.getColumnName() + TransactionConstants.COMMA +
- ORIGIN_TIMESTAMP.getColumnName() + TransactionConstants.COMMA +
- REQUEST_ID.getColumnName() + TransactionConstants.COMMA +
- SUBREQUEST_ID.getColumnName() + TransactionConstants.COMMA +
- ORIGINATOR_ID.getColumnName() + TransactionConstants.COMMA +
- START_TIME.getColumnName() + TransactionConstants.COMMA +
- END_TIME.getColumnName() + TransactionConstants.COMMA +
- TARGET_ID.getColumnName() + TransactionConstants.COMMA +
- TARGET_TYPE.getColumnName() + TransactionConstants.COMMA +
- OPERATION.getColumnName() + TransactionConstants.COMMA +
- RESULT_CODE.getColumnName() + TransactionConstants.COMMA +
- DESCRIPTION.getColumnName() + TransactionConstants.COMMA +
- STATE.getColumnName() + TransactionConstants.COMMA +
- SERVICE_INSTANCE_ID + TransactionConstants.COMMA +
- VNFC_NAME + TransactionConstants.COMMA +
- VSERVER_ID + TransactionConstants.COMMA +
- VF_MODULE_ID + TransactionConstants.COMMA +
- MODE + ") " +
- "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+ logger.trace("Transaction data insertion into DB");
+ final String STORE_DATE_QUERY =
+ TransactionConstants.INSERT_INTO + TransactionConstants.TRANSACTIONS
+ + "(" + TRANSACTION_ID.getColumnName() + TransactionConstants.COMMA
+ + ORIGIN_TIMESTAMP.getColumnName() + TransactionConstants.COMMA
+ + REQUEST_ID.getColumnName() + TransactionConstants.COMMA
+ + SUBREQUEST_ID.getColumnName() + TransactionConstants.COMMA
+ + ORIGINATOR_ID.getColumnName() + TransactionConstants.COMMA
+ + START_TIME.getColumnName() + TransactionConstants.COMMA
+ + END_TIME.getColumnName() + TransactionConstants.COMMA
+ + TARGET_ID.getColumnName() + TransactionConstants.COMMA
+ + TARGET_TYPE.getColumnName() + TransactionConstants.COMMA
+ + OPERATION.getColumnName() + TransactionConstants.COMMA
+ + RESULT_CODE.getColumnName() + TransactionConstants.COMMA
+ + DESCRIPTION.getColumnName() + TransactionConstants.COMMA
+ + STATE.getColumnName() + TransactionConstants.COMMA
+ + SERVICE_INSTANCE_ID + TransactionConstants.COMMA
+ + VNFC_NAME + TransactionConstants.COMMA
+ + VSERVER_ID + TransactionConstants.COMMA
+ + VF_MODULE_ID + TransactionConstants.COMMA
+ + MODE + ") "
+ + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
dbLibService.writeData(STORE_DATE_QUERY, prepareArguments(record), SCHEMA);
} catch (SQLException e) {
logger.error("Error on storing record " + record.toString(), e);
throw new APPCException(ERROR_ACCESSING_DATABASE, e);
}
- if (logger.isTraceEnabled()) {
- logger.trace("Transaction Data Inserted Successfully into DB");
- }
+ logger.trace("Transaction Data Inserted Successfully into DB");
}
@Override
public void update(String key,
- String requestId,
- Map<TransactionConstants.TRANSACTION_ATTRIBUTES, String> updateColumns) throws APPCException {
+ String requestId,
+ Map<TransactionConstants.TRANSACTION_ATTRIBUTES, String> updateColumns) throws APPCException {
logger.debug("Inside update in TransactionRecorderImpl");
if (appcInstanceId != null && checkIfNullInstanceEntryExist(key, requestId)) {
@@ -151,15 +147,12 @@ public class TransactionRecorderImpl implements TransactionRecorder {
logger.error("Error in updating records in updateTransactionEntry " + e);
throw new APPCException(ERROR_ACCESSING_DATABASE, e);
}
- if (logger.isTraceEnabled()) {
- logger.trace("Transaction data updated successfully");
- }
-
+ logger.trace("Transaction data updated successfully");
}
private void updateNullInstanceEntry(String key,
- String requestId,
- Map<TRANSACTION_ATTRIBUTES, String> updateColumns) throws APPCException {
+ String requestId,
+ Map<TRANSACTION_ATTRIBUTES, String> updateColumns) throws APPCException {
logger.debug("Inside updateNullInstanceEntry");
ArrayList<String> values = new ArrayList<>();
@@ -180,7 +173,7 @@ public class TransactionRecorderImpl implements TransactionRecorder {
if (logger.isDebugEnabled()) {
logger.debug("Before updating Transaction table the Query is: " + query);
for (String value : values) {
- logger.debug("Value for Transaction table: " + value);
+ logger.debug("Value for Transaction table: " + value);
}
}
Boolean result = dbLibService.writeData(query, values, SCHEMA);
@@ -195,24 +188,24 @@ public class TransactionRecorderImpl implements TransactionRecorder {
private boolean checkIfNullInstanceEntryExist(String key, String requestId) throws APPCException {
logger.debug("Entered checkIfNullInstanceEntryExist");
- String nullInstanceCheckQuery = new String("SELECT COUNT(*) as ROWCOUNT FROM " +
- TransactionConstants.TRANSACTIONS + WHERE +
- TRANSACTION_ID.getColumnName() + " = ? AND " +
- REQUEST_ID.getColumnName() + " = ? ");
+ String nullInstanceCheckQuery = new String(
+ "SELECT COUNT(*) as ROWCOUNT FROM "
+ + TransactionConstants.TRANSACTIONS + WHERE
+ + TRANSACTION_ID.getColumnName() + " = ? AND "
+ + REQUEST_ID.getColumnName() + " = ? ");
ArrayList<String> nullInstanceCheckParams = new ArrayList<>();
nullInstanceCheckParams.add(null + "~" + key);
nullInstanceCheckParams.add(requestId);
- try{
- CachedRowSet rowSet = dbLibService.getData(nullInstanceCheckQuery, nullInstanceCheckParams, SCHEMA);
+ try (CachedRowSet rowSet = dbLibService.getData(nullInstanceCheckQuery, nullInstanceCheckParams, SCHEMA)) {
int noRows = 0;
if (rowSet != null && rowSet.first()) {
noRows = rowSet.getInt("ROWCOUNT");
- logger.info("No of Rows in Transactions Table with TRANSACTION_ID: " +
- null + "~" + key + " and REQUEST_ID " + requestId + " is: " + noRows);
+ logger.info("No of Rows in Transactions Table with TRANSACTION_ID: "
+ + null + "~" + key + " and REQUEST_ID " + requestId + " is: " + noRows);
}
- if(noRows > 0)
+ if (noRows > 0)
return true;
} catch (SQLException e) {
logger.error("Error in checkIfNullInstanceEntryExist in the transaction table", e);
@@ -223,14 +216,12 @@ public class TransactionRecorderImpl implements TransactionRecorder {
@Override
public void markTransactionsAborted(String appcInstanceId) {
- if (logger.isTraceEnabled()) {
- logger.trace("marking in progress transactions to aborted");
- }
+ logger.trace("marking in progress transactions to aborted");
final String updateQuery =
- "UPDATE " + TransactionConstants.TRANSACTIONS +
- " SET " + STATE.getColumnName() + " = '" + RequestStatus.ABORTED.name() + "',"
- + END_TIME.getColumnName() + " = ? " +
- WHERE + TRANSACTION_ID.getColumnName() + " LIKE '" + appcInstanceId + "%' AND "
+ "UPDATE " + TransactionConstants.TRANSACTIONS
+ + " SET " + STATE.getColumnName() + " = '" + RequestStatus.ABORTED.name() + "',"
+ + END_TIME.getColumnName() + " = ? "
+ + WHERE + TRANSACTION_ID.getColumnName() + " LIKE '" + appcInstanceId + "%' AND "
+ STATE.getColumnName() + " in (?,?)";
if (logger.isDebugEnabled()) {
@@ -248,19 +239,18 @@ public class TransactionRecorderImpl implements TransactionRecorder {
logger.error(message);
throw new RuntimeException(message, e);
}
- if (logger.isTraceEnabled()) {
- logger.trace("In progress transactions marked aborted");
- }
+ logger.trace("In progress transactions marked aborted");
}
@Override
public List<TransactionRecord> getInProgressRequests(TransactionRecord record, int interval) throws APPCException {
- String IN_PROGRESS_REQUESTS_QUERY = "SELECT * FROM " +
- TransactionConstants.TRANSACTIONS + WHERE +
- TARGET_ID + " = ? AND " +
- STATE.getColumnName() + " IN (?,?) AND " +
- START_TIME.getColumnName() + " < ?";
+ String IN_PROGRESS_REQUESTS_QUERY =
+ "SELECT * FROM "
+ + TransactionConstants.TRANSACTIONS + WHERE
+ + TARGET_ID + " = ? AND "
+ + STATE.getColumnName() + " IN (?,?) AND "
+ + START_TIME.getColumnName() + " < ?";
ArrayList<String> inProgressQueryParams = new ArrayList<>();
Instant window = record.getStartTime().minus(interval, ChronoUnit.HOURS);
@@ -273,37 +263,40 @@ public class TransactionRecorderImpl implements TransactionRecorder {
inProgressQueryParams.add(dateToStringConverterMillis(window));
}
- try (CachedRowSet rowSet = dbLibService.getData(IN_PROGRESS_REQUESTS_QUERY, inProgressQueryParams, SCHEMA)) {
+ try (CachedRowSet rowSet =
+ dbLibService.getData(IN_PROGRESS_REQUESTS_QUERY, inProgressQueryParams, SCHEMA)) {
List<TransactionRecord> inProgressRecords = new ArrayList<>();
TransactionRecord transaction;
- while (rowSet.next()) {
- transaction = new TransactionRecord();
- transaction.setTransactionId(rowSet.getString(TRANSACTION_ID.getColumnName()));
- transaction.setRequestId(rowSet.getString(REQUEST_ID.getColumnName()));
- transaction.setSubRequestId(rowSet.getString(SUBREQUEST_ID.getColumnName()));
- transaction.setOriginatorId(rowSet.getString(ORIGINATOR_ID.getColumnName()));
- transaction.setStartTime(stringToDateConverterMillis(rowSet.getString(START_TIME.getColumnName())));
- transaction.setTargetId(rowSet.getString(TARGET_ID.getColumnName()));
- transaction.setTargetType(rowSet.getString(TARGET_TYPE.getColumnName()));
- transaction.setOperation(VNFOperation.valueOf(rowSet.getString(OPERATION.getColumnName())));
- transaction.setRequestState(RequestStatus.valueOf(rowSet.getString(STATE.getColumnName())));
- transaction.setVnfcName(rowSet.getString(VNFC_NAME.getColumnName()));
- transaction.setVserverId(rowSet.getString(VSERVER_ID.getColumnName()));
- transaction.setVfModuleId(rowSet.getString(VF_MODULE_ID.getColumnName()));
- transaction.setServiceInstanceId(rowSet.getString(SERVICE_INSTANCE_ID.getColumnName()));
- transaction.setMode(Flags.Mode.valueOf(rowSet.getString(MODE.getColumnName())));
- inProgressRecords.add(transaction);
- }
- if (logger.isTraceEnabled()) {
- logger.trace("In progress transaction records fetched from database successfully.");
+ int count = 0;
+ if (rowSet != null) {
+ for (; rowSet.next(); ++count) {
+ transaction = new TransactionRecord();
+ transaction.setTransactionId(rowSet.getString(TRANSACTION_ID.getColumnName()));
+ transaction.setRequestId(rowSet.getString(REQUEST_ID.getColumnName()));
+ transaction.setSubRequestId(rowSet.getString(SUBREQUEST_ID.getColumnName()));
+ transaction.setOriginatorId(rowSet.getString(ORIGINATOR_ID.getColumnName()));
+ transaction.setStartTime(stringToDateConverterMillis(rowSet.getString(START_TIME.getColumnName())));
+ transaction.setTargetId(rowSet.getString(TARGET_ID.getColumnName()));
+ transaction.setTargetType(rowSet.getString(TARGET_TYPE.getColumnName()));
+ transaction.setOperation(VNFOperation.valueOf(rowSet.getString(OPERATION.getColumnName())));
+ transaction.setRequestState(RequestStatus.valueOf(rowSet.getString(STATE.getColumnName())));
+ transaction.setVnfcName(rowSet.getString(VNFC_NAME.getColumnName()));
+ transaction.setVserverId(rowSet.getString(VSERVER_ID.getColumnName()));
+ transaction.setVfModuleId(rowSet.getString(VF_MODULE_ID.getColumnName()));
+ transaction.setServiceInstanceId(rowSet.getString(SERVICE_INSTANCE_ID.getColumnName()));
+ transaction.setMode(Flags.Mode.valueOf(rowSet.getString(MODE.getColumnName())));
+ inProgressRecords.add(transaction);
+ }
}
+ logger.trace(String.valueOf(count)
+ + " in progress transaction records fetched from database successfully.");
return inProgressRecords;
} catch (ParseException e) {
logger.error("Error parsing start date during fetching in progress records ", e);
throw new APPCException(ERROR_ACCESSING_DATABASE, e);
} catch (SQLException e) {
- logger.error("Error fetching in progress records for Transaction ID = " + appcInstanceId + "~" + record
- .getTransactionId(), e);
+ logger.error("Error fetching in progress records for Transaction ID = " + appcInstanceId + "~"
+ + record.getTransactionId(), e);
throw new APPCException(ERROR_ACCESSING_DATABASE, e);
}
}
@@ -311,12 +304,12 @@ public class TransactionRecorderImpl implements TransactionRecorder {
@Override
public Boolean isTransactionDuplicate(TransactionRecord record) throws APPCException {
- StringBuilder duplicateRequestCheckQuery = new StringBuilder("SELECT " +
- TRANSACTION_ID.getColumnName() + " FROM " +
- TransactionConstants.TRANSACTIONS + WHERE +
- TRANSACTION_ID.getColumnName() + " <> ? AND " +
- REQUEST_ID.getColumnName() + " = ? AND " +
- STATE.getColumnName() + " IN(?,?) ");
+ StringBuilder duplicateRequestCheckQuery = new StringBuilder()
+ .append("SELECT ").append(TRANSACTION_ID.getColumnName()).append(" FROM ")
+ .append(TransactionConstants.TRANSACTIONS).append(WHERE)
+ .append(TRANSACTION_ID.getColumnName()).append(" <> ? AND ")
+ .append(REQUEST_ID.getColumnName()).append(" = ? AND ")
+ .append(STATE.getColumnName()).append(" IN(?,?) ");
ArrayList<String> duplicateCheckParams = new ArrayList<>();
duplicateCheckParams.add(appcInstanceId + "~" + record.getTransactionId());
@@ -339,35 +332,37 @@ public class TransactionRecorderImpl implements TransactionRecorder {
if (logger.isDebugEnabled()) {
logger.debug(duplicateRequestCheckQuery.toString());
}
- try (CachedRowSet rowSet = dbLibService.getData(duplicateRequestCheckQuery.toString(), duplicateCheckParams,
- SCHEMA)) {
- if (rowSet.first()) {
+ try (CachedRowSet rowSet =
+ dbLibService.getData(duplicateRequestCheckQuery.toString(), duplicateCheckParams, SCHEMA)) {
+ if (rowSet != null && rowSet.first()) {
String transactionId = rowSet.getString(TRANSACTION_ID.getColumnName());
if (logger.isErrorEnabled()) {
- logger.error("Duplicate request found. Transaction ID " + transactionId + " is currently in " +
- "progress.");
+ logger.error("Duplicate request found. Transaction ID " + transactionId
+ + " is currently in progress.");
}
return true;
}
return false;
} catch (SQLException e) {
- logger.error("Error checking duplicate records for Transaction ID = " + appcInstanceId + "~" + record
- .getTransactionId(), e);
+ logger.error("Error checking duplicate records for Transaction ID = " + appcInstanceId + "~"
+ + record.getTransactionId(), e);
throw new APPCException(ERROR_ACCESSING_DATABASE, e);
}
}
@Override
public Integer getInProgressRequestsCount() throws APPCException {
- final String inProgressRequestCountQuery = "SELECT COUNT(*) as VALUE FROM "
- + TransactionConstants.TRANSACTIONS
- + WHERE + STATE.getColumnName() + " IN (?,?) ";
+ 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()) {
+ try (CachedRowSet rowSet =
+ dbLibService.getData(inProgressRequestCountQuery, checkInProgressParams, SCHEMA)) {
+ if (rowSet != null && rowSet.first()) {
int count = rowSet.getInt("VALUE");
logger.info("In progress request count fetched from database successfully.");
return count;
@@ -391,44 +386,51 @@ public class TransactionRecorderImpl implements TransactionRecorder {
public List<RequestStatus> getRecords(String requestId, String subrequestId, String originatorId, String vnfId)
throws APPCException {
StringBuilder queryString = (new StringBuilder(1024))
- .append("SELECT " + TRANSACTION_ATTRIBUTES.STATE.getColumnName())
- .append(" FROM " + TRANSACTIONS)
- .append(" WHERE " + TRANSACTION_ATTRIBUTES.REQUEST_ID.getColumnName() + " = ? AND " +
- TRANSACTION_ATTRIBUTES.TARGET_ID.getColumnName() + " = ?");
-
+ .append("SELECT ").append(TRANSACTION_ID.getColumnName())
+ .append(",")
+ .append(STATE.getColumnName())
+ .append(" FROM ").append(TRANSACTIONS)
+ .append(" WHERE ").append(TRANSACTION_ATTRIBUTES.REQUEST_ID.getColumnName()).append(" = ? AND ")
+ .append(TRANSACTION_ATTRIBUTES.TARGET_ID.getColumnName()).append(" = ?");
ArrayList<String> argList = new ArrayList<>();
argList.add(requestId);
argList.add(vnfId);
if (subrequestId != null) {
- queryString.append(" AND " + TRANSACTION_ATTRIBUTES.SUBREQUEST_ID.getColumnName() + " = ?");
+ queryString.append(" AND ").append(TRANSACTION_ATTRIBUTES.SUBREQUEST_ID.getColumnName()).append(" = ?");
argList.add(subrequestId);
}
if (originatorId != null) {
- queryString.append(" AND " + TRANSACTION_ATTRIBUTES.ORIGINATOR_ID.getColumnName() + " = ?");
+ queryString.append(" AND ").append(TRANSACTION_ATTRIBUTES.ORIGINATOR_ID.getColumnName()).append(" = ?");
argList.add(originatorId);
}
List<RequestStatus> requestStatusList = new ArrayList<>();
- try {
- CachedRowSet resultSet = dbLibService.getData(queryString.toString(), argList, SCHEMA);
- while (resultSet.next()) {
- String name = resultSet.getString(TRANSACTION_ATTRIBUTES.STATE.getColumnName());
- RequestStatus requestStatus = null;
- try {
- requestStatus = RequestStatus.valueOf(name);
- } catch (IllegalArgumentException e) {
- logger.error(String.format("Invalid request status (%s) using (%s) :", name, RequestStatus
- .UNKNOWN), e);
- requestStatus = RequestStatus.UNKNOWN;
+ try (CachedRowSet resultSet = dbLibService.getData(queryString.toString(), argList, SCHEMA)) {
+ if (resultSet == null) {
+ logger.error(String.format(
+ "No results returned when retrieving record for requestID %s and vnfId %s %s",
+ requestId, vnfId, "from the transactions table"));
+ } else {
+ while (resultSet.next()) {
+ String name = resultSet.getString(TRANSACTION_ATTRIBUTES.STATE.getColumnName());
+ RequestStatus requestStatus = null;
+ try {
+ requestStatus = RequestStatus.valueOf(name);
+ } catch (IllegalArgumentException e) {
+ logger.error(String.format(
+ "Invalid request status (%s) using (%s):", name, RequestStatus.UNKNOWN), e);
+ requestStatus = RequestStatus.UNKNOWN;
+ }
+ requestStatusList.add(requestStatus);
+ logger.debug(String.format("Request Status obtained (%s).", requestStatus));
}
- requestStatusList.add(requestStatus);
- logger.debug(String.format("Request Status obtained (%s).", requestStatus));
}
} catch (SQLException e) {
logger.error("Error Accessing Database ", e);
- throw new APPCException(String.format("Error retrieving record for requestID %s and vnfId %s " +
- "from the transactions table", requestId, vnfId), e);
+ throw new APPCException(String.format(
+ "Error retrieving record for requestID %s and vnfId %s from the transactions table",
+ requestId, vnfId), e);
}
return requestStatusList;