Updated ImExporters for assets in sci-types-publications to implement

new interface.
master
Jens Pelzetter 2023-01-22 08:59:23 +01:00
parent 764689066a
commit 9b4f077088
6 changed files with 50 additions and 104 deletions

View File

@ -5,7 +5,6 @@
*/ */
package org.scientificcms.publications.assets; package org.scientificcms.publications.assets;
import com.fasterxml.jackson.annotation.JsonIdentityReference; 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;
@ -48,11 +47,14 @@ public class JournalAsset extends Asset {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@OneToOne(cascade = {CascadeType.DETACH, @OneToOne(
CascadeType.MERGE, cascade = {
CascadeType.PERSIST, CascadeType.DETACH,
CascadeType.REFRESH CascadeType.MERGE,
}) CascadeType.PERSIST,
CascadeType.REFRESH
}
)
@JoinColumn(name = "JOURNAL_ID") @JoinColumn(name = "JOURNAL_ID")
@JsonIdentityReference(alwaysAsId = true) @JsonIdentityReference(alwaysAsId = true)
private Journal journal; private Journal journal;

View File

@ -1,17 +1,12 @@
package org.scientificcms.publications.assets; package org.scientificcms.publications.assets;
import org.libreccm.imexport.AbstractEntityImExporter;
import org.libreccm.imexport.Processes; import org.libreccm.imexport.Processes;
import org.librecms.contentsection.AssetRepository; import org.librecms.assets.AbstractAssetImExporter;
import org.scientificcms.publications.Journal; import org.scientificcms.publications.Journal;
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.transaction.Transactional;
/** /**
* Importer/Exporter for {@link JournalAsset}s. * Importer/Exporter for {@link JournalAsset}s.
@ -21,14 +16,10 @@ import javax.transaction.Transactional;
@RequestScoped @RequestScoped
@Processes(JournalAsset.class) @Processes(JournalAsset.class)
public class JournalAssetImExporter public class JournalAssetImExporter
extends AbstractEntityImExporter<JournalAsset> { extends AbstractAssetImExporter<JournalAsset> {
@Inject
private AssetRepository assetRepo;
@PostConstruct
@Override @Override
protected void init() { protected void initAssetImExporter() {
addRequiredEntities(Set.of(Journal.class)); addRequiredEntities(Set.of(Journal.class));
} }
@ -38,23 +29,11 @@ public class JournalAssetImExporter
} }
@Override @Override
@Transactional(Transactional.TxType.REQUIRED) protected void updateExistingAsset(
protected void saveImportedEntity(final JournalAsset entity) { final JournalAsset exisitingAsset,
assetRepo.save(entity); final JournalAsset importedAsset
} ) {
// Nothing to update in JournalAsset
@Override
protected JournalAsset reloadEntity(final JournalAsset entity) {
return assetRepo
.findById(entity.getObjectId(), getEntityClass())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"The JournalAsset %s was not found in the database.",
Objects.toString(entity)
)
)
);
} }
} }

View File

@ -43,11 +43,14 @@ public class PublisherAsset extends Asset {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@OneToOne(cascade = {CascadeType.DETACH, @OneToOne(
CascadeType.MERGE, cascade = {
CascadeType.PERSIST, CascadeType.DETACH,
CascadeType.REFRESH CascadeType.MERGE,
}) CascadeType.PERSIST,
CascadeType.REFRESH
}
)
@JoinColumn(name = "PUBLISHER_ID") @JoinColumn(name = "PUBLISHER_ID")
@JsonIdentityReference(alwaysAsId = true) @JsonIdentityReference(alwaysAsId = true)
private Publisher publisher; private Publisher publisher;

View File

@ -1,17 +1,12 @@
package org.scientificcms.publications.assets; package org.scientificcms.publications.assets;
import org.libreccm.imexport.AbstractEntityImExporter;
import org.libreccm.imexport.Processes; import org.libreccm.imexport.Processes;
import org.librecms.contentsection.AssetRepository; import org.librecms.assets.AbstractAssetImExporter;
import org.scientificcms.publications.Publisher; import org.scientificcms.publications.Publisher;
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.transaction.Transactional;
/** /**
* *
@ -20,14 +15,10 @@ import javax.transaction.Transactional;
@RequestScoped @RequestScoped
@Processes(PublisherAsset.class) @Processes(PublisherAsset.class)
public class PublisherAssetImExporter public class PublisherAssetImExporter
extends AbstractEntityImExporter<PublisherAsset> { extends AbstractAssetImExporter<PublisherAsset> {
@Inject
private AssetRepository assetRepo;
@PostConstruct
@Override @Override
protected void init() { protected void initAssetImExporter() {
addRequiredEntities(Set.of(Publisher.class)); addRequiredEntities(Set.of(Publisher.class));
} }
@ -37,23 +28,11 @@ public class PublisherAssetImExporter
} }
@Override @Override
@Transactional(Transactional.TxType.REQUIRED) protected void updateExistingAsset(
protected void saveImportedEntity(final PublisherAsset entity) { final PublisherAsset existingAsset,
assetRepo.save(entity); final PublisherAsset importedAsset
} ) {
// Nothing to update in PublishAsset
@Override
protected PublisherAsset reloadEntity(final PublisherAsset entity) {
return assetRepo
.findById(entity.getObjectId(), getEntityClass())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"The JournalAsset %s was not found in the database.",
Objects.toString(entity)
)
)
);
} }
} }

View File

@ -46,11 +46,14 @@ public class SeriesAsset extends Asset {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@OneToOne(cascade = {CascadeType.DETACH, @OneToOne(
CascadeType.MERGE, cascade = {
CascadeType.PERSIST, CascadeType.DETACH,
CascadeType.REFRESH CascadeType.MERGE,
}) CascadeType.PERSIST,
CascadeType.REFRESH
}
)
@JoinColumn(name = "SERIES_ID") @JoinColumn(name = "SERIES_ID")
@JsonIdentityReference(alwaysAsId = true) @JsonIdentityReference(alwaysAsId = true)
private Series series; private Series series;

View File

@ -1,17 +1,12 @@
package org.scientificcms.publications.assets; package org.scientificcms.publications.assets;
import org.libreccm.imexport.AbstractEntityImExporter;
import org.libreccm.imexport.Processes; import org.libreccm.imexport.Processes;
import org.librecms.contentsection.AssetRepository; import org.librecms.assets.AbstractAssetImExporter;
import org.scientificcms.publications.Series; import org.scientificcms.publications.Series;
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.transaction.Transactional;
/** /**
* *
@ -19,15 +14,11 @@ import javax.transaction.Transactional;
*/ */
@RequestScoped @RequestScoped
@Processes(PublisherAsset.class) @Processes(PublisherAsset.class)
public class SeriesAssetImExporter public class SeriesAssetImExporter
extends AbstractEntityImExporter<SeriesAsset> { extends AbstractAssetImExporter<SeriesAsset> {
@Inject
private AssetRepository assetRepo;
@PostConstruct
@Override @Override
protected void init() { protected void initAssetImExporter() {
addRequiredEntities(Set.of(Series.class)); addRequiredEntities(Set.of(Series.class));
} }
@ -37,24 +28,13 @@ extends AbstractEntityImExporter<SeriesAsset> {
} }
@Override @Override
@Transactional(Transactional.TxType.REQUIRED) protected void updateExistingAsset(
protected void saveImportedEntity(final SeriesAsset entity) { final SeriesAsset existingAsset,
assetRepo.save(entity); final SeriesAsset importedAsset
) {
// Nothing to update in SeriesAsset
} }
@Override
protected SeriesAsset reloadEntity(final SeriesAsset entity) {
return assetRepo
.findById(entity.getObjectId(), getEntityClass())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"The JournalAsset %s was not found in the database.",
Objects.toString(entity)
)
)
);
}
} }