use of org.ambraproject.rhino.rest.RestClientException in project rhino by PLOS.
the class CommentCrudServiceImpl method patchComment.
@Override
public ServiceResponse<CommentOutputView> patchComment(CommentIdentifier commentId, CommentInputView input) {
Comment comment = readComment(commentId);
String declaredUri = input.getAnnotationUri();
if (declaredUri != null && !CommentIdentifier.create(declaredUri).equals(commentId)) {
throw new RestClientException("Mismatched commentUri in body", HttpStatus.BAD_REQUEST);
}
String creatorUserId = input.getCreatorUserId();
if (creatorUserId != null) {
comment.setUserProfileID(Long.valueOf(creatorUserId));
}
String title = input.getTitle();
if (title != null) {
comment.setTitle(title);
}
String body = input.getBody();
if (body != null) {
comment.setBody(body);
}
String highlightedText = input.getHighlightedText();
if (highlightedText != null) {
comment.setHighlightedText(highlightedText);
}
String competingInterestStatement = input.getCompetingInterestStatement();
if (competingInterestStatement != null) {
comment.setCompetingInterestBody(competingInterestStatement);
}
String isRemoved = input.getIsRemoved();
if (isRemoved != null) {
comment.setIsRemoved(Boolean.valueOf(isRemoved));
}
hibernateTemplate.update(comment);
return ServiceResponse.serveView(createView(comment));
}
use of org.ambraproject.rhino.rest.RestClientException in project rhino by PLOS.
the class IssueCrudServiceImpl method create.
@Override
public Issue create(VolumeIdentifier volumeId, IssueInputView input) {
Preconditions.checkNotNull(volumeId);
IssueIdentifier issueId = IssueIdentifier.create(input.getDoi());
if (getIssue(issueId).isPresent()) {
throw new RestClientException("Issue already exists with DOI: " + issueId, HttpStatus.BAD_REQUEST);
}
Issue issue = applyInput(new Issue(), input);
Volume volume = volumeCrudService.readVolume(volumeId);
volume.getIssues().add(issue);
hibernateTemplate.save(volume);
return issue;
}
use of org.ambraproject.rhino.rest.RestClientException in project rhino by PLOS.
the class IngestionService method getManuscriptEntry.
private String getManuscriptEntry(ImmutableSet<String> entryNames, ManifestXml manifestXml) {
ManifestXml.Representation manuscriptRepr = manifestXml.getArticleAsset().getRepresentation("manuscript").orElseThrow(() -> new RestClientException("Manuscript entry not found in manifest", HttpStatus.BAD_REQUEST));
String manuscriptEntry = manuscriptRepr.getFile().getEntry();
if (!entryNames.contains(manuscriptEntry)) {
throw new RestClientException("Manuscript file not found in archive: " + manuscriptEntry, HttpStatus.BAD_REQUEST);
}
return manuscriptEntry;
}
use of org.ambraproject.rhino.rest.RestClientException in project rhino by PLOS.
the class IssueCrudServiceImpl method delete.
@Override
public void delete(IssueIdentifier issueId) {
Issue issue = readIssue(issueId);
List<String> currentIssueJournalKeys = hibernateTemplate.execute((Session session) -> {
Query query = session.createQuery("select journalKey from Journal where currentIssue = :issue");
query.setParameter("issue", issue);
return query.list();
});
if (!currentIssueJournalKeys.isEmpty()) {
String message = String.format("Cannot delete issue: %s. It is the current issue for: %s", issueId, currentIssueJournalKeys);
throw new RestClientException(message, HttpStatus.BAD_REQUEST);
}
hibernateTemplate.delete(issue);
}
use of org.ambraproject.rhino.rest.RestClientException in project rhino by PLOS.
the class JournalCrudServiceImpl method validateIssueInJournal.
private Issue validateIssueInJournal(Issue issue, Journal journal) {
Object results = hibernateTemplate.execute((Session session) -> {
String hql = "from Journal j, Issue i, Volume v " + "where j.journalId = :journalId " + "and i.issueId = :issueId " + "and v in elements(j.volumes) " + "and i in elements(v.issues)";
Query query = session.createQuery(hql);
query.setParameter("journalId", journal.getJournalId());
query.setParameter("issueId", issue.getIssueId());
return query.uniqueResult();
});
if (results != null) {
return issue;
} else {
throw new RestClientException("Issue with DOI " + issue.getDoi() + " not found in journal with key " + journal.getJournalKey(), HttpStatus.BAD_REQUEST);
}
}
Aggregations