From 19ae08b1e43118c5c27fdab4e0b60fce0ef5a279 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Wed, 31 Jul 2019 13:50:07 +0200 Subject: [PATCH] SciProject Content Type * Moved all classes into unique package for SciProject. * Association classes --- .../Contact.java} | 6 +- .../contenttypes/sciproject/Membership.java | 152 ++++++++++++++ .../sciproject/MembershipStatus.java | 18 ++ .../{ => sciproject}/SciProject.java | 9 +- .../{ => sciproject}/SciProjectConstants.java | 2 +- .../{ => sciproject}/SciProjectModule.java | 2 +- .../contenttypes/sciproject/Sponsoring.java | 194 ++++++++++++++++++ 7 files changed, 375 insertions(+), 8 deletions(-) rename sci-types-project/src/main/java/org/scientificcms/contenttypes/{SciProjectContact.java => sciproject/Contact.java} (88%) create mode 100644 sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Membership.java create mode 100644 sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipStatus.java rename sci-types-project/src/main/java/org/scientificcms/contenttypes/{ => sciproject}/SciProject.java (93%) rename sci-types-project/src/main/java/org/scientificcms/contenttypes/{ => sciproject}/SciProjectConstants.java (91%) rename sci-types-project/src/main/java/org/scientificcms/contenttypes/{ => sciproject}/SciProjectModule.java (95%) create mode 100644 sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Sponsoring.java diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectContact.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Contact.java similarity index 88% rename from sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectContact.java rename to sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Contact.java index 498087e..2f5743b 100644 --- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectContact.java +++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Contact.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package org.scientificcms.contenttypes; +package org.scientificcms.contenttypes.sciproject; import org.hibernate.envers.Audited; import org.librecms.assets.ContactableEntity; @@ -19,7 +19,7 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; -import static org.scientificcms.contenttypes.SciProjectConstants.*; +import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*; /** * @@ -28,7 +28,7 @@ import static org.scientificcms.contenttypes.SciProjectConstants.*; @Entity @Audited @Table(name = "PROJECT_CONTACTS", schema = DB_SCHEMA) -public class SciProjectContact implements Serializable{ +public class Contact implements Serializable{ private static final long serialVersionUID = 1L; diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Membership.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Membership.java new file mode 100644 index 0000000..629c2bd --- /dev/null +++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Membership.java @@ -0,0 +1,152 @@ +/* + * 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.contenttypes.sciproject; + +import org.hibernate.envers.Audited; +import org.libreccm.core.CcmObjects; +import org.librecms.assets.Person; + +import java.io.Serializable; +import java.util.Objects; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*; + +/** + * + * @author Jens Pelzetter + */ +@Entity +@Audited +@Table(name = "PROJECT_MEMBERSHIPS", schema = DB_SCHEMA) +public class Membership implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "MEMBERSHIP_ID") + @GeneratedValue(strategy = GenerationType.AUTO) + private long membershipId; + + @Column(name = "MEMBER_ROLE", length = 255, nullable = true) + private String role; + + @Column(name = "STATUS") + @Enumerated(EnumType.STRING) + private MembershipStatus status; + + @ManyToOne + @JoinColumn(name = "PROJECT_ID") + private SciProject project; + + @ManyToOne + @JoinColumn(name = "MEMBER_ID") + private Person member; + + public long getMembershipId() { + return membershipId; + } + + protected void setMembershipId(final long membershipId) { + this.membershipId = membershipId; + } + + public String getRole() { + return role; + } + + public void setRole(final String role) { + this.role = role; + } + + public MembershipStatus getStatus() { + return status; + } + + public void setStatus(final MembershipStatus status) { + this.status = status; + } + + public SciProject getProject() { + return project; + } + + protected void setProject(final SciProject project) { + this.project = project; + } + + public Person getMember() { + return member; + } + + protected void setMember(final Person member) { + this.member = member; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 37 * hash + + (int) (membershipId ^ (membershipId >>> 32)); + hash = 37 * hash + Objects.hashCode(role); + hash = 37 * hash + Objects.hashCode(status); + hash = 37 * hash + CcmObjects.hashCodeUsingUuid(project); + hash = 37 * hash + CcmObjects.hashCodeUsingUuid(member); + return hash; + } + + @Override + public boolean equals(final Object obj) { + + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof Membership)) { + return false; + } + final Membership other = (Membership) obj; + if (!other.canEqual(this)) { + return false; + } + + if (membershipId != other.getMembershipId()) { + return false; + } + if (!Objects.equals(role, other.getRole())) { + return false; + } + + if (!CcmObjects.equalsUsingUuid(project, other.getProject())) { + return false; + } + if (!CcmObjects.equalsUsingUuid(member, other.getMember())) { + return false; + } + if (status != other.getStatus()) { + return false; + } + return true; + } + + public boolean canEqual(final Object obj) { + + return obj instanceof Membership; + } + +} diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipStatus.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipStatus.java new file mode 100644 index 0000000..7fed859 --- /dev/null +++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipStatus.java @@ -0,0 +1,18 @@ +/* + * 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.contenttypes.sciproject; + +/** + * + * @author Jens Pelzetter + */ +public enum MembershipStatus { + + ACTIVE, + ASSOCIATED, + FORMER, + +} diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProject.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProject.java similarity index 93% rename from sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProject.java rename to sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProject.java index 8ab317e..a2c5829 100644 --- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProject.java +++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProject.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package org.scientificcms.contenttypes; +package org.scientificcms.contenttypes.sciproject; import com.arsdigita.cms.contenttypes.ui.SciProjectPropertiesStep; import com.arsdigita.cms.ui.authoring.PageCreateForm; @@ -30,7 +30,7 @@ import javax.persistence.JoinTable; import javax.persistence.OneToMany; import javax.persistence.Table; -import static org.scientificcms.contenttypes.SciProjectConstants.*; +import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*; /** * @@ -110,6 +110,9 @@ public class SciProject extends ContentItem implements Serializable { private LocalizedString fundingVolume; @OneToMany(mappedBy = "project") - private List contacts; + private List contacts; + + @OneToMany(mappedBy = "project") + private List members; } diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectConstants.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectConstants.java similarity index 91% rename from sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectConstants.java rename to sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectConstants.java index 04111e3..7ce0d67 100644 --- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectConstants.java +++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectConstants.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package org.scientificcms.contenttypes; +package org.scientificcms.contenttypes.sciproject; /** * diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectModule.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectModule.java similarity index 95% rename from sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectModule.java rename to sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectModule.java index b6924db..6c1959d 100644 --- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/SciProjectModule.java +++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectModule.java @@ -1,7 +1,7 @@ /** * Add your license here, for example LGPL */ -package org.scientificcms.contenttypes; +package org.scientificcms.contenttypes.sciproject; import org.libreccm.modules.CcmModule; import org.libreccm.modules.InitEvent; diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Sponsoring.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Sponsoring.java new file mode 100644 index 0000000..2efc26e --- /dev/null +++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Sponsoring.java @@ -0,0 +1,194 @@ +/* + * 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.contenttypes.sciproject; + +import org.hibernate.envers.Audited; +import org.libreccm.core.CcmObjects; +import org.librecms.assets.Organization; + +import java.io.Serializable; +import java.util.Objects; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*; + +/** + * + * @author Jens Pelzetter + */ +@Entity +@Audited +@Table(name = "SPONSORING", schema = DB_SCHEMA) +public class Sponsoring implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "SPONSORING_ID") + @GeneratedValue(strategy = GenerationType.AUTO) + private long sponsoringId; + + @Column(name = "FUNDING_CODE", length = 512, nullable = true) + private String fundingCode; + + @Column(name = "SPONSOR_ORDER") + private long order; + + @ManyToOne + @JoinColumn(name = "PROJECT_ID") + private SciProject project; + + @ManyToOne + @JoinColumn(name = "SPONSOR_ID") + private Organization sponsor; + + public long getSponsoringId() { + return sponsoringId; + } + + protected void setSponsoringId(final long sponsoringId) { + this.sponsoringId = sponsoringId; + } + + public String getFundingCode() { + return fundingCode; + } + + public void setFundingCode(final String fundingCode) { + this.fundingCode = fundingCode; + } + + public long getOrder() { + return order; + } + + protected void setOrder(final long order) { + this.order = order; + } + + public SciProject getProject() { + return project; + } + + protected void setProject(final SciProject project) { + this.project = project; + } + + public Organization getSponsor() { + return sponsor; + } + + protected void setSponsor(final Organization sponsor) { + this.sponsor = sponsor; + } + + @Override + public int hashCode() { + + int hash = 3; + hash = 53 * hash + + (int) (sponsoringId ^ (sponsoringId >>> 32)); + hash = 53 * hash + Objects.hashCode(fundingCode); + hash = 53 * hash + (int) (order ^ (order >>> 32)); + hash = 53 * hash + CcmObjects.hashCodeUsingUuid(project); + hash = 53 * hash + CcmObjects.hashCodeUsingUuid(sponsor); + return hash; + } + + @Override + public boolean equals(final Object obj) { + + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof Sponsoring)) { + return false; + } + final Sponsoring other = (Sponsoring) obj; + if (!other.canEqual(this)) { + return false; + } + if (sponsoringId != other.getSponsoringId()) { + return false; + } + if (!Objects.equals(fundingCode, other.getFundingCode())) { + return false; + } + if (!CcmObjects.equalsUsingUuid(project, other.getProject())) { + return false; + } + if (!CcmObjects.equalsUsingUuid(sponsor, other.getSponsor())) { + return false; + } + return order == other.getOrder(); + } + + + public boolean canEqual(final Object obj) { + + return obj instanceof Sponsoring; + } + + @Override + public final String toString() { + + return toString(""); + } + + public String toString(final String data) { + + final String projectStr; + if (project == null) { + projectStr = ""; + } else { + projectStr = String.format("objectId = %d," + + "uuid = \"%s\", " + + "name = \"%s\"", + project.getObjectId(), + project.getUuid(), + project.getDisplayName()); + } + + final String sponsorStr; + if (sponsor == null) { + sponsorStr = ""; + } else { + sponsorStr = String.format("objectId = %d, " + + "uuid = \"%s\", " + + "name = \"%s\"", + sponsor.getObjectId(), + sponsor.getUuid(), + sponsor.getDisplayName()); + } + + return String.format("%s{ " + + "sponsoringId = %d, " + + "fundingCode = \"%s\", " + + "order = %d, " + + "project = { %s }, " + + "sponsor = { %s }%s" + + " }", + super.toString(), + sponsoringId, + fundingCode, + order, + projectStr, + sponsorStr, + data); + } + +}