ResourceSetDTO[] resourceSetDTOs = dto.getResourceSets();
final ResourceSet[] resourceSets = new ResourceSet[resourceSetDTOs.length];
// 1. restore primary resource sets
for (ResourceSetDTO resourceSetDTO : resourceSetDTOs) {
if (!resourceSetDTO.isUnmodifiable()) {
ResourceSet resourceSet = resourceSetFactory
.createResourceSet();
resourceSet.setLabel(resourceSetDTO.getLabel());
for (String uri : resourceSetDTO.getResourceIds()) {
resourceSet.add(resourceManager.getByUri(uri));
}
resourceSets[resourceSetDTO.getId()] = resourceSet;
}
}
// 2. restore unmodifiable resource sets
for (ResourceSetDTO resourceSetDTO : resourceSetDTOs) {
if (resourceSetDTO.isUnmodifiable()) {
int delegateId = resourceSetDTO.getDelegateSetId();
ResourceSet resourceSet = new UnmodifiableResourceSet(
resourceSets[delegateId]);
resourceSets[resourceSetDTO.getId()] = resourceSet;
}
}