diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolume.java b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolume.java
new file mode 100644
index 0000000..3992ef2
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInCollectedVolume.java
@@ -0,0 +1,135 @@
+/*
+ * 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 org.hibernate.envers.Audited;
+
+import java.util.Objects;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import static org.scientificcms.publications.SciPublicationsConstants.*;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@Entity
+@Table(name = "ARTICLES_IN_COLLECTED_VOLUME", schema = DB_SCHEMA)
+@Audited
+public class ArticleInCollectedVolume extends Publication {
+
+ private static final long serialVersionUID = 1L;
+
+ @ManyToOne
+ @JoinColumn(name = "COLLECTED_VOLUME_ID")
+ private CollectedVolume collectedVolume;
+
+ @Column(name = "PAGES_FROM")
+ private Integer pagesFrom;
+
+ @Column(name = "PAGES_TO")
+ private Integer pagesTo;
+
+ @Column(name = "CHAPTER", length = 1024)
+ private String chapter;
+
+ public CollectedVolume getCollectedVolume() {
+ return collectedVolume;
+ }
+
+ protected void setCollectedVolume(final CollectedVolume collectedVolume) {
+ this.collectedVolume = collectedVolume;
+ }
+
+ public Integer getPagesFrom() {
+ return pagesFrom;
+ }
+
+ public void setPagesFrom(final Integer pagesFrom) {
+ this.pagesFrom = pagesFrom;
+ }
+
+ public Integer getPagesTo() {
+ return pagesTo;
+ }
+
+ public void setPagesTo(final Integer pagesTo) {
+ this.pagesTo = pagesTo;
+ }
+
+ public String getChapter() {
+ return chapter;
+ }
+
+ public void setChapter(final String chapter) {
+ this.chapter = chapter;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = super.hashCode();
+ hash = 47 * hash + Objects.hashCode(collectedVolume);
+ hash = 47 * hash + Objects.hashCode(pagesFrom);
+ hash = 47 * hash + Objects.hashCode(pagesTo);
+ hash = 47 * hash + Objects.hashCode(chapter);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!super.equals(obj)) {
+ return false;
+ }
+ if (!(obj instanceof ArticleInCollectedVolume)) {
+ return false;
+ }
+ final ArticleInCollectedVolume other = (ArticleInCollectedVolume) obj;
+ if (!other.canEqual(this)) {
+ return false;
+ }
+ if (!Objects.equals(chapter, other.getChapter())) {
+ return false;
+ }
+ if (!Objects.equals(collectedVolume, other.getCollectedVolume())) {
+ return false;
+ }
+ if (!Objects.equals(pagesFrom, other.getPagesFrom())) {
+ return false;
+ }
+ return Objects.equals(pagesTo, other.getPagesTo());
+ }
+
+ @Override
+ public boolean canEqual(final Object obj) {
+ return obj instanceof ArticleInCollectedVolume;
+ }
+
+ @Override
+ public String toString(final String data) {
+
+ return super.toString(String.format(", collectedVolume = %s, "
+ + "chapter = \"%s\", "
+ + "pagesFrom = %d, "
+ + "pagesTo = %d%s",
+ Objects.toString(collectedVolume),
+ chapter,
+ pagesFrom,
+ pagesTo,
+ data));
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournal.java b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournal.java
new file mode 100644
index 0000000..84e24f9
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/ArticleInJournal.java
@@ -0,0 +1,169 @@
+/*
+ * 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 org.hibernate.envers.Audited;
+
+import java.time.LocalDate;
+import java.util.Objects;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import static org.scientificcms.publications.SciPublicationsConstants.*;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@Entity
+@Table(name = "ARTICLES_IN_JOURNAL", schema = DB_SCHEMA)
+@Audited
+public class ArticleInJournal extends Publication {
+
+ private static final long serialVersionUID = 1L;
+
+ @ManyToOne
+ @JoinColumn(name = "JOURNAL_ID")
+ private Journal journal;
+
+ @Column(name = "VOLUME")
+ private Integer volume;
+
+ @Column(name = "ISSUE")
+ private String issue;
+
+ @Column(name = "PAGES_FROM")
+ private Integer pagesFrom;
+
+ @Column(name = "PAGES_TO")
+ private Integer pagesTo;
+
+ @Column(name = "PUBLICATION_DATE")
+ private LocalDate publicationDate;
+
+ public Journal getJournal() {
+ return journal;
+ }
+
+ protected void setJournal(final Journal journal) {
+ this.journal = journal;
+ }
+
+ public Integer getVolume() {
+ return volume;
+ }
+
+ public void setVolume(final Integer volume) {
+ this.volume = volume;
+ }
+
+ public String getIssue() {
+ return issue;
+ }
+
+ public void setIssue(final String issue) {
+ this.issue = issue;
+ }
+
+ public Integer getPagesFrom() {
+ return pagesFrom;
+ }
+
+ public void setPagesFrom(final Integer pagesFrom) {
+ this.pagesFrom = pagesFrom;
+ }
+
+ public Integer getPagesTo() {
+ return pagesTo;
+ }
+
+ public void setPagesTo(final Integer pagesTo) {
+ this.pagesTo = pagesTo;
+ }
+
+ public LocalDate getPublicationDate() {
+ return publicationDate;
+ }
+
+ public void setPublicationDate(final LocalDate publicationDate) {
+ this.publicationDate = publicationDate;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = super.hashCode();
+ hash = 67 * hash + Objects.hashCode(journal);
+ hash = 67 * hash + Objects.hashCode(volume);
+ hash = 67 * hash + Objects.hashCode(issue);
+ hash = 67 * hash + Objects.hashCode(pagesFrom);
+ hash = 67 * hash + Objects.hashCode(pagesTo);
+ hash = 67 * hash + Objects.hashCode(publicationDate);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!super.equals(obj)) {
+ return false;
+ }
+ if (!(obj instanceof ArticleInJournal)) {
+ return false;
+ }
+ final ArticleInJournal other = (ArticleInJournal) obj;
+ if (!other.canEqual(this)) {
+ return false;
+ }
+ if (!Objects.equals(journal, other.getJournal())) {
+ return false;
+ }
+ if (!Objects.equals(volume, other.getVolume())) {
+ return false;
+ }
+ if (!Objects.equals(issue, other.getIssue())) {
+ return false;
+ }
+ if (!Objects.equals(pagesFrom, other.getPagesFrom())) {
+ return false;
+ }
+ if (!Objects.equals(pagesTo, other.getPagesTo())) {
+ return false;
+ }
+ return Objects.equals(publicationDate, other.getPublicationDate());
+ }
+
+ @Override
+ public boolean canEqual(final Object obj) {
+ return obj instanceof ArticleInJournal;
+ }
+
+ @Override
+ public String toString(final String data) {
+ return super.toString(String.format(", journal = %s, "
+ + "volume = %d, "
+ + "issue = \"%s\", "
+ + "pagesFrom = %d, "
+ + "pagesTo = %d, "
+ + "publicationDate = %s%s",
+ Objects.toString(journal),
+ volume,
+ issue,
+ pagesFrom,
+ pagesTo,
+ Objects.toString(publicationDate),
+ data));
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java b/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java
new file mode 100644
index 0000000..8adb33c
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java
@@ -0,0 +1,61 @@
+/*
+ * 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 org.hibernate.envers.Audited;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import static org.scientificcms.publications.SciPublicationsConstants.*;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@Entity
+@Table(name = "COLLECTED_VOLUMES", schema = DB_SCHEMA)
+@Audited
+public class CollectedVolume extends PublicationWithPublisher {
+
+ private static final long serialVersionUID = 1L;
+
+ @OneToMany(mappedBy = "collectedVolume")
+ private List articles;
+
+ public CollectedVolume() {
+ super();
+
+ articles = new ArrayList<>();
+ }
+
+ public List getArticles() {
+ return Collections.unmodifiableList(articles);
+ }
+
+ protected void addArticle(final ArticleInCollectedVolume article) {
+ articles.add(article);
+ }
+
+ protected void removeArticle(final ArticleInCollectedVolume article) {
+ articles.remove(article);
+ }
+
+ protected void setArticles(final List articles) {
+ this.articles = new ArrayList<>(articles);
+ }
+
+ @Override
+ public boolean canEqual(final Object obj) {
+ return obj instanceof CollectedVolume;
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Expertise.java b/sci-publications/src/main/java/org/scientificcms/publications/Expertise.java
index 1c8198b..c1b0331 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/Expertise.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/Expertise.java
@@ -5,6 +5,7 @@
*/
package org.scientificcms.publications;
+import org.hibernate.envers.Audited;
import org.librecms.assets.Organization;
import java.util.Objects;
@@ -23,6 +24,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
*/
@Entity
@Table(name = "EXPERTISES", schema = DB_SCHEMA)
+@Audited
public class Expertise extends Publication {
private static final long serialVersionUID = 1L;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/InternetArticle.java b/sci-publications/src/main/java/org/scientificcms/publications/InternetArticle.java
index 6a1bfb3..566456d 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/InternetArticle.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/InternetArticle.java
@@ -5,6 +5,7 @@
*/
package org.scientificcms.publications;
+import org.hibernate.envers.Audited;
import org.librecms.assets.Organization;
import java.time.LocalDate;
@@ -24,6 +25,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
*/
@Entity
@Table(name = "INTERNET_ARTICLES", schema = DB_SCHEMA)
+@Audited
public class InternetArticle extends Publication {
private static final long serialVersionUID = 1L;
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Journal.java b/sci-publications/src/main/java/org/scientificcms/publications/Journal.java
new file mode 100644
index 0000000..022ac12
--- /dev/null
+++ b/sci-publications/src/main/java/org/scientificcms/publications/Journal.java
@@ -0,0 +1,261 @@
+/*
+ * 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 org.hibernate.envers.Audited;
+import org.libreccm.l10n.LocalizedString;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+import javax.persistence.AssociationOverride;
+import javax.persistence.Column;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import static org.scientificcms.publications.SciPublicationsConstants.*;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@Entity
+@Table(name = "JOURNALS", schema = DB_SCHEMA)
+@Audited
+public class Journal implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @Column(name = "JOURNAL_ID")
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long journalId;
+
+ @Column(name = "UUID")
+ private String uuid;
+
+ /**
+ * Year in which the journal was published first.
+ */
+ @Column(name = "FIRST_YEAR", nullable = true)
+ private Integer firstYear;
+
+ /**
+ * Year in which the journal was published last
+ */
+ @Column(name = "LAST_YEAR", nullable = true)
+ private Integer lastYear;
+
+ /**
+ * The ISSN of the journal.
+ */
+ @Column(name = "ISSN", length = 9)
+ private String issn;
+
+ @Column(name = "title", length = 1024, nullable = false)
+ private String title;
+
+ /**
+ * A short description of the journal.
+ */
+ @Embedded
+ @AssociationOverride(
+ name = "values",
+ joinTable = @JoinTable(name = "JOURNAL_DESCRIPTIONS",
+ schema = DB_SCHEMA,
+ joinColumns = {
+ @JoinColumn(name = "OBJECT_ID")
+ })
+ )
+ private LocalizedString description;
+
+ /**
+ * The usual symbol/abbrevation used to refer to the journal.
+ */
+ @Column(name = "SYMBOL")
+ private String symbol;
+
+ @OneToMany(mappedBy = "journal")
+ private List articles;
+
+ public Journal() {
+ super();
+
+ articles = new ArrayList<>();
+ }
+
+ public long getJournalId() {
+ return journalId;
+ }
+
+ public void setJournalId(final long journalId) {
+ this.journalId = journalId;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(final String uuid) {
+ this.uuid = uuid;
+ }
+
+ public Integer getFirstYear() {
+ return firstYear;
+ }
+
+ public void setFirstYear(final Integer firstYear) {
+ this.firstYear = firstYear;
+ }
+
+ public Integer getLastYear() {
+ return lastYear;
+ }
+
+ public void setLastYear(final Integer lastYear) {
+ this.lastYear = lastYear;
+ }
+
+ public String getIssn() {
+ return issn;
+ }
+
+ public void setIssn(final String issn) {
+ this.issn = issn;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(final String title) {
+ this.title = title;
+ }
+
+ public LocalizedString getDescription() {
+ return description;
+ }
+
+ public void setDescription(final LocalizedString description) {
+ this.description = description;
+ }
+
+ public String getSymbol() {
+ return symbol;
+ }
+
+ public void setSymbol(String symbol) {
+ this.symbol = symbol;
+ }
+
+ public List getArticles() {
+ return Collections.unmodifiableList(articles);
+ }
+
+ protected void addArticle(final ArticleInJournal article) {
+ articles.add(article);
+ }
+
+ protected void removeArticle(final ArticleInJournal article) {
+ articles.remove(article);
+ }
+
+ protected void setArticles(final List articles) {
+ this.articles = new ArrayList<>(articles);
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = super.hashCode();
+ hash = 73 * hash + Objects.hashCode(firstYear);
+ hash = 73 * hash + Objects.hashCode(lastYear);
+ hash = 73 * hash + Objects.hashCode(issn);
+ hash = 73 * hash + Objects.hashCode(title);
+ hash = 73 * hash + Objects.hashCode(description);
+ hash = 73 * hash + Objects.hashCode(symbol);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!super.equals(obj)) {
+ return false;
+ }
+ if (!(obj instanceof Journal)) {
+ return false;
+ }
+ final Journal other = (Journal) obj;
+ if (!other.canEqual(this)) {
+ return false;
+ }
+ if (!Objects.equals(firstYear, other.getFirstYear())) {
+ return false;
+ }
+ if (!Objects.equals(lastYear, other.getLastYear())) {
+ return false;
+ }
+ if (!Objects.equals(issn, other.getIssn())) {
+ return false;
+ }
+ if (!Objects.equals(title, other.getTitle())) {
+ return false;
+ }
+ if (!Objects.equals(symbol, other.getSymbol())) {
+ return false;
+ }
+ return Objects.equals(description, other.getDescription());
+ }
+
+ public boolean canEqual(final Object obj) {
+ return obj instanceof Journal;
+ }
+
+ @Override
+ public final String toString() {
+ return toString("");
+ }
+
+ public String toString(final String data) {
+
+ return String.format("%s{ "
+ + "journalId = %d, "
+ + "uuid = \"%s\", "
+ + "firstYear = %s, "
+ + "lastYear = %s, "
+ + "issn = \"%s\", "
+ + "symbol = \"%s\", "
+ + "title = \"%s\", "
+ + "description = %s%s"
+ + "}",
+ super.toString(),
+ journalId,
+ uuid,
+ Objects.toString(firstYear),
+ Objects.toString(lastYear),
+ issn,
+ symbol,
+ title,
+ description,
+ data);
+ }
+
+}
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Monograph.java b/sci-publications/src/main/java/org/scientificcms/publications/Monograph.java
index e6d5593..9f951fb 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/Monograph.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/Monograph.java
@@ -5,6 +5,8 @@
*/
package org.scientificcms.publications;
+import org.hibernate.envers.Audited;
+
import java.util.Objects;
import javax.persistence.Column;
@@ -19,6 +21,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
*/
@Entity
@Table(name = "MONOGRAPHS", schema = DB_SCHEMA)
+@Audited
public class Monograph extends PublicationWithPublisher {
private static final long serialVersionUID = 1L;
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 fc690a2..398671e 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
@@ -26,7 +26,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
* @author Jens Pelzetter
*/
@Entity
-@Table(name = "JOURNALS", schema = DB_SCHEMA)
+@Table(name = "JOURNAL_ASSETS", schema = DB_SCHEMA)
@Audited
public class JournalAsset extends Asset {
diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/CollectedVolumeItem.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/CollectedVolumeItem.java
index 7d22c7b..8763a9c 100644
--- a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/CollectedVolumeItem.java
+++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/CollectedVolumeItem.java
@@ -5,6 +5,7 @@
*/
package org.scientificcms.publications.contenttypes;
+import org.scientificcms.publications.PublicationWithPublisher;
import org.scientificcms.publications.assets.CollectedVolumeAsset;
import java.util.Objects;
@@ -22,7 +23,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
*/
@Entity
@Table(name = "COLLECTED_VOLUME_ITEMS", schema = DB_SCHEMA)
-public class CollectedVolumeItem {
+public class CollectedVolumeItem extends AbstractPublicationWithPublisherItem{
// extends Publication {
private static final long serialVersionUID = 1L;
@@ -81,4 +82,14 @@ public class CollectedVolumeItem {
// data));
// }
+ @Override
+ public PublicationWithPublisher getPublication() {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ protected void setPublication(PublicationWithPublisher publication) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
}
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 97647b4..311ade0 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
@@ -5,6 +5,7 @@
*/
package org.scientificcms.publications.contenttypes;
+import org.scientificcms.publications.PublicationWithPublisher;
import org.scientificcms.publications.assets.ProceedingsAsset;
import java.util.Objects;
@@ -22,7 +23,17 @@ import static org.scientificcms.publications.SciPublicationsConstants.*;
*/
@Entity
@Table(name = "PROCEEDINGS_ITEMS", schema = DB_SCHEMA)
-public class ProceedingsItem {
+public class ProceedingsItem extends AbstractPublicationWithPublisherItem{
+
+ @Override
+ public PublicationWithPublisher getPublication() {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ protected void setPublication(PublicationWithPublisher publication) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
// extends Publication {
// private static final long serialVersionUID = 1L;