@@ -745,7 +745,7 @@ class OccurrenceDAOImpl extends OccurrenceDAO {
745
745
}
746
746
747
747
// Updating system assertion, pass in false
748
- val (userAssertionStatus, trueUserAssertions) = getCombinedUserStatus(false , userAssertions)
748
+ val (userAssertionStatus, trueUserAssertions, originalAssertions ) = getCombinedUserStatus(false , userAssertions)
749
749
750
750
val verified = if (userAssertionStatus == AssertionStatus .QA_VERIFIED || userAssertionStatus == AssertionStatus .QA_CORRECTED ) true else false
751
751
@@ -910,7 +910,7 @@ class OccurrenceDAOImpl extends OccurrenceDAO {
910
910
persistenceManager.put(rowKey, qaEntityName, qaMap, true , false )
911
911
val systemAssertions = getSystemAssertions(rowKey)
912
912
val userAssertions = getUserAssertions(rowKey)
913
- updateAssertionStatus(rowKey, qualityAssertion, systemAssertions, userAssertions :+ qualityAssertion )
913
+ updateAssertionStatus(rowKey, qualityAssertion, systemAssertions, userAssertions)
914
914
915
915
// set the last user assertion date
916
916
persistenceManager.put(rowKey, entityName, FullRecordMapper .lastUserAssertionDateColumn, qualityAssertion.created, false , false )
@@ -1008,15 +1008,25 @@ class OccurrenceDAOImpl extends OccurrenceDAO {
1008
1008
* If Collection Admin verifies the record, currentAssertion will have
1009
1009
* code: 50000 (AssertionCodes.VERIFIED.code),
1010
1010
* qaStatus: AssertionStatus.QA_OPEN_ISSUE, AssertionStatus.QA_VERIFIED, AssertionStatus:QA_CORRECTED
1011
+ *
1012
+ * Alex updated on 07/12/2020, combinedUserAssertions contains all assertions in 50005 or 50001 state (outstanding assertions)
1013
+ * originalAssertions contains all assertions users (not admin) made. Keep the original interface just to make sure new change
1014
+ * doesn't break anything
1011
1015
*/
1012
- private def getCombinedUserStatus (bVerified : Boolean , userAssertions : List [QualityAssertion ]): (Int , ArrayBuffer [QualityAssertion ]) = {
1016
+ private def getCombinedUserStatus (bVerified : Boolean , userAssertions : List [QualityAssertion ]): (Int , ArrayBuffer [QualityAssertion ], ArrayBuffer [ QualityAssertion ] ) = {
1013
1017
1014
1018
// Filter off only verified records
1015
1019
val verifiedAssertions = userAssertions.filter(qa => qa.code == AssertionCodes .VERIFIED .code)
1016
1020
1017
1021
// Filter off only user assertions type
1018
1022
val assertions = userAssertions.filter(qa => qa.code != AssertionCodes .VERIFIED .code && AssertionStatus .isUserAssertionType(qa.qaStatus))
1019
1023
1024
+ var originalAssertions = new ArrayBuffer [QualityAssertion ]()
1025
+ // qa.relatedUuid == null means it's not a verification because a verification must have an associated assertion thus relatedUuid not null
1026
+ assertions.filter(qa => qa.relatedUuid == null ).foreach {
1027
+ originalAssertions.append(_)
1028
+ }
1029
+
1020
1030
// Sort the verified list according to relatedUuid and order of reference rowKey.
1021
1031
// RowKey for verified records consist of rowKey|userId|code|recNum where recNum increments everytime a verified record is added
1022
1032
val sortedList = verifiedAssertions.sortWith(QualityAssertion .compareByReferenceRowKeyDesc).sortBy(_.relatedUuid)
@@ -1072,7 +1082,7 @@ class OccurrenceDAOImpl extends OccurrenceDAO {
1072
1082
1073
1083
logger.debug(" Overall assertion Status: " + userAssertionStatus)
1074
1084
1075
- (userAssertionStatus, combinedUserAssertions)
1085
+ (userAssertionStatus, combinedUserAssertions, originalAssertions )
1076
1086
}
1077
1087
1078
1088
/**
@@ -1083,7 +1093,7 @@ class OccurrenceDAOImpl extends OccurrenceDAO {
1083
1093
logger.debug(" Updating the assertion status for : " + rowKey)
1084
1094
1085
1095
val bVerified = AssertionCodes .isVerified(assertion)
1086
- val (userAssertionStatus, remainingAssertions) = getCombinedUserStatus(bVerified, userAssertions)
1096
+ val (userAssertionStatus, remainingAssertions, originalAssertions ) = getCombinedUserStatus(bVerified, userAssertions)
1087
1097
1088
1098
// default to the assertion which is to be evaluated
1089
1099
var actualAssertion = assertion
@@ -1152,7 +1162,8 @@ class OccurrenceDAOImpl extends OccurrenceDAO {
1152
1162
logger.debug(" Final " + listErrorCodes)
1153
1163
1154
1164
// update the list
1155
- persistenceManager.put(rowKey, entityName, FullRecordMapper .userQualityAssertionColumn, Json .toJSON(remainingAssertions.toList), false , false )
1165
+ // use all user assertions (no matter if it's already verified) to fill userQualityAssertionColumn so that assertion_user_id can be extracted correctly when reindexing
1166
+ persistenceManager.put(rowKey, entityName, FullRecordMapper .userQualityAssertionColumn, Json .toJSON(originalAssertions.toList), false , false )
1156
1167
persistenceManager.putList(rowKey, entityName, FullRecordMapper .markAsQualityAssertion(phase), listErrorCodes.toList, classOf [Int ], false , true , false )
1157
1168
1158
1169
// set the overall decision if necessary
0 commit comments