From f4c053c0e08bf11d052f85b4605dc9c172494198 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Wed, 14 Jun 2023 11:14:24 +0200 Subject: [PATCH] new fields --- .../community/db/CommunityClaimType.java | 7 ++++ .../db/CommunityClaimTypeConverter.java | 35 +++++++++++++++++++ .../community/db/CommunityMembershipType.java | 8 +++++ .../db/CommunityMembershipTypeConverter.java | 31 ++++++++++++++++ .../community/db/CommunityStatus.java | 1 + .../community/db/model/Community.java | 29 +++++++++++++++ .../main/resources/sql/community-schema.sql | 4 ++- 7 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityClaimType.java create mode 100644 apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityClaimTypeConverter.java create mode 100644 apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityMembershipType.java create mode 100644 apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityMembershipTypeConverter.java diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityClaimType.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityClaimType.java new file mode 100644 index 00000000..7e9f0900 --- /dev/null +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityClaimType.java @@ -0,0 +1,7 @@ +package eu.dnetlib.openaire.community.db; + +public enum CommunityClaimType { + managersOnly, + membersOnly, + all +} diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityClaimTypeConverter.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityClaimTypeConverter.java new file mode 100644 index 00000000..f04bb752 --- /dev/null +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityClaimTypeConverter.java @@ -0,0 +1,35 @@ +package eu.dnetlib.openaire.community.db; + +import javax.persistence.AttributeConverter; + +import org.apache.commons.lang3.StringUtils; + +public class CommunityClaimTypeConverter implements AttributeConverter { + + @Override + public String convertToDatabaseColumn(final CommunityClaimType attribute) { + if (attribute == null) { + return null; + } else if (attribute == CommunityClaimType.managersOnly) { + return "managers-only"; + } else if (attribute == CommunityClaimType.membersOnly) { + return "members-only"; + } else { + return attribute.toString(); + } + } + + @Override + public CommunityClaimType convertToEntityAttribute(final String dbData) { + if (StringUtils.isBlank(dbData)) { + return null; + } else if (dbData.equalsIgnoreCase("managers-only")) { + return CommunityClaimType.managersOnly; + } else if (dbData.equalsIgnoreCase("members-only")) { + return CommunityClaimType.membersOnly; + } else { + return CommunityClaimType.valueOf(dbData); + } + } + +} diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityMembershipType.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityMembershipType.java new file mode 100644 index 00000000..442cd080 --- /dev/null +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityMembershipType.java @@ -0,0 +1,8 @@ +package eu.dnetlib.openaire.community.db; + +public enum CommunityMembershipType { + + open, + byInvitation + +} diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityMembershipTypeConverter.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityMembershipTypeConverter.java new file mode 100644 index 00000000..1b25e35c --- /dev/null +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityMembershipTypeConverter.java @@ -0,0 +1,31 @@ +package eu.dnetlib.openaire.community.db; + +import javax.persistence.AttributeConverter; + +import org.apache.commons.lang3.StringUtils; + +public class CommunityMembershipTypeConverter implements AttributeConverter { + + @Override + public String convertToDatabaseColumn(final CommunityMembershipType attribute) { + if (attribute == null) { + return null; + } else if (attribute == CommunityMembershipType.byInvitation) { + return "by-invitation"; + } else { + return attribute.toString(); + } + } + + @Override + public CommunityMembershipType convertToEntityAttribute(final String dbData) { + if (StringUtils.isBlank(dbData)) { + return null; + } else if (dbData.equalsIgnoreCase("by-invitation")) { + return CommunityMembershipType.byInvitation; + } else { + return CommunityMembershipType.valueOf(dbData); + } + } + +} diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityStatus.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityStatus.java index 521da00e..1c5cb969 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityStatus.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/CommunityStatus.java @@ -3,5 +3,6 @@ package eu.dnetlib.openaire.community.db; public enum CommunityStatus { all, manager, + members, hidden } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/Community.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/Community.java index c107d608..5753220f 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/Community.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/db/model/Community.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.time.LocalDateTime; import javax.persistence.Column; +import javax.persistence.Convert; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; @@ -20,6 +21,10 @@ import com.vladmihalcea.hibernate.type.array.StringArrayType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonStringType; +import eu.dnetlib.openaire.community.db.CommunityClaimType; +import eu.dnetlib.openaire.community.db.CommunityClaimTypeConverter; +import eu.dnetlib.openaire.community.db.CommunityMembershipType; +import eu.dnetlib.openaire.community.db.CommunityMembershipTypeConverter; import eu.dnetlib.openaire.community.db.CommunityStatus; import eu.dnetlib.openaire.community.db.CommunityType; @@ -48,10 +53,18 @@ public class Community implements Serializable { @Enumerated(EnumType.STRING) private CommunityStatus status = CommunityStatus.hidden; + @Column(name = "membership") + @Convert(converter = CommunityMembershipTypeConverter.class) + private CommunityMembershipType membership = CommunityMembershipType.byInvitation; + @Column(name = "type") @Enumerated(EnumType.STRING) private CommunityType type; + @Column(name = "claim") + @Convert(converter = CommunityClaimTypeConverter.class) + private CommunityClaimType claim; + @Type(type = "string-array") @Column(name = "subjects", columnDefinition = "text[]") private String[] subjects; @@ -118,6 +131,14 @@ public class Community implements Serializable { this.status = status; } + public CommunityMembershipType getMembership() { + return membership; + } + + public void setMembership(final CommunityMembershipType membership) { + this.membership = membership; + } + public CommunityType getType() { return type; } @@ -126,6 +147,14 @@ public class Community implements Serializable { this.type = type; } + public CommunityClaimType getClaim() { + return claim; + } + + public void setClaim(final CommunityClaimType claim) { + this.claim = claim; + } + public String[] getSubjects() { return subjects; } diff --git a/apps/dnet-exporter-api/src/main/resources/sql/community-schema.sql b/apps/dnet-exporter-api/src/main/resources/sql/community-schema.sql index fbcff1a6..f6e06032 100644 --- a/apps/dnet-exporter-api/src/main/resources/sql/community-schema.sql +++ b/apps/dnet-exporter-api/src/main/resources/sql/community-schema.sql @@ -9,8 +9,10 @@ CREATE TABLE communities ( id text PRIMARY KEY, label text NOT NULL, description text NOT NULL DEFAULT '', - status text NOT NULL DEFAULT 'hidden', -- all, manager, hidden + status text NOT NULL DEFAULT 'hidden', -- all, manager, hidden, members + membership text NOT NULL DEFAULT 'by-invitation', -- open by-invitation type text NOT NULL, -- community, ri + claim text, -- managers-only, members-only, all subjects text[], fos text[], sdg text[],