diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClient.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClient.java
index 01752de5..6a048867 100644
--- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClient.java
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClient.java
@@ -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);
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClientImpl.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClientImpl.java
index 3bb72c60..960d437d 100644
--- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClientImpl.java
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/common/ISClientImpl.java
@@ -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 %s", 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 ", id, name, name);
+ }
+ }
+
private String getConceptXQuery(final String id, final String name, final String value) {
final Escaper esc = XmlEscapers.xmlContentEscaper();
if (StringUtils.isNotBlank(value)) {
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java
index 75ad8fd8..bde3672d 100644
--- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java
@@ -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);
}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiCore.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiCore.java
index a07d8ea7..473b84a1 100644
--- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiCore.java
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiCore.java
@@ -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, "");
}
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));
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityCommon.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityCommon.java
index fde84333..52d4dd40 100644
--- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityCommon.java
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityCommon.java
@@ -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()
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityDetails.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityDetails.java
index 712c3702..7625582a 100644
--- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityDetails.java
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityDetails.java
@@ -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 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;
}
}
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityMappingUtils.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityMappingUtils.java
index a54bd368..24ce0262 100644
--- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityMappingUtils.java
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityMappingUtils.java
@@ -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 {
diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityWritableProperties.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityWritableProperties.java
index 1be9ed90..db6d3e5e 100644
--- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityWritableProperties.java
+++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityWritableProperties.java
@@ -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 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;
}
diff --git a/apps/dnet-exporter-api/src/main/resources/application.properties b/apps/dnet-exporter-api/src/main/resources/application.properties
index bde38f76..340eb274 100644
--- a/apps/dnet-exporter-api/src/main/resources/application.properties
+++ b/apps/dnet-exporter-api/src/main/resources/application.properties
@@ -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
diff --git a/apps/dnet-exporter-api/src/main/resources/global.properties b/apps/dnet-exporter-api/src/main/resources/global.properties
index 82988336..6b026841 100644
--- a/apps/dnet-exporter-api/src/main/resources/global.properties
+++ b/apps/dnet-exporter-api/src/main/resources/global.properties
@@ -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