Skip to content

Commit 350e01f

Browse files
authored
Merge pull request #950 from AtlasOfLivingAustralia/949-add-assertion-ws-parameter
#949 add param updateId to assertions add service
2 parents 8edf9ae + 392b71d commit 350e01f

File tree

3 files changed

+62
-13
lines changed

3 files changed

+62
-13
lines changed

src/main/java/au/org/ala/biocache/dto/UserAssertions.java

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package au.org.ala.biocache.dto;
22

3+
import org.apache.commons.lang3.StringUtils;
4+
35
import java.util.ArrayList;
46

57
public class UserAssertions extends ArrayList<QualityAssertion> {
@@ -19,4 +21,17 @@ public boolean deleteUuid(String uuid) {
1921

2022
return changed;
2123
}
22-
}
24+
25+
public boolean updateComment(String uuid, String comment) {
26+
boolean changed = false;
27+
for (int i = 0; i < this.size(); i++) {
28+
if (this.get(i).getUuid().equals(uuid) && StringUtils.compare(this.get(i).comment, comment) != 0) {
29+
this.get(i).comment = comment;
30+
changed = true;
31+
break;
32+
}
33+
}
34+
35+
return changed;
36+
}
37+
}

src/main/java/au/org/ala/biocache/service/AssertionService.java

+22
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,28 @@ public Optional<QualityAssertion> addAssertion(
115115
return Optional.empty();
116116
}
117117

118+
public boolean editAssertion(
119+
String recordUuid,
120+
String assertionId,
121+
String comment
122+
) throws IOException {
123+
logger.debug("Editing assertion to: " + recordUuid + ", assertionId: " + assertionId + ", comment: " + comment);
124+
125+
SolrDocument sd = searchDAO.getOcc(recordUuid);
126+
// only when record uuid is valid
127+
if (sd != null) {
128+
UserAssertions userAssertions = store.get(UserAssertions.class, recordUuid).orElse(new UserAssertions());
129+
// if there's any change made
130+
if (userAssertions.updateComment(assertionId, comment)) {
131+
// Update assertions
132+
updateUserAssertions(recordUuid, userAssertions);
133+
return true;
134+
}
135+
}
136+
137+
return false;
138+
}
139+
118140

119141
public boolean deleteAssertion(String recordUuid, String assertionUuid) throws IOException {
120142
SolrDocument sd = searchDAO.getOcc(recordUuid);

src/main/java/au/org/ala/biocache/web/AssertionController.java

+24-12
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import io.swagger.v3.oas.annotations.enums.ParameterIn;
3333
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
3434
import io.swagger.v3.oas.annotations.tags.Tag;
35+
import org.apache.commons.lang.StringUtils;
3536
import org.apache.commons.lang3.tuple.Pair;
3637
import org.apache.http.entity.ContentType;
3738
import org.apache.log4j.Logger;
@@ -156,10 +157,11 @@ public ResponseEntity addAssertionWithParams(
156157
@RequestParam(value = "assertionUuid", required = false) String assertionUuid,
157158
@RequestParam(value = "relatedRecordId", required = false) String relatedRecordId,
158159
@RequestParam(value = "relatedRecordReason", required = false) String relatedRecordReason,
160+
@RequestParam(value = "updateId", required = false) String updateId,
159161
HttpServletRequest request,
160162
HttpServletResponse response) throws Exception {
161163

162-
return addAssertion(recordUuid, code, userId, userDisplayName, comment, userAssertionStatus, assertionUuid, relatedRecordId, relatedRecordReason, request, response);
164+
return addAssertion(recordUuid, code, userId, userDisplayName, comment, userAssertionStatus, assertionUuid, relatedRecordId, relatedRecordReason, updateId, request, response);
163165
}
164166

165167
/**
@@ -243,6 +245,7 @@ public ResponseEntity addAssertion(
243245
@RequestParam(value = "assertionUuid", required = false) String assertionUuid,
244246
@RequestParam(value = "relatedRecordId", required = false) String relatedRecordId,
245247
@RequestParam(value = "relatedRecordReason", required = false) String relatedRecordReason,
248+
@RequestParam(value = "updateId", required = false) String updateId,
246249
HttpServletRequest request,
247250
HttpServletResponse response) throws Exception {
248251

@@ -251,17 +254,26 @@ public ResponseEntity addAssertion(
251254
}
252255

253256
try {
254-
Optional<QualityAssertion> qa = assertionService.addAssertion(
255-
recordUuid, code, comment, userId, userDisplayName,
256-
userAssertionStatus, assertionUuid, relatedRecordId, relatedRecordReason
257-
);
258-
if (qa.isPresent()) {
259-
260-
String server = request.getSession().getServletContext().getInitParameter("serverName");
261-
return ResponseEntity
262-
.created(new URI(server + "/occurrences/" + recordUuid + "/assertions/" + qa.get().getUuid()))
263-
.contentLength(0)
264-
.build();
257+
// if the updateId is provided then we are editing an existing assertion
258+
if (StringUtils.isEmpty(updateId)) {
259+
// add the assertion
260+
Optional<QualityAssertion> qa = assertionService.addAssertion(
261+
recordUuid, code, comment, userId, userDisplayName,
262+
userAssertionStatus, assertionUuid, relatedRecordId, relatedRecordReason
263+
);
264+
if (qa.isPresent()) {
265+
266+
String server = request.getSession().getServletContext().getInitParameter("serverName");
267+
return ResponseEntity
268+
.created(new URI(server + "/occurrences/" + recordUuid + "/assertions/" + qa.get().getUuid()))
269+
.contentLength(0)
270+
.build();
271+
}
272+
} else {
273+
// update the assertion
274+
if (assertionService.editAssertion(recordUuid, updateId, comment)) {
275+
return ResponseEntity.ok().contentLength(0).build();
276+
}
265277
}
266278

267279
throw new ResponseStatusException(HttpStatus.BAD_REQUEST);

0 commit comments

Comments
 (0)