[CommunityAPIExtention] fixed issues

This commit is contained in:
Miriam Baglioni 2022-09-26 19:06:51 +02:00
parent e751759de9
commit 3549fdebf9
10 changed files with 78 additions and 22 deletions

View File

@ -22,6 +22,8 @@ public interface ISClient {
void updateContextParam(String id, String name, String value);
void updateContextParamNoEscape(String id, String name, String value);
void updateContextAttribute(String id, String name, String value);
void addConcept(String id, String categoryId, String data);

View File

@ -117,6 +117,18 @@ public class ISClientImpl implements ISClient {
}
}
@Override
@CacheEvict(value = {
"context-cache", "context-cache-funder"
}, allEntries = true)
public void updateContextParamNoEscape(final String id, final String name, final String value) {
try {
_quickSeachProfile(getXQueryNoEscape(id, name, value));
} catch (final ISLookUpException e) {
throw new DsmRuntimeException(String.format("unable update context param [id: %s, name: %s, value: %s]", id, name, value), e);
}
}
@Override
@CacheEvict(value = {
"context-cache", "context-cache-funder"
@ -211,6 +223,16 @@ public class ISClientImpl implements ISClient {
}
}
private String getXQueryNoEscape(final String id, final String name, final String value) {
if (StringUtils.isNotBlank(value)) {
return String.format("update replace collection('/db/DRIVER/ContextDSResources/ContextDSResourceType')" +
"/RESOURCE_PROFILE/BODY/CONFIGURATION/context[./@id = '%s']/param[./@name = '%s'] with <param name='%s'>%s</param>", id, name, name, value);
} else {
return String.format("update replace collection('/db/DRIVER/ContextDSResources/ContextDSResourceType')" +
"/RESOURCE_PROFILE/BODY/CONFIGURATION/context[./@id = '%s']/param[./@name = '%s'] with <param name='%s'/>", id, name, name);
}
}
private String getConceptXQuery(final String id, final String name, final String value) {
final Escaper esc = XmlEscapers.xmlContentEscaper();
if (StringUtils.isNotBlank(value)) {

View File

@ -10,6 +10,7 @@ import static eu.dnetlib.openaire.common.ExporterConstants.W;
import java.util.List;
import eu.dnetlib.openaire.community.selectioncriteria.SelectionCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.bind.annotation.CrossOrigin;
@ -387,7 +388,7 @@ public class CommunityApiController {
@ApiResponse(responseCode = "500", description = "unexpected error") })
public CommunityDetails addAdvancedConstraint(
@PathVariable final String id,
@RequestBody final String advancedConstraint) throws CommunityException, CommunityNotFoundException {
@RequestBody final SelectionCriteria advancedConstraint) throws CommunityException, CommunityNotFoundException {
return communityApiCore.addCommunityAdvancedConstraint(id, advancedConstraint);
}

View File

@ -3,6 +3,8 @@ package eu.dnetlib.openaire.community;
import java.util.*;
import java.util.stream.Collectors;
import com.google.gson.Gson;
import eu.dnetlib.openaire.community.selectioncriteria.SelectionCriteria;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@ -82,7 +84,7 @@ public class CommunityApiCore {// implements CommunityClient{
}
if (details.getAdvancedConstraint() != null) {
isClient.updateContextParam(id, CPROFILE_ADVANCED_CONSTRAINT, details.getAdvancedConstraint());
isClient.updateContextParamNoEscape(id, CPROFILE_ADVANCED_CONSTRAINT, "<![CDATA[" + new Gson().toJson(details.getAdvancedConstraint()) + "]]>");
}
if (details.getMainZenodoCommunity() != null) {
@ -310,7 +312,7 @@ public class CommunityApiCore {// implements CommunityClient{
current.addAll(sdgs);
cd.setFos(Lists.newArrayList(current));
cd.setSdg(Lists.newArrayList(current));
setCommunity(id, CommunityWritableProperties.fromDetails(cd));
@ -325,16 +327,16 @@ public class CommunityApiCore {// implements CommunityClient{
current.removeAll(sdgs);
cd.setFos(Lists.newArrayList(current));
cd.setSdg(Lists.newArrayList(current));
setCommunity(id, CommunityWritableProperties.fromDetails(cd));
return cd;
}
public CommunityDetails addCommunityAdvancedConstraint(final String id, final String advancedCosntraint) throws CommunityException, CommunityNotFoundException {
public CommunityDetails addCommunityAdvancedConstraint(final String id, final SelectionCriteria advancedCosntraint) throws CommunityException, CommunityNotFoundException {
final CommunityDetails cd = cc.getCommunity(id);
final CommunityDetails cd = new CommunityDetails();
cd.setAdvancedConstraint(advancedCosntraint);
@ -345,9 +347,9 @@ public class CommunityApiCore {// implements CommunityClient{
public CommunityDetails removeCommunityAdvancedConstraint(final String id) throws CommunityException, CommunityNotFoundException {
final CommunityDetails cd = cc.getCommunity(id);
cd.setAdvancedConstraint(null);
final CommunityDetails cd = new CommunityDetails();
SelectionCriteria sl = new SelectionCriteria();
cd.setAdvancedConstraint(sl);
setCommunity(id, CommunityWritableProperties.fromDetails(cd));

View File

@ -2,7 +2,9 @@ package eu.dnetlib.openaire.community;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import eu.dnetlib.openaire.common.ISClient;
import eu.dnetlib.openaire.community.selectioncriteria.SelectionCriteria;
import eu.dnetlib.openaire.context.Category;
import eu.dnetlib.openaire.context.Concept;
import eu.dnetlib.openaire.context.Context;
@ -199,6 +201,23 @@ public class CommunityCommon {
.setValue(Joiner.on(CSV_DELIMITER)
.join(community.getSubjects()))));
}
if(community.getFos() != null){
context.getParams()
.replace(CPROFILE_FOS, Arrays.asList(new Param().setName(CPROFILE_FOS)
.setValue(Joiner.on(CSV_DELIMITER)
.join(community.getFos()))));
}
if(community.getSdg() != null){
context.getParams()
.replace(CPROFILE_SDG, Arrays.asList(new Param().setName(CPROFILE_SDG)
.setValue(Joiner.on(CSV_DELIMITER)
.join(community.getSdg()))));
}
if (community.getAdvancedConstraint() != null) {
context.getParams()
.replace(CPROFILE_ADVANCED_CONSTRAINT, Arrays.asList(new Param()
.setName(CPROFILE_ADVANCED_CONSTRAINT).setValue(new Gson().toJson(community.getAdvancedConstraint()))));
}
if(community.getMainZenodoCommunity() != null){
context.getParams()
.replace(CSUMMARY_ZENODOC, Arrays.asList(new Param()

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import eu.dnetlib.openaire.community.selectioncriteria.SelectionCriteria;
import io.swagger.v3.oas.annotations.media.Schema;
@JsonAutoDetect
@ -26,7 +27,7 @@ public class CommunityDetails extends CommunitySummary {
private List<String> sdg;
@Schema(description = "list of advanced criteria to associate results to this community")
private String advancedConstraint;
private SelectionCriteria advancedConstraint;
public CommunityDetails() {}
@ -79,11 +80,11 @@ public class CommunityDetails extends CommunitySummary {
this.sdg = sdg;
}
public String getAdvancedConstraint() {
public SelectionCriteria getAdvancedConstraint() {
return advancedConstraint;
}
public void setAdvancedConstraint(String advancedConstraint) {
public void setAdvancedConstraint(SelectionCriteria advancedConstraint) {
this.advancedConstraint = advancedConstraint;
}
}

View File

@ -69,7 +69,7 @@ public class CommunityMappingUtils {
p.setSdg(splitValues(asValues(params.get(CPROFILE_SDG)), CSV_DELIMITER));
}
if (params.containsKey(CPROFILE_ADVANCED_CONSTRAINT)) {
p.setAdvancedConstraint(asCsv(params.get(CPROFILE_ADVANCED_CONSTRAINT)));
p.setAdvancedConstraint(SelectionCriteria.fromJson(asCsv(params.get(CPROFILE_ADVANCED_CONSTRAINT))));
}
if (params.containsKey(CPROFILE_CREATIONDATE)){
try {

View File

@ -4,8 +4,11 @@ import java.util.List;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import eu.dnetlib.openaire.community.selectioncriteria.SelectionCriteria;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.persistence.criteria.Selection;
@JsonAutoDetect
public class CommunityWritableProperties {
@ -31,7 +34,7 @@ public class CommunityWritableProperties {
private List<String> sdg;
@Schema(description = "Advanced constraint for the association of results to the community")
private String advancedConstraint;
private SelectionCriteria advancedConstraint;
@Schema(description = "status of the community, drives its visibility")
@ -71,11 +74,11 @@ public class CommunityWritableProperties {
this.sdg = sdg;
}
public String getAdvancedConstraint() {
public SelectionCriteria getAdvancedConstraint() {
return advancedConstraint;
}
public void setAdvancedConstraint(String advancedConstraint) {
public void setAdvancedConstraint(SelectionCriteria advancedConstraint) {
this.advancedConstraint = advancedConstraint;
}

View File

@ -22,7 +22,7 @@ management.endpoints.web.base-path = /
management.endpoints.web.path-mapping.prometheus = metrics
management.endpoints.web.path-mapping.health = health
apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java
# ENABLE / DISABLE CONTROLLERS
openaire.exporter.enable.dsm = true
openaire.exporter.enable.community = true

View File

@ -1,7 +1,12 @@
services.is.host = localhost
services.is.port = 8280
services.is.protocol = http
services.is.context = app
#services.is.host = localhost
services.is.host = dev-openaire.d4science.org
#services.is.port = 8280
services.is.port = 443
#services.is.protocol = http
services.is.protocol = https
#services.is.context = app
services.is.context = is
#services.is.baseurl = ${services.is.protocol}://${services.is.host}:${services.is.port}/${services.is.context}/services
services.is.baseurl = ${services.is.protocol}://${services.is.host}:${services.is.port}/${services.is.context}/services
openaire.exporter.isLookupUrl = ${services.is.baseurl}/isLookUp
@ -15,7 +20,8 @@ openaire.exporter.cxfClientConnectTimeout = 60000
openaire.exporter.cxfClientReceiveTimeout = 120000
# JDBC
openaire.exporter.jdbc.url = jdbc:postgresql://localhost:5432/dnet_openaireplus
#openaire.exporter.jdbc.url = jdbc:postgresql://localhost:5432/dnet_openaireplus
openaire.exporter.jdbc.url = jdbc:postgresql://localhost:5432/dev_openaire_8280
openaire.exporter.jdbc.user = dnetapi
openaire.exporter.jdbc.pwd = dnetPwd
openaire.exporter.jdbc.minIdle = 1