package eu.eudat.service.description; import eu.eudat.data.StorageFileEntity; import eu.eudat.model.Description; import eu.eudat.model.DescriptionValidationResult; import eu.eudat.model.StorageFile; import eu.eudat.model.persist.DescriptionFieldFilePersist; import eu.eudat.model.persist.DescriptionPersist; import eu.eudat.model.persist.DescriptionSectionPermissionResolver; import eu.eudat.model.persist.DescriptionStatusPersist; import gr.cite.tools.exception.MyApplicationException; import gr.cite.tools.exception.MyForbiddenException; import gr.cite.tools.exception.MyNotFoundException; import gr.cite.tools.exception.MyValidationException; import gr.cite.tools.fieldset.FieldSet; import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; import javax.management.InvalidApplicationException; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.UUID; public interface DescriptionService { Map> getDescriptionSectionPermissions(DescriptionSectionPermissionResolver model); Description persist(DescriptionPersist model, FieldSet fields) throws MyForbiddenException, MyValidationException, MyApplicationException, MyNotFoundException, InvalidApplicationException, IOException; Description persistStatus(DescriptionStatusPersist model, FieldSet fields) throws IOException; void deleteAndSave(UUID id) throws MyForbiddenException, InvalidApplicationException, IOException; List validate(List descriptionIds); void clone(UUID dmpId, UUID descriptionId) throws InvalidApplicationException, IOException; ResponseEntity export(UUID id, String exportType) throws InvalidApplicationException, IOException; StorageFile uploadFieldFile(DescriptionFieldFilePersist model, MultipartFile file, FieldSet fields) throws IOException; StorageFileEntity getFieldFile(UUID descriptionId, UUID storageFileId); }