From 9691fd9af0be62974075f0b38ea1a7f44b0e9a91 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Tue, 20 Aug 2019 20:29:37 +0200 Subject: [PATCH] More Assets and Contentypes for sci-publications --- .../BasicPublicationProperties.java | 244 ++++++++++++++++++ .../PublicationWithPublisherProperties.java | 202 +++++++++++++++ .../SciPublicationsConstants.java | 2 +- .../publications/assets/CollectedVolume.java | 110 ++++++++ .../publications/assets/Journal.java | 2 +- .../publications/assets/Proceedings.java | 181 +++++++++++++ .../publications/assets/Publisher.java | 2 +- .../contenttypes/CollectedVolumeItem.java | 83 ++++++ .../contenttypes/ProceedingsItem.java | 83 ++++++ .../contenttypes/Publication.java | 25 ++ .../contenttypes/PublicationItem.java | 91 +++++++ .../PublicationWithPublisher.java | 82 ++++++ 12 files changed, 1104 insertions(+), 3 deletions(-) create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/BasicPublicationProperties.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisherProperties.java rename sci-publications/src/main/java/org/scientificcms/{ => publications}/SciPublicationsConstants.java (90%) create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/assets/CollectedVolume.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/assets/Proceedings.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/contenttypes/CollectedVolumeItem.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ProceedingsItem.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/contenttypes/Publication.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationItem.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationWithPublisher.java diff --git a/sci-publications/src/main/java/org/scientificcms/publications/BasicPublicationProperties.java b/sci-publications/src/main/java/org/scientificcms/publications/BasicPublicationProperties.java new file mode 100644 index 0000000..5978579 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/BasicPublicationProperties.java @@ -0,0 +1,244 @@ +/* + * 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.libreccm.l10n.LocalizedString; + +import java.io.Serializable; +import java.util.Locale; +import java.util.Objects; + +import javax.persistence.AssociationOverride; +import javax.persistence.Column; +import javax.persistence.Embeddable; +import javax.persistence.Embedded; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; + +import static org.scientificcms.publications.SciPublicationsConstants.*; + +/** + * Basic properties of publication. + * + * @author Jens Pelzetter + */ +@Embeddable +public class BasicPublicationProperties implements Serializable { + + private static final long serialVersionUID = 1L; + + @Column(name = "YEAR_OF_PUBLICATION") + private Integer yearOfPublication; + + @Embedded + @AssociationOverride( + name = "values", + joinTable = @JoinTable(name = "PUBLICATION_TITLES", + schema = DB_SCHEMA, + joinColumns = { + @JoinColumn(name = "OBJECT_ID") + }) + ) + private LocalizedString title; + + @Embedded + @AssociationOverride( + name = "values", + joinTable = @JoinTable(name = "PUBLICATION_SHORT_DESCS", + schema = DB_SCHEMA, + joinColumns = { + @JoinColumn(name = "OBJECT_ID") + }) + ) + private LocalizedString shortDescription; + + @Embedded + @AssociationOverride( + name = "values", + joinTable = @JoinTable(name = "PUBLICATION_ABSTRACTS", + schema = DB_SCHEMA, + joinColumns = { + @JoinColumn(name = "OBJECT_ID") + }) + ) + private LocalizedString publicationAbstract; + + @Embedded + @AssociationOverride( + name = "values", + joinTable = @JoinTable(name = "PUBLICATION_MISC", + schema = DB_SCHEMA, + joinColumns = { + @JoinColumn(name = "OBJECT_ID") + }) + ) + private LocalizedString misc; + + @Column(name = "PEER_REVIEWED") + private Boolean peerReviewed; + + @Column(name = "YEAR_FIRST_PUBLISHED") + private Integer yearFirstPublished; + + @Column(name = "LANGUAGE_OF_PUBLICATION") + private Locale languageOfPublication; + + public Integer getYearOfPublication() { + return yearOfPublication; + } + + public void setYearOfPublication(final Integer yearOfPublication) { + this.yearOfPublication = yearOfPublication; + } + + public LocalizedString getTitle() { + return title; + } + + public void setTitle(final LocalizedString title) { + this.title = title; + } + + public LocalizedString getShortDescription() { + return shortDescription; + } + + public void setShortDescription(final LocalizedString shortDescription) { + this.shortDescription = shortDescription; + } + + public LocalizedString getPublicationAbstract() { + return publicationAbstract; + } + + public void setPublicationAbstract(final LocalizedString publicationAbstract) { + this.publicationAbstract = publicationAbstract; + } + + public LocalizedString getMisc() { + return misc; + } + + public void setMisc(final LocalizedString misc) { + this.misc = misc; + } + + public Boolean getPeerReviewed() { + return peerReviewed; + } + + public void setPeerReviewed(final Boolean peerReviewed) { + this.peerReviewed = peerReviewed; + } + + public Integer getYearFirstPublished() { + return yearFirstPublished; + } + + public void setYearFirstPublished(final Integer yearFirstPublished) { + this.yearFirstPublished = yearFirstPublished; + } + + public Locale getLanguageOfPublication() { + return languageOfPublication; + } + + public void setLanguageOfPublication(final Locale languageOfPublication) { + this.languageOfPublication = languageOfPublication; + } + + @Override + public int hashCode() { + int hash = 5; + hash = 97 * hash + Objects.hashCode(yearOfPublication); + hash = 97 * hash + Objects.hashCode(title); + hash = 97 * hash + Objects.hashCode(shortDescription); + hash = 97 * hash + Objects.hashCode(publicationAbstract); + hash = 97 * hash + Objects.hashCode(misc); + hash = 97 * hash + Objects.hashCode(peerReviewed); + hash = 97 * hash + Objects.hashCode(yearFirstPublished); + hash = 97 * hash + Objects.hashCode(languageOfPublication); + return hash; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof BasicPublicationProperties)) { + return false; + } + final BasicPublicationProperties other + = (BasicPublicationProperties) obj; + if (!other.canEqual(this)) { + return false; + } + if (!Objects.equals(yearOfPublication, other.getYearOfPublication())) { + return false; + } + if (!Objects.equals(title, other.getTitle())) { + return false; + } + if (!Objects.equals(shortDescription, other.getShortDescription())) { + return false; + } + if (!Objects.equals(publicationAbstract, + other.getPublicationAbstract())) { + return false; + } + if (!Objects.equals(misc, other.getMisc())) { + return false; + } + if (!Objects.equals(peerReviewed, other.getPeerReviewed())) { + return false; + } + if (!Objects.equals(yearFirstPublished, other.getYearFirstPublished())) { + return false; + } + return Objects.equals(languageOfPublication, + other.getLanguageOfPublication()); + } + + public boolean canEqual(final Object obj) { + + return obj instanceof BasicPublicationProperties; + } + + public String toString(final String data) { + + return String.format("%s{ " + + "yearOfPublication = %d, " + + "title = %s, " + + "shortDescription = %s, " + + "publicationAbstract = %s, " + + "misc = %s, " + + "peerReviewed = %b, " + + "yearFirstPublished = %d, " + + "languageOfPublication = \"%s\"%d" + + " }", + super.toString(), + yearOfPublication, + Objects.toString(title), + Objects.toString(shortDescription), + Objects.toString(publicationAbstract), + Objects.toString(misc), + peerReviewed, + yearFirstPublished, + Objects.toString(languageOfPublication), + data); + } + + @Override + public final String toString() { + + return toString(""); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisherProperties.java b/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisherProperties.java new file mode 100644 index 0000000..a0b49a3 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisherProperties.java @@ -0,0 +1,202 @@ +/* + * 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.libreccm.l10n.LocalizedString; +import org.scientificcms.publications.assets.Publisher; + +import java.io.Serializable; +import java.util.Objects; + +import javax.persistence.AssociationOverride; +import javax.persistence.Column; +import javax.persistence.Embeddable; +import javax.persistence.Embedded; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.OneToOne; + +import static org.scientificcms.publications.SciPublicationsConstants.*; + +/** + * + * @author Jens Pelzetter + */ +@Embeddable +public class PublicationWithPublisherProperties implements Serializable { + + private static final long serialVersionUID = 1L; + + @OneToOne + private Publisher publisher; + + @Column(name = "ISBN10", length = 13) + private String isbn10; + + @Column(name = "ISBN13", length = 17) + private String isbn13; + + @Column(name = "VOLUME") + private Integer volume; + + @Column(name = "NUMBER_OF_VOLUMES") + private Integer numberOfVolumes; + + @Column(name = "NUMBER_OF_PAGES") + private Integer numberOfPages; + + @Embedded + @AssociationOverride( + name = "values", + joinTable = @JoinTable(name = "PUBLICATION_EDITION", + schema = DB_SCHEMA, + joinColumns = { + @JoinColumn(name = "OBJECT_ID") + }) + ) + private LocalizedString edition; + + public Publisher getPublisher() { + return publisher; + } + + public void setPublisher(final Publisher publisher) { + this.publisher = publisher; + } + + public String getIsbn10() { + return isbn10; + } + + public void setIsbn10(final String isbn10) { + this.isbn10 = isbn10; + } + + public String getIsbn13() { + return isbn13; + } + + public void setIsbn13(final String isbn13) { + this.isbn13 = isbn13; + } + + public Integer getVolume() { + return volume; + } + + public void setVolume(final Integer volume) { + this.volume = volume; + } + + public Integer getNumberOfVolumes() { + return numberOfVolumes; + } + + public void setNumberOfVolumes(final Integer numberOfVolumes) { + this.numberOfVolumes = numberOfVolumes; + } + + public Integer getNumberOfPages() { + return numberOfPages; + } + + public void setNumberOfPages(final Integer numberOfPages) { + this.numberOfPages = numberOfPages; + } + + public LocalizedString getEdition() { + return edition; + } + + public void setEdition(final LocalizedString edition) { + this.edition = edition; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 47 * hash + Objects.hashCode(publisher); + hash = 47 * hash + Objects.hashCode(isbn10); + hash = 47 * hash + Objects.hashCode(isbn13); + hash = 47 * hash + Objects.hashCode(volume); + hash = 47 * hash + Objects.hashCode(numberOfVolumes); + hash = 47 * hash + Objects.hashCode(numberOfPages); + hash = 47 * hash + Objects.hashCode(edition); + 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 PublicationWithPublisherProperties)) { + return false; + } + final PublicationWithPublisherProperties other + = (PublicationWithPublisherProperties) obj; + if (!other.canEqual(this)) { + return false; + } + if (!Objects.equals(isbn10, other.getIsbn10())) { + return false; + } + if (!Objects.equals(isbn13, other.getIsbn13())) { + return false; + } + if (!Objects.equals(publisher, other.getPublisher())) { + return false; + } + if (!Objects.equals(volume, other.getVolume())) { + return false; + } + if (!Objects.equals(numberOfVolumes, other.getNumberOfVolumes())) { + return false; + } + if (!Objects.equals(numberOfPages, other.getNumberOfPages())) { + return false; + } + return Objects.equals(edition, other.getEdition()); + } + + public boolean canEqual(final Object obj) { + return obj instanceof PublicationWithPublisherProperties; + } + + public String toString(final String data) { + + return (String.format("%s{ " + + "publisher = %s, " + + "isbn10 = \"%s\", " + + "isbn13 = \"%s\", " + + "volume = %d, " + + "numberOfVolumes = %d, " + + "numberOfPages = %d, " + + "edition = %s%s" + + "}", + super.toString(), + Objects.toString(publisher), + isbn10, + isbn13, + volume, + numberOfVolumes, + numberOfPages, + Objects.toString(edition), + data)); + } + + @Override + public String toString() { + return toString(""); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/SciPublicationsConstants.java b/sci-publications/src/main/java/org/scientificcms/publications/SciPublicationsConstants.java similarity index 90% rename from sci-publications/src/main/java/org/scientificcms/SciPublicationsConstants.java rename to sci-publications/src/main/java/org/scientificcms/publications/SciPublicationsConstants.java index b377345..e9a1f47 100644 --- a/sci-publications/src/main/java/org/scientificcms/SciPublicationsConstants.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/SciPublicationsConstants.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package org.scientificcms; +package org.scientificcms.publications; /** * diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/CollectedVolume.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/CollectedVolume.java new file mode 100644 index 0000000..6450de4 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/CollectedVolume.java @@ -0,0 +1,110 @@ +/* + * 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.assets; + +import org.librecms.contentsection.Asset; +import org.scientificcms.publications.BasicPublicationProperties; +import org.scientificcms.publications.PublicationWithPublisherProperties; + +import java.util.Objects; + +import javax.persistence.Entity; +import javax.persistence.Table; + +import static org.scientificcms.publications.SciPublicationsConstants.*; + +/** + * + * @author Jens Pelzetter + */ +@Entity +@Table(name = "COLLECTED_VOLUMES", schema = DB_SCHEMA) +public class CollectedVolume extends Asset { + + private static final long serialVersionUID = 1L; + + private BasicPublicationProperties basicProperties; + + private PublicationWithPublisherProperties withPublisherProperties; + + public CollectedVolume() { + + super(); + + basicProperties = new BasicPublicationProperties(); + withPublisherProperties = new PublicationWithPublisherProperties(); + } + + public BasicPublicationProperties getBasicProperties() { + return basicProperties; + } + + protected void setBasicProperties( + final BasicPublicationProperties basicProperties) { + this.basicProperties = basicProperties; + } + + public PublicationWithPublisherProperties getWithPublisherProperties() { + return withPublisherProperties; + } + + protected void setWithPublisherProperties( + final PublicationWithPublisherProperties withPublisherProperties) { + this.withPublisherProperties = withPublisherProperties; + } + + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 19 * hash + Objects.hashCode(basicProperties); + hash = 19 * hash + Objects.hashCode(withPublisherProperties); + 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 CollectedVolume)) { + return false; + } + final CollectedVolume other = (CollectedVolume) obj; + if (!other.canEqual(this)) { + return false; + } + if (!Objects.equals(basicProperties, other.getBasicProperties())) { + return false; + } + return Objects.equals(withPublisherProperties, + other.getWithPublisherProperties()); + } + + @Override + public boolean canEqual(final Object obj) { + + return obj instanceof CollectedVolume; + } + + @Override + public String toString(final String data) { + + return super.toString(String.format( + "basicProperties = %s, " + + "withPublisherProperties = %s%s", + Objects.toString(basicProperties), + Objects.toString( + withPublisherProperties), + data)); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/Journal.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/Journal.java index 9846c94..4dc9698 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/assets/Journal.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/Journal.java @@ -18,7 +18,7 @@ import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.Table; -import static org.scientificcms.SciPublicationsConstants.*; +import static org.scientificcms.publications.SciPublicationsConstants.*; /** * Asset for storing informations about a journal. diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/Proceedings.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/Proceedings.java new file mode 100644 index 0000000..c62bc81 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/Proceedings.java @@ -0,0 +1,181 @@ +/* + * 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.assets; + +import org.librecms.contentsection.Asset; +import org.scientificcms.publications.BasicPublicationProperties; +import org.scientificcms.publications.PublicationWithPublisherProperties; + +import java.time.LocalDate; +import java.util.Objects; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import static org.scientificcms.publications.SciPublicationsConstants.*; + +/** + * + * @author Jens Pelzetter + */ +@Entity +@Table(name = "PROCEEDINGS", schema = DB_SCHEMA) +public class Proceedings extends Asset { + + private static final long serialVersionUID = 1L; + + private BasicPublicationProperties basicProperties; + + private PublicationWithPublisherProperties withPublisherProperties; + + @Column(name = "NAME_OF_CONFERENCE", length = 1024) + private String nameOfConference; + + @Column(name = "PLACE_OF_CONFERENCE", length = 1024) + private String placeOfConference; + + @Column(name = "START_DATE_OF_CONFERENCE") + private LocalDate startDateOfConference; + + @Column(name = "END_DATE_OF_CONFERENCE") + private LocalDate endDateOfConference; + + public Proceedings() { + + super(); + + basicProperties = new BasicPublicationProperties(); + withPublisherProperties = new PublicationWithPublisherProperties(); + } + + public BasicPublicationProperties getBasicProperties() { + return basicProperties; + } + + protected void setBasicProperties( + final BasicPublicationProperties basicProperties) { + this.basicProperties = basicProperties; + } + + public PublicationWithPublisherProperties getWithPublisherProperties() { + return withPublisherProperties; + } + + protected void setWithPublisherProperties( + final PublicationWithPublisherProperties withPublisherProperties) { + this.withPublisherProperties = withPublisherProperties; + } + + public String getNameOfConference() { + return nameOfConference; + } + + public void setNameOfConference(final String nameOfConference) { + this.nameOfConference = nameOfConference; + } + + public String getPlaceOfConference() { + return placeOfConference; + } + + public void setPlaceOfConference(final String placeOfConference) { + this.placeOfConference = placeOfConference; + } + + public LocalDate getStartDateOfConference() { + return startDateOfConference; + } + + public void setStartDateOfConference(final LocalDate startDateOfConference) { + this.startDateOfConference = startDateOfConference; + } + + public LocalDate getEndDateOfConference() { + return endDateOfConference; + } + + public void setEndDateOfConference(final LocalDate endDateOfConference) { + this.endDateOfConference = endDateOfConference; + } + + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 19 * hash + Objects.hashCode(basicProperties); + hash = 19 * hash + Objects.hashCode(withPublisherProperties); + hash = 19 * hash + Objects.hashCode(nameOfConference); + hash = 19 * hash + Objects.hashCode(placeOfConference); + hash = 19 * hash + Objects.hashCode(startDateOfConference); + hash = 19 * hash + Objects.hashCode(endDateOfConference); + 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 Proceedings)) { + return false; + } + final Proceedings other = (Proceedings) obj; + if (!other.canEqual(this)) { + return false; + } + if (!Objects.equals(basicProperties, other.getBasicProperties())) { + return false; + } + if (!Objects.equals(withPublisherProperties, + other.getWithPublisherProperties())) { + return false; + } + if (!Objects.equals(nameOfConference, other.getNameOfConference())) { + return false; + } + if (!Objects.equals(placeOfConference, other.getPlaceOfConference())) { + return false; + } + if (!Objects.equals(startDateOfConference, + other.getStartDateOfConference())) { + return false; + } + return Objects.equals(endDateOfConference, + other.getEndDateOfConference()); + } + + @Override + public boolean canEqual(final Object obj) { + + return obj instanceof Proceedings; + } + + @Override + public String toString(final String data) { + + return super.toString(String.format( + "basicProperties = %s, " + + "withPublisherProperties = %s, " + + "nameOfConference = \"%s\", " + + "placeOfConference = \"%s\", " + + "startDateOfConference = \"%s\", " + + "endDateOfConference = \"%s\"%s", + Objects.toString(basicProperties), + Objects.toString(withPublisherProperties), + nameOfConference, + placeOfConference, + Objects.toString(startDateOfConference), + Objects.toString(endDateOfConference), + data)); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/Publisher.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/Publisher.java index e497fd9..dfd9d4d 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/assets/Publisher.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/Publisher.java @@ -14,7 +14,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; -import static org.scientificcms.SciPublicationsConstants.*; +import static org.scientificcms.publications.SciPublicationsConstants.*; /** * An asset for storing the informations about a publisher required to create 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 new file mode 100644 index 0000000..4fd05d9 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/CollectedVolumeItem.java @@ -0,0 +1,83 @@ +/* + * 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; + +import org.scientificcms.publications.assets.CollectedVolume; + +import java.util.Objects; + +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 +@Table(name = "COLLECTED_VOLUME_ITEMS", schema = DB_SCHEMA) +public class CollectedVolumeItem extends Publication { + + private static final long serialVersionUID = 1L; + + @OneToOne + @JoinColumn(name = "DATA_ID") + private CollectedVolume publicationData; + + public CollectedVolume getPublicationData() { + return publicationData; + } + + protected void setPublicationData(final CollectedVolume publicationData) { + this.publicationData = publicationData; + } + + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 43 * hash + Objects.hashCode(publicationData); + 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 CollectedVolumeItem)) { + return false; + } + final CollectedVolumeItem other = (CollectedVolumeItem) obj; + if (!other.canEqual(this)) { + return false; + } + return Objects.equals(publicationData, other.getPublicationData()); + } + + @Override + public boolean canEqual(final Object obj) { + + return obj instanceof CollectedVolumeItem; + } + + @Override + public String toString(final String data) { + + return super.toString(String.format("data = %s%s", + Objects.toString(publicationData), + data)); + } + +} 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 new file mode 100644 index 0000000..86baf9a --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ProceedingsItem.java @@ -0,0 +1,83 @@ +/* + * 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; + +import org.scientificcms.publications.assets.Proceedings; + +import java.util.Objects; + +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 +@Table(name = "PROCEEDINGS_ITEMS", schema = DB_SCHEMA) +public class ProceedingsItem extends Publication { + + private static final long serialVersionUID = 1L; + + @OneToOne + @JoinColumn(name = "DATA_ID") + private Proceedings publicationData; + + public Proceedings getPublicationData() { + return publicationData; + } + + protected void setPublicationData(final Proceedings publicationData) { + this.publicationData = publicationData; + } + + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 43 * hash + Objects.hashCode(publicationData); + 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 ProceedingsItem)) { + return false; + } + final ProceedingsItem other = (ProceedingsItem) obj; + if (!other.canEqual(this)) { + return false; + } + return Objects.equals(publicationData, other.getPublicationData()); + } + + @Override + public boolean canEqual(final Object obj) { + + return obj instanceof ProceedingsItem; + } + + @Override + public String toString(final String data) { + + return super.toString(String.format("data = %s%s", + Objects.toString(publicationData), + data)); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/Publication.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/Publication.java new file mode 100644 index 0000000..6af19e9 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/Publication.java @@ -0,0 +1,25 @@ +/* + * 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; + +import org.librecms.contentsection.ContentItem; + +import javax.persistence.Entity; +import javax.persistence.Table; + +import static org.scientificcms.publications.SciPublicationsConstants.*; + +/** + * + * @author Jens Pelzetter + */ +@Entity +@Table(name = "PUBLICATIONS", schema = DB_SCHEMA) +public class Publication extends ContentItem { + + private static final long serialVersionUID = 1L; + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationItem.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationItem.java new file mode 100644 index 0000000..adb2d1e --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationItem.java @@ -0,0 +1,91 @@ +/* + * 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; + +import org.librecms.contentsection.ContentItem; +import org.scientificcms.publications.BasicPublicationProperties; + +import java.util.Objects; + +import javax.persistence.Embedded; +import javax.persistence.Entity; +import javax.persistence.Table; + +import static org.scientificcms.publications.SciPublicationsConstants.*; + +/** + * + * @author Jens Pelzetter + */ +@Entity +@Table(name = "PUBLICATION_ITEMS", schema = DB_SCHEMA) +public class PublicationItem extends Publication { + + private static final long serialVersionUID = 1L; + + @Embedded + private BasicPublicationProperties basicProperties; + + public PublicationItem() { + + super(); + + basicProperties = new BasicPublicationProperties(); + } + + public BasicPublicationProperties getBasicProperties() { + return basicProperties; + } + + protected void setBasicProperties( + final BasicPublicationProperties basicProperties) { + + this.basicProperties = basicProperties; + } + + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 59 * hash + Objects.hashCode(basicProperties); + 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 PublicationItem)) { + return false; + } + final PublicationItem other = (PublicationItem) obj; + if (!other.canEqual(this)) { + return false; + } + return Objects.equals(basicProperties, other.getBasicProperties()); + } + + @Override + public boolean canEqual(final Object obj) { + + return obj instanceof PublicationItem; + } + + @Override + public String toString(final String data) { + return super.toString(String.format("basicProperties = %s%s", + Objects.toString(basicProperties), + data)); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationWithPublisher.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationWithPublisher.java new file mode 100644 index 0000000..5ffb874 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/PublicationWithPublisher.java @@ -0,0 +1,82 @@ +/* + * 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; + +import org.scientificcms.publications.PublicationWithPublisherProperties; + +import java.util.Objects; + +import javax.persistence.Embedded; + +/** + * + * @author Jens Pelzetter + */ +public class PublicationWithPublisher extends PublicationItem { + + private static final long serialVersionUID = 1L; + + @Embedded + private PublicationWithPublisherProperties withPublisherProperties; + + public PublicationWithPublisher() { + + this.withPublisherProperties = new PublicationWithPublisherProperties(); + } + + public PublicationWithPublisherProperties getWithPublisherProperties() { + return withPublisherProperties; + } + + protected void setWithPublisherProperties( + final PublicationWithPublisherProperties withPublisherProperties) { + this.withPublisherProperties = withPublisherProperties; + } + + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 79 * hash + Objects.hashCode(withPublisherProperties); + return hash; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!super.equals(this)) { + return false; + } + if (!(obj instanceof PublicationWithPublisher)) { + return false; + } + final PublicationWithPublisher other = (PublicationWithPublisher) obj; + if (!other.canEqual(this)) { + return false; + } + return Objects.equals(withPublisherProperties, + other.getWithPublisherProperties()); + } + + @Override + public boolean canEqual(final Object obj) { + return obj instanceof PublicationWithPublisher; + } + + @Override + public String toString(final String data) { + + return super.toString(String.format("withPublisherProperties = %s%s", + Objects.toString( + withPublisherProperties), + data)); + } + +}