diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java index ceb3230a..9ecd3cca 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java @@ -17,6 +17,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.security.core.Authentication; @@ -82,6 +83,8 @@ public class OrganizationController extends AbstractDnetController { private JournalEntryRepository journalEntryRepository; @Autowired private DatabaseUtils databaseUtils; + @Value("${openaire.explore.organization.baseurl}") + private String oaBaseUrl; @PostMapping("/save") public List save(@RequestBody final OrganizationView org, final Authentication authentication) { @@ -104,7 +107,9 @@ public class OrganizationController extends AbstractDnetController { @GetMapping("/info") public OrganizationInfoView infoById(@RequestParam final String id, final Authentication authentication) { - return organizationInfoViewRepository.findById(id).get(); + final OrganizationInfoView info = organizationInfoViewRepository.findById(id).get(); + info.fillGraphNodeInfo(info.getId(), oaBaseUrl); + return info; } @GetMapping("/suggestionsInfo") @@ -148,12 +153,18 @@ public class OrganizationController extends AbstractDnetController { @GetMapping("/duplicates") public List duplicates(@RequestParam final String id, final Authentication authentication) { if (UserInfo.isSuperAdmin(authentication) || userCountryRepository.verifyAuthorizationForId(id, UserInfo.getEmail(authentication))) { - return openaireDuplicateViewRepository.findByLocalId(id); + return listDuplicates(id); } else { throw new RuntimeException("User not authorized"); } } + private List listDuplicates(final String id) { + final List list = openaireDuplicateViewRepository.findByLocalId(id); + list.forEach(d -> d.fillGraphNodeInfo(d.getOaOriginalId(), oaBaseUrl)); + return list; + } + @GetMapping("/conflicts/byCountry/{country}") public Collection> findConflictsByCountry(@PathVariable final String country, final Authentication authentication) { @@ -222,7 +233,7 @@ public class OrganizationController extends AbstractDnetController { if (b) { databaseUtils.saveDuplicates(simrels, UserInfo.getEmail(authentication)); - return openaireDuplicateViewRepository.findByLocalId(simrels.get(0).getLocalId()); + return listDuplicates(simrels.get(0).getLocalId()); } else { throw new RuntimeException("User not authorized"); } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/utils/OpenaireGraphNode.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/utils/OpenaireGraphNode.java new file mode 100644 index 00000000..6867942b --- /dev/null +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/utils/OpenaireGraphNode.java @@ -0,0 +1,23 @@ +package eu.dnetlib.organizations.model.utils; + +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; + +public interface OpenaireGraphNode { + + String getOaGraphId(); + + void setOaGraphId(String oaGraphId); + + String getOaGraphUrl(); + + void setOaGraphUrl(String oaGraphUrl); + + default void fillGraphNodeInfo(final String origId, final String baseUrl) { + final String oaGraphId = StringUtils.substringBefore(origId, "::") + "::" + + DigestUtils.md5Hex(StringUtils.substringAfter(origId, "::")); + setOaGraphId(oaGraphId); + setOaGraphUrl(baseUrl + oaGraphId); + } + +} 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 2ae92694..2a02ed35 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 @@ -8,15 +8,17 @@ import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.Table; +import javax.persistence.Transient; import org.hibernate.annotations.Type; import eu.dnetlib.organizations.model.OpenaireDuplicatePK; +import eu.dnetlib.organizations.model.utils.OpenaireGraphNode; @Entity @Table(name = "oa_duplicates_view") @IdClass(OpenaireDuplicatePK.class) -public class OpenaireDuplicateView implements Serializable { +public class OpenaireDuplicateView implements Serializable, OpenaireGraphNode { /** * @@ -86,6 +88,12 @@ public class OpenaireDuplicateView implements Serializable { @Column(name = "ec_nutscode") private Boolean ecNutscode; + @Transient + private String oaGraphId; + + @Transient + private String oaGraphUrl; + public String getLocalId() { return localId; } @@ -246,4 +254,24 @@ public class OpenaireDuplicateView implements Serializable { this.ecNutscode = ecNutscode; } + @Override + public String getOaGraphId() { + return oaGraphId; + } + + @Override + public void setOaGraphId(final String oaGraphId) { + this.oaGraphId = oaGraphId; + } + + @Override + public String getOaGraphUrl() { + return oaGraphUrl; + } + + @Override + public void setOaGraphUrl(final String oaGraphUrl) { + this.oaGraphUrl = oaGraphUrl; + } + } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationInfoView.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationInfoView.java index 8bc083f8..7109d8a1 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationInfoView.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/model/view/OrganizationInfoView.java @@ -7,10 +7,13 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; +import javax.persistence.Transient; + +import eu.dnetlib.organizations.model.utils.OpenaireGraphNode; @Entity @Table(name = "organizations_info_view") -public class OrganizationInfoView implements Serializable { +public class OrganizationInfoView implements Serializable, OpenaireGraphNode { /** * @@ -45,6 +48,12 @@ public class OrganizationInfoView implements Serializable { @Column(name = "note") private boolean note; + @Transient + private String oaGraphId; + + @Transient + private String oaGraphUrl; + public String getId() { return id; } @@ -117,4 +126,24 @@ public class OrganizationInfoView implements Serializable { this.note = note; } + @Override + public String getOaGraphId() { + return oaGraphId; + } + + @Override + public void setOaGraphId(final String oaGraphId) { + this.oaGraphId = oaGraphId; + } + + @Override + public String getOaGraphUrl() { + return oaGraphUrl; + } + + @Override + public void setOaGraphUrl(final String oaGraphUrl) { + this.oaGraphUrl = oaGraphUrl; + } + } 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 fe82c515..b063a3da 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/application.properties +++ b/apps/dnet-orgs-database-application/src/main/resources/application.properties @@ -48,3 +48,4 @@ openorgs.support.pages = { "Ask a question": "https://www.openaire.eu/support/he openaire.override.logout.url = +openaire.explore.organization.baseurl = https://explore.openaire.eu/search/organization?organizationId= diff --git a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/pages/edit/edit.html b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/pages/edit/edit.html index 2d8e03af..5d7c1599 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/pages/edit/edit.html +++ b/apps/dnet-orgs-database-application/src/main/resources/static/resources/html/pages/edit/edit.html @@ -3,8 +3,10 @@
{{message}}

- ID: {{info.id}}
Created at {{info.creationDate | date:'MMMM d, y HH:mm:ss'}} by {{info.createdBy}}
Modified at {{info.modificationDate | date:'MMMM d, y HH:mm:ss'}} by - {{info.modifiedBy}} + ID: {{info.id}}
+ Created at {{info.creationDate | date:'MMMM d, y HH:mm:ss'}} by {{info.createdBy}}
+ Modified at {{info.modificationDate | date:'MMMM d, y HH:mm:ss'}} by {{info.modifiedBy}}
+ OA Graph Node ID: {{info.oaGraphId}} [try on OA Explore]

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 a491dcef..48f79291 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 @@ -35,7 +35,8 @@ {{sr.oaAcronym}} {{sr.oaCountry}} - Original Id: {{sr.oaOriginalId}} + Original Id: {{sr.oaOriginalId}}
+ OA Graph Node ID: {{sr.oaGraphId}} [try]
Provenance: {{sr.oaCollectedFrom}}

Added by: {{sr.createdBy}}