private Either<AttachmentError, Attachment> createAttachmentFromFile( final File file, final String filename, final String contentType, final @Nullable ApplicationUser author, final Issue issue, final Boolean zip, final Boolean thumbnailable, final Map<String, Object> attachmentProperties, final Date createdTime, final Boolean copySourceFile) { final AttachmentKey attachmentKey = createAttachmentKey(filename, issue); final long fileSize = file.length(); final Either<AttachmentError, StoreAttachmentResult> putResult = safelyPutAttachmentFileToAttachmentStore( attachmentKey, file, !(TRUE.equals(copySourceFile)), author); return putResult.right().map(new Function<StoreAttachmentResult, Attachment>() { @Override public Attachment apply(final StoreAttachmentResult ignore) { return insertAttachment( issue.getId(), ApplicationUsers.getKeyFor(author), contentType, filename, fileSize, zip, thumbnailable, attachmentProperties, createdTime, attachmentKey.getAttachmentId() ); } }); }
private Either<AttachmentError, Attachment> createAttachmentFromTemporaryAttachment( final ConvertTemporaryAttachmentParams params) { final String filename = params.getFilename(); final Issue issue = params.getIssue(); final ApplicationUser author = params.getAuthor(); final long fileSize = params.getFileSize(); final Timestamp createdTime = new Timestamp(params.getCreatedTime().getMillis()); final AttachmentKey attachmentKey = createAttachmentKey(filename, issue); final Either<AttachmentError, Unit> moveResult = safelyMoveTemporaryToAttachment( attachmentKey, params.getTemporaryAttachmentId(), author); return moveResult.right().map(new Function<Object, Attachment>() { @Override public Attachment apply(final Object ignore) { final Boolean zip = null; final Boolean thumbnailable = null; final Map<String, Object> attachmentProperties = null; return insertAttachment( issue.getId(), ApplicationUsers.getKeyFor(author), params.getContentType(), filename, fileSize, zip, thumbnailable, attachmentProperties, createdTime, attachmentKey.getAttachmentId() ); } }); }
@VisibleForTesting Iterable<ApplicationUser> findUsersWithPermission(final Iterable<Integer> permissions, final String name, Either<Project, Issue> projectOrIssue, boolean allowEmptyQuery, Integer maxResults) { final Predicate<User> permissionPredicate = Either.merge(projectOrIssue.left().map(new Function<Project, Predicate<User>>() { @Override public Predicate<User> apply(Project project) { return createProjectPredicate(permissions, project); } }).right().map(new Function<Issue, Predicate<User>>() { @Override public Predicate<User> apply(Issue issue) { return createIssuePredicate(permissions, issue); } })); return userPickerHelper.findUsers(name, true, false, allowEmptyQuery, permissionPredicate, maxResults); }
@Override public Either<AttachmentError, ChangeItemBean> tryCreateAttachment(final CreateAttachmentParamsBean params) { return createAttachmentImpl(params).right().map(ATTACHMENT_TO_CHANGE_ITEM_BEAN); }
@Override public Either<AttachmentError, ChangeItemBean> convertTemporaryAttachment(final ConvertTemporaryAttachmentParams params) { return createAttachmentFromTemporaryAttachment(params).right().map(ATTACHMENT_TO_CHANGE_ITEM_BEAN); }