fixed some methods
This commit is contained in:
parent
33aedaa530
commit
24c4ed3b8d
|
@ -9,6 +9,7 @@ import static eu.dnetlib.openaire.common.ExporterConstants.C_ZC;
|
||||||
import static eu.dnetlib.openaire.common.ExporterConstants.R;
|
import static eu.dnetlib.openaire.common.ExporterConstants.R;
|
||||||
import static eu.dnetlib.openaire.common.ExporterConstants.W;
|
import static eu.dnetlib.openaire.common.ExporterConstants.W;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -83,7 +84,7 @@ public class CommunityApiController extends AbstractExporterController {
|
||||||
@ApiResponse(responseCode = "404", description = "not found"),
|
@ApiResponse(responseCode = "404", description = "not found"),
|
||||||
@ApiResponse(responseCode = "500", description = "unexpected error")
|
@ApiResponse(responseCode = "500", description = "unexpected error")
|
||||||
})
|
})
|
||||||
public CommunityDetails getCommunity(@RequestBody final CommunityDetails details) throws CommunityException {
|
public CommunityDetails addCommunity(@RequestBody final CommunityDetails details) throws CommunityException {
|
||||||
try {
|
try {
|
||||||
return communityService.newCommunity(details);
|
return communityService.newCommunity(details);
|
||||||
} catch (final ResourceNotFoundException e) {
|
} catch (final ResourceNotFoundException e) {
|
||||||
|
@ -121,11 +122,11 @@ public class CommunityApiController extends AbstractExporterController {
|
||||||
@ApiResponse(responseCode = "404", description = "not found"),
|
@ApiResponse(responseCode = "404", description = "not found"),
|
||||||
@ApiResponse(responseCode = "500", description = "unexpected error")
|
@ApiResponse(responseCode = "500", description = "unexpected error")
|
||||||
})
|
})
|
||||||
public void setCommunity(
|
public void updateCommunity(
|
||||||
@PathVariable final String id,
|
@PathVariable final String id,
|
||||||
@RequestBody final CommunityWritableProperties properties) throws CommunityException {
|
@RequestBody final CommunityWritableProperties properties) throws CommunityException {
|
||||||
try {
|
try {
|
||||||
communityService.setCommunity(id, properties);
|
communityService.updateCommunity(id, properties);
|
||||||
} catch (final ResourceNotFoundException e) {
|
} catch (final ResourceNotFoundException e) {
|
||||||
throw e;
|
throw e;
|
||||||
} catch (final Throwable e) {
|
} catch (final Throwable e) {
|
||||||
|
@ -145,7 +146,128 @@ public class CommunityApiController extends AbstractExporterController {
|
||||||
public void deleteCommunity(@PathVariable final String id)
|
public void deleteCommunity(@PathVariable final String id)
|
||||||
throws CommunityException {
|
throws CommunityException {
|
||||||
try {
|
try {
|
||||||
communityService.removeCommunities(id);
|
communityService.removeCommunity(id);
|
||||||
|
} catch (final ResourceNotFoundException e) {
|
||||||
|
throw e;
|
||||||
|
} catch (final Throwable e) {
|
||||||
|
throw new CommunityException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// APIs to manage the sub communities
|
||||||
|
|
||||||
|
@GetMapping("/community/{id}/subcommunities")
|
||||||
|
@Operation(summary = "get the list of subcommunities for a given community", description = "get the list of subcommunities for a given community", tags = {
|
||||||
|
C_SUB, R
|
||||||
|
})
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(responseCode = "200", description = "OK"),
|
||||||
|
@ApiResponse(responseCode = "404", description = "not found"),
|
||||||
|
@ApiResponse(responseCode = "500", description = "unexpected error")
|
||||||
|
})
|
||||||
|
public List<SubCommunity> getSubCommunities(@PathVariable final String id, @RequestParam(required = false, defaultValue = "false") final boolean all)
|
||||||
|
throws CommunityException {
|
||||||
|
try {
|
||||||
|
return communityService.getSubCommunities(id)
|
||||||
|
.stream()
|
||||||
|
.filter(sc -> all || sc.isBrowsable())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
} catch (final ResourceNotFoundException e) {
|
||||||
|
throw e;
|
||||||
|
} catch (final Throwable e) {
|
||||||
|
throw new CommunityException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/community/{id}/subcommunities")
|
||||||
|
@Operation(summary = "associate a subcommunity to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", description = "associate a subcommunity to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", tags = {
|
||||||
|
C_SUB, W
|
||||||
|
})
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(responseCode = "200", description = "OK"),
|
||||||
|
@ApiResponse(responseCode = "404", description = "not found"),
|
||||||
|
@ApiResponse(responseCode = "500", description = "unexpected error")
|
||||||
|
})
|
||||||
|
public SubCommunity addSubCommunity(
|
||||||
|
@PathVariable final String id,
|
||||||
|
@RequestBody final SubCommunity subcommunity) throws CommunityException {
|
||||||
|
try {
|
||||||
|
return communityService.addSubCommunity(id, subcommunity);
|
||||||
|
} catch (final ResourceNotFoundException e) {
|
||||||
|
throw e;
|
||||||
|
} catch (final Throwable e) {
|
||||||
|
throw new CommunityException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/community/{id}/subcommunitiesList")
|
||||||
|
@Operation(summary = "associate a list of subcommunities to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", description = "associate a list of subcommunities to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", tags = {
|
||||||
|
C_SUB, W
|
||||||
|
})
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(responseCode = "200", description = "OK"),
|
||||||
|
@ApiResponse(responseCode = "404", description = "not found"),
|
||||||
|
@ApiResponse(responseCode = "500", description = "unexpected error")
|
||||||
|
})
|
||||||
|
public List<SubCommunity> addSubCommunityList(
|
||||||
|
@PathVariable final String id,
|
||||||
|
@RequestBody final SubCommunity[] subcommunities) throws CommunityException {
|
||||||
|
|
||||||
|
for (final SubCommunity sub : subcommunities) {
|
||||||
|
if (!id.equals(CommunityMappingUtils.calculateMainCommunityId(sub.getSubCommunityId()))) {
|
||||||
|
throw new CommunityException("The sub-collection id does not start with " + id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
final List<SubCommunity> res = new ArrayList<SubCommunity>();
|
||||||
|
for (final SubCommunity subc : subcommunities) {
|
||||||
|
res.add(communityService.addSubCommunity(id, subc));
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
} catch (final ResourceNotFoundException e) {
|
||||||
|
throw e;
|
||||||
|
} catch (final Throwable e) {
|
||||||
|
throw new CommunityException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/community/{id}/subcommunities")
|
||||||
|
@Operation(summary = "remove the association between a subcommunity and the community", description = "remove the association between a subcommunity and the community", tags = {
|
||||||
|
C_SUB, W
|
||||||
|
})
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(responseCode = "200", description = "OK"),
|
||||||
|
@ApiResponse(responseCode = "404", description = "not found"),
|
||||||
|
@ApiResponse(responseCode = "500", description = "unexpected error")
|
||||||
|
})
|
||||||
|
public void removeSubCommunity(
|
||||||
|
@PathVariable final String id,
|
||||||
|
@RequestParam final String subCommunityId) throws CommunityException {
|
||||||
|
try {
|
||||||
|
communityService.removeSubCommunity(id, subCommunityId);
|
||||||
|
} catch (final ResourceNotFoundException e) {
|
||||||
|
throw e;
|
||||||
|
} catch (final Throwable e) {
|
||||||
|
throw new CommunityException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/community/{id}/subcommunitiesList")
|
||||||
|
@Operation(summary = "remove a list of associations between some subcommunities and the community", description = "remove a list of associations between some subcommunities and the community", tags = {
|
||||||
|
C_SUB, W
|
||||||
|
})
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(responseCode = "200", description = "OK"),
|
||||||
|
@ApiResponse(responseCode = "404", description = "not found"),
|
||||||
|
@ApiResponse(responseCode = "500", description = "unexpected error")
|
||||||
|
})
|
||||||
|
public void removeSubcommunities(
|
||||||
|
@PathVariable final String id,
|
||||||
|
@RequestBody final String[] subCommunityIdList) throws CommunityException {
|
||||||
|
try {
|
||||||
|
for (final String subId : subCommunityIdList) {
|
||||||
|
communityService.removeSubCommunity(id, subId);
|
||||||
|
}
|
||||||
} catch (final ResourceNotFoundException e) {
|
} catch (final ResourceNotFoundException e) {
|
||||||
throw e;
|
throw e;
|
||||||
} catch (final Throwable e) {
|
} catch (final Throwable e) {
|
||||||
|
@ -178,6 +300,8 @@ public class CommunityApiController extends AbstractExporterController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PROJECTS
|
||||||
|
|
||||||
@PostMapping("/community/{id}/projects")
|
@PostMapping("/community/{id}/projects")
|
||||||
@Operation(summary = "associate a project to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", description = "associate a project to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", tags = {
|
@Operation(summary = "associate a project to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", description = "associate a project to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", tags = {
|
||||||
C_PJ, W
|
C_PJ, W
|
||||||
|
@ -971,135 +1095,4 @@ public class CommunityApiController extends AbstractExporterController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// APIs to manage the sub communities
|
|
||||||
|
|
||||||
@GetMapping("/community/{id}/subcommunities")
|
|
||||||
@Operation(summary = "get the list of subcommunities for a given community", description = "get the list of subcommunities for a given community", tags = {
|
|
||||||
C_SUB, R
|
|
||||||
})
|
|
||||||
@ApiResponses(value = {
|
|
||||||
@ApiResponse(responseCode = "200", description = "OK"),
|
|
||||||
@ApiResponse(responseCode = "404", description = "not found"),
|
|
||||||
@ApiResponse(responseCode = "500", description = "unexpected error")
|
|
||||||
})
|
|
||||||
public List<SubCommunity> getSubCommunities(@PathVariable final String id, @RequestParam(required = false, defaultValue = "false") final boolean all)
|
|
||||||
throws CommunityException {
|
|
||||||
try {
|
|
||||||
return communityService.getSubCommunities(id)
|
|
||||||
.stream()
|
|
||||||
.filter(sc -> all || sc.isBrowsable())
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
} catch (final ResourceNotFoundException e) {
|
|
||||||
throw e;
|
|
||||||
} catch (final Throwable e) {
|
|
||||||
throw new CommunityException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/community/{id}/subcommunities")
|
|
||||||
@Operation(summary = "associate a subcommunity to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", description = "associate a subcommunity to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", tags = {
|
|
||||||
C_SUB, W
|
|
||||||
})
|
|
||||||
@ApiResponses(value = {
|
|
||||||
@ApiResponse(responseCode = "200", description = "OK"),
|
|
||||||
@ApiResponse(responseCode = "404", description = "not found"),
|
|
||||||
@ApiResponse(responseCode = "500", description = "unexpected error")
|
|
||||||
})
|
|
||||||
public SubCommunity addSubCommunity(
|
|
||||||
@PathVariable final String id,
|
|
||||||
@RequestBody final SubCommunity subcommunity) throws CommunityException {
|
|
||||||
try {
|
|
||||||
if (!id.equals(CommunityMappingUtils.calculateMainCommunityId(subcommunity.getSubCommunityId()))) {
|
|
||||||
throw new CommunityException("The sub-collection id does not start with " + id);
|
|
||||||
}
|
|
||||||
|
|
||||||
communityService.addSubCommunities(subcommunity);
|
|
||||||
|
|
||||||
return subcommunity;
|
|
||||||
} catch (final ResourceNotFoundException e) {
|
|
||||||
throw e;
|
|
||||||
} catch (final Throwable e) {
|
|
||||||
throw new CommunityException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/community/{id}/subcommunitiesList")
|
|
||||||
@Operation(summary = "associate a list of subcommunities to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", description = "associate a list of subcommunities to the community, provide all the fields or the method will overwrite with nulls the fields that are missing", tags = {
|
|
||||||
C_SUB, W
|
|
||||||
})
|
|
||||||
@ApiResponses(value = {
|
|
||||||
@ApiResponse(responseCode = "200", description = "OK"),
|
|
||||||
@ApiResponse(responseCode = "404", description = "not found"),
|
|
||||||
@ApiResponse(responseCode = "500", description = "unexpected error")
|
|
||||||
})
|
|
||||||
public SubCommunity[] addSubCommunityList(
|
|
||||||
@PathVariable final String id,
|
|
||||||
@RequestBody final SubCommunity[] subcommunities) throws CommunityException {
|
|
||||||
|
|
||||||
for (final SubCommunity sub : subcommunities) {
|
|
||||||
if (!id.equals(CommunityMappingUtils.calculateMainCommunityId(sub.getSubCommunityId()))) {
|
|
||||||
throw new CommunityException("The sub-collection id does not start with " + id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
communityService.addSubCommunities(subcommunities);
|
|
||||||
return subcommunities;
|
|
||||||
} catch (final ResourceNotFoundException e) {
|
|
||||||
throw e;
|
|
||||||
} catch (final Throwable e) {
|
|
||||||
throw new CommunityException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/community/{id}/subcommunities")
|
|
||||||
@Operation(summary = "remove the association between a subcommunity and the community", description = "remove the association between a subcommunity and the community", tags = {
|
|
||||||
C_SUB, W
|
|
||||||
})
|
|
||||||
@ApiResponses(value = {
|
|
||||||
@ApiResponse(responseCode = "200", description = "OK"),
|
|
||||||
@ApiResponse(responseCode = "404", description = "not found"),
|
|
||||||
@ApiResponse(responseCode = "500", description = "unexpected error")
|
|
||||||
})
|
|
||||||
public void removeSubCommunity(
|
|
||||||
@PathVariable final String id,
|
|
||||||
@RequestParam final String subCommunityId) throws CommunityException {
|
|
||||||
try {
|
|
||||||
if (!id.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
|
|
||||||
throw new CommunityException("The sub-collection id does not start with " + id);
|
|
||||||
}
|
|
||||||
|
|
||||||
communityService.removeCommunities(subCommunityId);
|
|
||||||
} catch (final ResourceNotFoundException e) {
|
|
||||||
throw e;
|
|
||||||
} catch (final Throwable e) {
|
|
||||||
throw new CommunityException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/community/{id}/subcommunitiesList")
|
|
||||||
@Operation(summary = "remove a list of associations between some subcommunities and the community", description = "remove a list of associations between some subcommunities and the community", tags = {
|
|
||||||
C_SUB, W
|
|
||||||
})
|
|
||||||
@ApiResponses(value = {
|
|
||||||
@ApiResponse(responseCode = "200", description = "OK"),
|
|
||||||
@ApiResponse(responseCode = "404", description = "not found"),
|
|
||||||
@ApiResponse(responseCode = "500", description = "unexpected error")
|
|
||||||
})
|
|
||||||
public void removeSubcommunities(
|
|
||||||
@PathVariable final String id,
|
|
||||||
@RequestBody final String[] subCommunityIdList) throws CommunityException {
|
|
||||||
try {
|
|
||||||
for (final String sub : subCommunityIdList) {
|
|
||||||
if (!id.equals(CommunityMappingUtils.calculateMainCommunityId(sub))) {
|
|
||||||
throw new CommunityException("The sub-collection id does not start with " + id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
communityService.removeCommunities(subCommunityIdList);
|
|
||||||
} catch (final ResourceNotFoundException e) {
|
|
||||||
throw e;
|
|
||||||
} catch (final Throwable e) {
|
|
||||||
throw new CommunityException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@ import eu.dnetlib.openaire.exporter.model.community.CommunityDetails;
|
||||||
import eu.dnetlib.openaire.exporter.model.community.CommunityOrganization;
|
import eu.dnetlib.openaire.exporter.model.community.CommunityOrganization;
|
||||||
import eu.dnetlib.openaire.exporter.model.community.CommunityProject;
|
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.CommunityType;
|
||||||
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;
|
||||||
|
@ -94,16 +95,35 @@ public class CommunityService {
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public CommunityDetails getCommunity(final String id) {
|
public CommunityDetails getCommunity(final String id) {
|
||||||
final DbCommunity c = dbCommunityRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Community not found: " + id));
|
final DbCommunity dbc = dbCommunityRepository.findById(id)
|
||||||
return CommunityMappingUtils.toCommunityDetails(c);
|
.filter(c -> c.getType() != CommunityType.subcommunity)
|
||||||
|
.filter(c -> c.getParent() == null)
|
||||||
|
.orElseThrow(() -> new ResourceNotFoundException("Community not found: " + id));
|
||||||
|
|
||||||
|
return CommunityMappingUtils.toCommunityDetails(dbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void setCommunity(final String id, final CommunityWritableProperties details) {
|
public void updateCommunity(final String id, final CommunityWritableProperties details) {
|
||||||
final DbCommunity c = dbCommunityRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Community not found: " + id));
|
final DbCommunity dbc = dbCommunityRepository.findById(id)
|
||||||
CommunityMappingUtils.populateCommunity(c, details);
|
.filter(c -> c.getType() != CommunityType.subcommunity)
|
||||||
c.setLastUpdateDate(LocalDateTime.now());
|
.filter(c -> c.getParent() == null)
|
||||||
dbCommunityRepository.save(c);
|
.orElseThrow(() -> new ResourceNotFoundException("Community not found: " + id));
|
||||||
|
|
||||||
|
CommunityMappingUtils.populateCommunity(dbc, details);
|
||||||
|
dbc.setLastUpdateDate(LocalDateTime.now());
|
||||||
|
|
||||||
|
dbCommunityRepository.save(dbc);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void removeCommunity(final String id) {
|
||||||
|
final DbCommunity dbc = dbCommunityRepository.findById(id)
|
||||||
|
.filter(c -> c.getType() != CommunityType.subcommunity)
|
||||||
|
.filter(c -> c.getParent() == null)
|
||||||
|
.orElseThrow(() -> new ResourceNotFoundException("Community not found: " + id));
|
||||||
|
|
||||||
|
dbCommunityRepository.delete(dbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@ -273,18 +293,27 @@ public class CommunityService {
|
||||||
public List<SubCommunity> getSubCommunities(final String id) {
|
public List<SubCommunity> getSubCommunities(final String id) {
|
||||||
return dbCommunityRepository.findByIdStartsWith(id + CommunityMappingUtils.COMMUNITY_ID_PARTS_SEPARATOR)
|
return dbCommunityRepository.findByIdStartsWith(id + CommunityMappingUtils.COMMUNITY_ID_PARTS_SEPARATOR)
|
||||||
.stream()
|
.stream()
|
||||||
|
.filter(c -> c.getType() == CommunityType.subcommunity)
|
||||||
|
.filter(c -> c.getParent() != null)
|
||||||
.map(CommunityMappingUtils::toSubCommunity)
|
.map(CommunityMappingUtils::toSubCommunity)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void addSubCommunities(final SubCommunity... subs) {
|
public SubCommunity addSubCommunity(final String id, final SubCommunity subcommunity) throws CommunityException {
|
||||||
|
|
||||||
final List<DbCommunity> list = Arrays.stream(subs)
|
if (!id.equals(CommunityMappingUtils.calculateMainCommunityId(subcommunity.getSubCommunityId()))) {
|
||||||
.map(CommunityMappingUtils::toDbCommunity)
|
throw new CommunityException("The sub-collection id does not start with " + id);
|
||||||
.collect(Collectors.toList());
|
}
|
||||||
|
|
||||||
dbCommunityRepository.saveAll(list);
|
if (subcommunity.getParent() == null) {
|
||||||
|
subcommunity.setParent(id);
|
||||||
|
}
|
||||||
|
final DbCommunity dbc = CommunityMappingUtils.toDbCommunity(subcommunity);
|
||||||
|
|
||||||
|
dbCommunityRepository.save(dbc);
|
||||||
|
|
||||||
|
return subcommunity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@ -436,13 +465,6 @@ public class CommunityService {
|
||||||
return getPropagationOrganizationsForCommunity(communityId);
|
return getPropagationOrganizationsForCommunity(communityId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public void removeCommunities(final String... ids) {
|
|
||||||
for (final String subId : ids) {
|
|
||||||
dbCommunityRepository.deleteById(subId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public List<IISConfigurationEntry> getIISConfiguration(final String id) {
|
public List<IISConfigurationEntry> getIISConfiguration(final String id) {
|
||||||
final List<IISConfigurationEntry> res = new ArrayList<>();
|
final List<IISConfigurationEntry> res = new ArrayList<>();
|
||||||
|
@ -463,4 +485,17 @@ public class CommunityService {
|
||||||
return dbProjectRepository.findFundersByCommunity(id);
|
return dbProjectRepository.findFundersByCommunity(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void removeSubCommunity(final String communityId, final String subCommunityId) throws CommunityException {
|
||||||
|
if (!communityId.equals(CommunityMappingUtils.calculateMainCommunityId(subCommunityId))) {
|
||||||
|
throw new CommunityException("The sub-collection id does not start with " + communityId);
|
||||||
|
}
|
||||||
|
final DbCommunity dbc = dbCommunityRepository.findById(subCommunityId)
|
||||||
|
.filter(c -> c.getType() == CommunityType.subcommunity)
|
||||||
|
.filter(c -> c.getParent() != null)
|
||||||
|
.orElseThrow(() -> new ResourceNotFoundException("SubCommunity not found: " + subCommunityId));
|
||||||
|
|
||||||
|
dbCommunityRepository.delete(dbc);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -216,10 +216,11 @@ public class CommunityImporterService {
|
||||||
service.addCommunityProjects(context.getId(), projects.toArray(new CommunityProject[projects.size()]));
|
service.addCommunityProjects(context.getId(), projects.toArray(new CommunityProject[projects.size()]));
|
||||||
service.addCommunityDatasources(context.getId(), datasources.toArray(new CommunityContentprovider[datasources.size()]));
|
service.addCommunityDatasources(context.getId(), datasources.toArray(new CommunityContentprovider[datasources.size()]));
|
||||||
service.addCommunityOrganizations(context.getId(), orgs.toArray(new CommunityOrganization[orgs.size()]));
|
service.addCommunityOrganizations(context.getId(), orgs.toArray(new CommunityOrganization[orgs.size()]));
|
||||||
service.addSubCommunities(subs.toArray(new SubCommunity[subs.size()]));
|
|
||||||
} catch (
|
|
||||||
|
|
||||||
final Exception e) {
|
for (final SubCommunity sub : subs) {
|
||||||
|
service.addSubCommunity(community.getId(), sub);
|
||||||
|
}
|
||||||
|
} catch (final Exception e) {
|
||||||
throw new RuntimeException("Error importing community: " + context.getId(), e);
|
throw new RuntimeException("Error importing community: " + context.getId(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ class CommunityImporterServiceTest {
|
||||||
Mockito.verify(service, Mockito.times(1)).addCommunityProjects(Mockito.anyString(), projectsCapture.capture());
|
Mockito.verify(service, Mockito.times(1)).addCommunityProjects(Mockito.anyString(), projectsCapture.capture());
|
||||||
Mockito.verify(service, Mockito.times(1)).addCommunityDatasources(Mockito.anyString(), datasourcesCapture.capture());
|
Mockito.verify(service, Mockito.times(1)).addCommunityDatasources(Mockito.anyString(), datasourcesCapture.capture());
|
||||||
Mockito.verify(service, Mockito.times(1)).addCommunityOrganizations(Mockito.anyString(), orgsCapture.capture());
|
Mockito.verify(service, Mockito.times(1)).addCommunityOrganizations(Mockito.anyString(), orgsCapture.capture());
|
||||||
Mockito.verify(service, Mockito.times(1)).addSubCommunities(subCommunitiesCapture.capture());
|
Mockito.verify(service, Mockito.times(688)).addSubCommunity(Mockito.anyString(), subCommunitiesCapture.capture());
|
||||||
|
|
||||||
final CommunityDetails details = detailsCapture.getValue();
|
final CommunityDetails details = detailsCapture.getValue();
|
||||||
assertEquals("egi", details.getId());
|
assertEquals("egi", details.getId());
|
||||||
|
@ -111,7 +111,6 @@ class CommunityImporterServiceTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Test
|
@Test
|
||||||
public void testImportCommunityFetFp7() throws Exception {
|
public void testImportCommunityFetFp7() throws Exception {
|
||||||
final String profile = IOUtils.toString(getClass().getResourceAsStream("old_community_profile_fet-fp7.xml"), StandardCharsets.UTF_8.toString());
|
final String profile = IOUtils.toString(getClass().getResourceAsStream("old_community_profile_fet-fp7.xml"), StandardCharsets.UTF_8.toString());
|
||||||
|
@ -134,7 +133,7 @@ class CommunityImporterServiceTest {
|
||||||
Mockito.verify(service, Mockito.times(1)).addCommunityProjects(Mockito.anyString(), projectsCapture.capture());
|
Mockito.verify(service, Mockito.times(1)).addCommunityProjects(Mockito.anyString(), projectsCapture.capture());
|
||||||
Mockito.verify(service, Mockito.times(1)).addCommunityDatasources(Mockito.anyString(), datasourcesCapture.capture());
|
Mockito.verify(service, Mockito.times(1)).addCommunityDatasources(Mockito.anyString(), datasourcesCapture.capture());
|
||||||
Mockito.verify(service, Mockito.times(1)).addCommunityOrganizations(Mockito.anyString(), orgsCapture.capture());
|
Mockito.verify(service, Mockito.times(1)).addCommunityOrganizations(Mockito.anyString(), orgsCapture.capture());
|
||||||
Mockito.verify(service, Mockito.times(1)).addSubCommunities(subCommunitiesCapture.capture());
|
Mockito.verify(service, Mockito.times(151)).addSubCommunity(Mockito.anyString(), subCommunitiesCapture.capture());
|
||||||
|
|
||||||
final CommunityDetails details = detailsCapture.getValue();
|
final CommunityDetails details = detailsCapture.getValue();
|
||||||
assertEquals("fet-fp7", details.getId());
|
assertEquals("fet-fp7", details.getId());
|
||||||
|
|
Loading…
Reference in New Issue