Search in sources :

Example 16 with ArticleRevision

use of org.ambraproject.rhino.model.ArticleRevision in project rhino by PLOS.

the class ArticleCrudServiceImpl method getLatestRevision.

@Override
public Optional<ArticleRevision> getLatestRevision(Article article) {
    Integer maxRevisionNumber = hibernateTemplate.execute(session -> {
        Query query = session.createQuery("" + "SELECT MAX(rev.revisionNumber) " + "FROM ArticleRevision rev, ArticleItem item " + "WHERE item.doi = :doi " + "  AND rev.ingestion = item.ingestion");
        query.setParameter("doi", Doi.create(article.getDoi()).getName());
        return (Integer) query.uniqueResult();
    });
    if (maxRevisionNumber == null)
        return Optional.empty();
    return Optional.ofNullable(hibernateTemplate.execute(session -> {
        Query query = session.createQuery("" + "FROM ArticleRevision as av " + "WHERE av.ingestion.article = :article " + "AND av.revisionNumber = :latestRevision");
        query.setParameter("article", article);
        query.setParameter("latestRevision", maxRevisionNumber);
        return (ArticleRevision) query.uniqueResult();
    }));
}
Also used : ArticleIngestionIdentifier(org.ambraproject.rhino.identity.ArticleIngestionIdentifier) ServiceResponse(org.ambraproject.rhino.rest.response.ServiceResponse) ArticleFileIdentifier(org.ambraproject.rhino.identity.ArticleFileIdentifier) RelatedArticleLink(org.ambraproject.rhino.model.article.RelatedArticleLink) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) Collections2(com.google.common.collect.Collections2) Archive(org.ambraproject.rhino.util.Archive) ArticleXml(org.ambraproject.rhino.content.xml.ArticleXml) ArticleIngestion(org.ambraproject.rhino.model.ArticleIngestion) Matcher(java.util.regex.Matcher) Document(org.w3c.dom.Document) Map(java.util.Map) Query(org.hibernate.Query) StringEscapeUtils(org.apache.commons.lang3.StringEscapeUtils) ArticleAllAuthorsView(org.ambraproject.rhino.view.article.author.ArticleAllAuthorsView) ArticleItem(org.ambraproject.rhino.model.ArticleItem) RepoObjectMetadata(org.plos.crepo.model.metadata.RepoObjectMetadata) Collection(java.util.Collection) Set(java.util.Set) ResolvedDoiView(org.ambraproject.rhino.view.ResolvedDoiView) AssetCrudService(org.ambraproject.rhino.service.AssetCrudService) Collectors(java.util.stream.Collectors) ArticleIdentifier(org.ambraproject.rhino.identity.ArticleIdentifier) Objects(java.util.Objects) List(java.util.List) ArticleRevisionIdentifier(org.ambraproject.rhino.identity.ArticleRevisionIdentifier) ArticleRevision(org.ambraproject.rhino.model.ArticleRevision) LocalDate(java.time.LocalDate) Optional(java.util.Optional) ArticleFile(org.ambraproject.rhino.model.ArticleFile) Pattern(java.util.regex.Pattern) ArticleRevisionView(org.ambraproject.rhino.view.article.ArticleRevisionView) ArticleRelationship(org.ambraproject.rhino.model.ArticleRelationship) Iterables(com.google.common.collect.Iterables) Article(org.ambraproject.rhino.model.Article) CacheableResponse(org.ambraproject.rhino.rest.response.CacheableResponse) RestClientException(org.ambraproject.rhino.rest.RestClientException) ArticleOverview(org.ambraproject.rhino.view.article.ArticleOverview) ArticleItemIdentifier(org.ambraproject.rhino.identity.ArticleItemIdentifier) ArrayList(java.util.ArrayList) Strings(com.google.common.base.Strings) Lists(com.google.common.collect.Lists) TaxonomyService(org.ambraproject.rhino.service.taxonomy.TaxonomyService) XpathReader(org.ambraproject.rhino.content.xml.XpathReader) Doi(org.ambraproject.rhino.identity.Doi) ByteSource(com.google.common.io.ByteSource) XPathException(javax.xml.xpath.XPathException) ArticleIngestionView(org.ambraproject.rhino.view.article.ArticleIngestionView) Logger(org.slf4j.Logger) XmlContentException(org.ambraproject.rhino.content.xml.XmlContentException) IOException(java.io.IOException) ArticleCategoryAssignment(org.ambraproject.rhino.model.ArticleCategoryAssignment) HttpStatus(org.springframework.http.HttpStatus) ArticleCrudService(org.ambraproject.rhino.service.ArticleCrudService) AuthorView(org.ambraproject.rhino.view.article.author.AuthorView) CategoryAssignmentView(org.ambraproject.rhino.view.article.CategoryAssignmentView) ItemSetView(org.ambraproject.rhino.view.article.ItemSetView) InputStream(java.io.InputStream) Query(org.hibernate.Query)

Example 17 with ArticleRevision

use of org.ambraproject.rhino.model.ArticleRevision in project rhino by PLOS.

the class ArticleCrudServiceImpl method serveRawCategories.

/**
   * {@inheritDoc}
   */
@Override
public ServiceResponse<List<String>> serveRawCategories(final ArticleIdentifier articleId) throws IOException {
    Article article = readArticle(articleId);
    ArticleRevision revision = readLatestRevision(article);
    Document manuscriptXml = getManuscriptXml(revision.getIngestion());
    List<String> rawTerms = taxonomyService.getRawTerms(manuscriptXml, article, false);
    List<String> cleanedTerms = new ArrayList<>();
    for (String term : rawTerms) {
        term = term.replaceAll("<TERM>", "").replaceAll("</TERM>", "");
        cleanedTerms.add(term);
    }
    return ServiceResponse.serveView(cleanedTerms);
}
Also used : ArticleRevision(org.ambraproject.rhino.model.ArticleRevision) Article(org.ambraproject.rhino.model.Article) ArrayList(java.util.ArrayList) Document(org.w3c.dom.Document)

Example 18 with ArticleRevision

use of org.ambraproject.rhino.model.ArticleRevision in project rhino by PLOS.

the class ArticleCrudServiceImpl method serveRevisions.

@Override
public ServiceResponse<List<ArticleRevisionView>> serveRevisions(ArticleIdentifier id) {
    Article article = readArticle(id);
    List<ArticleRevision> revisions = (List<ArticleRevision>) hibernateTemplate.find("FROM ArticleRevision WHERE ingestion.article = ? ORDER BY revisionNumber", article);
    List<ArticleRevisionView> views = Lists.transform(revisions, ArticleRevisionView::getView);
    return ServiceResponse.serveView(views);
}
Also used : ArticleRevision(org.ambraproject.rhino.model.ArticleRevision) ArticleRevisionView(org.ambraproject.rhino.view.article.ArticleRevisionView) Article(org.ambraproject.rhino.model.Article) List(java.util.List) ArrayList(java.util.ArrayList)

Example 19 with ArticleRevision

use of org.ambraproject.rhino.model.ArticleRevision in project rhino by PLOS.

the class IssueOutputView method getIssueImageFigureDoi.

private static String getIssueImageFigureDoi(ArticleCrudService articleCrudService, Article imageArticle) {
    ArticleRevision latestArticleRevision = articleCrudService.getLatestRevision(imageArticle).orElseThrow(() -> new RuntimeException("Image article has no published revisions. " + imageArticle.getDoi()));
    ArticleIngestion ingestion = latestArticleRevision.getIngestion();
    Collection<ArticleItem> allArticleItems = articleCrudService.getAllArticleItems(ingestion);
    List<ArticleItem> figureImageItems = allArticleItems.stream().filter(item -> FIGURE_IMAGE_TYPES.contains(item.getItemType())).collect(Collectors.toList());
    if (figureImageItems.size() != 1) {
        throw new RuntimeException("Image article does not contain exactly one image file. " + imageArticle.getDoi());
    }
    return figureImageItems.get(0).getDoi();
}
Also used : ArticleRevision(org.ambraproject.rhino.model.ArticleRevision) ArticleIngestion(org.ambraproject.rhino.model.ArticleIngestion) ArticleItem(org.ambraproject.rhino.model.ArticleItem) JsonObject(com.google.gson.JsonObject) ArticleItem(org.ambraproject.rhino.model.ArticleItem) ImmutableSet(com.google.common.collect.ImmutableSet) Article(org.ambraproject.rhino.model.Article) Journal(org.ambraproject.rhino.model.Journal) Collection(java.util.Collection) Autowired(org.springframework.beans.factory.annotation.Autowired) Collectors(java.util.stream.Collectors) JsonOutputView(org.ambraproject.rhino.view.JsonOutputView) JsonElement(com.google.gson.JsonElement) Objects(java.util.Objects) ArticleIngestion(org.ambraproject.rhino.model.ArticleIngestion) ArticleCrudService(org.ambraproject.rhino.service.ArticleCrudService) List(java.util.List) ImmutableList(com.google.common.collect.ImmutableList) ArticleRevision(org.ambraproject.rhino.model.ArticleRevision) Issue(org.ambraproject.rhino.model.Issue) Volume(org.ambraproject.rhino.model.Volume) JsonSerializationContext(com.google.gson.JsonSerializationContext) Optional(java.util.Optional) IssueCrudService(org.ambraproject.rhino.service.IssueCrudService) ArticleRevisionView(org.ambraproject.rhino.view.article.ArticleRevisionView)

Example 20 with ArticleRevision

use of org.ambraproject.rhino.model.ArticleRevision in project rhino by PLOS.

the class SyndicationCrudServiceImpl method getSyndication.

@Override
@SuppressWarnings("unchecked")
public Syndication getSyndication(final ArticleRevisionIdentifier revisionId, final String syndicationTargetQueue) {
    ArticleRevision articleRevision = articleCrudService.readRevision(revisionId);
    return hibernateTemplate.execute(session -> {
        Query query = session.createQuery("" + "FROM Syndication s " + "WHERE s.targetQueue = :targetQueue " + "AND s.articleRevision = :articleRevision");
        query.setParameter(ArticleJsonNames.SYNDICATION_TARGET, syndicationTargetQueue);
        query.setParameter("articleRevision", articleRevision);
        return (Syndication) query.uniqueResult();
    });
}
Also used : ArticleRevision(org.ambraproject.rhino.model.ArticleRevision) Query(org.hibernate.Query) Syndication(org.ambraproject.rhino.model.Syndication)

Aggregations

ArticleRevision (org.ambraproject.rhino.model.ArticleRevision)20 Article (org.ambraproject.rhino.model.Article)9 ArticleIngestion (org.ambraproject.rhino.model.ArticleIngestion)9 Query (org.hibernate.Query)7 ArticleIdentifier (org.ambraproject.rhino.identity.ArticleIdentifier)6 ArrayList (java.util.ArrayList)5 List (java.util.List)5 Collection (java.util.Collection)4 Collectors (java.util.stream.Collectors)4 ArticleItem (org.ambraproject.rhino.model.ArticleItem)4 IOException (java.io.IOException)3 LocalDate (java.time.LocalDate)3 Map (java.util.Map)3 Objects (java.util.Objects)3 Optional (java.util.Optional)3 ArticleIngestionIdentifier (org.ambraproject.rhino.identity.ArticleIngestionIdentifier)3 ArticleOverview (org.ambraproject.rhino.view.article.ArticleOverview)3 ArticleRevisionView (org.ambraproject.rhino.view.article.ArticleRevisionView)3 Transactional (org.springframework.transaction.annotation.Transactional)3 Document (org.w3c.dom.Document)3