new context api for IIS

This commit is contained in:
Michele Artini 2023-09-29 14:49:40 +02:00
parent a98c799c8b
commit e87267e9e5
5 changed files with 103 additions and 52 deletions

View File

@ -50,6 +50,7 @@ import eu.dnetlib.openaire.exporter.model.community.CommunitySummary;
import eu.dnetlib.openaire.exporter.model.community.CommunityWritableProperties; import eu.dnetlib.openaire.exporter.model.community.CommunityWritableProperties;
import eu.dnetlib.openaire.exporter.model.community.SubCommunity; import eu.dnetlib.openaire.exporter.model.community.SubCommunity;
import eu.dnetlib.openaire.exporter.model.community.selectioncriteria.SelectionCriteria; import eu.dnetlib.openaire.exporter.model.community.selectioncriteria.SelectionCriteria;
import eu.dnetlib.openaire.exporter.model.context.IISConfigurationEntry;
@Service @Service
@ConditionalOnProperty(value = "openaire.exporter.enable.community", havingValue = "true") @ConditionalOnProperty(value = "openaire.exporter.enable.community", havingValue = "true")
@ -591,4 +592,24 @@ public class CommunityService {
dbCommunityRepository.deleteById(id); dbCommunityRepository.deleteById(id);
} }
@Transactional
public List<IISConfigurationEntry> getIISConfiguration(final String id) throws CommunityException {
try {
final List<IISConfigurationEntry> res = new ArrayList<>();
res.add(dbCommunityRepository.findById(id)
.map(CommunityMappingUtils::asIISConfigurationEntry)
.orElseThrow(() -> new ResourceNotFoundException("Community not found: " + id)));
for (final DbSubCommunity subc : dbSubCommunityRepository.findByCommunity(id)) {
res.add(CommunityMappingUtils.asIISConfigurationEntry(subc));
}
return res;
} catch (final Throwable e) {
log.error(e);
throw new CommunityException(e);
}
}
} }

View File

@ -50,55 +50,55 @@ import eu.dnetlib.openaire.exporter.model.context.Param;
public class CommunityImporterService { public class CommunityImporterService {
// common // common
private final static String OPENAIRE_ID = "openaireId"; public final static String OPENAIRE_ID = "openaireId";
private final static String PIPE_SEPARATOR = "||"; public final static String PIPE_SEPARATOR = "||";
private final static String ID_SEPARATOR = "::"; public final static String ID_SEPARATOR = "::";
private final static String CSV_DELIMITER = ","; public final static String CSV_DELIMITER = ",";
private final static String CLABEL = "label"; public final static String CLABEL = "label";
// id suffixes // id suffixes
private final static String PROJECTS_ID_SUFFIX = ID_SEPARATOR + "projects"; public final static String PROJECTS_ID_SUFFIX = ID_SEPARATOR + "projects";
private final static String CONTENTPROVIDERS_ID_SUFFIX = ID_SEPARATOR + "contentproviders"; public final static String CONTENTPROVIDERS_ID_SUFFIX = ID_SEPARATOR + "contentproviders";
private final static String ZENODOCOMMUNITY_ID_SUFFIX = ID_SEPARATOR + "zenodocommunities"; public final static String ZENODOCOMMUNITY_ID_SUFFIX = ID_SEPARATOR + "zenodocommunities";
private final static String ORGANIZATION_ID_SUFFIX = ID_SEPARATOR + "organizations"; public final static String ORGANIZATION_ID_SUFFIX = ID_SEPARATOR + "organizations";
// community summary // community summary
private final static String CSUMMARY_DESCRIPTION = "description"; public final static String CSUMMARY_DESCRIPTION = "description";
private final static String CSUMMARY_LOGOURL = "logourl"; public final static String CSUMMARY_LOGOURL = "logourl";
private final static String CSUMMARY_STATUS = "status"; public final static String CSUMMARY_STATUS = "status";
private final static String CSUMMARY_NAME = "name"; public final static String CSUMMARY_NAME = "name";
private final static String CSUMMARY_MANAGER = "manager"; public final static String CSUMMARY_MANAGER = "manager";
private final static String CSUMMARY_ZENODOC = "zenodoCommunity"; public final static String CSUMMARY_ZENODOC = "zenodoCommunity";
// community profile // community profile
private final static String CPROFILE_SUBJECT = "subject"; public final static String CPROFILE_SUBJECT = "subject";
private final static String CPROFILE_CREATIONDATE = "creationdate"; public final static String CPROFILE_CREATIONDATE = "creationdate";
private final static String CPROFILE_FOS = "fos"; public final static String CPROFILE_FOS = "fos";
private final static String CPROFILE_SDG = "sdg"; public final static String CPROFILE_SDG = "sdg";
private final static String CPROFILE_ADVANCED_CONSTRAINT = "advancedConstraints"; public final static String CPROFILE_ADVANCED_CONSTRAINT = "advancedConstraints";
private final static String CPROFILE_REMOVE_CONSTRAINT = "removeConstraints"; public final static String CPROFILE_REMOVE_CONSTRAINT = "removeConstraints";
private final static String CPROFILE_SUGGESTED_ACKNOWLEDGEMENT = "suggestedAcknowledgement"; public final static String CPROFILE_SUGGESTED_ACKNOWLEDGEMENT = "suggestedAcknowledgement";
// community project // community project
private final static String CPROJECT_FUNDER = "funder"; public final static String CPROJECT_FUNDER = "funder";
private final static String CPROJECT_NUMBER = "CD_PROJECT_NUMBER"; public final static String CPROJECT_NUMBER = "CD_PROJECT_NUMBER";
private final static String CPROJECT_FULLNAME = "projectfullname"; public final static String CPROJECT_FULLNAME = "projectfullname";
private final static String CPROJECT_ACRONYM = "acronym"; public final static String CPROJECT_ACRONYM = "acronym";
// community content provider // community content provider
private final static String CCONTENTPROVIDER_NAME = "name"; public final static String CCONTENTPROVIDER_NAME = "name";
private final static String CCONTENTPROVIDER_OFFICIALNAME = "officialname"; public final static String CCONTENTPROVIDER_OFFICIALNAME = "officialname";
private final static String CCONTENTPROVIDER_ENABLED = "enabled"; public final static String CCONTENTPROVIDER_ENABLED = "enabled";
private final static String CCONTENTPROVIDERENABLED_DEFAULT = "true"; public final static String CCONTENTPROVIDERENABLED_DEFAULT = "true";
private final static String CCONTENTPROVIDER_SELCRITERIA = "selcriteria"; public final static String CCONTENTPROVIDER_SELCRITERIA = "selcriteria";
// community zenodo community // community zenodo community
private final static String CZENODOCOMMUNITY_ID = "zenodoid"; public final static String CZENODOCOMMUNITY_ID = "zenodoid";
// community organization // community organization
private final static String CORGANIZATION_NAME = "name"; public final static String CORGANIZATION_NAME = "name";
private final static String CORGANIZATION_LOGOURL = "logourl"; public final static String CORGANIZATION_LOGOURL = "logourl";
private final static String CORGANIZATION_WEBSITEURL = "websiteurl"; public final static String CORGANIZATION_WEBSITEURL = "websiteurl";
@Autowired @Autowired
private DbOrganizationRepository dbOrganizationRepository; private DbOrganizationRepository dbOrganizationRepository;

View File

@ -15,6 +15,7 @@ import org.apache.commons.logging.LogFactory;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import eu.dnetlib.openaire.community.importer.CommunityImporterService;
import eu.dnetlib.openaire.community.model.DbCommunity; import eu.dnetlib.openaire.community.model.DbCommunity;
import eu.dnetlib.openaire.community.model.DbDatasource; import eu.dnetlib.openaire.community.model.DbDatasource;
import eu.dnetlib.openaire.community.model.DbProject; import eu.dnetlib.openaire.community.model.DbProject;
@ -27,6 +28,7 @@ import eu.dnetlib.openaire.exporter.model.community.CommunityProject;
import eu.dnetlib.openaire.exporter.model.community.CommunitySummary; import eu.dnetlib.openaire.exporter.model.community.CommunitySummary;
import eu.dnetlib.openaire.exporter.model.community.CommunityWritableProperties; import eu.dnetlib.openaire.exporter.model.community.CommunityWritableProperties;
import eu.dnetlib.openaire.exporter.model.community.SubCommunity; import eu.dnetlib.openaire.exporter.model.community.SubCommunity;
import eu.dnetlib.openaire.exporter.model.context.IISConfigurationEntry;
public class CommunityMappingUtils { public class CommunityMappingUtils {
@ -252,4 +254,32 @@ public class CommunityMappingUtils {
return list != null ? list.toArray(new String[list.size()]) : new String[0]; return list != null ? list.toArray(new String[list.size()]) : new String[0];
} }
public static IISConfigurationEntry asIISConfigurationEntry(final DbCommunity c) {
final IISConfigurationEntry conf = new IISConfigurationEntry();
conf.setId(c.getId());
conf.setLabel(c.getName());
conf.addParams(CommunityImporterService.CSUMMARY_DESCRIPTION, c.getDescription());
conf.addParams(CommunityImporterService.CSUMMARY_LOGOURL, c.getLogoUrl());
conf.addParams(CommunityImporterService.CSUMMARY_STATUS, c.getStatus().toString());
conf.addParams(CommunityImporterService.CSUMMARY_NAME, c.getName());
conf.addParams(CommunityImporterService.CSUMMARY_ZENODOC, c.getMainZenodoCommunity());
conf.addParams(CommunityImporterService.CPROFILE_SUBJECT, c.getSubjects());
conf.addParams(CommunityImporterService.CPROFILE_FOS, c.getFos());
conf.addParams(CommunityImporterService.CPROFILE_SDG, c.getSdg());
conf.addParams(CommunityImporterService.CPROFILE_ADVANCED_CONSTRAINT, c.getAdvancedConstraints() != null ? c.getAdvancedConstraints().toJson() : null);
conf.addParams(CommunityImporterService.CPROFILE_REMOVE_CONSTRAINT, c.getRemoveConstraints() != null ? c.getRemoveConstraints().toJson() : null);
conf.addParams(CommunityImporterService.CPROFILE_SUGGESTED_ACKNOWLEDGEMENT, c.getSuggestedAcknowledgements());
conf.addParams(CommunityImporterService.CPROFILE_CREATIONDATE, c.getCreationDate() != null ? c.getCreationDate().toString() : null);
return conf;
}
public static IISConfigurationEntry asIISConfigurationEntry(final DbSubCommunity subc) {
final IISConfigurationEntry conf = new IISConfigurationEntry();
conf.setId(subc.getId());
conf.setLabel(subc.getLabel());
if (subc.getParams() != null) {
conf.getParams().addAll(subc.getParams());
}
return conf;
}
} }

View File

@ -1,6 +1,5 @@
package eu.dnetlib.openaire.context; package eu.dnetlib.openaire.context;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
@ -109,19 +108,8 @@ public class ContextApiController extends AbstractDnetController {
@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "500", description = "unexpected error") @ApiResponse(responseCode = "500", description = "unexpected error")
}) })
public List<IISConfigurationEntry> getIISConfiguration( public List<IISConfigurationEntry> getIISConfiguration(@PathVariable final String contextId) throws CommunityException {
@PathVariable final String contextId) throws CommunityException { return communityService.getIISConfiguration(contextId);
try {
// TODO, see ticket https://support.openaire.eu/issues/9019
// ritornare le informazioni solo dei context (root) e delle subCommunities
final List<IISConfigurationEntry> res = new ArrayList<>();
return res;
} catch (final Throwable e) {
log.error(e);
throw new CommunityException(e);
}
} }
@RequestMapping(value = "/context/category/{categoryId}", produces = { @RequestMapping(value = "/context/category/{categoryId}", produces = {

View File

@ -4,13 +4,15 @@ import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils;
public class IISConfigurationEntry implements Serializable { public class IISConfigurationEntry implements Serializable {
private static final long serialVersionUID = -1470248262314248937L; private static final long serialVersionUID = -1470248262314248937L;
private String id; private String id;
private String label; private String label;
private List<String> params = new ArrayList<>(); private List<Param> params = new ArrayList<>();
public String getId() { public String getId() {
return id; return id;
@ -28,12 +30,22 @@ public class IISConfigurationEntry implements Serializable {
this.label = label; this.label = label;
} }
public List<String> getParams() { public List<Param> getParams() {
return params; return params;
} }
public void setParams(final List<String> params) { public void setParams(final List<Param> params) {
this.params = params; this.params = params;
} }
public void addParams(final String name, final String... values) {
if (StringUtils.isNoneBlank(name) && values != null) {
for (final String v : values) {
if (StringUtils.isNotBlank(v)) {
params.add(new Param().setName(name).setValue(v));
}
}
}
}
} }