ImExporters for Publication entities
parent
059f9f8607
commit
08fc4f8e6c
|
|
@ -0,0 +1,42 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.AbstractEntityImExporter;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
* @param <T> The publication type.
|
||||||
|
*/
|
||||||
|
public abstract class AbstractPublicationImExporter<T extends Publication>
|
||||||
|
extends AbstractEntityImExporter<T> {
|
||||||
|
|
||||||
|
@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()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
* @param <T> Type of publication.
|
||||||
|
*/
|
||||||
|
public abstract class AbstractPublicationWithPublisherImExporter<T extends PublicationWithPublisher>
|
||||||
|
extends AbstractPublicationImExporter<T> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected final void init() {
|
||||||
|
addRequiredEntities(
|
||||||
|
Set.of(
|
||||||
|
Publisher.class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
initPublicationWithPublisherImExporter();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void initPublicationWithPublisherImExporter();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.librecms.assets.Organization;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
* @param <T> Subtype of {@link UnPublished}.
|
||||||
|
*/
|
||||||
|
public abstract class AbstractUnPublishedImExporter<T extends UnPublished>
|
||||||
|
extends AbstractPublicationImExporter<T> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected final void init() {
|
||||||
|
addRequiredEntities(
|
||||||
|
Set.of(Organization.class)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void initUnPublishedImExporter();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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;
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
|
|
|
||||||
|
|
@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(ArticleInCollectedVolume.class)
|
||||||
|
public class ArticleInCollectedVolumeImExporter
|
||||||
|
extends AbstractPublicationImExporter<ArticleInCollectedVolume>{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<ArticleInCollectedVolume> getEntityClass() {
|
||||||
|
return ArticleInCollectedVolume.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected void init() {
|
||||||
|
addRequiredEntities(
|
||||||
|
Set.of(
|
||||||
|
CollectedVolume.class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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;
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
|
|
|
||||||
|
|
@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(ArticleInJournal.class)
|
||||||
|
public class ArticleInJournalImExporter
|
||||||
|
extends AbstractPublicationImExporter<ArticleInJournal> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<ArticleInJournal> getEntityClass() {
|
||||||
|
return ArticleInJournal.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected void init() {
|
||||||
|
addRequiredEntities(
|
||||||
|
Set.of(
|
||||||
|
Journal.class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -18,6 +18,7 @@ import org.scientificcms.publications.contenttypes.WorkingPaperItem;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
|
|
@ -37,6 +38,7 @@ public class AuthorshipImExporter
|
||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@PostConstruct
|
||||||
protected void init() {
|
protected void init() {
|
||||||
addRequiredEntities(
|
addRequiredEntities(
|
||||||
Set.of(
|
Set.of(
|
||||||
|
|
|
||||||
|
|
@ -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;
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
|
import javax.enterprise.context.RequestScoped;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(CollectedVolume.class)
|
||||||
|
public class CollectedVolumeImExporter
|
||||||
|
extends AbstractPublicationWithPublisherImExporter<CollectedVolume> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<CollectedVolume> getEntityClass() {
|
||||||
|
return CollectedVolume.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initPublicationWithPublisherImExporter() {
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(Expertise.class)
|
||||||
|
public class ExpertiseImExporter
|
||||||
|
extends AbstractPublicationImExporter<Expertise>{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Expertise> getEntityClass() {
|
||||||
|
return Expertise.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected void init() {
|
||||||
|
addRequiredEntities(
|
||||||
|
Set.of(
|
||||||
|
Organization.class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import javax.enterprise.context.RequestScoped;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(GreyLiterature.class)
|
||||||
|
public class GreyLiteratureImExporter
|
||||||
|
extends AbstractUnPublishedImExporter<GreyLiterature> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<GreyLiterature> getEntityClass() {
|
||||||
|
return GreyLiterature.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected void initUnPublishedImExporter() {
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(InProceedings.class)
|
||||||
|
public class InProceedingsImExporter
|
||||||
|
extends AbstractPublicationImExporter<InProceedings> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<InProceedings> getEntityClass() {
|
||||||
|
return InProceedings.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected void init() {
|
||||||
|
addRequiredEntities(
|
||||||
|
Set.of(
|
||||||
|
Proceedings.class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.librecms.assets.Organization;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class InternetArticleImExporter
|
||||||
|
extends AbstractPublicationImExporter<InternetArticle> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<InternetArticle> getEntityClass() {
|
||||||
|
return InternetArticle.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected void init() {
|
||||||
|
addRequiredEntities(
|
||||||
|
Set.of(
|
||||||
|
Organization.class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
import org.libreccm.l10n.LocalizedString;
|
import org.libreccm.l10n.LocalizedString;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -56,7 +57,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
|
||||||
resolver = JournalIdResolver.class,
|
resolver = JournalIdResolver.class,
|
||||||
property = "uuid"
|
property = "uuid"
|
||||||
)
|
)
|
||||||
public class Journal implements Serializable {
|
public class Journal implements Exportable, Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(Journal.class)
|
||||||
|
public class JournalImExporter
|
||||||
|
extends AbstractEntityImExporter<Journal> {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private JournalRepository journalRepo;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Journal> 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()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import javax.enterprise.context.RequestScoped;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(Monograph.class)
|
||||||
|
public class MonographImExporter
|
||||||
|
extends AbstractPublicationWithPublisherImExporter<Monograph> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Monograph> getEntityClass() {
|
||||||
|
return Monograph.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected void initPublicationWithPublisherImExporter() {
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.librecms.assets.Organization;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class ProceedingsImExporter
|
||||||
|
extends AbstractPublicationWithPublisherImExporter<Proceedings> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Proceedings> getEntityClass() {
|
||||||
|
return Proceedings.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initPublicationWithPublisherImExporter() {
|
||||||
|
addRequiredEntities(
|
||||||
|
Set.of(
|
||||||
|
Organization.class
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -11,6 +11,7 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.hibernate.annotations.NamedQueries;
|
import org.hibernate.annotations.NamedQueries;
|
||||||
import org.hibernate.annotations.NamedQuery;
|
import org.hibernate.annotations.NamedQuery;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
import org.libreccm.l10n.LocalizedString;
|
import org.libreccm.l10n.LocalizedString;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -101,7 +102,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
|
||||||
resolver = PublicationIdResolver.class,
|
resolver = PublicationIdResolver.class,
|
||||||
property = "uuid"
|
property = "uuid"
|
||||||
)
|
)
|
||||||
public class Publication implements Serializable {
|
public class Publication implements Exportable, Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,6 @@ package org.scientificcms.publications;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
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 com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
import org.libreccm.l10n.LocalizedString;
|
import org.libreccm.l10n.LocalizedString;
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -51,7 +52,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
|
||||||
resolver = PublisherIdResolver.class,
|
resolver = PublisherIdResolver.class,
|
||||||
property = "uuid"
|
property = "uuid"
|
||||||
)
|
)
|
||||||
public class Publisher implements Serializable {
|
public class Publisher implements Exportable, Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(Publisher.class)
|
||||||
|
public class PublisherImExporter extends AbstractEntityImExporter<Publisher> {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private PublisherRepository publisherRepo;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Publisher> 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()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
import org.libreccm.l10n.LocalizedString;
|
import org.libreccm.l10n.LocalizedString;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -50,7 +51,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
|
||||||
resolver = SeriesIdResolver.class,
|
resolver = SeriesIdResolver.class,
|
||||||
property = "uuid"
|
property = "uuid"
|
||||||
)
|
)
|
||||||
public class Series implements Serializable {
|
public class Series implements Exportable, Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(Series.class)
|
||||||
|
public class SeriesImExporter extends AbstractEntityImExporter<Series> {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private SeriesRepository seriesRepo;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Series> 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()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import javax.enterprise.context.RequestScoped;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(Talk.class)
|
||||||
|
public class TalkImExporter extends AbstractPublicationImExporter<Talk> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<Talk> getEntityClass() {
|
||||||
|
return Talk.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@PostConstruct
|
||||||
|
protected void init() {
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -18,6 +18,7 @@ import org.scientificcms.publications.contenttypes.WorkingPaperItem;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
|
|
@ -37,6 +38,7 @@ public class VolumeInSeriesImExporter
|
||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@PostConstruct
|
||||||
protected void init() {
|
protected void init() {
|
||||||
addRequiredEntities(
|
addRequiredEntities(
|
||||||
Set.of(
|
Set.of(
|
||||||
|
|
|
||||||
|
|
@ -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;
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.scientificcms.publications;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
|
import javax.enterprise.context.RequestScoped;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(WorkingPaper.class)
|
||||||
|
public class WorkingPaperImExporter
|
||||||
|
extends AbstractUnPublishedImExporter<WorkingPaper>{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<WorkingPaper> getEntityClass() {
|
||||||
|
return WorkingPaper.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initUnPublishedImExporter() {
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package org.scientificcms.publications.assets;
|
package org.scientificcms.publications.assets;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
import org.librecms.assets.AssetType;
|
import org.librecms.assets.AssetType;
|
||||||
import org.librecms.contentsection.Asset;
|
import org.librecms.contentsection.Asset;
|
||||||
|
|
@ -48,6 +49,7 @@ public class CollectedVolumeAsset
|
||||||
CascadeType.REFRESH
|
CascadeType.REFRESH
|
||||||
})
|
})
|
||||||
@JoinColumn(name = "COLLECTED_VOLUME_ID")
|
@JoinColumn(name = "COLLECTED_VOLUME_ID")
|
||||||
|
@JsonIdentityReference(alwaysAsId = true)
|
||||||
private CollectedVolume collectedVolume;
|
private CollectedVolume collectedVolume;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
package org.scientificcms.publications.assets;
|
package org.scientificcms.publications.assets;
|
||||||
|
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
import org.librecms.assets.AssetType;
|
import org.librecms.assets.AssetType;
|
||||||
import org.librecms.contentsection.Asset;
|
import org.librecms.contentsection.Asset;
|
||||||
|
|
@ -53,6 +54,7 @@ public class JournalAsset extends Asset {
|
||||||
CascadeType.REFRESH
|
CascadeType.REFRESH
|
||||||
})
|
})
|
||||||
@JoinColumn(name = "JOURNAL_ID")
|
@JoinColumn(name = "JOURNAL_ID")
|
||||||
|
@JsonIdentityReference(alwaysAsId = true)
|
||||||
private Journal journal;
|
private Journal journal;
|
||||||
|
|
||||||
public Journal getJournal() {
|
public Journal getJournal() {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package org.scientificcms.publications.assets;
|
package org.scientificcms.publications.assets;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
import org.librecms.assets.AssetType;
|
import org.librecms.assets.AssetType;
|
||||||
import org.librecms.contentsection.Asset;
|
import org.librecms.contentsection.Asset;
|
||||||
|
|
@ -48,6 +49,7 @@ public class ProceedingsAsset
|
||||||
CascadeType.REFRESH
|
CascadeType.REFRESH
|
||||||
})
|
})
|
||||||
@JoinColumn(name = "PROCEEDINGS_ID")
|
@JoinColumn(name = "PROCEEDINGS_ID")
|
||||||
|
@JsonIdentityReference(alwaysAsId = true)
|
||||||
private Proceedings proceedings;
|
private Proceedings proceedings;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package org.scientificcms.publications.assets;
|
package org.scientificcms.publications.assets;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
import org.librecms.assets.AssetType;
|
import org.librecms.assets.AssetType;
|
||||||
import org.librecms.contentsection.Asset;
|
import org.librecms.contentsection.Asset;
|
||||||
|
|
@ -48,6 +49,7 @@ public class PublisherAsset extends Asset {
|
||||||
CascadeType.REFRESH
|
CascadeType.REFRESH
|
||||||
})
|
})
|
||||||
@JoinColumn(name = "PUBLISHER_ID")
|
@JoinColumn(name = "PUBLISHER_ID")
|
||||||
|
@JsonIdentityReference(alwaysAsId = true)
|
||||||
private Publisher publisher;
|
private Publisher publisher;
|
||||||
|
|
||||||
public Publisher getPublisher() {
|
public Publisher getPublisher() {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
package org.scientificcms.publications.assets;
|
package org.scientificcms.publications.assets;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
import org.librecms.assets.AssetType;
|
import org.librecms.assets.AssetType;
|
||||||
import org.librecms.contentsection.Asset;
|
import org.librecms.contentsection.Asset;
|
||||||
|
|
@ -51,6 +52,7 @@ public class SeriesAsset extends Asset {
|
||||||
CascadeType.REFRESH
|
CascadeType.REFRESH
|
||||||
})
|
})
|
||||||
@JoinColumn(name = "SERIES_ID")
|
@JoinColumn(name = "SERIES_ID")
|
||||||
|
@JsonIdentityReference(alwaysAsId = true)
|
||||||
private Series series;
|
private Series series;
|
||||||
|
|
||||||
public Series getSeries() {
|
public Series getSeries() {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
package org.scientificcms.publications.contenttypes;
|
||||||
|
|
||||||
import org.librecms.contenttypes.ContentTypeDescription;
|
import org.librecms.contenttypes.ContentTypeDescription;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
package org.scientificcms.publications.contenttypes;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIdentityReference;
|
||||||
import org.hibernate.envers.Audited;
|
import org.hibernate.envers.Audited;
|
||||||
import org.librecms.contentsection.ContentItem;
|
import org.librecms.contentsection.ContentItem;
|
||||||
import org.scientificcms.publications.Publication;
|
import org.scientificcms.publications.Publication;
|
||||||
|
|
@ -49,6 +45,7 @@ public class PublicationItem<T extends Publication> extends ContentItem {
|
||||||
fetch = FetchType.LAZY,
|
fetch = FetchType.LAZY,
|
||||||
targetEntity = Publication.class
|
targetEntity = Publication.class
|
||||||
)
|
)
|
||||||
|
@JsonIdentityReference(alwaysAsId = true)
|
||||||
private T publication;
|
private T publication;
|
||||||
|
|
||||||
public T getPublication() {
|
public T getPublication() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue