diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/assets/SeriesAssetRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/assets/SeriesAssetRenderer.java index 0e3ebe8..a55df17 100644 --- a/sci-publications/src/main/java/org/scientificcms/pagemodel/assets/SeriesAssetRenderer.java +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/assets/SeriesAssetRenderer.java @@ -45,10 +45,11 @@ public class SeriesAssetRenderer extends AbstractAssetRenderer { seriesData.put( "description", series.getDescription().getValue(language) ); + seriesData.put("seriesId", series.getSeriesId()); seriesData.put("title", series.getTitle().getValue(language)); seriesData.put("uuid", series.getUuid()); - + result.put("series", seriesData); } diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractPublicationRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractPublicationRenderer.java new file mode 100644 index 0000000..b8fa57a --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractPublicationRenderer.java @@ -0,0 +1,194 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.assets.Organization; +import org.librecms.assets.Person; +import org.librecms.assets.PersonName; +import org.librecms.contentsection.ContentItem; +import org.librecms.pagemodel.assets.AssetRenderers; +import org.librecms.pagemodel.contentitems.AbstractContentItemRenderer; +import org.scientificcms.publications.Authorship; +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.Publisher; +import org.scientificcms.publications.Series; +import org.scientificcms.publications.VolumeInSeries; +import org.scientificcms.publications.contenttypes.PublicationItem; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.inject.Inject; + +/** + * + * @author Jens Pelzetter + */ +public abstract class AbstractPublicationRenderer + extends AbstractContentItemRenderer { + + private static final long serialVersionUID = 1L; + + @Inject + private AssetRenderers assetRenderers; + + @Override + protected void renderItem( + final ContentItem item, + final Locale language, + final Map result + ) { + final PublicationItem publicationItem; + if (item instanceof PublicationItem) { + publicationItem = (PublicationItem) item; + } else { + return; + } + + final Publication publication = publicationItem.getPublication(); + + final Map publicationData = new HashMap<>(); + + publicationData.put( + "authorships", + publication + .getAuthorships() + .stream() + .map(this::renderAuthorship) + .collect(Collectors.toList()) + ); + publicationData.put( + "languageOfPublication", + publication.getLanguageOfPublication().toString() + ); + publicationData.put( + "misc", + publication.getMisc().getValue(language) + ); + publicationData.put( + "peerReviewed", + publication.getPeerReviewed() + ); + publicationData.put( + "abstract", + publication.getPublicationAbstract().getValue(language) + ); + publicationData.put("publicationId", publication.getPublicationId()); + publicationData.put( + "series", + publication + .getSeries() + .stream() + .map(volume -> renderVolume(volume, language)) + .collect(Collectors.toList()) + ); + publicationData.put( + "shortDescription", + publication.getShortDescription().getValue(language) + ); + publicationData.put( + "title", + publication.getTitle().getValue(language) + ); + publicationData.put("uuid", publication.getUuid()); + publicationData.put( + "yearFirstPublished", publication.getYearFirstPublished() + ); + publicationData.put( + "yearOfPublication", publication.getYearOfPublication() + ); + + renderPublication(publication, language, publicationData); + + result.put("publication", publicationData); + } + + protected abstract void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ); + + @Override + public AssetRenderers getAssetRenderers() { + return assetRenderers; + } + + protected Map renderAuthorship(final Authorship authorship) { + final Map data = new HashMap<>(); + + data.put("author", renderPerson(authorship.getAuthor())); + data.put("authorOrder", authorship.getAuthorOrder()); + data.put("authorshipId", authorship.getAuthorshipId()); + data.put("uuid", authorship.getUuid()); + data.put("isEditor", authorship.isEditor()); + + return data; + } + + protected Map renderPublisher(final Publisher publisher) { + final Map data = new HashMap<>(); + + data.put("name", publisher.getName()); + data.put("place", publisher.getPlace()); + data.put("publisherId", publisher.getPublisherId()); + data.put("uuid", publisher.getUuid()); + + return data; + } + + protected Map renderOrganization( + final Organization organization + ) { + final Map data = new HashMap<>(); + + data.put("", organization.getName()); + + return data; + } + + private Map renderPerson(final Person person) { + final Map data = new HashMap<>(); + + final PersonName personName = person.getPersonName(); + + data.put("givenName", personName.getGivenName()); + data.put("surname", personName.getSurname()); + data.put("prefix", personName.getPrefix()); + data.put("suffix", personName.getSuffix()); + + return data; + } + + private Map renderVolume( + final VolumeInSeries volume, final Locale language + ) { + final Map data = new HashMap<>(); + + data.put("series", renderSeries(volume.getSeries(), language)); + data.put("uuid", volume.getUuid()); + data.put("volumeId", volume.getVolumeId()); + data.put("volumeOfSeries", volume.getVolumeOfSeries()); + + return data; + } + + private Map renderSeries( + final Series series, final Locale language + ) { + final Map data = new HashMap<>(); + + data.put("description", series.getDescription().getValue(language)); + data.put("seriesId", series.getSeriesId()); + data.put("title", series.getTitle().getValue(language)); + data.put("uuid", series.getUuid()); + + return data; + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractPublicationWithPublisherRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractPublicationWithPublisherRenderer.java new file mode 100644 index 0000000..cd45f74 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractPublicationWithPublisherRenderer.java @@ -0,0 +1,65 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.PublicationWithPublisher; + +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +public abstract class AbstractPublicationWithPublisherRenderer + extends AbstractPublicationRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected final void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ) { + final PublicationWithPublisher publicationWithPublisher; + if (publication instanceof PublicationWithPublisher) { + publicationWithPublisher = (PublicationWithPublisher) publication; + } else { + return; + } + + publicationData.put( + "edition", publicationWithPublisher.getEdition().getValue(language) + ); + publicationData.put("isbn10", publicationWithPublisher.getIsbn10()); + publicationData.put("isbn13", publicationWithPublisher.getIsbn13()); + publicationData.put( + "numberOfPages", publicationWithPublisher.getNumberOfPages() + ); + publicationData.put( + "numberOfVolumes", publicationWithPublisher.getNumberOfVolumes() + ); + publicationData.put( + "publisher", + renderPublisher(publicationWithPublisher.getPublisher()) + ); + + renderPublicationWithPublisher( + publicationWithPublisher, language, publicationData + ); + } + + protected abstract void renderPublicationWithPublisher( + final PublicationWithPublisher publication, + final Locale language, + final Map publicationData + ); + + + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractUnPublishedRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractUnPublishedRenderer.java new file mode 100644 index 0000000..fa8d3b0 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/AbstractUnPublishedRenderer.java @@ -0,0 +1,53 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.UnPublished; + +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +public abstract class AbstractUnPublishedRenderer extends AbstractPublicationRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected final void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ) { + final UnPublished unPublished; + if (publication instanceof UnPublished) { + unPublished = (UnPublished) publication; + } else { + return; + } + + publicationData.put("number", unPublished.getNumber()); + publicationData.put("numberOfPages", unPublished.getNumberOfPages()); + publicationData.put( + "organization", renderOrganization(unPublished.getOrganization()) + ); + publicationData.put("place", unPublished.getPlace()); + + renderUnPublished(unPublished, language, publicationData); + } + + protected abstract void renderUnPublished( + final UnPublished unPublished, + final Locale language, + final Map publicationData + ); + + + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ArticleInCollectedVolumeRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ArticleInCollectedVolumeRenderer.java new file mode 100644 index 0000000..c1330e4 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ArticleInCollectedVolumeRenderer.java @@ -0,0 +1,96 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.ArticleInCollectedVolume; +import org.scientificcms.publications.CollectedVolume; +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.contenttypes.ArticleInCollectedVolumeItem; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = ArticleInCollectedVolumeItem.class) +public class ArticleInCollectedVolumeRenderer + extends AbstractPublicationRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ) { + final ArticleInCollectedVolume article; + if (publication instanceof ArticleInCollectedVolume) { + article = (ArticleInCollectedVolume) publication; + } else { + return; + } + publicationData.put("chapter", article.getChapter()); + publicationData.put( + "collectedVolume", + renderCollectedVolume(article.getCollectedVolume(), language) + ); + publicationData.put("endPage", article.getEndPage()); + publicationData.put("startPage", article.getStartPage()); + } + + private Map renderCollectedVolume( + final CollectedVolume collectedVolume, + final Locale language + ) { + final Map data = new HashMap<>(); + + data.put( + "authors", + collectedVolume + .getAuthorships() + .stream() + .map(this::renderAuthorship) + .collect(Collectors.toList()) + ); + data.put("edition", collectedVolume.getEdition().getValue(language)); + data.put("isbn10", collectedVolume.getIsbn10()); + data.put("isbn13", collectedVolume.getIsbn13()); + data.put( + "languageOfPublication", + collectedVolume.getLanguageOfPublication().toString() + ); + data.put("misc", collectedVolume.getMisc().getValue(language)); + data.put("numberOfPages", collectedVolume.getNumberOfPages()); + data.put("numberOfVolumes", collectedVolume.getNumberOfVolumes()); + data.put( + "abstract", + collectedVolume.getPublicationAbstract().getValue(language) + ); + data.put("publicationId", collectedVolume.getPublicationId()); + data.put("publisher", renderPublisher(collectedVolume.getPublisher())); + data.put( + "shortDescription", + collectedVolume.getShortDescription().getValue(language) + ); + data.put("title", collectedVolume.getTitle().getValue(language)); + data.put("uuid", collectedVolume.getUuid()); + data.put("volume", collectedVolume.getVolume()); + data.put( + "yearFirstPublished", + collectedVolume.getYearFirstPublished() + ); + data.put("yearOfPublication", collectedVolume.getYearOfPublication()); + + return data; + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ArticleInJournalRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ArticleInJournalRenderer.java new file mode 100644 index 0000000..2d223a4 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ArticleInJournalRenderer.java @@ -0,0 +1,67 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.ArticleInJournal; +import org.scientificcms.publications.Journal; +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.contenttypes.ArticleInJournalItem; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = ArticleInJournalItem.class) +public class ArticleInJournalRenderer extends AbstractPublicationRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ) { + final ArticleInJournal article; + if (publication instanceof ArticleInJournal) { + article = (ArticleInJournal) publication; + } else { + return; + } + + publicationData.put("endPage", article.getEndPage()); + publicationData.put("issue", article.getIssue()); + publicationData.put( + "journal", renderJournal(article.getJournal(), language) + ); + publicationData.put("publicationDate", article.getPublicationDate()); + publicationData.put("startPage", article.getStartPage()); + publicationData.put("volume", article.getVolume()); + } + + private Map renderJournal( + final Journal journal, final Locale language + ) { + final Map data = new HashMap<>(); + + data.put("description", journal.getDescription().getValue(language)); + data.put("firstYear", journal.getFirstYear()); + data.put("issn", journal.getIssn()); + data.put("journalId", journal.getJournalId()); + data.put("lastYear", journal.getLastYear()); + data.put("symbol", journal.getSymbol()); + data.put("title", journal.getTitle()); + data.put("uuid", journal.getUuid()); + + return data; + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/CollectedVolumeRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/CollectedVolumeRenderer.java new file mode 100644 index 0000000..95630ad --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/CollectedVolumeRenderer.java @@ -0,0 +1,88 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.ArticleInCollectedVolume; +import org.scientificcms.publications.CollectedVolume; +import org.scientificcms.publications.PublicationWithPublisher; +import org.scientificcms.publications.contenttypes.CollectedVolumeItem; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = CollectedVolumeItem.class) +public class CollectedVolumeRenderer + extends AbstractPublicationWithPublisherRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublicationWithPublisher( + final PublicationWithPublisher publication, + final Locale language, + final Map publicationData + ) { + final CollectedVolume collectedVolume; + if (publication instanceof CollectedVolume) { + collectedVolume = (CollectedVolume) publication; + } else { + return; + } + + publicationData.put( + "articles", + collectedVolume + .getArticles() + .stream() + .map(article -> renderArticle(article, language)) + .collect(Collectors.toList()) + ); + } + + private Map renderArticle( + final ArticleInCollectedVolume article, final Locale language + ) { + final Map data = new HashMap<>(); + + data.put( + "authors", + article + .getAuthorships() + .stream() + .map(this::renderAuthorship) + .collect(Collectors.toList()) + ); + data.put("chapter", article.getChapter()); + data.put("endPage", article.getEndPage()); + data.put( + "languageOfPublication", + article.getLanguageOfPublication().toString() + ); + data.put("misc", article.getMisc().getValue(language)); + data + .put("abstract", article.getPublicationAbstract().getValue(language)); + data.put("publicationId", article.getPublicationId()); + data.put( + "shortDescription", + article.getShortDescription().getValue(language) + ); + data.put("startPage", article.getStartPage()); + data.put("title", article.getTitle().getValue(language)); + data.put("uuid", article.getUuid()); + data.put("yearFirstPublished", article.getYearFirstPublished()); + data.put("yearOfPublication", article.getYearOfPublication()); + + return data; + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ExpertiseRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ExpertiseRenderer.java new file mode 100644 index 0000000..f3c8838 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ExpertiseRenderer.java @@ -0,0 +1,48 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.Expertise; +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.contenttypes.ExpertiseItem; + +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = ExpertiseItem.class) +public class ExpertiseRenderer extends AbstractPublicationRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ) { + final Expertise expertise; + if (publication instanceof Expertise) { + expertise = (Expertise) publication; + } else { + return; + } + + publicationData.put("numberOfPages", expertise.getNumberOfPages()); + publicationData.put("place", expertise.getPlace()); + publicationData.put( + "orderer", renderOrganization(expertise.getOrderer()) + ); + publicationData.put( + "organization", renderOrganization(expertise.getOrganization()) + ); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/GreyLiteratureRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/GreyLiteratureRenderer.java new file mode 100644 index 0000000..4ba1aac --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/GreyLiteratureRenderer.java @@ -0,0 +1,42 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.GreyLiterature; +import org.scientificcms.publications.UnPublished; +import org.scientificcms.publications.contenttypes.GreyLiteratureItem; + +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = GreyLiteratureItem.class) +public class GreyLiteratureRenderer extends AbstractUnPublishedRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderUnPublished( + final UnPublished unPublished, + final Locale language, + final Map publicationData + ) { + final GreyLiterature greyLiterature; + if (unPublished instanceof GreyLiterature) { + greyLiterature = (GreyLiterature) unPublished; + } else { + return; + } + + publicationData.put("startPage", greyLiterature.getStartPage()); + publicationData.put("endPage", greyLiterature.getEndPage()); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/InProceedingsRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/InProceedingsRenderer.java new file mode 100644 index 0000000..e7028d1 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/InProceedingsRenderer.java @@ -0,0 +1,96 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.InProceedings; +import org.scientificcms.publications.Proceedings; +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.contenttypes.InProceedingsItem; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = InProceedingsItem.class) +public class InProceedingsRenderer extends AbstractPublicationRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ) { + final InProceedings paper; + if (publication instanceof InProceedings) { + paper = (InProceedings) publication; + } else { + return; + } + + publicationData.put("", paper.getEndPage()); + publicationData.put( + "proceedings", renderProceedings(paper.getProceedings(), language) + ); + publicationData.put("", paper.getStartPage()); + } + + private Map renderProceedings( + final Proceedings proceedings, final Locale language + ) { + final Map data = new HashMap<>(); + + data.put( + "authors", + proceedings + .getAuthorships() + .stream() + .map(this::renderAuthorship) + .collect(Collectors.toList()) + ); + + data.put("edition", proceedings.getEdition()); + data.put("endDate", proceedings.getEndDate()); + data.put("isbn10", proceedings.getIsbn10()); + data.put("isbn13", proceedings.getIsbn13()); + data.put( + "languageOfPublication", + proceedings.getLanguageOfPublication().toString() + ); + data.put("misc", proceedings.getMisc().getValue(language)); + data.put("nameOfConference", proceedings.getNameOfConference()); + data.put("numberOfPages", proceedings.getNumberOfPages()); + data.put("numberOfVolumes", proceedings.getNumberOfVolumes()); + data.put("organizer", renderOrganization(proceedings.getOrganizer())); + data.put("peerReviewed", proceedings.getPeerReviewed()); + data.put("placeOfConference", proceedings.getPlaceOfConference()); + data.put( + "abstract", proceedings.getPublicationAbstract().getValue(language) + ); + data.put("publicationId", proceedings.getPublicationId()); + data.put("publisher", renderPublisher(proceedings.getPublisher())); + data.put( + "shortDescription", + proceedings.getShortDescription().getValue(language) + ); + data.put("startDate", proceedings.getStartDate()); + data.put("title", proceedings.getTitle().getValue(language)); + data.put("uuid", proceedings.getUuid()); + data.put("volume", proceedings.getVolume()); + data.put("yearFirstPublished", proceedings.getYearFirstPublished()); + data.put("yearOfPublication", proceedings.getYearOfPublication()); + + return data; + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/InternetArticleRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/InternetArticleRenderer.java new file mode 100644 index 0000000..5436fd3 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/InternetArticleRenderer.java @@ -0,0 +1,54 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.InternetArticle; +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.contenttypes.InternetArticleItem; + +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = InternetArticleItem.class) +public class InternetArticleRenderer extends AbstractPublicationRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ) { + final InternetArticle article; + if (publication instanceof InternetArticle) { + article = (InternetArticle) publication; + } else { + return; + } + + + publicationData.put("doi", article.getDoi()); + publicationData.put("edition", article.getEdition()); + publicationData.put("issn", article.getIssn()); + publicationData.put("lastAccessed", article.getLastAccessed()); + publicationData.put("number", article.getNumber()); + publicationData.put("numberOfPages", article.getNumberOfPages()); + publicationData.put( + "organization", renderOrganization(article.getOrganization()) + ); + publicationData.put("place", article.getPlace()); + publicationData.put("publicationDate", article.getPublicationDate()); + publicationData.put("url", article.getUrl()); + publicationData.put("urn", article.getUrn()); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/MonographRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/MonographRenderer.java new file mode 100644 index 0000000..7e87fd4 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/MonographRenderer.java @@ -0,0 +1,40 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.Monograph; +import org.scientificcms.publications.PublicationWithPublisher; +import org.scientificcms.publications.contenttypes.MonographItem; + +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = MonographItem.class) +public class MonographRenderer extends AbstractPublicationWithPublisherRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublicationWithPublisher( + final PublicationWithPublisher publication, + final Locale language, + final Map publicationData + ) { + final Monograph monograph; + if (publication instanceof Monograph) { + monograph = (Monograph) publication; + }else { + return; + } + publicationData.put("reviewed", monograph.getReviewed()); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ProceedingsRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ProceedingsRenderer.java new file mode 100644 index 0000000..85c50ad --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/ProceedingsRenderer.java @@ -0,0 +1,97 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.InProceedings; +import org.scientificcms.publications.Proceedings; +import org.scientificcms.publications.PublicationWithPublisher; +import org.scientificcms.publications.contenttypes.ProceedingsItem; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = ProceedingsItem.class) +public class ProceedingsRenderer + extends AbstractPublicationWithPublisherRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublicationWithPublisher( + final PublicationWithPublisher publication, + final Locale language, + final Map publicationData + ) { + final Proceedings proceedings; + if (publication instanceof Proceedings) { + proceedings = (Proceedings) publication; + } else { + return; + } + + publicationData.put("endDate", proceedings.getEndDate()); + publicationData.put( + "nameOfConference", proceedings.getNameOfConference() + ); + publicationData.put( + "organizer", renderOrganization(proceedings.getOrganizer()) + ); + publicationData.put( + "papers", + proceedings + .getPapers() + .stream() + .map(paper -> renderPaper(paper, language)) + .collect(Collectors.toList()) + ); + publicationData.put( + "placeOfConference", proceedings.getPlaceOfConference() + ); + publicationData.put("startDate", proceedings.getStartDate()); + } + + private Map renderPaper( + final InProceedings paper, final Locale language + ) { + final Map data = new HashMap<>(); + + data.put( + "authors", + paper + .getAuthorships() + .stream() + .map(this::renderAuthorship) + .collect(Collectors.toList()) + ); + data.put("endPage", paper.getEndPage()); + data.put( + "languageOfPublication", + paper.getLanguageOfPublication().toString() + ); + data.put("misc", paper.getMisc().getValue(language)); + data.put("peerReviewed", paper.getPeerReviewed()); + data.put("abstract", paper.getPublicationAbstract().getValue(language)); + data.put("publicationId", paper.getPublicationId()); + data.put( + "shortDescription", paper.getShortDescription().getValue(language) + ); + data.put("startPage", paper.getStartPage()); + data.put("title", paper.getTitle().getValue(language)); + data.put("uuid", paper.getUuid()); + data.put("yearFirstPublished", paper.getYearFirstPublished()); + data.put("yearOfPublication", paper.getYearOfPublication()); + + return data; + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/TalkRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/TalkRenderer.java new file mode 100644 index 0000000..c4820c2 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/TalkRenderer.java @@ -0,0 +1,43 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.Talk; +import org.scientificcms.publications.contenttypes.TalkItem; + +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = TalkItem.class) +public class TalkRenderer extends AbstractPublicationRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderPublication( + final Publication publication, + final Locale language, + final Map publicationData + ) { + final Talk talk; + if (publication instanceof Talk) { + talk = (Talk) publication; + } else { + return; + } + + publicationData.put("dateOfTalk", talk.getDateOfTalk()); + publicationData.put("event", talk.getEvent()); + publicationData.put("place", talk.getPlace()); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/WorkingPaperRenderer.java b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/WorkingPaperRenderer.java new file mode 100644 index 0000000..567f16e --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/pagemodel/contentitems/WorkingPaperRenderer.java @@ -0,0 +1,33 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.scientificcms.pagemodel.contentitems; + +import org.librecms.pagemodel.contentitems.ContentItemRenderer; +import org.scientificcms.publications.UnPublished; +import org.scientificcms.publications.contenttypes.WorkingPaperItem; + +import java.util.Locale; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + */ +@ContentItemRenderer(renders = WorkingPaperItem.class) +public class WorkingPaperRenderer extends AbstractUnPublishedRenderer { + + private static final long serialVersionUID = 1L; + + @Override + protected void renderUnPublished( + final UnPublished unPublished, + final Locale language, + final Map publicationData + ) { + // Nothing + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Talk.java b/sci-publications/src/main/java/org/scientificcms/publications/Talk.java index 154c74f..a539689 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/Talk.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/Talk.java @@ -5,7 +5,6 @@ */ package org.scientificcms.publications; -import org.hibernate.annotations.CollectionId; import org.hibernate.envers.Audited; import java.time.LocalDate;