dnet-applications/libs/dnet-is-services/src/main/java/eu/dnetlib/is/resource/SimpleResourceService.java

106 lines
3.5 KiB
Java
Raw Normal View History

2023-02-06 15:31:21 +01:00
package eu.dnetlib.is.resource;
2022-11-24 11:45:10 +01:00
2023-02-27 11:43:28 +01:00
import java.time.LocalDateTime;
2022-11-24 11:45:10 +01:00
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.transaction.Transactional;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable;
2023-02-06 15:53:07 +01:00
import eu.dnetlib.errors.InformationServiceException;
2023-02-06 15:31:21 +01:00
import eu.dnetlib.is.model.resource.SimpleResource;
import eu.dnetlib.is.resource.repository.SimpleResourceRepository;
2022-11-24 11:45:10 +01:00
@Service
public class SimpleResourceService {
@Autowired
private SimpleResourceRepository simpleResourceRepository;
2022-12-06 10:16:49 +01:00
@Autowired
private ResourceValidator resourceValidator;
2022-11-24 11:45:10 +01:00
private static final Log log = LogFactory.getLog(SimpleResourceService.class);
public SimpleResource getMetadata(final String id) throws InformationServiceException {
return simpleResourceRepository.findById(id).orElseThrow(() -> new InformationServiceException("Id not found"));
}
public String getContent(final String id) throws InformationServiceException {
return simpleResourceRepository.findContentById(id).orElseThrow(() -> new InformationServiceException("Id not found"));
}
2023-02-14 15:00:44 +01:00
public String getContent(final String type, final String name) throws InformationServiceException {
return simpleResourceRepository.findContentByTypeAndName(type, name).orElseThrow(() -> new InformationServiceException("Id not found"));
}
2022-11-24 11:45:10 +01:00
public String getContentType(final String id) throws InformationServiceException {
return simpleResourceRepository.findContentTypeById(id).orElseThrow(() -> new InformationServiceException("Id not found"));
}
public List<SimpleResource> listResources(final String type) {
return simpleResourceRepository.findByType(type)
.stream()
.sorted((r1, r2) -> StringUtils.compareIgnoreCase(r1.getName(), r2.getName()))
.collect(Collectors.toList());
}
public void deleteResource(@PathVariable final String id) {
log.info("Deleting resource: " + id);
simpleResourceRepository.deleteById(id);
}
@Transactional
public SimpleResource saveNewResource(final String name,
final String type,
2023-03-03 13:53:21 +01:00
final String subtype,
2022-11-24 11:45:10 +01:00
final String description,
2022-12-06 10:16:49 +01:00
final String content) throws InformationServiceException {
resourceValidator.validate(type, content);
2023-02-27 11:43:28 +01:00
final LocalDateTime now = LocalDateTime.now();
2022-11-24 11:45:10 +01:00
final SimpleResource res = new SimpleResource();
res.setId(UUID.randomUUID().toString());
res.setName(name);
res.setType(type);
2023-03-03 13:53:21 +01:00
res.setSubtype(subtype);
2022-11-24 11:45:10 +01:00
res.setDescription(description);
res.setCreationDate(now);
res.setModificationDate(now);
simpleResourceRepository.save(res);
simpleResourceRepository.setContentById(res.getId(), content);
return res;
}
@Transactional
public void saveMetadata(final String id, final SimpleResource r) throws InformationServiceException {
if (simpleResourceRepository.existsById(id)) {
r.setId(id);
simpleResourceRepository.save(r);
} else {
throw new InformationServiceException("Resource not found");
}
}
@Transactional
public void saveContent(final String id, final String content) throws InformationServiceException {
2022-12-06 10:16:49 +01:00
final SimpleResource res = simpleResourceRepository.findById(id).orElseThrow(() -> new InformationServiceException("Resource not found"));
resourceValidator.validate(res.getType(), content);
simpleResourceRepository.setContentById(id, content);
2022-11-24 11:45:10 +01:00
}
}