/** * Fills this dto from draft * * @param draft draft to fill dto */ public void fillFrom(PostDraft draft) { this.setBodyText(draft.getContent()); this.setId(draft.getId()); this.setTopicId(draft.getTopic().getId()); this.setCreationDate(draft.getLastSaved()); } }
@Override @PreAuthorize("hasPermission(#topic.branch.id, 'BRANCH', 'BranchPermission.CREATE_POSTS')") public PostDraft saveOrUpdateDraft(Topic topic, String content) { JCUser currentUser = userService.getCurrentUser(); PostDraft draft = topic.getDraftForUser(currentUser); if (draft == null) { draft = new PostDraft(content, currentUser); topic.addDraft(draft); } else { draft.setContent(content); draft.updateLastSavedTime(); } topicDao.saveOrUpdate(topic); logger.debug("Draft saved in topic. Topic id={}, Post id={}, Post author={}", new Object[]{topic.getId(), draft.getId(), currentUser.getUsername()}); return draft; }
/** * Adds draft to current topic * * @param draft draft to add */ public void addDraft(PostDraft draft) { draft.setTopic(this); getDrafts().add(draft); }
/** * {@inheritDoc} */ @Override public void deleteDraft(Long draftId) throws NotFoundException{ if (!postDraftDao.isExist(draftId)) { throw new NotFoundException("Draft with id=" + draftId + " not found"); } PostDraft draft = postDraftDao.get(draftId); if (!draft.getAuthor().equals(userService.getCurrentUser())) { throw new AccessDeniedException("Only author can delete draft"); } Topic topic = draft.getTopic(); topic.getDrafts().remove(draft); topicDao.saveOrUpdate(topic); logger.debug("Deleted draft id={}", draft.getId()); }
/** * Saves new draft or update if it already exist * * @param postDraftDto post draft dto populated in form * @param result validation result * * @return response in JSON format * * @throws NotFoundException if topic to store draft not exist */ @RequestMapping(value = "/posts/savedraft", method = RequestMethod.POST) @ResponseBody public JsonResponse saveDraft(@Valid @RequestBody PostDraftDto postDraftDto, BindingResult result) throws NotFoundException { if (result.hasErrors()) { return new JsonResponse(JsonResponseStatus.FAIL); } Topic topic = topicFetchService.getTopicSilently(postDraftDto.getTopicId()); PostDraft saved = postService.saveOrUpdateDraft(topic, postDraftDto.getBodyText()); return new JsonResponse(JsonResponseStatus.SUCCESS, saved.getId()); }
/** * Get draft of specified user in current topic * * @param user user to search draft * * @return draft of specified user or null if draft not found */ public PostDraft getDraftForUser(JCUser user) { for (PostDraft draft : getDrafts()) { if (draft.getAuthor().equals(user)) { return draft; } } return null; }
/** * Creates dto from draft * * @param postdraft draft to create dto * * @return dto for draft */ public static PostDto getDtoFor(PostDraft postdraft) { PostDto dto = new PostDto(); dto.setBodyText(postdraft.getContent()); dto.setId(postdraft.getId()); dto.setTopicId(postdraft.getTopic().getId()); dto.setCreationDate(postdraft.getLastSaved()); return dto; }