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));
+ }
+
}