Search in sources :

Example 1 with DataAccessEntityStatus

use of org.obiba.mica.access.domain.DataAccessEntityStatus in project mica2 by obiba.

the class DataAccessRequestService method save.

private DataAccessRequest save(@NotNull DataAccessRequest request, DateTime lastModifiedDate) {
    DataAccessRequest saved = request;
    DataAccessEntityStatus from = null;
    Iterable<Attachment> attachmentsToDelete = null;
    Iterable<Attachment> attachmentsToSave = null;
    if (request.isNew()) {
        setAndLogStatus(saved, DataAccessEntityStatus.OPENED);
        saved.setId(generateId());
        attachmentsToSave = saved.getAttachments();
    } else {
        saved = dataAccessRequestRepository.findOne(request.getId());
        if (saved != null) {
            if (!SecurityUtils.getSubject().hasRole(Roles.MICA_DAO) && !SecurityUtils.getSubject().hasRole(Roles.MICA_ADMIN)) {
                // preserve current actionLogs as no other user role can add or remove them
                request.setActionLogHistory(saved.getActionLogHistory());
            }
            attachmentsToDelete = Sets.difference(Sets.newHashSet(saved.getAttachments()), Sets.newHashSet(request.getAttachments()));
            attachmentsToSave = Sets.difference(Sets.newHashSet(request.getAttachments()), Sets.newHashSet(saved.getAttachments()));
            from = saved.getStatus();
            // validate the status
            dataAccessRequestUtilService.checkStatusTransition(saved, request.getStatus());
            saved.setStatus(request.getStatus());
            if (request.hasStatusChangeHistory())
                saved.setStatusChangeHistory(request.getStatusChangeHistory());
            // merge beans
            BeanUtils.copyProperties(request, saved, "id", "version", "createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate", "statusChangeHistory");
        } else {
            saved = request;
            setAndLogStatus(saved, DataAccessEntityStatus.OPENED);
        }
    }
    schemaFormContentFileService.save(saved, dataAccessRequestRepository.findOne(request.getId()), String.format("/data-access-request/%s", saved.getId()));
    if (attachmentsToSave != null)
        attachmentsToSave.forEach(a -> {
            fileStoreService.save(a.getId());
            a.setJustUploaded(false);
            attachmentRepository.save(a);
        });
    if (lastModifiedDate != null)
        saved.setLastModifiedDate(lastModifiedDate);
    dataAccessRequestRepository.saveWithReferences(saved);
    if (attachmentsToDelete != null)
        attachmentsToDelete.forEach(a -> fileStoreService.delete(a.getId()));
    if (saved.hasVariablesSet() && DataAccessEntityStatus.OPENED.equals(saved.getStatus())) {
        variableSetService.setLock(saved.getVariablesSet(), false);
    }
    eventBus.post(new DataAccessRequestUpdatedEvent(saved));
    sendNotificationEmails(saved, from);
    return saved;
}
Also used : Comment(org.obiba.mica.core.domain.Comment) DataAccessForm(org.obiba.mica.micaConfig.domain.DataAccessForm) Async(org.springframework.scheduling.annotation.Async) ByteArrayOutputStream(java.io.ByteArrayOutputStream) AttachmentRepository(org.obiba.mica.core.repository.AttachmentRepository) Roles(org.obiba.mica.security.Roles) LoggerFactory(org.slf4j.LoggerFactory) CommentDeletedEvent(org.obiba.mica.core.event.CommentDeletedEvent) FileStoreService(org.obiba.mica.file.FileStoreService) DataAccessEntityRepository(org.obiba.mica.access.DataAccessEntityRepository) Value(org.springframework.beans.factory.annotation.Value) Inject(javax.inject.Inject) DataAccessFormService(org.obiba.mica.micaConfig.service.DataAccessFormService) Service(org.springframework.stereotype.Service) Locale(java.util.Locale) Map(java.util.Map) DataAccessRequest(org.obiba.mica.access.domain.DataAccessRequest) Subscribe(com.google.common.eventbus.Subscribe) Resource(org.springframework.core.io.Resource) org.obiba.mica.access.event(org.obiba.mica.access.event) Validated(org.springframework.validation.annotation.Validated) Attachment(org.obiba.mica.file.Attachment) SubjectAclService(org.obiba.mica.security.service.SubjectAclService) Logger(org.slf4j.Logger) DataAccessRequestRepository(org.obiba.mica.access.DataAccessRequestRepository) DateTime(org.joda.time.DateTime) Throwables(com.google.common.base.Throwables) IOException(java.io.IOException) CommentUpdatedEvent(org.obiba.mica.core.event.CommentUpdatedEvent) NotNull(javax.validation.constraints.NotNull) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) SubjectAcl(org.obiba.mica.security.domain.SubjectAcl) DocumentException(com.itextpdf.text.DocumentException) NoSuchDataAccessRequestException(org.obiba.mica.access.NoSuchDataAccessRequestException) List(java.util.List) DataAccessEntityStatus(org.obiba.mica.access.domain.DataAccessEntityStatus) ByteStreams(com.google.common.io.ByteStreams) SecurityUtils(org.apache.shiro.SecurityUtils) Configuration.defaultConfiguration(com.jayway.jsonpath.Configuration.defaultConfiguration) BeanUtils(org.springframework.beans.BeanUtils) DataAccessRequest(org.obiba.mica.access.domain.DataAccessRequest) Attachment(org.obiba.mica.file.Attachment) DataAccessEntityStatus(org.obiba.mica.access.domain.DataAccessEntityStatus)

Example 2 with DataAccessEntityStatus

use of org.obiba.mica.access.domain.DataAccessEntityStatus in project mica2 by obiba.

the class DataAccessAmendmentService method save.

@Override
public DataAccessAmendment save(@NotNull DataAccessAmendment amendment) {
    DataAccessAmendment saved = amendment;
    DataAccessEntityStatus from = null;
    if (amendment.isNew()) {
        setAndLogStatus(saved, DataAccessEntityStatus.OPENED);
        int count = findByParentId(saved.getParentId()).size();
        saved.setId(saved.getParentId() + "-A" + (count + 1));
    } else {
        saved = dataAmendmentRequestRepository.findOne(amendment.getId());
        if (saved != null) {
            from = saved.getStatus();
            // validate the status
            dataAccessRequestUtilService.checkStatusTransition(saved, amendment.getStatus());
            saved.setStatus(amendment.getStatus());
            if (amendment.hasStatusChangeHistory())
                saved.setStatusChangeHistory(amendment.getStatusChangeHistory());
            // merge beans
            BeanUtils.copyProperties(amendment, saved, "id", "version", "createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate", "statusChangeHistory");
        } else {
            saved = amendment;
            setAndLogStatus(saved, DataAccessEntityStatus.OPENED);
        }
    }
    ensureProjectTitle(saved);
    schemaFormContentFileService.save(saved, dataAmendmentRequestRepository.findOne(amendment.getId()), String.format("/data-access-request/%s/amendment/%s", saved.getParentId(), amendment.getId()));
    saved.setLastModifiedDate(DateTime.now());
    dataAmendmentRequestRepository.save(saved);
    eventBus.post(new DataAccessAmendmentUpdatedEvent(saved));
    sendNotificationEmails(saved, from);
    return saved;
}
Also used : DataAccessAmendment(org.obiba.mica.access.domain.DataAccessAmendment) DataAccessAmendmentUpdatedEvent(org.obiba.mica.access.event.DataAccessAmendmentUpdatedEvent) DataAccessEntityStatus(org.obiba.mica.access.domain.DataAccessEntityStatus)

Example 3 with DataAccessEntityStatus

use of org.obiba.mica.access.domain.DataAccessEntityStatus in project mica2 by obiba.

the class DataAccessFeasibilityService method save.

@Override
public DataAccessFeasibility save(@NotNull DataAccessFeasibility feasibility) {
    DataAccessFeasibility saved = feasibility;
    DataAccessEntityStatus from = null;
    if (feasibility.isNew()) {
        setAndLogStatus(saved, DataAccessEntityStatus.OPENED);
        int count = findByParentId(saved.getParentId()).size();
        saved.setId(saved.getParentId() + "-F" + (count + 1));
    } else {
        saved = dataFeasibilityRequestRepository.findOne(feasibility.getId());
        if (saved != null) {
            from = saved.getStatus();
            // validate the status
            dataAccessRequestUtilService.checkStatusTransition(saved, feasibility.getStatus());
            saved.setStatus(feasibility.getStatus());
            if (feasibility.hasStatusChangeHistory())
                saved.setStatusChangeHistory(feasibility.getStatusChangeHistory());
            // merge beans
            BeanUtils.copyProperties(feasibility, saved, "id", "version", "createdBy", "createdDate", "lastModifiedBy", "lastModifiedDate", "statusChangeHistory");
        } else {
            saved = feasibility;
            setAndLogStatus(saved, DataAccessEntityStatus.OPENED);
        }
    }
    schemaFormContentFileService.save(saved, dataFeasibilityRequestRepository.findOne(feasibility.getId()), String.format("/data-access-request/%s/feasibility/%s", saved.getParentId(), feasibility.getId()));
    saved.setLastModifiedDate(DateTime.now());
    dataFeasibilityRequestRepository.save(saved);
    eventBus.post(new DataAccessFeasibilityUpdatedEvent(saved));
    sendNotificationEmails(saved, from);
    return saved;
}
Also used : DataAccessFeasibility(org.obiba.mica.access.domain.DataAccessFeasibility) DataAccessFeasibilityUpdatedEvent(org.obiba.mica.access.event.DataAccessFeasibilityUpdatedEvent) DataAccessEntityStatus(org.obiba.mica.access.domain.DataAccessEntityStatus)

Aggregations

DataAccessEntityStatus (org.obiba.mica.access.domain.DataAccessEntityStatus)3 Throwables (com.google.common.base.Throwables)1 Sets (com.google.common.collect.Sets)1 Subscribe (com.google.common.eventbus.Subscribe)1 ByteStreams (com.google.common.io.ByteStreams)1 DocumentException (com.itextpdf.text.DocumentException)1 Configuration.defaultConfiguration (com.jayway.jsonpath.Configuration.defaultConfiguration)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 IOException (java.io.IOException)1 List (java.util.List)1 Locale (java.util.Locale)1 Map (java.util.Map)1 Collectors (java.util.stream.Collectors)1 Inject (javax.inject.Inject)1 NotNull (javax.validation.constraints.NotNull)1 SecurityUtils (org.apache.shiro.SecurityUtils)1 DateTime (org.joda.time.DateTime)1 DataAccessEntityRepository (org.obiba.mica.access.DataAccessEntityRepository)1 DataAccessRequestRepository (org.obiba.mica.access.DataAccessRequestRepository)1 NoSuchDataAccessRequestException (org.obiba.mica.access.NoSuchDataAccessRequestException)1