/** * Each test is assumed to clean up all DB content it entered. After a test method executed, this method scans all tables to see if the DB is completely clean. It throws AssertionFailed in case * the DB is not clean. If the DB is not clean, it is cleaned by performing a create a drop. */ public static void assertAndEnsureCleanDb(ContentEngine contentEngine) { LOGGER.debug("verifying that db is clean after test"); ContentService contentService = contentEngine.getContentEngineConfiguration().getContentService(); List<ContentItem> items = contentService.createContentItemQuery().list(); if (items != null && !items.isEmpty()) { throw new AssertionError("ContentItem is not empty"); } }
protected ContentItemResponse createBinaryContentItem(MultipartHttpServletRequest request, HttpServletResponse response) { ContentItem contentItem = contentService.newContentItem(); contentService.saveContentItem(contentItem, file.getInputStream());
public void deleteContent(String contentId, HttpServletResponse response) { ContentItem contentItem = contentService.createContentItemQuery().id(contentId).singleResult(); if (contentItem == null) { throw new NotFoundException("No content found with id: " + contentId); } if (!permissionService.hasWritePermissionOnRelatedContent(SecurityUtils.getCurrentUserObject(), contentItem)) { throw new NotPermittedException("You are not allowed to delete the content with id: " + contentId); } if (contentItem.getField() != null) { // Not allowed to delete content that has been added as part of a form throw new NotPermittedException("You are not allowed to delete the content with id: " + contentId); } contentService.deleteContentItem(contentItem.getId()); }
public void getRawContent(String contentId, HttpServletResponse response) { ContentItem contentItem = contentService.createContentItemQuery().id(contentId).singleResult(); if (contentItem == null) { throw new NotFoundException("No content found with id: " + contentId); } if (!contentItem.isContentAvailable()) { throw new NotFoundException("Raw content not yet available for id: " + contentId); } if (!permissionService.canDownloadContent(SecurityUtils.getCurrentUserObject(), contentItem)) { throw new NotPermittedException("You are not allowed to read the content with id: " + contentId); } // Set correct mine-type if (contentItem.getMimeType() != null) { response.setContentType(contentItem.getMimeType()); } // Write content response try (InputStream inputstream = contentService.getContentItemData(contentId)) { IOUtils.copy(inputstream, response.getOutputStream()); } catch (IOException e) { throw new InternalServerErrorException("Error while writing raw content data for content: " + contentId, e); } }
Collections.addAll(contentItemIdSet, contentItemIds); List<ContentItem> contentItems = contentService.createContentItemQuery().ids(contentItemIdSet).list(); contentItem.setField(formField.getId()); contentItem.setTenantId(tenantId); contentService.saveContentItem(contentItem);
@ApiOperation(value = "Save the content item data", tags = { "Content item" }, notes = "Save the content item data with an attached file. " + "The request should be of type multipart/form-data. There should be a single file-part included with the binary value of the content item.") @ApiImplicitParams({ @ApiImplicitParam(name = "file", dataType = "file", paramType = "form", required = true) }) @ApiResponses(value = { @ApiResponse(code = 201, message = "Indicates the content item data was saved and the result is returned."), @ApiResponse(code = 400, message = "Indicates required content item data is missing from the request.") }) @PostMapping(value = "/content-service/content-items/{contentItemId}/data", produces = "application/json", consumes = "multipart/form-data") public ContentItemResponse saveContentItemData(@ApiParam(name = "contentItemId") @PathVariable("contentItemId") String contentItemId, HttpServletRequest request, HttpServletResponse response) { if (!(request instanceof MultipartHttpServletRequest)) { throw new FlowableException("Multipart request required to save content item data"); } ContentItem contentItem = getContentItemFromRequest(contentItemId); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile file = multipartRequest.getFileMap().values().iterator().next(); if (file == null) { throw new FlowableIllegalArgumentException("Content item file is required."); } try { contentService.saveContentItem(contentItem, file.getInputStream()); response.setStatus(HttpStatus.CREATED.value()); return contentRestResponseFactory.createContentItemResponse(contentItem); } catch (Exception e) { throw new FlowableException("Error creating content item response", e); } }
@ApiOperation(value = "Delete a content item", tags = { "Content item" }) @ApiResponses(value = { @ApiResponse(code = 204, message = "Indicates the content item was deleted."), @ApiResponse(code = 404, message = "Indicates the content item was not found.") }) @DeleteMapping(value = "/content-service/content-items/{contentItemId}") public void deleteContentItem(@ApiParam(name = "contentItemId") @PathVariable String contentItemId, HttpServletResponse response) { ContentItem contentItem = getContentItemFromRequest(contentItemId); if (restApiInterceptor != null) { restApiInterceptor.deleteContentItem(contentItem); } contentService.deleteContentItem(contentItemId); response.setStatus(HttpStatus.NO_CONTENT.value()); } }
InputStream dataStream = contentService.getContentItemData(contentItemId); if (dataStream == null) { throw new FlowableObjectNotFoundException("Content item with id '" + contentItemId + "' doesn't have content associated with it.");
Collections.addAll(contentItemIdSet, contentItemIds); List<ContentItem> contentItems = contentService.createContentItemQuery().ids(contentItemIdSet).list(); contentItem.setField(formField.getId()); contentItem.setTenantId(tenantId); contentService.saveContentItem(contentItem);
contentService.saveContentItem(contentItem);
protected ContentItem getContentItemFromRequest(String contentItemId) { ContentItem contentItem = contentService.createContentItemQuery().id(contentItemId).singleResult(); if (contentItem == null) { throw new FlowableObjectNotFoundException("Could not find a content item with id '" + contentItemId + "'.", ContentItem.class); } if (restApiInterceptor != null) { restApiInterceptor.accessContentItemInfoById(contentItem); } return contentItem; } }
protected ContentItemRepresentation uploadFile(User user, MultipartFile file, String taskId, String processInstanceId, String caseId) { if (file != null && file.getName() != null) { try { String contentType = file.getContentType(); // temp additional content type check for IE9 flash uploads if (StringUtils.equals(file.getContentType(), "application/octet-stream")) { contentType = getContentTypeForFileExtension(file); } ContentItem contentItem = contentService.newContentItem(); contentItem.setName(getFileName(file)); contentItem.setProcessInstanceId(processInstanceId); contentItem.setTaskId(taskId); if (StringUtils.isNotEmpty(caseId)) { contentItem.setScopeType("cmmn"); contentItem.setScopeId(caseId); } contentItem.setMimeType(contentType); contentItem.setCreatedBy(user.getId()); contentItem.setLastModifiedBy(user.getId()); contentService.saveContentItem(contentItem, file.getInputStream()); return createContentItemResponse(contentItem); } catch (IOException e) { throw new BadRequestException("Error while reading file data", e); } } else { throw new BadRequestException("File to upload is missing"); } }
public ResultListDataRepresentation getContentItemsForTask(String taskId) { permissionService.validateReadPermissionOnTask(SecurityUtils.getCurrentUserObject(), taskId); return createResultRepresentation(contentService.createContentItemQuery().taskId(taskId).list()); }
protected ContentItemRepresentation addContentItem(ContentItemRepresentation contentItemBody, String taskId, String processInstanceId, boolean isRelatedContent) { if (contentItemBody.getContentStoreId() == null || contentItemBody.getContentStoreName() == null || contentItemBody.getName() == null) { throw new BadRequestException("Name, source and sourceId are required parameters"); } User user = SecurityUtils.getCurrentUserObject(); ContentItem contentItem = contentService.newContentItem(); contentItem.setName(contentItemBody.getName()); contentItem.setProcessInstanceId(processInstanceId); contentItem.setTaskId(taskId); contentItem.setContentStoreId(contentItemBody.getContentStoreId()); contentItem.setContentStoreName(contentItemBody.getContentStoreName()); contentItem.setMimeType(contentItemBody.getMimeType()); contentItem.setCreatedBy(user.getId()); contentItem.setLastModifiedBy(user.getId()); contentService.saveContentItem(contentItem); return createContentItemResponse(contentItem); }
public ResultListDataRepresentation getContentItemsForProcessInstance(String processInstanceId) { // TODO: check if process exists if (!permissionService.hasReadPermissionOnProcessInstance(SecurityUtils.getCurrentUserObject(), processInstanceId)) { throw new NotPermittedException("You are not allowed to read the process with id: " + processInstanceId); } return createResultRepresentation(contentService.createContentItemQuery().processInstanceId(processInstanceId).list()); }
protected ContentItemResponse createSimpleContentItem(ContentItemRequest contentItemRequest) { if (contentItemRequest.getName() == null) { throw new FlowableIllegalArgumentException("Content item name is required."); } ContentItem contentItem = contentService.newContentItem(); contentItem.setName(contentItemRequest.getName()); contentItem.setMimeType(contentItemRequest.getMimeType()); contentItem.setTaskId(contentItemRequest.getTaskId()); contentItem.setProcessInstanceId(contentItemRequest.getProcessInstanceId()); contentItem.setContentStoreId(contentItemRequest.getContentStoreId()); contentItem.setContentStoreName(contentItemRequest.getContentStoreName()); contentItem.setField(contentItemRequest.getField()); contentItem.setCreatedBy(contentItemRequest.getCreatedBy()); contentItem.setLastModifiedBy(contentItemRequest.getLastModifiedBy()); contentItem.setTenantId(contentItemRequest.getTenantId()); if (restApiInterceptor != null) { restApiInterceptor.createNewContentItem(contentItem); } contentService.saveContentItem(contentItem); return contentRestResponseFactory.createContentItemResponse(contentItem); }
public ResultListDataRepresentation getContentItemsForCase(String caseInstanceId) { permissionService.hasReadPermissionOnCase(SecurityUtils.getCurrentUserObject(), caseInstanceId); return createResultRepresentation(contentService.createContentItemQuery().scopeType("cmmn").scopeId(caseInstanceId).list()); }
@Override public void enrichFormFields(FormInfo formInfo) { ContentService contentService = CommandContextUtil.getContentService(); if (contentService == null) { return; } SimpleFormModel formModel = (SimpleFormModel) formInfo.getFormModel(); if (formModel.getFields() != null) { for (FormField formField : formModel.getFields()) { if (FormFieldTypes.UPLOAD.equals(formField.getType())) { List<String> contentItemIds = null; if (formField.getValue() instanceof List) { contentItemIds = (List<String>) formField.getValue(); } else if (formField.getValue() instanceof String) { String[] splittedString = ((String) formField.getValue()).split(","); contentItemIds = new ArrayList<>(); Collections.addAll(contentItemIds, splittedString); } if (contentItemIds != null) { Set<String> contentItemIdSet = new HashSet<>(contentItemIds); List<ContentItem> contentItems = contentService.createContentItemQuery() .ids(contentItemIdSet) .list(); formField.setValue(contentItems); } } } } }
@Override public void enrichFormFields(FormInfo formInfo) { ContentService contentService = CommandContextUtil.getContentService(); if (contentService == null) { return; } SimpleFormModel formModel = (SimpleFormModel) formInfo.getFormModel(); if (formModel.getFields() != null) { for (FormField formField : formModel.getFields()) { if (FormFieldTypes.UPLOAD.equals(formField.getType())) { List<String> contentItemIds = null; if (formField.getValue() instanceof List) { contentItemIds = (List<String>) formField.getValue(); } else if (formField.getValue() instanceof String) { String[] splittedString = ((String) formField.getValue()).split(","); contentItemIds = new ArrayList<>(); Collections.addAll(contentItemIds, splittedString); } if (contentItemIds != null) { Set<String> contentItemIdSet = new HashSet<>(contentItemIds); List<ContentItem> contentItems = contentService.createContentItemQuery() .ids(contentItemIdSet) .list(); formField.setValue(contentItems); } } } } }
public ContentItemRepresentation getContent(String contentId) { ContentItem contentItem = contentService.createContentItemQuery().id(contentId).singleResult(); if (contentItem == null) { throw new NotFoundException("No content found with id: " + contentId); } if (!permissionService.canDownloadContent(SecurityUtils.getCurrentUserObject(), contentItem)) { throw new NotPermittedException("You are not allowed to view the content with id: " + contentId); } return createContentItemResponse(contentItem); }