diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/Organization.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/Organization.java index 277307d0..5f0dd077 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/Organization.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/Organization.java @@ -44,10 +44,43 @@ public class Organization implements Serializable { @Column(name = "status") private String status; + @Column(name = "ec_legalbody") + private Boolean ecLegalBody; + + @Column(name = "ec_legalperson") + private Boolean ecLegalPerson; + + @Column(name = "ec_nonprofit") + private Boolean ecNonProfit; + + @Column(name = "ec_researchorganization") + private Boolean ecResearchOrganization; + + @Column(name = "ec_highereducation") + private Boolean ecHigherEducation; + + @Column(name = "ec_internationalorganizationeurinterests") + private Boolean ecInternationalOrganizationEurInterests; + + @Column(name = "ec_internationalorganization") + private Boolean ecInternationalOrganization; + + @Column(name = "ec_enterprise") + private Boolean ecEnterprise; + + @Column(name = "ec_smevalidated") + private Boolean ecSmeValidated; + + @Column(name = "ec_nutscode") + private Boolean ecNutscode; + public Organization() {} public Organization(final String id, final String name, final String type, final Double lat, final Double lng, final String city, final String country, - final String status) { + final String status, final Boolean ecLegalBody, + final Boolean ecLegalPerson, final Boolean ecNonProfit, final Boolean ecResearchOrganization, final Boolean ecHigherEducation, + final Boolean ecInternationalOrganizationEurInterests, + final Boolean ecInternationalOrganization, final Boolean ecEnterprise, final Boolean ecSmeValidated, final Boolean ecNutscode) { this.id = id; this.name = name; this.type = type; @@ -56,6 +89,16 @@ public class Organization implements Serializable { this.city = city; this.country = country; this.status = status; + this.ecLegalBody = ecLegalBody; + this.ecLegalPerson = ecLegalPerson; + this.ecNonProfit = ecNonProfit; + this.ecResearchOrganization = ecResearchOrganization; + this.ecHigherEducation = ecHigherEducation; + this.ecInternationalOrganizationEurInterests = ecInternationalOrganizationEurInterests; + this.ecInternationalOrganization = ecInternationalOrganization; + this.ecEnterprise = ecEnterprise; + this.ecSmeValidated = ecSmeValidated; + this.ecNutscode = ecNutscode; } public String getId() { @@ -122,4 +165,12 @@ public class Organization implements Serializable { this.status = status; } + public Boolean getEcNutscode() { + return ecNutscode; + } + + public void setEcNutscode(final Boolean ecNutscode) { + this.ecNutscode = ecNutscode; + } + } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OpenaireDuplicateView.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OpenaireDuplicateView.java index a5e1e8d1..633169f5 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OpenaireDuplicateView.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OpenaireDuplicateView.java @@ -1,6 +1,7 @@ package eu.dnetlib.organizations.model.view; import java.io.Serializable; +import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; @@ -8,6 +9,8 @@ import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.Table; +import org.hibernate.annotations.Type; + import eu.dnetlib.organizations.model.OpenaireDuplicatePK; @Entity @@ -40,6 +43,10 @@ public class OpenaireDuplicateView implements Serializable { @Column(name = "oa_url") private String oaUrl; + @Type(type = "jsonb") + @Column(name = "oa_other_ids", columnDefinition = "jsonb") + private Set otherIdentifiers; + @Column(name = "oa_collectedfrom") private String oaCollectedFrom; @@ -97,6 +104,14 @@ public class OpenaireDuplicateView implements Serializable { this.oaUrl = oaUrl; } + public Set getOtherIdentifiers() { + return otherIdentifiers; + } + + public void setOtherIdentifiers(final Set otherIdentifiers) { + this.otherIdentifiers = otherIdentifiers; + } + public String getOaCollectedFrom() { return oaCollectedFrom; } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationView.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationView.java index a6081063..06d92519 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationView.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationView.java @@ -73,6 +73,36 @@ public class OrganizationView implements Serializable { @Column(name = "status") private String status; + @Column(name = "ec_legalbody") + private Boolean ecLegalBody; + + @Column(name = "ec_legalperson") + private Boolean ecLegalPerson; + + @Column(name = "ec_nonprofit") + private Boolean ecNonProfit; + + @Column(name = "ec_researchorganization") + private Boolean ecResearchOrganization; + + @Column(name = "ec_highereducation") + private Boolean ecHigherEducation; + + @Column(name = "ec_internationalorganizationeurinterests") + private Boolean ecInternationalOrganizationEurInterests; + + @Column(name = "ec_internationalorganization") + private Boolean ecInternationalOrganization; + + @Column(name = "ec_enterprise") + private Boolean ecEnterprise; + + @Column(name = "ec_smevalidated") + private Boolean ecSmeValidated; + + @Column(name = "ec_nutscode") + private Boolean ecNutscode; + public String getId() { return id; } @@ -177,4 +207,84 @@ public class OrganizationView implements Serializable { this.status = status; } + public Boolean getEcLegalBody() { + return ecLegalBody; + } + + public void setEcLegalBody(final Boolean ecLegalBody) { + this.ecLegalBody = ecLegalBody; + } + + public Boolean getEcLegalPerson() { + return ecLegalPerson; + } + + public void setEcLegalPerson(final Boolean ecLegalPerson) { + this.ecLegalPerson = ecLegalPerson; + } + + public Boolean getEcNonProfit() { + return ecNonProfit; + } + + public void setEcNonProfit(final Boolean ecNonProfit) { + this.ecNonProfit = ecNonProfit; + } + + public Boolean getEcResearchOrganization() { + return ecResearchOrganization; + } + + public void setEcResearchOrganization(final Boolean ecResearchOrganization) { + this.ecResearchOrganization = ecResearchOrganization; + } + + public Boolean getEcHigherEducation() { + return ecHigherEducation; + } + + public void setEcHigherEducation(final Boolean ecHigherEducation) { + this.ecHigherEducation = ecHigherEducation; + } + + public Boolean getEcInternationalOrganizationEurInterests() { + return ecInternationalOrganizationEurInterests; + } + + public void setEcInternationalOrganizationEurInterests(final Boolean ecInternationalOrganizationEurInterests) { + this.ecInternationalOrganizationEurInterests = ecInternationalOrganizationEurInterests; + } + + public Boolean getEcInternationalOrganization() { + return ecInternationalOrganization; + } + + public void setEcInternationalOrganization(final Boolean ecInternationalOrganization) { + this.ecInternationalOrganization = ecInternationalOrganization; + } + + public Boolean getEcEnterprise() { + return ecEnterprise; + } + + public void setEcEnterprise(final Boolean ecEnterprise) { + this.ecEnterprise = ecEnterprise; + } + + public Boolean getEcSmeValidated() { + return ecSmeValidated; + } + + public void setEcSmeValidated(final Boolean ecSmeValidated) { + this.ecSmeValidated = ecSmeValidated; + } + + public Boolean getEcNutscode() { + return ecNutscode; + } + + public void setEcNutscode(final Boolean ecNutscode) { + this.ecNutscode = ecNutscode; + } + } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java index d8be8a94..334b54d4 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java @@ -126,7 +126,11 @@ public class DatabaseUtils { orgView.getType(), orgView.getLat(), orgView.getLng(), orgView.getCity(), orgView.getCountry(), - newStatus); + newStatus, + orgView.getEcLegalBody(), + orgView.getEcLegalPerson(), orgView.getEcNonProfit(), orgView.getEcResearchOrganization(), orgView.getEcHigherEducation(), + orgView.getEcInternationalOrganizationEurInterests(), orgView.getEcInternationalOrganization(), orgView.getEcEnterprise(), + orgView.getEcSmeValidated(), orgView.getEcNutscode()); final String newId = organizationRepository.save(org).getId(); diff --git a/apps/dnet-orgs-database-application/src/main/resources/application.properties b/apps/dnet-orgs-database-application/src/main/resources/application.properties index 6460204f..c90406c7 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/application.properties +++ b/apps/dnet-orgs-database-application/src/main/resources/application.properties @@ -7,7 +7,6 @@ spring.main.banner-mode = off logging.level.root = INFO #logging.level.org.springframework = DEBUG - management.endpoints.web.exposure.include = prometheus,health management.endpoints.web.base-path = / management.endpoints.web.path-mapping.prometheus = metrics diff --git a/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql b/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql index d0e0d865..397b17e3 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql +++ b/apps/dnet-orgs-database-application/src/main/resources/sql/schema.sql @@ -337,7 +337,17 @@ CREATE TABLE organizations ( creation_date timestamp with time zone DEFAULT now(), modified_by text, modification_date timestamp with time zone DEFAULT now(), - status text NOT NULL DEFAULT 'suggested' + status text NOT NULL DEFAULT 'suggested', + ec_legalbody boolean, + ec_legalperson boolean, + ec_nonprofit boolean, + ec_researchorganization boolean, + ec_highereducation boolean, + ec_internationalorganizationeurinterests boolean, + ec_internationalorganization boolean, + ec_enterprise boolean, + ec_smevalidated boolean, + ec_nutscode boolean ); CREATE INDEX organizations_type_idx ON organizations(type); CREATE INDEX organizations_country_idx ON organizations(country); @@ -406,6 +416,7 @@ CREATE VIEW oa_duplicates_view AS array_to_string(array_agg(a.acronym), ', ') as oa_acronym, o.country as oa_country, array_to_string(array_agg(u.url), ', ') as oa_url, + COALESCE(jsonb_agg(DISTINCT jsonb_build_object('id', oid.otherid, 'type', oid.type)) FILTER (WHERE oid.otherid IS NOT NULL), '[]') AS oa_other_ids, d.oa_collectedfrom as oa_collectedfrom, d.reltype as reltype, d.created_by as created_by @@ -414,6 +425,7 @@ FROM LEFT OUTER JOIN organizations o ON (o.id = d.oa_original_id) LEFT OUTER JOIN acronyms a ON (o.id = a.id) LEFT OUTER JOIN urls u ON (o.id = u.id) + LEFT OUTER JOIN other_ids oid ON (o.id = oid.id) GROUP BY d.local_id, d.oa_original_id, @@ -447,6 +459,16 @@ CREATE VIEW organizations_view AS SELECT org.city, org.country, org.status, + org.ec_legalbody, + org.ec_legalperson, + org.ec_nonprofit, + org.ec_researchorganization, + org.ec_highereducation, + org.ec_internationalorganizationeurinterests, + org.ec_internationalorganization, + org.ec_enterprise, + org.ec_smevalidated, + org.ec_nutscode, COALESCE(jsonb_agg(DISTINCT jsonb_build_object('id', oid.otherid, 'type', oid.type)) FILTER (WHERE oid.otherid IS NOT NULL), '[]') AS other_ids, COALESCE(jsonb_agg(DISTINCT jsonb_build_object('name', n.name, 'lang', n.lang)) FILTER (WHERE n.name IS NOT NULL), '[]') AS other_names, COALESCE(jsonb_agg(DISTINCT a.acronym) FILTER (WHERE a.acronym IS NOT NULL), '[]') AS acronyms, @@ -468,7 +490,17 @@ GROUP BY org.lng, org.city, org.country, - org.status; + org.status, + org.ec_legalbody, + org.ec_legalperson, + org.ec_nonprofit, + org.ec_researchorganization, + org.ec_highereducation, + org.ec_internationalorganizationeurinterests, + org.ec_internationalorganization, + org.ec_enterprise, + org.ec_smevalidated, + org.ec_nutscode; CREATE VIEW organizations_info_view AS SELECT org.id, @@ -615,10 +647,3 @@ $$; CREATE TRIGGER insert_or_update_index_search_trigger AFTER INSERT OR UPDATE ON organizations FOR EACH ROW EXECUTE PROCEDURE insert_or_update_index_search_trigger(); CREATE TRIGGER delete_index_search_trigger BEFORE DELETE ON organizations FOR EACH ROW EXECUTE PROCEDURE delete_index_search(); - - - - - - - diff --git a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_details.html b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_details.html index 7ee7dfed..59e0c4c7 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_details.html +++ b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_details.html @@ -30,5 +30,9 @@ Urls {{u}}
+ + Other identifiers + {{oid.id}} ({{oid.type}})
+ diff --git a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_duplicates.html b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_duplicates.html index 774fcbaa..40b43ab7 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_duplicates.html +++ b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_duplicates.html @@ -15,8 +15,11 @@ - {{sr.oaName}}
- URL: {{sr.oaUrl}}
+ {{sr.oaName}} + +
PID ({{oid.type}}): {{oid.id}} +
+
URL: {{sr.oaUrl}}
{{sr.oaAcronym}} {{sr.oaCountry}} diff --git a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_metadata.form.html b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_metadata.form.html index a5587064..b6c43802 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_metadata.form.html +++ b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/parts/org_metadata.form.html @@ -34,6 +34,10 @@ + +
+ +
@@ -309,5 +313,28 @@ + + diff --git a/apps/dnet-orgs-database-application/src/main/resources/templates/main.html b/apps/dnet-orgs-database-application/src/main/resources/templates/main.html index 3e28ac4d..b490e910 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/templates/main.html +++ b/apps/dnet-orgs-database-application/src/main/resources/templates/main.html @@ -37,6 +37,11 @@ fieldset > legend { font-size : 1.2rem !important; } z-index: 100; border-radius: 15px; } + +.text-deleted { + color: gray !important; + text-decoration: line-through !important; +}