@Override public List<String> update( List<FileItem> items, Field field, FieldTemplate template, PagesContext pageContext) throws FormException { List<String> attachmentIds = new ArrayList<String>(); try { String fieldName = template.getFieldName(); String attachmentId = uploadVideoFile(items, fieldName, pageContext); Operation operation = Operation.valueOf(FileUploadUtil.getParameter(items, fieldName + OPERATION_KEY)); String currentAttachmentId = FileUploadUtil.getParameter(items, fieldName + Field.FILE_PARAM_NAME_SUFFIX); if (isDeletion(operation, currentAttachmentId) || isUpdate(operation, attachmentId)) { deleteAttachment(currentAttachmentId, pageContext); } if (StringUtil.isDefined(attachmentId)) { attachmentIds.addAll(update(attachmentId, field, template, pageContext)); } } catch (Exception ex) { SilverTrace.error("form", "VideoFieldDisplayer.update", "form.EXP_UNKNOWN_FIELD", null, ex); } return attachmentIds; }
/** * Uploads the file containing the video and that is identified by the specified field name. * * @param items the items of the form. One of them is containg the video file. * @param itemKey the key of the item containing the video. * @param pageContext the context of the page displaying the form. * @throws Exception if an error occurs while uploading the video file. * @return the identifier of the uploaded attached video file. */ private String uploadVideoFile( final List<FileItem> items, final String itemKey, final PagesContext pageContext) throws Exception { String attachmentId = ""; FileItem item = FileUploadUtil.getFile(items, itemKey); if (!item.isFormField()) { String componentId = pageContext.getComponentId(); String userId = pageContext.getUserId(); String objectId = pageContext.getObjectId(); String logicalName = item.getName(); long size = item.getSize(); if (StringUtil.isDefined(logicalName)) { if (!FileUtil.isWindows()) { logicalName = logicalName.replace('\\', File.separatorChar); SilverTrace.info( "form", "VideoFieldDisplayer.uploadVideoFile", "root.MSG_GEN_PARAM_VALUE", "fullFileName on Unix = " + logicalName); } logicalName = logicalName.substring( logicalName.lastIndexOf(File.separator) + 1, logicalName.length()); String type = FileRepositoryManager.getFileExtension(logicalName); String mimeType = item.getContentType(); String physicalName = Long.toString(System.currentTimeMillis()) + "." + type; File dir = getVideoPath(componentId, physicalName); item.write(dir); AttachmentDetail attachmentDetail = createAttachmentDetail( objectId, componentId, physicalName, logicalName, mimeType, size, VideoFieldDisplayer.CONTEXT_FORM_VIDEO, userId); attachmentDetail = AttachmentController.createAttachment(attachmentDetail, true); attachmentId = attachmentDetail.getPK().getId(); } } return attachmentId; }