fixed some methods

This commit is contained in:
Michele Artini 2024-10-14 11:57:20 +02:00
parent fc1417d629
commit 1b6ffc22ae
2 changed files with 116 additions and 136 deletions

View File

@ -294,9 +294,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] subjects) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunitySubjects(ObjectUtils.firstNonNull(subCommunityId, id), subjects);
@ -323,9 +321,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] subjects) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunitySubjects(ObjectUtils.firstNonNull(subCommunityId, id), subjects);
@ -352,9 +348,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] subjects) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityFOS(ObjectUtils.firstNonNull(subCommunityId, id), subjects);
@ -381,9 +375,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] subjects) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityFOS(ObjectUtils.firstNonNull(subCommunityId, id), subjects);
@ -410,9 +402,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] subjects) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunitySDG(ObjectUtils.firstNonNull(subCommunityId, id), subjects);
@ -439,9 +429,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] subjects) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunitySDG(ObjectUtils.firstNonNull(subCommunityId, id), subjects);
@ -468,9 +456,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestBody final SelectionCriteria advancedConstraint) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityAdvancedConstraint(ObjectUtils.firstNonNull(subCommunityId, id), advancedConstraint);
@ -496,9 +482,7 @@ public class CommunityApiController extends AbstractExporterController {
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityAdvancedConstraint(ObjectUtils.firstNonNull(subCommunityId, id));
@ -525,9 +509,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestBody final SelectionCriteria removeConstraint) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityRemoveConstraint(ObjectUtils.firstNonNull(subCommunityId, id), removeConstraint);
@ -552,9 +534,7 @@ public class CommunityApiController extends AbstractExporterController {
public Object removeRemoveConstraint(@PathVariable final String id, @RequestParam(required = false) final String subCommunityId)
throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityRemoveConstraint(ObjectUtils.firstNonNull(subCommunityId, id));
@ -582,9 +562,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false, defaultValue = "false") final boolean main,
@RequestParam final String zenodocommunity) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityZenodoCommunity(ObjectUtils.firstNonNull(subCommunityId, id), zenodocommunity, main);
@ -612,9 +590,7 @@ public class CommunityApiController extends AbstractExporterController {
@RequestParam(required = false) final String subCommunityId,
@RequestParam(required = false, defaultValue = "false") final boolean main,
@RequestParam final String zenodocommunity) throws CommunityException {
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityZenodoCommunity(ObjectUtils.firstNonNull(subCommunityId, id), zenodocommunity, main);
@ -641,12 +617,16 @@ public class CommunityApiController extends AbstractExporterController {
public Page<CommunityProject> getCommunityProjects(@PathVariable final String id,
@PathVariable final Integer page,
@PathVariable final Integer size,
@RequestParam(required = false) final String subCommunityId,
@RequestParam(required = false) final String funder,
@RequestParam(required = false) final String searchFilter,
@RequestParam(required = false) final String orderBy)
throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
return communityService.getCommunityProjects(id, funder, searchFilter, page, size, orderBy);
return communityService.getCommunityProjects(ObjectUtils.firstNonNull(subCommunityId, id), funder, searchFilter, page, size, orderBy);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -665,10 +645,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public CommunityProject addCommunityProject(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final CommunityProject project) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
return communityService.addCommunityProject(id, project);
return communityService.addCommunityProject(ObjectUtils.firstNonNull(subCommunityId, id), project);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -687,9 +670,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public void deleteCommunityProject(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestParam final String projectId) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityProjects(id, projectId);
communityService.removeCommunityProjects(ObjectUtils.firstNonNull(subCommunityId, id), projectId);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -708,9 +695,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public CommunityProject[] addCommunityProjectList(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final CommunityProject[] projects) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityProjects(id, projects);
communityService.addCommunityProjects(ObjectUtils.firstNonNull(subCommunityId, id), projects);
return projects;
} catch (final ResourceNotFoundException e) {
throw e;
@ -730,9 +721,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public void deleteCommunityProjectList(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] projectIdList) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityProjects(id, projectIdList);
communityService.removeCommunityProjects(ObjectUtils.firstNonNull(subCommunityId, id), projectIdList);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -749,10 +744,13 @@ public class CommunityApiController extends AbstractExporterController {
@ApiResponse(responseCode = "404", description = "not found"),
@ApiResponse(responseCode = "500", description = "unexpected error")
})
public List<String> getCommunityFunders(@PathVariable final String id)
public List<String> getCommunityFunders(@PathVariable final String id, @RequestParam(required = false) final String subCommunityId)
throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
return communityService.getCommunityFunders(id);
return communityService.getCommunityFunders(ObjectUtils.firstNonNull(subCommunityId, id));
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -771,10 +769,16 @@ public class CommunityApiController extends AbstractExporterController {
@ApiResponse(responseCode = "404", description = "not found"),
@ApiResponse(responseCode = "500", description = "unexpected error")
})
public List<CommunityContentprovider> getCommunityDatasources(@PathVariable final String id, @RequestParam(required = false) final Boolean deposit)
public List<CommunityContentprovider> getCommunityDatasources(@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestParam(required = false) final Boolean deposit)
throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
return deposit == null ? communityService.getCommunityDatasources(id) : communityService.getCommunityDatasourcesWithDeposit(id, deposit);
return deposit == null ? communityService.getCommunityDatasources(ObjectUtils.firstNonNull(subCommunityId, id))
: communityService.getCommunityDatasourcesWithDeposit(id, deposit);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -793,10 +797,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public CommunityContentprovider addCommunityDatasource(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final CommunityContentprovider datasource) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityDatasources(id, datasource);
communityService.addCommunityDatasources(ObjectUtils.firstNonNull(subCommunityId, id), datasource);
return datasource;
} catch (final ResourceNotFoundException e) {
throw e;
@ -816,9 +823,14 @@ public class CommunityApiController extends AbstractExporterController {
})
public CommunityContentprovider addCommunityDatasourceDeposit(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final DepositionInfo info) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
return communityService.updateCommunityDatasourcesDeposit(id, info.getOpenaireId(), info.getDeposit(), info.getMessage());
return communityService.updateCommunityDatasourcesDeposit(ObjectUtils.firstNonNull(subCommunityId, id), info.getOpenaireId(), info
.getDeposit(), info.getMessage());
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -837,9 +849,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public void removeCommunityDatasource(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestParam final String dsId) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityDatasources(id, dsId);
communityService.removeCommunityDatasources(ObjectUtils.firstNonNull(subCommunityId, id), dsId);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -858,10 +874,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public CommunityContentprovider[] addCommunityDatasourcesList(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final CommunityContentprovider[] dsList) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityDatasources(id, dsList);
communityService.addCommunityDatasources(ObjectUtils.firstNonNull(subCommunityId, id), dsList);
return dsList;
} catch (final ResourceNotFoundException e) {
throw e;
@ -881,9 +900,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public void deleteCommunityDatasourcesList(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] dsIdList) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityDatasources(id, dsIdList);
communityService.removeCommunityDatasources(ObjectUtils.firstNonNull(subCommunityId, id), dsIdList);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -891,86 +914,6 @@ public class CommunityApiController extends AbstractExporterController {
}
}
// Content Providers (DEPRECATED)
@Deprecated
@GetMapping("/community/{id}/contentproviders")
@Operation(summary = "get the list of datasources associated to a given community", description = "get the list of content providers associated to a given community", tags = {
C_CP, R
})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "not found"),
@ApiResponse(responseCode = "500", description = "unexpected error")
})
public List<CommunityContentprovider> getCommunityContentproviders(@PathVariable final String id, @RequestParam(required = false) final Boolean deposit)
throws CommunityException {
return getCommunityDatasources(id, deposit);
}
@Deprecated
@PostMapping("/community/{id}/contentproviders")
@Operation(summary = "associate a datasource to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", description = "associate a datasource to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", tags = {
C_CP, W
})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "not found"),
@ApiResponse(responseCode = "500", description = "unexpected error")
})
public CommunityContentprovider addCommunityContentprovider(
@PathVariable final String id,
@RequestBody final CommunityContentprovider contentprovider) throws CommunityException {
return addCommunityDatasource(id, contentprovider);
}
@Deprecated
@DeleteMapping("/community/{id}/contentproviders")
@Operation(summary = "remove the association between a datasource and the community", description = "remove the association between a datasource and the community", tags = {
C_CP, W
})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "not found"),
@ApiResponse(responseCode = "500", description = "unexpected error")
})
public void removeCommunityContentprovider(@PathVariable final String id, @RequestParam final String contentproviderId) throws CommunityException {
removeCommunityDatasource(id, contentproviderId);
}
@Deprecated
@PostMapping("/community/{id}/contentprovidersList")
@Operation(summary = "associate a list of datasources to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", description = "associate a list of datasources to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", tags = {
C_CP, W
})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "not found"),
@ApiResponse(responseCode = "500", description = "unexpected error")
})
public CommunityContentprovider[] addCommunityContentProvidersList(
@PathVariable final String id,
@RequestBody final CommunityContentprovider[] contentprovidersList) throws CommunityException {
return addCommunityDatasourcesList(id, contentprovidersList);
}
@Deprecated
@DeleteMapping("/community/{id}/contentprovidersList")
@Operation(summary = "remove a list of datasources from the community", description = "remove a list of datasources from the community", tags = {
C_CP, W
})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "not found"),
@ApiResponse(responseCode = "500", description = "unexpected error")
})
public void deleteCommunityContentProvidersList(
@PathVariable final String id,
@RequestBody final String[] contentProviderIdList) throws CommunityException {
deleteCommunityDatasourcesList(id, contentProviderIdList);
}
// ORGANIZATIONS
@GetMapping("/community/{id}/organizations")
@ -982,9 +925,12 @@ public class CommunityApiController extends AbstractExporterController {
@ApiResponse(responseCode = "404", description = "not found"),
@ApiResponse(responseCode = "500", description = "unexpected error")
})
public List<CommunityOrganization> getCommunityOrganizations(@PathVariable final String id) throws CommunityException {
public List<CommunityOrganization> getCommunityOrganizations(@PathVariable final String id, @RequestParam(required = false) final String subCommunityId)
throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
return communityService.getCommunityOrganizations(id);
return communityService.getCommunityOrganizations(ObjectUtils.firstNonNull(subCommunityId, id));
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -1003,9 +949,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public CommunityOrganization addCommunityOrganization(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final CommunityOrganization organization) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityOrganizations(id, organization);
communityService.addCommunityOrganizations(ObjectUtils.firstNonNull(subCommunityId, id), organization);
return organization;
} catch (final ResourceNotFoundException e) {
throw e;
@ -1025,10 +975,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public CommunityOrganization[] addCommunityOrganizationList(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final CommunityOrganization[] orgs) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.addCommunityOrganizations(id, orgs);
communityService.addCommunityOrganizations(ObjectUtils.firstNonNull(subCommunityId, id), orgs);
return orgs;
} catch (final ResourceNotFoundException e) {
throw e;
@ -1048,9 +1001,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public void removeCommunityOrganization(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestParam final String organizationName) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityOrganizations(id, organizationName);
communityService.removeCommunityOrganizations(ObjectUtils.firstNonNull(subCommunityId, id), organizationName);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -1069,9 +1026,13 @@ public class CommunityApiController extends AbstractExporterController {
})
public void removeCommunityOrganizationList(
@PathVariable final String id,
@RequestParam(required = false) final String subCommunityId,
@RequestBody final String[] orgNames) throws CommunityException {
verifyIdParameters(id, subCommunityId);
try {
communityService.removeCommunityOrganizations(id, orgNames);
communityService.removeCommunityOrganizations(ObjectUtils.firstNonNull(subCommunityId, id), orgNames);
} catch (final ResourceNotFoundException e) {
throw e;
} catch (final Throwable e) {
@ -1184,4 +1145,16 @@ public class CommunityApiController extends AbstractExporterController {
}
}
private void verifyIdParameters(final String id, final String subCommunityId) throws CommunityException {
if (!CommunityMappingUtils.isValidCommunityId(id)) { throw new CommunityException("Invalid community id: " + id); }
if (subCommunityId != null && CommunityMappingUtils.isValidSubCommunityId(subCommunityId)) {
throw new CommunityException("Invalid sub-collection id: " + subCommunityId);
}
if (subCommunityId != null && !id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
throw new CommunityException("The sub-collection id does not start with " + id);
}
}
}

View File

@ -338,4 +338,11 @@ public class CommunityMappingUtils {
return conf;
}
public static boolean isValidCommunityId(final String id) {
return StringUtils.isNotBlank(id) && !StringUtils.contains(id, COMMUNITY_ID_PARTS_SEPARATOR);
}
public static boolean isValidSubCommunityId(final String subcommunityId) {
return StringUtils.isNotBlank(subcommunityId) && StringUtils.split(subcommunityId, COMMUNITY_ID_PARTS_SEPARATOR).length > 1;
}
}