Search in sources :

Example 1 with Builder

use of org.obiba.mica.web.model.Mica.DataAccessRequestDto.StatusChangeDto.Builder in project mica2 by obiba.

the class DataAccessRequestDtos method asDto.

@NotNull
public Mica.DataAccessRequestDto asDto(@NotNull DataAccessRequest request) {
    Mica.DataAccessRequestDto.Builder builder = asDtoBuilder(request);
    String title = dataAccessRequestUtilService.getRequestTitle(request);
    if (!Strings.isNullOrEmpty(title)) {
        builder.setTitle(title);
    }
    if (request.hasStartDate())
        builder.setStartDate(ISO_8601.format(request.getStartDate()));
    DataAccessRequestTimeline timeline = dataAccessRequestReportNotificationService.getReportsTimeline(request);
    if (timeline.hasStartDate() && timeline.hasEndDate()) {
        builder.setReportsTimeline(Mica.TimelineDto.newBuilder().setStartDate(ISO_8601.format(timeline.getStartDate())).setEndDate(ISO_8601.format(timeline.getEndDate())).addAllIntermediateDates(timeline.getIntermediateDates().stream().map(d -> ISO_8601.format(d)).collect(Collectors.toList())));
    }
    builder.setArchived(request.isArchived());
    request.getAttachments().forEach(attachment -> builder.addAttachments(attachmentDtos.asDto(attachment)));
    if (!request.isArchived()) {
        builder.addAllActions(addDataAccessEntityActions(request, "/data-access-request"));
        if (subjectAclService.isPermitted(Paths.get("/data-access-request", request.getId(), "/amendment").toString(), "ADD")) {
            builder.addActions("ADD_AMENDMENTS");
        }
        boolean hasAdministrativeRole = SecurityUtils.getSubject().hasRole(Roles.MICA_DAO) || SecurityUtils.getSubject().hasRole(Roles.MICA_ADMIN);
        if (hasAdministrativeRole || subjectAclService.isPermitted("/data-access-request/private-comment", "VIEW")) {
            builder.addActions("VIEW_PRIVATE_COMMENTS");
        }
        if (hasAdministrativeRole || subjectAclService.isPermitted(Paths.get("/data-access-request", request.getId(), "_attachments").toString(), "EDIT")) {
            builder.addActions("EDIT_ATTACHMENTS");
            if (hasAdministrativeRole) {
                builder.addActions("DELETE_ATTACHMENTS");
                builder.addActions("EDIT_ACTION_LOGS");
            }
        }
    }
    try {
        Project project = projectService.findById(request.getId());
        Mica.PermissionsDto permissionsDto = permissionsDtos.asDto(project);
        Mica.ProjectSummaryDto.Builder projectSummaryDtoBuilder = Mica.ProjectSummaryDto.newBuilder();
        projectSummaryDtoBuilder.setId(project.getId());
        projectSummaryDtoBuilder.setPermissions(permissionsDto);
        builder.setProject(projectSummaryDtoBuilder.build());
    } catch (NoSuchProjectException e) {
    // do nothing
    }
    return builder.build();
}
Also used : NoSuchProjectException(org.obiba.mica.project.service.NoSuchProjectException) Project(org.obiba.mica.project.domain.Project) java.util(java.util) Builder(org.obiba.mica.web.model.Mica.DataAccessRequestDto.StatusChangeDto.Builder) Roles(org.obiba.mica.security.Roles) ProjectService(org.obiba.mica.project.service.ProjectService) UserProfileService(org.obiba.mica.user.UserProfileService) SimpleDateFormat(java.text.SimpleDateFormat) Inject(javax.inject.Inject) Strings(com.google.common.base.Strings) DataAccessRequestUtilService(org.obiba.mica.access.service.DataAccessRequestUtilService) Lists(com.google.common.collect.Lists) Subject(org.obiba.shiro.realm.ObibaRealm.Subject) ZoneOffset(java.time.ZoneOffset) ParseException(java.text.ParseException) SubjectAclService(org.obiba.mica.security.service.SubjectAclService) DataAccessRequestRepository(org.obiba.mica.access.DataAccessRequestRepository) DataAccessRequestReportNotificationService(org.obiba.mica.access.notification.DataAccessRequestReportNotificationService) NotNull(javax.validation.constraints.NotNull) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) Component(org.springframework.stereotype.Component) Paths(java.nio.file.Paths) org.obiba.mica.access.domain(org.obiba.mica.access.domain) SecurityUtils(org.apache.shiro.SecurityUtils) Project(org.obiba.mica.project.domain.Project) NoSuchProjectException(org.obiba.mica.project.service.NoSuchProjectException) NotNull(javax.validation.constraints.NotNull)

Aggregations

Strings (com.google.common.base.Strings)1 Lists (com.google.common.collect.Lists)1 Paths (java.nio.file.Paths)1 ParseException (java.text.ParseException)1 SimpleDateFormat (java.text.SimpleDateFormat)1 Instant (java.time.Instant)1 ZoneOffset (java.time.ZoneOffset)1 java.util (java.util)1 Collectors (java.util.stream.Collectors)1 Inject (javax.inject.Inject)1 NotNull (javax.validation.constraints.NotNull)1 SecurityUtils (org.apache.shiro.SecurityUtils)1 DataAccessRequestRepository (org.obiba.mica.access.DataAccessRequestRepository)1 org.obiba.mica.access.domain (org.obiba.mica.access.domain)1 DataAccessRequestReportNotificationService (org.obiba.mica.access.notification.DataAccessRequestReportNotificationService)1 DataAccessRequestUtilService (org.obiba.mica.access.service.DataAccessRequestUtilService)1 Project (org.obiba.mica.project.domain.Project)1 NoSuchProjectException (org.obiba.mica.project.service.NoSuchProjectException)1 ProjectService (org.obiba.mica.project.service.ProjectService)1 Roles (org.obiba.mica.security.Roles)1