use of org.ambraproject.rhino.identity.ArticleIdentifier in project rhino by PLOS.
the class CommentCrudController method readFlagsOnComment.
@RequestMapping(value = "/articles/{articleDoi}/comments/{commentDoi}/flags", method = RequestMethod.GET)
public void readFlagsOnComment(HttpServletRequest request, HttpServletResponse response, @PathVariable("articleDoi") String articleDoi, @PathVariable("commentDoi") String commentDoi) throws IOException {
ArticleIdentifier articleId = ArticleIdentifier.create(DoiEscaping.unescape(articleDoi));
CommentIdentifier commentId = CommentIdentifier.create(DoiEscaping.unescape(commentDoi));
// TODO: Validate articleId
commentCrudService.readCommentFlagsOn(commentId).asJsonResponse(entityGson);
}
use of org.ambraproject.rhino.identity.ArticleIdentifier in project rhino by PLOS.
the class SolrIndexServiceTest method testPublication.
@Test(enabled = false)
public void testPublication() throws Exception {
Archive archive = Archive.readZipFileIntoMemory(new File(TEST_DATA_DIR + "pone.0056489.zip"));
// Article article = articleCrudService.writeArchive(archive,
// Optional.empty(), DoiBasedCrudService.WriteMode.CREATE_ONLY, OptionalInt.empty());
Article article = new Article();
ArticleIdentifier articleId = ArticleIdentifier.create(article.getDoi());
SolrIndexServiceImpl impl = (SolrIndexServiceImpl) solrIndexService;
DummyMessageSender dummySender = (DummyMessageSender) impl.messageSender;
assertEquals(dummySender.messagesSent.size(), 5);
List<String> solrMessages = dummySender.messagesSent.get("activemq:fake.indexing.queue");
assertEquals(solrMessages.size(), 1);
XMLUnit.compareXML(IOUtils.toString(new FileInputStream(TEST_DATA_DIR + "pone.0056489_solr_decorated.xml")), solrMessages.get(0));
String expectedSyndication = "<ambraMessage><doi>info:doi/10.1371/journal.pone.0056489</doi><archive>pone.0056489.zip</archive></ambraMessage>";
List<String> crossRefMessages = dummySender.messagesSent.get("activemq:fake.crossref.queue");
assertEquals(crossRefMessages.size(), 1);
XMLUnit.compareXML(expectedSyndication, crossRefMessages.get(0));
List<String> pmcMessages = dummySender.messagesSent.get("activemq:fake.pmc.queue");
assertEquals(pmcMessages.size(), 1);
XMLUnit.compareXML(expectedSyndication, pmcMessages.get(0));
List<String> pubmedMessages = dummySender.messagesSent.get("activemq:fake.pubmed.queue");
assertEquals(pubmedMessages.size(), 1);
XMLUnit.compareXML(expectedSyndication, pubmedMessages.get(0));
solrIndexService.removeSolrIndex(articleId);
assertEquals(dummySender.messagesSent.size(), 6);
List<String> deletionMessages = dummySender.messagesSent.get("activemq:fake.delete.queue");
assertEquals(deletionMessages.size(), 1);
assertEquals(deletionMessages.get(0), article.getDoi());
}
use of org.ambraproject.rhino.identity.ArticleIdentifier in project rhino by PLOS.
the class IngestionTest method compareRelationshipLists.
private void compareRelationshipLists(AssertionCollector results, List<RelatedArticleLink> actual, List<RelatedArticleLink> expected) {
Map<ArticleIdentifier, RelatedArticleLink> actualMap = Maps.uniqueIndex(actual, RelatedArticleLink::getArticleId);
Set<ArticleIdentifier> actualDois = actualMap.keySet();
Map<ArticleIdentifier, RelatedArticleLink> expectedMap = Maps.uniqueIndex(expected, RelatedArticleLink::getArticleId);
Set<ArticleIdentifier> expectedDois = expectedMap.keySet();
for (ArticleIdentifier missingDoi : Sets.difference(expectedDois, actualDois)) {
compare(results, ArticleRelationship.class, "otherArticleDoi", null, missingDoi);
}
for (ArticleIdentifier extraDoi : Sets.difference(actualDois, expectedDois)) {
compare(results, ArticleRelationship.class, "otherArticleDoi", extraDoi, null);
}
for (ArticleIdentifier doi : Sets.intersection(actualDois, expectedDois)) {
compare(results, ArticleRelationship.class, "otherArticleDoi", doi, doi);
compare(results, ArticleRelationship.class, "type", actualMap.get(doi).getType(), expectedMap.get(doi).getType());
}
}
use of org.ambraproject.rhino.identity.ArticleIdentifier in project rhino by PLOS.
the class IssueCrudServiceImpl method applyInput.
private Issue applyInput(Issue issue, IssueInputView input) {
String issueDoi = input.getDoi();
if (issueDoi != null) {
IssueIdentifier issueId = IssueIdentifier.create(issueDoi);
issue.setDoi(issueId.getDoi().getName());
}
String displayName = input.getDisplayName();
if (displayName != null) {
issue.setDisplayName(displayName);
} else if (issue.getDisplayName() == null) {
issue.setDisplayName("");
}
String imageDoi = input.getImageArticleDoi();
if (imageDoi != null) {
ArticleIdentifier imageArticleId = ArticleIdentifier.create(imageDoi);
Article imageArticle = articleCrudService.readArticle(imageArticleId);
issue.setImageArticle(imageArticle);
} else {
issue.setImageArticle(null);
}
List<String> inputArticleDois = input.getArticleOrder();
if (inputArticleDois != null) {
List<Article> inputArticles = inputArticleDois.stream().map(doi -> articleCrudService.readArticle(ArticleIdentifier.create(doi))).collect(Collectors.toList());
issue.setArticles(inputArticles);
}
return issue;
}
use of org.ambraproject.rhino.identity.ArticleIdentifier in project rhino by PLOS.
the class ArticleOverview method build.
public static ArticleOverview build(ArticleIdentifier articleId, Collection<ArticleIngestion> ingestions, Collection<ArticleRevision> revisions) {
// Initialize every ingestion number with an empty list of revisions, then fill in revisions.
Map<Integer, Collection<Integer>> ingestionTable = ingestions.stream().collect(Collectors.toMap(ArticleIngestion::getIngestionNumber, ingestion -> new ArrayList<>(1)));
for (ArticleRevision revision : revisions) {
int ingestionKey = revision.getIngestion().getIngestionNumber();
ingestionTable.get(ingestionKey).add(revision.getRevisionNumber());
}
Map<Integer, Integer> revisionTable = revisions.stream().collect(Collectors.toMap(ArticleRevision::getRevisionNumber, revision -> revision.getIngestion().getIngestionNumber()));
return new ArticleOverview(articleId, Maps.transformValues(ingestionTable, ImmutableSortedSet::copyOf), revisionTable);
}
Aggregations