From 96aee1917a4eaeed4a84dc87d6b98e20130bfd85 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 19 Oct 2019 14:24:38 +0200 Subject: [PATCH] SeriesAddForm and SeriesAsset --- .../ui/PublicationSeriesAddForm.java | 26 ++++--- .../ui/SciPublicationsController.java | 2 + .../publications/assets/PublisherAsset.java | 2 +- .../publications/assets/SeriesAsset.java | 76 ++++++++++++++++++- 4 files changed, 93 insertions(+), 13 deletions(-) diff --git a/sci-publications/src/main/java/com/arsdigita/cms/contenttypes/ui/PublicationSeriesAddForm.java b/sci-publications/src/main/java/com/arsdigita/cms/contenttypes/ui/PublicationSeriesAddForm.java index 9b759bd..dfc3325 100644 --- a/sci-publications/src/main/java/com/arsdigita/cms/contenttypes/ui/PublicationSeriesAddForm.java +++ b/sci-publications/src/main/java/com/arsdigita/cms/contenttypes/ui/PublicationSeriesAddForm.java @@ -21,8 +21,12 @@ import com.arsdigita.globalization.GlobalizedMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.libreccm.cdi.utils.CdiUtil; +import org.scientificcms.publications.PublicationManager; import org.scientificcms.publications.SciPublicationsConfig; import org.scientificcms.publications.SciPublicationsConstants; +import org.scientificcms.publications.Series; +import org.scientificcms.publications.assets.SeriesAsset; import org.scientificcms.publications.contenttypes.PublicationItem; /** @@ -61,7 +65,7 @@ public class PublicationSeriesAddForm seriesSearchWidget = new AssetSearchWidget( SERIES_SEARCH, - Series.class + SeriesAsset.class ); seriesSearchWidget.setLabel( new GlobalizedMessage( @@ -100,18 +104,20 @@ public class PublicationSeriesAddForm final PageState state = event.getPageState(); final PublicationItem item - = (PublicationItem) getItemSelectionModel(). - getSelectedObject(state); + = (PublicationItem) getItemSelectionModel() + .getSelectedObject(state); if (!(getSaveCancelSection().getCancelButton().isSelected(state))) { - - Series series = (Series) data.get(ITEM_SEARCH); - series = (Series) series.getContentBundle().getInstance(item. - getLanguage()); - item.addSeries(series, (String) data.get( - VolumeInSeriesCollection.VOLUME_OF_SERIES)); - m_itemSearch.publishCreatedItem(data, series); + Series series = (Series) data.get(SERIES_SEARCH); + + final PublicationManager publicationManager = CdiUtil + .createCdiUtil().findBean(PublicationManager.class); + publicationManager.addSeries( + series, + item.getPublication(), + (String) volumeOfSeries.getValue(state) + ); } init(event); diff --git a/sci-publications/src/main/java/com/arsdigita/cms/contenttypes/ui/SciPublicationsController.java b/sci-publications/src/main/java/com/arsdigita/cms/contenttypes/ui/SciPublicationsController.java index e02f621..3eac2c4 100644 --- a/sci-publications/src/main/java/com/arsdigita/cms/contenttypes/ui/SciPublicationsController.java +++ b/sci-publications/src/main/java/com/arsdigita/cms/contenttypes/ui/SciPublicationsController.java @@ -59,6 +59,8 @@ class SciPublicationsController implements Serializable { public static final String AUTHORSHIP_IS_EDITOR = "isEditor"; public static final String AUTHORSHIP_ORDER = "order"; + + public static final String VOLUME_OF_SERIES = "volumeOfSeries"; @Inject private PersonRepository personRepository; 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 cf2b413..49f98d1 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 @@ -26,7 +26,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*; * @author Jens Pelzetter */ @Entity -@Table(name = "PUBLISHERS", schema = DB_SCHEMA) +@Table(name = "PUBLISHER_ASSETS", schema = DB_SCHEMA) @Audited public class PublisherAsset extends Asset { 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 0ab00a4..23b975c 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,13 +5,85 @@ */ package org.scientificcms.publications.assets; +import org.hibernate.envers.Audited; +import org.librecms.contentsection.Asset; +import org.scientificcms.publications.Series; + +import java.util.Objects; + +import javax.persistence.CascadeType; import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import static org.scientificcms.publications.SciPublicationsConstants.*; /** * * @author Jens Pelzetter */ @Entity -public class SeriesAsset { - +@Table(name = "SERIES_ASSETS", schema = DB_SCHEMA) +@Audited +public class SeriesAsset extends Asset { + + private static final long serialVersionUID = 1L; + + @OneToOne(cascade = {CascadeType.DETACH, + CascadeType.MERGE, + CascadeType.PERSIST, + CascadeType.REFRESH + }) + @JoinColumn(name = "SERIES_ID") + private Series series; + + public Series getSeries() { + return series; + } + + public void setSeries(final Series series) { + this.series = series; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 53 * hash + Objects.hashCode(series); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof SeriesAsset)) { + return false; + } + final SeriesAsset other = (SeriesAsset) obj; + if (!other.canEqual(this)) { + return false; + } + return Objects.equals(series, other.getSeries()); + } + + @Override + public boolean canEqual(final Object obj) { + return obj instanceof SeriesAsset; + } + + @Override + public String toString(final String data) { + return super.toString(String.format(", series = %s%s", + Objects.toString(series), + data)); + } + }