/** * Построение URL для загрузки файла * * @param reference ссылка JepFileReference, формируемая в бине * @return соответствующий URL */ protected String buildDownloadUrl(Object reference) { if (reference instanceof JepFileReference) { JepFileReference fileReference = (JepFileReference) reference; StringBuilder sbUrl = new StringBuilder(); sbUrl.append(downloadServletUrl); sbUrl.append("?"); sbUrl.append(DOWNLOAD_FIELD_NAME); sbUrl.append("="); sbUrl.append(getFieldId()); sbUrl.append("&"); sbUrl.append(DOWNLOAD_RECORD_KEY); sbUrl.append("="); sbUrl.append(fileReference.getRecordKey()); String mimeType = fileReference.getMimeType(); if (mimeType != null) { sbUrl.append("&"); sbUrl.append(DOWNLOAD_MIME_TYPE); sbUrl.append("="); sbUrl.append(mimeType); } else { return null; // При пустом mime-type для Blob-поля считаем, что поле пусто. } sbUrl.append("&"); // "Защита" от кэширования sbUrl.append(viewCount++); // "Защита" от кэширования return sbUrl.toString(); } return null; }
/** * Получение значения поля.<br> * На основе значения карты Редактирования формируется объект наследник {@link * com.technology.jep.jepria.shared.record.lob.JepFileReference}.<br> * Особенности реализации метода: * * <ul> * <li>Только если пользователем выбран файл(-ы) для загрузки, тогда ПЕРЕЗАПИСЫВАЕТСЯ имя файла * в {@link #fileReference} вместо значения, которое (возможно) там было изначально * (например: пришло с сервера/из ejb/из базы данных). * </ul> * * <br> * * @return значение поля - объект наследник {@link * com.technology.jep.jepria.shared.record.lob.JepFileReference} */ @Override @SuppressWarnings("unchecked") public JepFileReference getValue() { String fileName = editableCard.getFilename(); if (fileReference == null) { fileReference = new JepFileReference(); } // Только если пользователем выбран файл(-ы) для загрузки, тогда ПЕРЕЗАПИСЫВАЕМ имя файла в // fileReference вместо значения, которое // (возможно) там было изначально (например: пришло с сервера/из ejb/из базы данных). if (!JepRiaUtil.isEmpty(fileName)) { fileReference.setFileName(fileName); } return fileReference; }