From 749aa022498a43eb38ae85df3f043c9128efe510 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Fri, 6 Sep 2019 18:09:19 +0200 Subject: [PATCH] Fixed bugs is equals and hashCode methods of sci-project and sci-publications entities --- .../publications/CollectedVolume.java | 30 ++++ .../scientificcms/publications/Journal.java | 9 +- .../publications/Publication.java | 3 + .../PublicationWithPublisher.java | 5 +- .../scientificcms/publications/Publisher.java | 5 +- .../publications/WorkingPaper.java | 33 +++- .../publications/assets/PublisherAsset.java | 2 +- .../contenttypes/AbstractPublicationItem.java | 26 +++ .../AbstractPublicationWithPublisherItem.java | 26 +++ .../ArticleInCollectedVolumeItem.java | 4 +- .../contenttypes/CollectedVolumeItem.java | 4 +- .../SecurityEntitiesPrefabProvider.java | 16 +- ...st.java.off => EqualsAndHashCodeTest.java} | 37 +++- .../assets/EqualsAndHashCodeTest.java | 114 ++++++++++++ .../assets/EqualsAndHashCodeTest.java.off | 104 ----------- .../assets/PrefabAssetsProvider.java | 50 ++++++ .../contenttypes/EqualsAndHashCodeTest.java | 161 +++++++++++++++++ .../EqualsAndHashCodeTest.java.off | 168 ------------------ .../SecurityEntitiesPrefabProvider.java | 4 +- .../sciproject/EqualsAndHashCodeTest.java | 24 +-- 20 files changed, 511 insertions(+), 314 deletions(-) rename sci-publications/src/test/java/org/scientificcms/publications/{EqualsAndHashCodeTest.java.off => EqualsAndHashCodeTest.java} (53%) create mode 100644 sci-publications/src/test/java/org/scientificcms/publications/assets/EqualsAndHashCodeTest.java delete mode 100644 sci-publications/src/test/java/org/scientificcms/publications/assets/EqualsAndHashCodeTest.java.off create mode 100644 sci-publications/src/test/java/org/scientificcms/publications/assets/PrefabAssetsProvider.java create mode 100644 sci-publications/src/test/java/org/scientificcms/publications/contenttypes/EqualsAndHashCodeTest.java delete mode 100644 sci-publications/src/test/java/org/scientificcms/publications/contenttypes/EqualsAndHashCodeTest.java.off diff --git a/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java b/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java index 8adb33c..0895577 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/CollectedVolume.java @@ -10,6 +10,7 @@ import org.hibernate.envers.Audited; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; import javax.persistence.Entity; import javax.persistence.OneToMany; @@ -41,6 +42,7 @@ public class CollectedVolume extends PublicationWithPublisher { return Collections.unmodifiableList(articles); } + protected void addArticle(final ArticleInCollectedVolume article) { articles.add(article); } @@ -53,9 +55,37 @@ public class CollectedVolume extends PublicationWithPublisher { this.articles = new ArrayList<>(articles); } + + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 29 * hash; + 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; + return other.canEqual(this); + } + @Override public boolean canEqual(final Object obj) { return obj instanceof CollectedVolume; } + + } diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Journal.java b/sci-publications/src/main/java/org/scientificcms/publications/Journal.java index 022ac12..c13c34f 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/Journal.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/Journal.java @@ -168,18 +168,18 @@ public class Journal implements Serializable { 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(); + int hash = 7; hash = 73 * hash + Objects.hashCode(firstYear); hash = 73 * hash + Objects.hashCode(lastYear); hash = 73 * hash + Objects.hashCode(issn); @@ -197,9 +197,6 @@ public class Journal implements Serializable { if (obj == null) { return false; } - if (!super.equals(obj)) { - return false; - } if (!(obj instanceof Journal)) { return false; } diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Publication.java b/sci-publications/src/main/java/org/scientificcms/publications/Publication.java index 13abe3e..ccbade6 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/Publication.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/Publication.java @@ -19,6 +19,8 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.Table; @@ -32,6 +34,7 @@ import static org.scientificcms.publications.SciPublicationsConstants.*; */ @Entity @Table(name = "PUBLICATIONS", schema = DB_SCHEMA) +@Inheritance(strategy = InheritanceType.JOINED) @Audited public class Publication implements Serializable { diff --git a/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisher.java b/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisher.java index d4f4043..21643a5 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisher.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/PublicationWithPublisher.java @@ -8,18 +8,15 @@ package org.scientificcms.publications; import org.hibernate.envers.Audited; import org.libreccm.l10n.LocalizedString; -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.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; import javax.persistence.Table; import static org.scientificcms.publications.SciPublicationsConstants.*; @@ -122,7 +119,7 @@ public class PublicationWithPublisher extends Publication { @Override public int hashCode() { - int hash = 7; + int hash = super.hashCode(); hash = 47 * hash + Objects.hashCode(publisher); hash = 47 * hash + Objects.hashCode(isbn10); hash = 47 * hash + Objects.hashCode(isbn13); diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Publisher.java b/sci-publications/src/main/java/org/scientificcms/publications/Publisher.java index 09bedf1..7881eac 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/Publisher.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/Publisher.java @@ -121,7 +121,7 @@ public class Publisher implements Serializable { @Override public int hashCode() { - int hash = super.hashCode(); + int hash = 7; hash = 29 * hash + (int) (publisherId ^ (publisherId >>> 32)); hash = 29 * hash + Objects.hashCode(uuid); hash = 29 * hash + Objects.hashCode(name); @@ -137,9 +137,6 @@ public class Publisher implements Serializable { if (obj == null) { return false; } - if (!super.equals(obj)) { - return false; - } if (!(obj instanceof Publisher)) { return false; } diff --git a/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaper.java b/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaper.java index ab6136a..baf7215 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaper.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/WorkingPaper.java @@ -20,13 +20,38 @@ import static org.scientificcms.publications.SciPublicationsConstants.*; @Table(name = "WORKING_PAPERS", schema = DB_SCHEMA) @Audited public class WorkingPaper extends UnPublished { - + private static final long serialVersionUID = 1L; - + + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 41 * hash; + 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 WorkingPaper)) { + return false; + } + final WorkingPaper other = (WorkingPaper) obj; + return other.canEqual(this); + } + @Override public boolean canEqual(final Object obj) { - + return obj instanceof WorkingPaper; } - + } 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 3d29409..67f00e0 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 @@ -58,7 +58,7 @@ public class PublisherAsset extends Asset { if (obj == null) { return false; } - if (!super.canEqual(this)) { + if (!super.equals(obj)) { return false; } if (!(obj instanceof PublisherAsset)) { diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/AbstractPublicationItem.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/AbstractPublicationItem.java index ff6ed1d..78800e5 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/AbstractPublicationItem.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/AbstractPublicationItem.java @@ -31,6 +31,32 @@ public abstract class AbstractPublicationItem protected abstract void setPublication(T publication); + @Override + public int hashCode() { + int hash = super.hashCode(); + hash = 29 * hash; + 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 AbstractPublicationItem)) { + return false; + } + final AbstractPublicationItem other + = (AbstractPublicationItem) obj; + return other.canEqual(this); + } + @Override public boolean canEqual(final Object obj) { diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/AbstractPublicationWithPublisherItem.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/AbstractPublicationWithPublisherItem.java index bf611d9..e59e1d1 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/AbstractPublicationWithPublisherItem.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/AbstractPublicationWithPublisherItem.java @@ -26,6 +26,32 @@ public abstract class AbstractPublicationWithPublisherItem other + = (AbstractPublicationWithPublisherItem) obj; + return other.canEqual(this); + } + @Override public boolean canEqual(final Object obj) { return obj instanceof AbstractPublicationWithPublisherItem; diff --git a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ArticleInCollectedVolumeItem.java b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ArticleInCollectedVolumeItem.java index b7624f4..5892f7e 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ArticleInCollectedVolumeItem.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/contenttypes/ArticleInCollectedVolumeItem.java @@ -46,7 +46,7 @@ public class ArticleInCollectedVolumeItem @Override public int hashCode() { int hash = super.hashCode(); - hash = 67 * hash + Objects.hashCode(this.article); + hash = 67 * hash + Objects.hashCode(article); return hash; } @@ -69,7 +69,7 @@ public class ArticleInCollectedVolumeItem if (!other.canEqual(this)) { return false; } - return Objects.equals(this.article, other.getPublication()); + return Objects.equals(article, other.getPublication()); } @Override 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 e3479ce..8edaa21 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 @@ -62,14 +62,14 @@ public class CollectedVolumeItem if (!super.equals(obj)) { return false; } - if (!(obj instanceof CollectedVolume)) { + if (!(obj instanceof CollectedVolumeItem)) { return false; } final CollectedVolumeItem other = (CollectedVolumeItem) obj; if (!other.canEqual(this)) { return false; } - return Objects.equals(this.collectedVolume, other.getPublication()); + return Objects.equals(collectedVolume, other.getPublication()); } @Override diff --git a/sci-publications/src/test/java/org/libreccm/security/SecurityEntitiesPrefabProvider.java b/sci-publications/src/test/java/org/libreccm/security/SecurityEntitiesPrefabProvider.java index c4f826c..ee3b697 100644 --- a/sci-publications/src/test/java/org/libreccm/security/SecurityEntitiesPrefabProvider.java +++ b/sci-publications/src/test/java/org/libreccm/security/SecurityEntitiesPrefabProvider.java @@ -5,7 +5,7 @@ */ package org.libreccm.security; -import nl.jqno.equalsverifier.EqualsVerifier; +import nl.jqno.equalsverifier.EqualsVerifierApi; /** * @@ -17,7 +17,7 @@ public final class SecurityEntitiesPrefabProvider { // Nothing } - public static void addPrefabEntities(final EqualsVerifier verifier) { + public static void addPrefabEntities(final EqualsVerifierApi verifier) { final Role role1 = new Role(); role1.setRoleId(2001); @@ -50,4 +50,16 @@ public final class SecurityEntitiesPrefabProvider { verifier.withPrefabValues(User.class, user1, user2); } + public static final void addPrefabPermissions( + final EqualsVerifierApi verifierApi) { + + final Permission permission1 = new Permission(); + permission1.setGrantedPrivilege("privilege1"); + final Permission permission2 = new Permission(); + permission2.setGrantedPrivilege("privilege2"); + verifierApi.withPrefabValues(Permission.class, + permission1, + permission2); + } + } diff --git a/sci-publications/src/test/java/org/scientificcms/publications/EqualsAndHashCodeTest.java.off b/sci-publications/src/test/java/org/scientificcms/publications/EqualsAndHashCodeTest.java similarity index 53% rename from sci-publications/src/test/java/org/scientificcms/publications/EqualsAndHashCodeTest.java.off rename to sci-publications/src/test/java/org/scientificcms/publications/EqualsAndHashCodeTest.java index 0452d6e..389d649 100644 --- a/sci-publications/src/test/java/org/scientificcms/publications/EqualsAndHashCodeTest.java.off +++ b/sci-publications/src/test/java/org/scientificcms/publications/EqualsAndHashCodeTest.java @@ -5,16 +5,19 @@ */ package org.scientificcms.publications; +import nl.jqno.equalsverifier.EqualsVerifierApi; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import org.libreccm.l10n.LocalizedString; import org.libreccm.tests.categories.UnitTest; import org.libreccm.testutils.EqualsVerifier; +import org.librecms.assets.Organization; import java.util.Arrays; import java.util.Collection; import java.util.Locale; + + /** * * @author Jens Pelzetter @@ -51,8 +54,7 @@ public class EqualsAndHashCodeTest extends EqualsVerifier { } @Override - protected void addPrefabValues( - final nl.jqno.equalsverifier.EqualsVerifier verifier) { + protected void addPrefabValues(final EqualsVerifierApi verifier) { final CollectedVolume volume1 = new CollectedVolume(); volume1.getTitle().addValue(Locale.ENGLISH, "Test 1"); @@ -60,6 +62,35 @@ public class EqualsAndHashCodeTest extends EqualsVerifier { volume2.getTitle().addValue(Locale.ENGLISH, "Test 2"); verifier.withPrefabValues(CollectedVolume.class, volume1, volume2); + final Journal journal1 = new Journal(); + journal1.setTitle("Journal 1"); + journal1.setFirstYear(1980); + final Journal journal2 = new Journal(); + journal2.setTitle("Journal 2"); + journal2.setFirstYear(2004); + verifier.withPrefabValues(Journal.class, journal1, journal2); + + final Publisher publisher1 = new Publisher(); + publisher1.setName("publisher1"); + final Publisher publisher2 = new Publisher(); + publisher2.setName("publisher2"); + verifier.withPrefabValues(Publisher.class, publisher1, publisher2); + + final Organization organization1 = new Organization(); + organization1.setName("Orga 1"); + final Organization organization2 = new Organization(); + organization2.setName("Orga 2"); + verifier.withPrefabValues(Organization.class, + organization1, + organization2); + + final Proceedings proceedings1 = new Proceedings(); + proceedings1.getTitle().addValue(Locale.ENGLISH, "Proceedings 1"); + final Proceedings proceedings2 = new Proceedings(); + proceedings2.getTitle().addValue(Locale.ENGLISH, "Proceedings 2"); + verifier.withPrefabValues(Proceedings.class, + proceedings1, + proceedings2); } } diff --git a/sci-publications/src/test/java/org/scientificcms/publications/assets/EqualsAndHashCodeTest.java b/sci-publications/src/test/java/org/scientificcms/publications/assets/EqualsAndHashCodeTest.java new file mode 100644 index 0000000..95d6dc4 --- /dev/null +++ b/sci-publications/src/test/java/org/scientificcms/publications/assets/EqualsAndHashCodeTest.java @@ -0,0 +1,114 @@ +/* + * 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 nl.jqno.equalsverifier.EqualsVerifierApi; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.libreccm.categorization.Category; +import org.libreccm.core.CcmObject; +import org.libreccm.security.Permission; +import org.libreccm.security.SecurityEntitiesPrefabProvider; +import org.libreccm.tests.categories.UnitTest; +import org.libreccm.testutils.EqualsVerifier; +import org.librecms.contentsection.ItemAttachment; +import org.scientificcms.publications.CollectedVolume; +import org.scientificcms.publications.Journal; +import org.scientificcms.publications.Proceedings; +import org.scientificcms.publications.Publisher; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Locale; + +/** + * + * @author Jens Pelzetter + */ +@RunWith(Parameterized.class) +@org.junit.experimental.categories.Category(UnitTest.class) +public class EqualsAndHashCodeTest extends EqualsVerifier { + + @Parameterized.Parameters(name = "{0}") + public static Collection> data() { + + return Arrays.asList(new Class[]{ + CollectedVolumeAsset.class, + JournalAsset.class, + ProceedingsAsset.class, + PublisherAsset.class + }); + } + + public EqualsAndHashCodeTest(final Class clazz) { + super(clazz); + } + + @Override + protected void addPrefabValues(final EqualsVerifierApi verifier) { + + final CollectedVolume volume1 = new CollectedVolume(); + volume1.getTitle().addValue(Locale.ENGLISH, "Test 1"); + final CollectedVolume volume2 = new CollectedVolume(); + volume2.getTitle().addValue(Locale.ENGLISH, "Test 2"); + verifier.withPrefabValues(CollectedVolume.class, volume1, volume2); + + final Journal journal1 = new Journal(); + journal1.setTitle("Journal 1"); + journal1.setFirstYear(1980); + final Journal journal2 = new Journal(); + journal2.setTitle("Journal 2"); + journal2.setFirstYear(2004); + verifier.withPrefabValues(Journal.class, journal1, journal2); + + final Publisher publisher1 = new Publisher(); + publisher1.setName("publisher1"); + final Publisher publisher2 = new Publisher(); + publisher2.setName("publisher2"); + verifier.withPrefabValues(Publisher.class, publisher1, publisher2); + + final PublisherAsset publisherAsset1 = new PublisherAsset(); + publisherAsset1.setPublisher(publisher1); + final PublisherAsset publisherAsset2 = new PublisherAsset(); + publisherAsset2.setPublisher(publisher2); + verifier.withPrefabValues(PublisherAsset.class, + publisherAsset1, + publisherAsset2); + + final ItemAttachment attachment1 + = new ItemAttachment<>(); + attachment1.setAsset(publisherAsset1); + final ItemAttachment attachment2 + = new ItemAttachment<>(); + attachment2.setAsset(publisherAsset2); + verifier.withPrefabValues(ItemAttachment.class, + attachment1, + attachment2); + + final Proceedings proceedings1 = new Proceedings(); + proceedings1.getTitle().addValue(Locale.ENGLISH, "Proceedings 1"); + final Proceedings proceedings2 = new Proceedings(); + proceedings2.getTitle().addValue(Locale.ENGLISH, "Proceedings 2"); + verifier.withPrefabValues(Proceedings.class, + proceedings1, + proceedings2); + + SecurityEntitiesPrefabProvider.addPrefabPermissions(verifier); + + final Category category1 = new Category(); + category1.setName("category1"); + final Category category2 = new Category(); + category2.setName("category2"); + verifier.withPrefabValues(Category.class, category1, category2); + + final CcmObject ccmObject1 = new CcmObject(); + ccmObject1.setDisplayName("obj1"); + final CcmObject ccmObject2 = new CcmObject(); + ccmObject2.setDisplayName("obj2"); + verifier.withPrefabValues(CcmObject.class, ccmObject1, ccmObject2); + } + +} diff --git a/sci-publications/src/test/java/org/scientificcms/publications/assets/EqualsAndHashCodeTest.java.off b/sci-publications/src/test/java/org/scientificcms/publications/assets/EqualsAndHashCodeTest.java.off deleted file mode 100644 index fe95c0d..0000000 --- a/sci-publications/src/test/java/org/scientificcms/publications/assets/EqualsAndHashCodeTest.java.off +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.libreccm.tests.categories.UnitTest; -import org.libreccm.testutils.EqualsVerifier; -import org.librecms.contentsection.AttachmentList; -import org.librecms.contentsection.ContentItem; -import org.librecms.contentsection.ContentSection; -import org.librecms.contentsection.ContentType; -import org.librecms.contentsection.ItemAttachment; -import org.scientificcms.publications.ArticleInJournal; -import org.scientificcms.publications.CollectedVolume; -import org.scientificcms.publications.Journal; -import org.scientificcms.publications.Publisher; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Locale; - -/** - * - * @author Jens Pelzetter - */ -@RunWith(Parameterized.class) -@org.junit.experimental.categories.Category(UnitTest.class) -public class EqualsAndHashCodeTest extends EqualsVerifier { - - @Parameterized.Parameters(name = "{0}") - public static Collection> data() { - - return Arrays.asList(new Class[]{ - CollectedVolumeAsset.class, - JournalAsset.class, - ProceedingsAsset.class, - PublisherAsset.class - }); - } - - public EqualsAndHashCodeTest(final Class clazz) { - super(clazz); - } - - @Override - protected void addPrefabValues( - final nl.jqno.equalsverifier.EqualsVerifier verifier) { - - final CollectedVolume volume1 = new CollectedVolume(); - volume1.getTitle().addValue(Locale.ENGLISH, "Test 1"); - final CollectedVolume volume2 = new CollectedVolume(); - volume2.getTitle().addValue(Locale.ENGLISH, "Test 2"); - verifier.withPrefabValues(CollectedVolume.class, volume1, volume2); - - final CollectedVolumeAsset volumeAsset1 = new CollectedVolumeAsset(); - volumeAsset1.setCollectedVolume(volume1); - final CollectedVolumeAsset volumeAsset2 = new CollectedVolumeAsset(); - volumeAsset2.setCollectedVolume(volume2); - verifier.withPrefabValues(CollectedVolumeAsset.class, - volumeAsset1, - volumeAsset2); - - final ContentSection section1 = new ContentSection(); - section1.setDisplayName("section1"); - final ContentSection section2 = new ContentSection(); - section2.setDisplayName("section2"); - verifier.withPrefabValues(ContentSection.class, section1, section2); - - final ContentType type1 = new ContentType(); - type1.setDisplayName("type1"); - final ContentType type2 = new ContentType(); - type2.setDisplayName("type2"); - verifier.withPrefabValues(ContentType.class, type1, type2); - - final ContentItem item1 = new ContentItem(); - item1.setDisplayName("item1"); - final ContentItem item2 = new ContentItem(); - item2.setDisplayName("item2"); - verifier.withPrefabValues(ContentItem.class, item1, item2); - - final AttachmentList list1 = new AttachmentList(); - list1.setName("list1"); - final AttachmentList list2 = new AttachmentList(); - list2.setName("list2"); - verifier.withPrefabValues(AttachmentList.class, list1, list2); - - final Journal journal1 = new Journal(); - journal1.setTitle("Journal 1"); - final Journal journal2 = new Journal(); - journal2.setTitle("Journal 2"); - verifier.withPrefabValues(Journal.class, journal1, journal2); - - final ArticleInJournal article1 = new ArticleInJournal(); - article1.getTitle().addValue(Locale.ENGLISH, "Article 1"); - final ArticleInJournal article2 = new ArticleInJournal(); - article2.getTitle().addValue(Locale.ENGLISH, "Article 2"); - verifier.withPrefabValues(ArticleInJournal.class, article1, article2); - } - -} diff --git a/sci-publications/src/test/java/org/scientificcms/publications/assets/PrefabAssetsProvider.java b/sci-publications/src/test/java/org/scientificcms/publications/assets/PrefabAssetsProvider.java new file mode 100644 index 0000000..6402736 --- /dev/null +++ b/sci-publications/src/test/java/org/scientificcms/publications/assets/PrefabAssetsProvider.java @@ -0,0 +1,50 @@ +/* + * 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 nl.jqno.equalsverifier.EqualsVerifierApi; +import org.librecms.contentsection.ItemAttachment; +import org.scientificcms.publications.Publisher; + +/** + * + * @author Jens Pelzetter + */ +public final class PrefabAssetsProvider { + + private PrefabAssetsProvider() { + // Nothing + } + + public static final void addPrefabAssetsAndAttachments( + final EqualsVerifierApi verifier) { + + final Publisher publisher1 = new Publisher(); + publisher1.setName("publisher1"); + final Publisher publisher2 = new Publisher(); + publisher2.setName("publisher2"); + verifier.withPrefabValues(Publisher.class, publisher1, publisher2); + + final PublisherAsset publisherAsset1 = new PublisherAsset(); + publisherAsset1.setPublisher(publisher1); + final PublisherAsset publisherAsset2 = new PublisherAsset(); + publisherAsset2.setPublisher(publisher2); + verifier.withPrefabValues(PublisherAsset.class, + publisherAsset1, + publisherAsset2); + + final ItemAttachment attachment1 + = new ItemAttachment<>(); + attachment1.setAsset(publisherAsset1); + final ItemAttachment attachment2 + = new ItemAttachment<>(); + attachment2.setAsset(publisherAsset2); + verifier.withPrefabValues(ItemAttachment.class, + attachment1, + attachment2); + } + +} diff --git a/sci-publications/src/test/java/org/scientificcms/publications/contenttypes/EqualsAndHashCodeTest.java b/sci-publications/src/test/java/org/scientificcms/publications/contenttypes/EqualsAndHashCodeTest.java new file mode 100644 index 0000000..2403c24 --- /dev/null +++ b/sci-publications/src/test/java/org/scientificcms/publications/contenttypes/EqualsAndHashCodeTest.java @@ -0,0 +1,161 @@ +/* + * 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 nl.jqno.equalsverifier.EqualsVerifierApi; +import nl.jqno.equalsverifier.Warning; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.libreccm.categorization.Category; +import org.libreccm.core.CcmObject; +import org.libreccm.security.SecurityEntitiesPrefabProvider; +import org.libreccm.tests.categories.UnitTest; +import org.libreccm.testutils.EqualsVerifier; +import org.libreccm.workflow.Workflow; +import org.librecms.assets.Organization; +import org.librecms.contentsection.ContentItem; +import org.librecms.contentsection.ContentSection; +import org.librecms.lifecycle.Lifecycle; +import org.librecms.lifecycle.LifecycleDefinition; +import org.scientificcms.publications.CollectedVolume; +import org.scientificcms.publications.Journal; +import org.scientificcms.publications.Proceedings; +import org.scientificcms.publications.assets.PrefabAssetsProvider; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Locale; + +/** + * + * @author Jens Pelzetter + */ +@RunWith(Parameterized.class) +@org.junit.experimental.categories.Category(UnitTest.class) +public class EqualsAndHashCodeTest extends EqualsVerifier { + + @Parameterized.Parameters(name = "{0}") + public static Collection> data() { + + return Arrays.asList(new Class[]{ + ArticleInCollectedVolumeItem.class, + ArticleInJournalItem.class, + CollectedVolumeItem.class, + ExpertiseItem.class, + GreyLiteratureItem.class, + InProceedingsItem.class, + InternetArticleItem.class, + MonographItem.class, + ProceedingsItem.class, + TalkItem.class, + WorkingPaperItem.class + }); + } + + public EqualsAndHashCodeTest(final Class clazz) { + super(clazz); + } + + @Override + protected void addSuppressWarnings(final EqualsVerifierApi verifier) { + super.addSuppressWarnings(verifier); + verifier.suppress(Warning.REFERENCE_EQUALITY); + } + + @Override + protected void addPrefabValues( + final nl.jqno.equalsverifier.EqualsVerifierApi verifier) { + + final CollectedVolume volume1 = new CollectedVolume(); + volume1.getTitle().addValue(Locale.ENGLISH, "Test 1"); + final CollectedVolume volume2 = new CollectedVolume(); + volume2.getTitle().addValue(Locale.ENGLISH, "Test 2"); + verifier.withPrefabValues(CollectedVolume.class, volume1, volume2); + + final Journal journal1 = new Journal(); + journal1.setTitle("Journal 1"); + journal1.setFirstYear(1980); + final Journal journal2 = new Journal(); + journal2.setTitle("Journal 2"); + journal2.setFirstYear(2004); + verifier.withPrefabValues(Journal.class, journal1, journal2); + +// final Publisher publisher1 = new Publisher(); +// publisher1.setName("publisher1"); +// final Publisher publisher2 = new Publisher(); +// publisher2.setName("publisher2"); +// verifier.withPrefabValues(Publisher.class, publisher1, publisher2); + final Organization organization1 = new Organization(); + organization1.setName("Orga 1"); + final Organization organization2 = new Organization(); + organization2.setName("Orga 2"); + verifier.withPrefabValues(Organization.class, + organization1, + organization2); + + final Proceedings proceedings1 = new Proceedings(); + proceedings1.getTitle().addValue(Locale.ENGLISH, "Proceedings 1"); + final Proceedings proceedings2 = new Proceedings(); + proceedings2.getTitle().addValue(Locale.ENGLISH, "Proceedings 2"); + verifier.withPrefabValues(Proceedings.class, + proceedings1, + proceedings2); + + final ContentSection section1 = new ContentSection(); + section1.setDisplayName("section1"); + final ContentSection section2 = new ContentSection(); + section2.setDisplayName("section2"); + verifier.withPrefabValues(ContentSection.class, section1, section2); + + final Workflow workflow1 = new Workflow(); + workflow1.getName().addValue(Locale.ENGLISH, "workflow1"); + final Workflow workflow2 = new Workflow(); + workflow2.getName().addValue(Locale.ENGLISH, "workflow2"); + verifier.withPrefabValues(Workflow.class, workflow1, workflow2); + + SecurityEntitiesPrefabProvider.addPrefabPermissions(verifier); + + final Category category1 = new Category(); + category1.setName("category1"); + final Category category2 = new Category(); + category2.setName("category2"); + verifier.withPrefabValues(Category.class, category1, category2); + + final CcmObject ccmObject1 = new CcmObject(); + ccmObject1.setDisplayName("obj1"); + final CcmObject ccmObject2 = new CcmObject(); + ccmObject2.setDisplayName("obj2"); + verifier.withPrefabValues(CcmObject.class, ccmObject1, ccmObject2); + + final ContentItem item1 = new ContentItem(); + item1.setDisplayName("item1"); + final ContentItem item2 = new ContentItem(); + item2.setDisplayName("item2"); + verifier.withPrefabValues(ContentItem.class, item1, item2); + + PrefabAssetsProvider.addPrefabAssetsAndAttachments(verifier); + + final LifecycleDefinition lifecycleDef1 = new LifecycleDefinition(); + lifecycleDef1.setDefinitionId(-100); + lifecycleDef1.getLabel().addValue(Locale.ENGLISH, "def1"); + final LifecycleDefinition lifecycleDef2 = new LifecycleDefinition(); + lifecycleDef2.setDefinitionId(-110); + lifecycleDef2.getLabel().addValue(Locale.ENGLISH, "def2"); + verifier.withPrefabValues(LifecycleDefinition.class, + lifecycleDef1, + lifecycleDef2); + final Lifecycle lifecycle1 = new Lifecycle(); + lifecycle1.setDefinition(lifecycleDef1); + lifecycle1.setStarted(true); + final Lifecycle lifecycle2 = new Lifecycle(); + lifecycle2.setDefinition(lifecycleDef2); + lifecycle2.setStarted(false); + verifier.withPrefabValues(Lifecycle.class, lifecycle1, lifecycle2); + } + + + +} diff --git a/sci-publications/src/test/java/org/scientificcms/publications/contenttypes/EqualsAndHashCodeTest.java.off b/sci-publications/src/test/java/org/scientificcms/publications/contenttypes/EqualsAndHashCodeTest.java.off deleted file mode 100644 index 132adcb..0000000 --- a/sci-publications/src/test/java/org/scientificcms/publications/contenttypes/EqualsAndHashCodeTest.java.off +++ /dev/null @@ -1,168 +0,0 @@ -/* - * 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.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.libreccm.tests.categories.UnitTest; -import org.libreccm.testutils.EqualsVerifier; - -import java.util.Arrays; -import java.util.Collection; - -/** - * - * @author Jens Pelzetter - */ -@RunWith(Parameterized.class) -@org.junit.experimental.categories.Category(UnitTest.class) -public class EqualsAndHashCodeTest extends EqualsVerifier { - - @Parameterized.Parameters(name = "{0}") - public static Collection> data() { - - return Arrays.asList(new Class[]{ - ArticleInCollectedVolumeItem.class, - ArticleInJournalItem.class, - CollectedVolumeItem.class, - ExpertiseItem.class, - GreyLiteratureItem.class, - InProceedingsItem.class, - InternetArticleItem.class, - MonographItem.class, - ProceedingsItem.class, - TalkItem.class, - WorkingPaperItem.class - }); - } - - public EqualsAndHashCodeTest(final Class clazz) { - super(clazz); - } - - @Override - protected void addPrefabValues( - final nl.jqno.equalsverifier.EqualsVerifier verifier) { - -// final JournalAsset journal1 = new JournalAsset(); -// journal1.setFirstYear(1953); -// journal1.setSymbol("foo"); -// -// final JournalAsset journal2 = new JournalAsset(); -// journal2.setSymbol("bar"); -// -// verifier.withPrefabValues(JournalAsset.class, journal1, journal2); -// -// final PublisherAsset publisher1 = new PublisherAsset(); -// publisher1.setName("Muster Verlag"); -// publisher1.setPlace("Musterburg"); -// -// final PublisherAsset publisher2 = new PublisherAsset(); -// publisher2.setName("Example Press"); -// publisher2.setPlace("Riverton"); -// -// verifier.withPrefabValues(PublisherAsset.class, publisher1, publisher2); -// -// final ContentSection contentSection1 = new ContentSection(); -// contentSection1.setObjectId(401); -// contentSection1.setDisplayName("section1"); -// -// final ContentSection contentSection2 = new ContentSection(); -// contentSection2.setObjectId(402); -// contentSection2.setDisplayName("section2"); -// -// verifier.withPrefabValues(ContentSection.class, -// contentSection1, -// contentSection2); -// -// final ContentType contentType1 = new ContentType(); -// contentType1.setObjectId(501); -// contentType1.setDisplayName("type-1"); -// -// final ContentType contentType2 = new ContentType(); -// contentType2.setObjectId(502); -// contentType2.setDisplayName("type-2"); -// -// verifier.withPrefabValues(ContentType.class, -// contentType1, -// contentType2); -// -// final ContentItem item1 = new ContentItem(); -// item1.setObjectId(601); -// item1.setDisplayName("item1"); -// -// final ContentItem item2 = new ContentItem(); -// item2.setObjectId(602); -// item2.setDisplayName("item2"); -// -// verifier.withPrefabValues(ContentItem.class, item1, item2); -// -// final Lifecycle lifecycle1 = new Lifecycle(); -// lifecycle1.setLifecycleId(801); -// lifecycle1.setStarted(true); -// -// final Lifecycle lifecycle2 = new Lifecycle(); -// lifecycle2.setLifecycleId(802); -// lifecycle2.setStarted(false); -// -// verifier.withPrefabValues(Lifecycle.class, lifecycle1, lifecycle2); -// -// final Workflow workflow1 = new Workflow(); -// final LocalizedString workflow1Name = new LocalizedString(); -// workflow1Name.addValue(Locale.ROOT, "workflow1"); -// workflow1.setName(workflow1Name); -// -// final Workflow workflow2 = new Workflow(); -// final LocalizedString workflow2Name = new LocalizedString(); -// workflow2Name.addValue(Locale.ROOT, "workflow2"); -// workflow2.setName(workflow2Name); -// -// verifier.withPrefabValues(Workflow.class, workflow1, workflow2); -// -// final CcmObject ccmObj1 = new CcmObject(); -// ccmObj1.setObjectId(1001); -// ccmObj1.setDisplayName("obj1"); -// -// final CcmObject ccmObj2 = new CcmObject(); -// ccmObj2.setObjectId(1002); -// ccmObj2.setDisplayName("obj2"); -// -// verifier.withPrefabValues(CcmObject.class, ccmObj1, ccmObj2); -// -// SecurityEntitiesPrefabProvider.addPrefabEntities(verifier); -// -// final Category category1 = new Category(); -// category1.setObjectId(5001); -// category1.setName("category1"); -// -// final Category category2 = new Category(); -// category2.setCategoryOrder(5002); -// category2.setName("category2"); -// -// verifier.withPrefabValues(Category.class, category1, category2); -// -// final Organization organization1 = new Organization(); -// organization1.setName("orga1"); -// -// final Organization organization2 = new Organization(); -// organization1.setName("orga2"); -// -// verifier.withPrefabValues(Organization.class, -// organization1, -// organization2); -// -// final ItemAttachment itemAttachment1 = new ItemAttachment<>(); -// itemAttachment1.setUuid("927ac9de-029d-4233-9015-1135eb861c34"); -// -// final ItemAttachment itemAttachment2 = new ItemAttachment<>(); -// itemAttachment2.setUuid("d1bd98a1-75c2-4e61-8f9f-2e2eadd30812"); -// -// verifier.withPrefabValues(ItemAttachment.class, -// itemAttachment1, -// itemAttachment2); - } - -} diff --git a/sci-types-project/src/test/java/org/libreccm/security/SecurityEntitiesPrefabProvider.java b/sci-types-project/src/test/java/org/libreccm/security/SecurityEntitiesPrefabProvider.java index c4f826c..c786519 100644 --- a/sci-types-project/src/test/java/org/libreccm/security/SecurityEntitiesPrefabProvider.java +++ b/sci-types-project/src/test/java/org/libreccm/security/SecurityEntitiesPrefabProvider.java @@ -5,7 +5,7 @@ */ package org.libreccm.security; -import nl.jqno.equalsverifier.EqualsVerifier; +import nl.jqno.equalsverifier.EqualsVerifierApi; /** * @@ -17,7 +17,7 @@ public final class SecurityEntitiesPrefabProvider { // Nothing } - public static void addPrefabEntities(final EqualsVerifier verifier) { + public static void addPrefabEntities(final EqualsVerifierApi verifier) { final Role role1 = new Role(); role1.setRoleId(2001); diff --git a/sci-types-project/src/test/java/org/scientificcms/contenttypes/sciproject/EqualsAndHashCodeTest.java b/sci-types-project/src/test/java/org/scientificcms/contenttypes/sciproject/EqualsAndHashCodeTest.java index b31ac94..065fe10 100644 --- a/sci-types-project/src/test/java/org/scientificcms/contenttypes/sciproject/EqualsAndHashCodeTest.java +++ b/sci-types-project/src/test/java/org/scientificcms/contenttypes/sciproject/EqualsAndHashCodeTest.java @@ -5,6 +5,7 @@ */ package org.scientificcms.contenttypes.sciproject; +import nl.jqno.equalsverifier.EqualsVerifierApi; import nl.jqno.equalsverifier.Warning; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -52,8 +53,7 @@ public class EqualsAndHashCodeTest extends EqualsVerifier { } @Override - protected void addPrefabValues( - final nl.jqno.equalsverifier.EqualsVerifier verifier) { + protected void addPrefabValues(final EqualsVerifierApi verifier) { final Contact contact1 = new Contact(); contact1.setContactId(10); @@ -193,27 +193,27 @@ public class EqualsAndHashCodeTest extends EqualsVerifier { category2.setName("category2"); verifier.withPrefabValues(Category.class, category1, category2); - + final Organization organization1 = new Organization(); organization1.setName("orga1"); - + final Organization organization2 = new Organization(); organization1.setName("orga2"); - - verifier.withPrefabValues(Organization.class, - organization1, + + verifier.withPrefabValues(Organization.class, + organization1, organization2); - + final ItemAttachment itemAttachment1 = new ItemAttachment<>(); itemAttachment1.setUuid("927ac9de-029d-4233-9015-1135eb861c34"); - + final ItemAttachment itemAttachment2 = new ItemAttachment<>(); itemAttachment2.setUuid("d1bd98a1-75c2-4e61-8f9f-2e2eadd30812"); - + verifier.withPrefabValues(ItemAttachment.class, - itemAttachment1, + itemAttachment1, itemAttachment2); - + verifier.suppress(Warning.REFERENCE_EQUALITY); }