diff --git a/sci-publications/src/main/java/org/scientificcms/publications/AbstractPublicationImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/AbstractPublicationImExporter.java
new file mode 100644
index 0000000..d6375b0
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/AbstractPublicationImExporter.java
@@ -0,0 +1,42 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.AbstractEntityImExporter;
+
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Jens Pelzetter
+ * @param The publication type.
+ */
+public abstract class AbstractPublicationImExporter
+ extends AbstractEntityImExporter {
+
+ @Inject
+ private PublicationRepository publicationRepo;
+
+ @Override
+ protected void saveImportedEntity(final Publication publication) {
+ publicationRepo.save(publication);
+ }
+
+ @Override
+ protected T reloadEntity(final T publication) {
+ return publicationRepo
+ .findByIdAndType(
+ publication.getPublicationId(),
+ getEntityClass()
+ )
+ .orElseThrow(
+ () -> new IllegalArgumentException(
+ String.format(
+ "No publication of type %s with ID %d found in "
+ + "the database.",
+ publication.getClass().getName(),
+ publication.getPublicationId()
+ )
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/AbstractPublicationWithPublisherImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/AbstractPublicationWithPublisherImExporter.java
new file mode 100644
index 0000000..2c4335d
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/AbstractPublicationWithPublisherImExporter.java
@@ -0,0 +1,28 @@
+package org.scientificcms.publications;
+
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+
+/**
+ *
+ * @author Jens Pelzetter
+ * @param Type of publication.
+ */
+public abstract class AbstractPublicationWithPublisherImExporter
+ extends AbstractPublicationImExporter {
+
+ @Override
+ @PostConstruct
+ protected final void init() {
+ addRequiredEntities(
+ Set.of(
+ Publisher.class
+ )
+ );
+ initPublicationWithPublisherImExporter();
+ }
+
+ protected abstract void initPublicationWithPublisherImExporter();
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/AbstractUnPublishedImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/AbstractUnPublishedImExporter.java
new file mode 100644
index 0000000..30319d0
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/AbstractUnPublishedImExporter.java
@@ -0,0 +1,24 @@
+package org.scientificcms.publications;
+
+import org.librecms.assets.Organization;
+
+import java.util.Set;
+
+/**
+ *
+ * @author Jens Pelzetter
+ * @param Subtype of {@link UnPublished}.
+ */
+public abstract class AbstractUnPublishedImExporter
+ extends AbstractPublicationImExporter {
+
+ @Override
+ protected final void init() {
+ addRequiredEntities(
+ Set.of(Organization.class)
+ );
+ }
+
+ protected abstract void initUnPublishedImExporter();
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolume.java b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolume.java
index d970e5b..91eecfc 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolume.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolume.java
@@ -1,8 +1,3 @@
-/*
- * 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.publications;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolumeImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolumeImExporter.java
new file mode 100644
index 0000000..ac10cae
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolumeImExporter.java
@@ -0,0 +1,36 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(ArticleInCollectedVolume.class)
+public class ArticleInCollectedVolumeImExporter
+extends AbstractPublicationImExporter{
+
+ @Override
+ public Class getEntityClass() {
+ return ArticleInCollectedVolume.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void init() {
+ addRequiredEntities(
+ Set.of(
+ CollectedVolume.class
+ )
+ );
+ }
+
+
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournal.java b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournal.java
index 93353fe..58945fa 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournal.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournal.java
@@ -1,8 +1,3 @@
-/*
- * 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.publications;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournalImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournalImExporter.java
new file mode 100644
index 0000000..85feed4
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournalImExporter.java
@@ -0,0 +1,34 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(ArticleInJournal.class)
+public class ArticleInJournalImExporter
+ extends AbstractPublicationImExporter {
+
+ @Override
+ public Class getEntityClass() {
+ return ArticleInJournal.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void init() {
+ addRequiredEntities(
+ Set.of(
+ Journal.class
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/AuthorshipImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/AuthorshipImExporter.java
index 62df69c..f521297 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/AuthorshipImExporter.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/AuthorshipImExporter.java
@@ -18,6 +18,7 @@ import org.scientificcms.publications.contenttypes.WorkingPaperItem;
import java.util.Objects;
import java.util.Set;
+import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
@@ -37,6 +38,7 @@ public class AuthorshipImExporter
private EntityManager entityManager;
@Override
+ @PostConstruct
protected void init() {
addRequiredEntities(
Set.of(
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java b/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java
index 4cf672a..6c04118 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java
@@ -1,8 +1,3 @@
-/*
- * 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.publications;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolumeImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolumeImExporter.java
new file mode 100644
index 0000000..5fef62c
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolumeImExporter.java
@@ -0,0 +1,26 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(CollectedVolume.class)
+public class CollectedVolumeImExporter
+ extends AbstractPublicationWithPublisherImExporter {
+
+ @Override
+ public Class getEntityClass() {
+ return CollectedVolume.class;
+ }
+
+ @Override
+ protected void initPublicationWithPublisherImExporter() {
+ // Nothing
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ExpertiseImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/ExpertiseImExporter.java
new file mode 100644
index 0000000..b48c739
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/ExpertiseImExporter.java
@@ -0,0 +1,35 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+import org.librecms.assets.Organization;
+
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(Expertise.class)
+public class ExpertiseImExporter
+ extends AbstractPublicationImExporter{
+
+ @Override
+ public Class getEntityClass() {
+ return Expertise.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void init() {
+ addRequiredEntities(
+ Set.of(
+ Organization.class
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/GreyLiteratureImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/GreyLiteratureImExporter.java
new file mode 100644
index 0000000..a5fca4d
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/GreyLiteratureImExporter.java
@@ -0,0 +1,28 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(GreyLiterature.class)
+public class GreyLiteratureImExporter
+ extends AbstractUnPublishedImExporter {
+
+ @Override
+ public Class getEntityClass() {
+ return GreyLiterature.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void initUnPublishedImExporter() {
+ // Nothing
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/InProceedingsImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/InProceedingsImExporter.java
new file mode 100644
index 0000000..fbcbc26
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/InProceedingsImExporter.java
@@ -0,0 +1,34 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(InProceedings.class)
+public class InProceedingsImExporter
+ extends AbstractPublicationImExporter {
+
+ @Override
+ public Class getEntityClass() {
+ return InProceedings.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void init() {
+ addRequiredEntities(
+ Set.of(
+ Proceedings.class
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/InternetArticleImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/InternetArticleImExporter.java
new file mode 100644
index 0000000..f318957
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/InternetArticleImExporter.java
@@ -0,0 +1,31 @@
+package org.scientificcms.publications;
+
+import org.librecms.assets.Organization;
+
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class InternetArticleImExporter
+ extends AbstractPublicationImExporter {
+
+ @Override
+ public Class getEntityClass() {
+ return InternetArticle.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void init() {
+ addRequiredEntities(
+ Set.of(
+ Organization.class
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Journal.java b/sci-publications/src/main/java/org/scientificcms/publications/Journal.java
index 8a378eb..5ba9b41 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/Journal.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/Journal.java
@@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.hibernate.envers.Audited;
+import org.libreccm.imexport.Exportable;
import org.libreccm.l10n.LocalizedString;
import java.io.Serializable;
@@ -56,7 +57,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
resolver = JournalIdResolver.class,
property = "uuid"
)
-public class Journal implements Serializable {
+public class Journal implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/JournalImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/JournalImExporter.java
new file mode 100644
index 0000000..146d688
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/JournalImExporter.java
@@ -0,0 +1,54 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.AbstractEntityImExporter;
+import org.libreccm.imexport.Processes;
+
+import java.util.Objects;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(Journal.class)
+public class JournalImExporter
+ extends AbstractEntityImExporter {
+
+ @Inject
+ private JournalRepository journalRepo;
+
+ @Override
+ public Class getEntityClass() {
+ return Journal.class;
+ }
+
+ @PostConstruct
+ @Override
+ protected void init() {
+ // Nothing
+ }
+
+ @Override
+ protected void saveImportedEntity(final Journal journal) {
+ journalRepo.save(journal);
+ }
+
+ @Override
+ protected Journal reloadEntity(final Journal journal) {
+ return journalRepo
+ .findById(Objects.requireNonNull(journal.getJournalId()))
+ .orElseThrow(
+ () -> new IllegalArgumentException(
+ String.format(
+ "No Journal with ID %d found in the database.",
+ journal.getJournalId()
+ )
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/MonographImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/MonographImExporter.java
new file mode 100644
index 0000000..f0a5c39
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/MonographImExporter.java
@@ -0,0 +1,28 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(Monograph.class)
+public class MonographImExporter
+ extends AbstractPublicationWithPublisherImExporter {
+
+ @Override
+ public Class getEntityClass() {
+ return Monograph.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void initPublicationWithPublisherImExporter() {
+ // Nothing
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ProceedingsImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/ProceedingsImExporter.java
new file mode 100644
index 0000000..7d8914c
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/ProceedingsImExporter.java
@@ -0,0 +1,28 @@
+package org.scientificcms.publications;
+
+import org.librecms.assets.Organization;
+
+import java.util.Set;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class ProceedingsImExporter
+ extends AbstractPublicationWithPublisherImExporter {
+
+ @Override
+ public Class getEntityClass() {
+ return Proceedings.class;
+ }
+
+ @Override
+ protected void initPublicationWithPublisherImExporter() {
+ addRequiredEntities(
+ Set.of(
+ Organization.class
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Publication.java b/sci-publications/src/main/java/org/scientificcms/publications/Publication.java
index 59965a0..f7b8fec 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/Publication.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/Publication.java
@@ -11,6 +11,7 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.hibernate.annotations.NamedQueries;
import org.hibernate.annotations.NamedQuery;
import org.hibernate.envers.Audited;
+import org.libreccm.imexport.Exportable;
import org.libreccm.l10n.LocalizedString;
import java.io.Serializable;
@@ -101,7 +102,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
resolver = PublicationIdResolver.class,
property = "uuid"
)
-public class Publication implements Serializable {
+public class Publication implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisher.java b/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisher.java
index 334ef7a..9b9248c 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisher.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisher.java
@@ -7,8 +7,6 @@ package org.scientificcms.publications;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.hibernate.envers.Audited;
import org.libreccm.l10n.LocalizedString;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Publisher.java b/sci-publications/src/main/java/org/scientificcms/publications/Publisher.java
index 93c06be..343eda4 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/Publisher.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/Publisher.java
@@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.hibernate.envers.Audited;
+import org.libreccm.imexport.Exportable;
import java.io.Serializable;
import java.util.ArrayList;
@@ -51,7 +52,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
resolver = PublisherIdResolver.class,
property = "uuid"
)
-public class Publisher implements Serializable {
+public class Publisher implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/PublisherImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/PublisherImExporter.java
new file mode 100644
index 0000000..b0a6db0
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/PublisherImExporter.java
@@ -0,0 +1,51 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.AbstractEntityImExporter;
+import org.libreccm.imexport.Processes;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(Publisher.class)
+public class PublisherImExporter extends AbstractEntityImExporter {
+
+ @Inject
+ private PublisherRepository publisherRepo;
+
+ @Override
+ public Class getEntityClass() {
+ return Publisher.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void init() {
+ // Nothing
+ }
+
+ @Override
+ protected void saveImportedEntity(final Publisher publisher) {
+ publisherRepo.save(publisher);
+ }
+
+ @Override
+ protected Publisher reloadEntity(final Publisher publisher) {
+ return publisherRepo
+ .findById(publisher.getPublisherId())
+ .orElseThrow(
+ () -> new IllegalArgumentException(
+ String.format(
+ "No Publisher with ID %d found in the database.",
+ publisher.getPublisherId()
+ )
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Series.java b/sci-publications/src/main/java/org/scientificcms/publications/Series.java
index b743800..43bb812 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/Series.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/Series.java
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.hibernate.envers.Audited;
+import org.libreccm.imexport.Exportable;
import org.libreccm.l10n.LocalizedString;
import java.io.Serializable;
@@ -50,7 +51,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
resolver = SeriesIdResolver.class,
property = "uuid"
)
-public class Series implements Serializable {
+public class Series implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/SeriesImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/SeriesImExporter.java
new file mode 100644
index 0000000..6aec517
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/SeriesImExporter.java
@@ -0,0 +1,53 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.AbstractEntityImExporter;
+import org.libreccm.imexport.Processes;
+
+import java.util.Objects;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(Series.class)
+public class SeriesImExporter extends AbstractEntityImExporter {
+
+ @Inject
+ private SeriesRepository seriesRepo;
+
+ @Override
+ public Class getEntityClass() {
+ return Series.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void init() {
+ // Nothing
+ }
+
+ @Override
+ protected void saveImportedEntity(final Series series) {
+ seriesRepo.save(series);
+ }
+
+ @Override
+ protected Series reloadEntity(final Series series) {
+ return seriesRepo
+ .findById(Objects.requireNonNull(series).getSeriesId())
+ .orElseThrow(
+ () -> new IllegalArgumentException(
+ String.format(
+ "No Series with ID %d found in the database.",
+ series.getSeriesId()
+ )
+ )
+ );
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/TalkImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/TalkImExporter.java
new file mode 100644
index 0000000..6f0f1f8
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/TalkImExporter.java
@@ -0,0 +1,27 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(Talk.class)
+public class TalkImExporter extends AbstractPublicationImExporter {
+
+ @Override
+ public Class getEntityClass() {
+ return Talk.class;
+ }
+
+ @Override
+ @PostConstruct
+ protected void init() {
+ // Nothing
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/VolumeInSeriesImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/VolumeInSeriesImExporter.java
index b735f3b..06d0ade 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/VolumeInSeriesImExporter.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/VolumeInSeriesImExporter.java
@@ -18,6 +18,7 @@ import org.scientificcms.publications.contenttypes.WorkingPaperItem;
import java.util.Objects;
import java.util.Set;
+import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
@@ -37,6 +38,7 @@ public class VolumeInSeriesImExporter
private EntityManager entityManager;
@Override
+ @PostConstruct
protected void init() {
addRequiredEntities(
Set.of(
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaper.java b/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaper.java
index 7da4f0a..6b111ef 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaper.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaper.java
@@ -1,8 +1,3 @@
-/*
- * 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.publications;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaperImExporter.java b/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaperImExporter.java
new file mode 100644
index 0000000..efb405f
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaperImExporter.java
@@ -0,0 +1,28 @@
+package org.scientificcms.publications;
+
+import org.libreccm.imexport.Processes;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@Processes(WorkingPaper.class)
+public class WorkingPaperImExporter
+ extends AbstractUnPublishedImExporter{
+
+ @Override
+ public Class getEntityClass() {
+ return WorkingPaper.class;
+ }
+
+ @Override
+ protected void initUnPublishedImExporter() {
+ // Nothing
+ }
+
+
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/CollectedVolumeAsset.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/CollectedVolumeAsset.java
index 8d84827..4f9bffd 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/assets/CollectedVolumeAsset.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/CollectedVolumeAsset.java
@@ -1,5 +1,6 @@
package org.scientificcms.publications.assets;
+import com.fasterxml.jackson.annotation.JsonIdentityReference;
import org.hibernate.envers.Audited;
import org.librecms.assets.AssetType;
import org.librecms.contentsection.Asset;
@@ -48,6 +49,7 @@ public class CollectedVolumeAsset
CascadeType.REFRESH
})
@JoinColumn(name = "COLLECTED_VOLUME_ID")
+ @JsonIdentityReference(alwaysAsId = true)
private CollectedVolume collectedVolume;
@Override
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/JournalAsset.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/JournalAsset.java
index b907dc2..0817d9d 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/assets/JournalAsset.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/JournalAsset.java
@@ -6,6 +6,7 @@
package org.scientificcms.publications.assets;
+import com.fasterxml.jackson.annotation.JsonIdentityReference;
import org.hibernate.envers.Audited;
import org.librecms.assets.AssetType;
import org.librecms.contentsection.Asset;
@@ -53,6 +54,7 @@ public class JournalAsset extends Asset {
CascadeType.REFRESH
})
@JoinColumn(name = "JOURNAL_ID")
+ @JsonIdentityReference(alwaysAsId = true)
private Journal journal;
public Journal getJournal() {
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/ProceedingsAsset.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/ProceedingsAsset.java
index f8463c9..a2544de 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/assets/ProceedingsAsset.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/ProceedingsAsset.java
@@ -1,5 +1,6 @@
package org.scientificcms.publications.assets;
+import com.fasterxml.jackson.annotation.JsonIdentityReference;
import org.hibernate.envers.Audited;
import org.librecms.assets.AssetType;
import org.librecms.contentsection.Asset;
@@ -48,6 +49,7 @@ public class ProceedingsAsset
CascadeType.REFRESH
})
@JoinColumn(name = "PROCEEDINGS_ID")
+ @JsonIdentityReference(alwaysAsId = true)
private Proceedings proceedings;
@Override
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/PublisherAsset.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/PublisherAsset.java
index d2213cd..4c02ac0 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/assets/PublisherAsset.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/PublisherAsset.java
@@ -1,5 +1,6 @@
package org.scientificcms.publications.assets;
+import com.fasterxml.jackson.annotation.JsonIdentityReference;
import org.hibernate.envers.Audited;
import org.librecms.assets.AssetType;
import org.librecms.contentsection.Asset;
@@ -48,6 +49,7 @@ public class PublisherAsset extends Asset {
CascadeType.REFRESH
})
@JoinColumn(name = "PUBLISHER_ID")
+ @JsonIdentityReference(alwaysAsId = true)
private Publisher publisher;
public Publisher getPublisher() {
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/SeriesAsset.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/SeriesAsset.java
index fcd46cd..b4e6aad 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/assets/SeriesAsset.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/SeriesAsset.java
@@ -5,6 +5,7 @@
*/
package org.scientificcms.publications.assets;
+import com.fasterxml.jackson.annotation.JsonIdentityReference;
import org.hibernate.envers.Audited;
import org.librecms.assets.AssetType;
import org.librecms.contentsection.Asset;
@@ -51,6 +52,7 @@ public class SeriesAsset extends Asset {
CascadeType.REFRESH
})
@JoinColumn(name = "SERIES_ID")
+ @JsonIdentityReference(alwaysAsId = true)
private Series series;
public Series getSeries() {
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ProceedingsItem.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ProceedingsItem.java
index 5b901a9..76cfbd8 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ProceedingsItem.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ProceedingsItem.java
@@ -1,8 +1,3 @@
-/*
- * 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.publications.contenttypes;
import org.librecms.contenttypes.ContentTypeDescription;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationItem.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationItem.java
index 77b7a43..3b3f95d 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationItem.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationItem.java
@@ -1,10 +1,6 @@
-/*
- * 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.publications.contenttypes;
+import com.fasterxml.jackson.annotation.JsonIdentityReference;
import org.hibernate.envers.Audited;
import org.librecms.contentsection.ContentItem;
import org.scientificcms.publications.Publication;
@@ -49,6 +45,7 @@ public class PublicationItem extends ContentItem {
fetch = FetchType.LAZY,
targetEntity = Publication.class
)
+ @JsonIdentityReference(alwaysAsId = true)
private T publication;
public T getPublication() {