List of usage examples for com.liferay.portal.repository.liferayrepository.model LiferayFileEntry getModel
@Override
public Object getModel()
From source file:com.liferay.document.library.internal.exportimport.data.handler.FileEntryStagedModelDataHandler.java
License:Open Source License
@Override protected void doImportStagedModel(PortletDataContext portletDataContext, FileEntry fileEntry) throws Exception { long userId = portletDataContext.getUserId(fileEntry.getUserUuid()); if (!fileEntry.isDefaultRepository()) { // References has been automatically imported, nothing to do here return;/* w ww . ja v a 2 s . co m*/ } Map<Long, Long> folderIds = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(Folder.class); long folderId = MapUtil.getLong(folderIds, fileEntry.getFolderId(), fileEntry.getFolderId()); long[] assetCategoryIds = portletDataContext.getAssetCategoryIds(DLFileEntry.class, fileEntry.getFileEntryId()); String[] assetTagNames = portletDataContext.getAssetTagNames(DLFileEntry.class, fileEntry.getFileEntryId()); ServiceContext serviceContext = portletDataContext.createServiceContext(fileEntry, DLFileEntry.class); serviceContext.setAttribute("sourceFileName", "A." + fileEntry.getExtension()); serviceContext.setUserId(userId); Element fileEntryElement = portletDataContext.getImportDataElement(fileEntry); String binPath = fileEntryElement.attributeValue("bin-path"); InputStream is = null; try { if (Validator.isNull(binPath) && portletDataContext.isPerformDirectBinaryImport()) { try { is = FileEntryUtil.getContentStream(fileEntry); } catch (Exception e) { if (_log.isWarnEnabled()) { _log.warn("Unable to retrieve content for file entry " + fileEntry.getFileEntryId(), e); } return; } } else { is = portletDataContext.getZipEntryAsInputStream(binPath); } if (is == null) { if (_log.isWarnEnabled()) { _log.warn("No file found for file entry " + fileEntry.getFileEntryId()); } return; } importMetaData(portletDataContext, fileEntryElement, fileEntry, serviceContext); FileEntry importedFileEntry = null; if (portletDataContext.isDataStrategyMirror()) { FileEntry existingFileEntry = fetchStagedModelByUuidAndGroupId(fileEntry.getUuid(), portletDataContext.getScopeGroupId()); FileVersion fileVersion = fileEntry.getFileVersion(); if (existingFileEntry == null) { if (portletDataContext.isDataStrategyMirrorWithOverwriting()) { FileEntry existingTitleFileEntry = FileEntryUtil .fetchByR_F_T(portletDataContext.getScopeGroupId(), folderId, fileEntry.getTitle()); if (existingTitleFileEntry == null) { existingTitleFileEntry = FileEntryUtil.fetchByR_F_FN( portletDataContext.getScopeGroupId(), folderId, fileEntry.getFileName()); } if (existingTitleFileEntry != null) { _dlAppLocalService.deleteFileEntry(existingTitleFileEntry.getFileEntryId()); } } serviceContext.setAttribute("fileVersionUuid", fileVersion.getUuid()); serviceContext.setUuid(fileEntry.getUuid()); String fileEntryTitle = _dlFileEntryLocalService.getUniqueTitle( portletDataContext.getScopeGroupId(), folderId, 0, fileEntry.getTitle(), fileEntry.getExtension()); importedFileEntry = _dlAppLocalService.addFileEntry(userId, portletDataContext.getScopeGroupId(), folderId, fileEntry.getFileName(), fileEntry.getMimeType(), fileEntryTitle, fileEntry.getDescription(), null, is, fileEntry.getSize(), serviceContext); if (fileEntry.isInTrash()) { importedFileEntry = _dlTrashService .moveFileEntryToTrash(importedFileEntry.getFileEntryId()); } } else { FileVersion latestExistingFileVersion = existingFileEntry.getLatestFileVersion(true); boolean indexEnabled = serviceContext.isIndexingEnabled(); boolean deleteFileEntry = false; boolean updateFileEntry = false; if (!Objects.equals(fileVersion.getUuid(), latestExistingFileVersion.getUuid())) { deleteFileEntry = true; updateFileEntry = true; } else { InputStream existingFileVersionInputStream = null; try { existingFileVersionInputStream = latestExistingFileVersion.getContentStream(false); } catch (Exception e) { if (_log.isDebugEnabled()) { _log.debug(e, e); } } finally { if (existingFileVersionInputStream != null) { existingFileVersionInputStream.close(); } } if (existingFileVersionInputStream == null) { updateFileEntry = true; } } try { serviceContext.setIndexingEnabled(false); if (updateFileEntry) { DLFileVersion alreadyExistingFileVersion = _dlFileVersionLocalService .getFileVersionByUuidAndGroupId(fileVersion.getUuid(), existingFileEntry.getGroupId()); if (alreadyExistingFileVersion != null) { serviceContext.setAttribute("existingDLFileVersionId", alreadyExistingFileVersion.getFileVersionId()); } serviceContext.setUuid(fileVersion.getUuid()); String fileEntryTitle = _dlFileEntryLocalService.getUniqueTitle( portletDataContext.getScopeGroupId(), existingFileEntry.getFolderId(), existingFileEntry.getFileEntryId(), fileEntry.getTitle(), fileEntry.getExtension()); importedFileEntry = _dlAppLocalService.updateFileEntry(userId, existingFileEntry.getFileEntryId(), fileEntry.getFileName(), fileEntry.getMimeType(), fileEntryTitle, fileEntry.getDescription(), null, false, is, fileEntry.getSize(), serviceContext); } else { _dlAppLocalService.updateAsset(userId, existingFileEntry, latestExistingFileVersion, assetCategoryIds, assetTagNames, null); importedFileEntry = existingFileEntry; } if (importedFileEntry.getFolderId() != folderId) { importedFileEntry = _dlAppLocalService.moveFileEntry(userId, importedFileEntry.getFileEntryId(), folderId, serviceContext); } if (importedFileEntry instanceof LiferayFileEntry) { LiferayFileEntry liferayFileEntry = (LiferayFileEntry) importedFileEntry; Indexer<DLFileEntry> indexer = IndexerRegistryUtil .nullSafeGetIndexer(DLFileEntry.class); indexer.reindex((DLFileEntry) liferayFileEntry.getModel()); } if (deleteFileEntry && ExportImportThreadLocal.isStagingInProcess()) { _dlAppService.deleteFileVersion(latestExistingFileVersion.getFileEntryId(), latestExistingFileVersion.getVersion()); } } finally { serviceContext.setIndexingEnabled(indexEnabled); } } } else { String fileEntryTitle = _dlFileEntryLocalService.getUniqueTitle( portletDataContext.getScopeGroupId(), folderId, 0, fileEntry.getTitle(), fileEntry.getExtension()); importedFileEntry = _dlAppLocalService.addFileEntry(userId, portletDataContext.getScopeGroupId(), folderId, fileEntry.getFileName(), fileEntry.getMimeType(), fileEntryTitle, fileEntry.getDescription(), null, is, fileEntry.getSize(), serviceContext); } for (DLPluggableContentDataHandler dlPluggableContentDataHandler : _serviceTrackerList) { dlPluggableContentDataHandler.importContent(portletDataContext, fileEntryElement, fileEntry, importedFileEntry); } portletDataContext.importClassedModel(fileEntry, importedFileEntry, DLFileEntry.class); Map<Long, Long> fileEntryIds = (Map<Long, Long>) portletDataContext .getNewPrimaryKeysMap(FileEntry.class); fileEntryIds.put(fileEntry.getFileEntryId(), importedFileEntry.getFileEntryId()); } finally { try { is.close(); } catch (IOException ioe) { _log.error(ioe, ioe); } } }
From source file:com.liferay.portlet.documentlibrary.lar.DLPortletDataHandlerImpl.java
License:Open Source License
public static void importFileEntry(PortletDataContext portletDataContext, Element fileEntryElement, String path) throws Exception { FileEntry fileEntry = (FileEntry) portletDataContext.getZipEntryAsObject(path); long userId = portletDataContext.getUserId(fileEntry.getUserUuid()); Map<Long, Long> folderIds = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(DLFolder.class); long folderId = MapUtil.getLong(folderIds, fileEntry.getFolderId(), fileEntry.getFolderId()); long[] assetCategoryIds = null; String[] assetTagNames = null; if (portletDataContext.getBooleanParameter(_NAMESPACE, "categories")) { assetCategoryIds = portletDataContext.getAssetCategoryIds(DLFileEntry.class, fileEntry.getFileEntryId()); }// w w w . j a v a 2 s .c om if (portletDataContext.getBooleanParameter(_NAMESPACE, "tags")) { assetTagNames = portletDataContext.getAssetTagNames(DLFileEntry.class, fileEntry.getFileEntryId()); } ServiceContext serviceContext = portletDataContext.createServiceContext(fileEntryElement, fileEntry, _NAMESPACE); serviceContext.setAttribute("sourceFileName", "A." + fileEntry.getExtension()); serviceContext.setUserId(userId); String binPath = fileEntryElement.attributeValue("bin-path"); InputStream is = null; if (Validator.isNull(binPath) && portletDataContext.isPerformDirectBinaryImport()) { try { is = FileEntryUtil.getContentStream(fileEntry); } catch (NoSuchFileException nsfe) { } } else { is = portletDataContext.getZipEntryAsInputStream(binPath); } if (is == null) { if (_log.isWarnEnabled()) { _log.warn("No file found for file entry " + fileEntry.getFileEntryId()); } return; } if ((folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) && (folderId == fileEntry.getFolderId())) { String folderPath = getImportFolderPath(portletDataContext, folderId); Folder folder = (Folder) portletDataContext.getZipEntryAsObject(folderPath); Document document = fileEntryElement.getDocument(); Element rootElement = document.getRootElement(); Element folderElement = (Element) rootElement .selectSingleNode("//folder[@path='".concat(folderPath).concat("']")); importFolder(portletDataContext, folderPath, folderElement, folder); folderId = MapUtil.getLong(folderIds, fileEntry.getFolderId(), fileEntry.getFolderId()); } importMetaData(portletDataContext, fileEntryElement, serviceContext); FileEntry importedFileEntry = null; String titleWithExtension = DLUtil.getTitleWithExtension(fileEntry); String extension = fileEntry.getExtension(); String dotExtension = StringPool.PERIOD + extension; if (portletDataContext.isDataStrategyMirror()) { FileEntry existingFileEntry = FileEntryUtil.fetchByUUID_R(fileEntry.getUuid(), portletDataContext.getScopeGroupId()); FileVersion fileVersion = fileEntry.getFileVersion(); if (existingFileEntry == null) { String fileEntryTitle = fileEntry.getTitle(); FileEntry existingTitleFileEntry = FileEntryUtil.fetchByR_F_T(portletDataContext.getScopeGroupId(), folderId, fileEntryTitle); if (existingTitleFileEntry != null) { if ((fileEntry.getGroupId() == portletDataContext.getSourceGroupId()) && portletDataContext.isDataStrategyMirrorWithOverwriting()) { DLAppLocalServiceUtil.deleteFileEntry(existingTitleFileEntry.getFileEntryId()); } else { boolean titleHasExtension = false; if (fileEntryTitle.endsWith(dotExtension)) { fileEntryTitle = FileUtil.stripExtension(fileEntryTitle); titleHasExtension = true; } for (int i = 1;; i++) { fileEntryTitle += StringPool.SPACE + i; titleWithExtension = fileEntryTitle + dotExtension; existingTitleFileEntry = FileEntryUtil.fetchByR_F_T( portletDataContext.getScopeGroupId(), folderId, titleWithExtension); if (existingTitleFileEntry == null) { if (titleHasExtension) { fileEntryTitle += dotExtension; } break; } } } } serviceContext.setAttribute("fileVersionUuid", fileVersion.getUuid()); serviceContext.setUuid(fileEntry.getUuid()); // LPS-37869 if (PropsValuesExt.LAYOUT_IMPORT_DL_FILE_NAME_NORMALIZATION_ENABLED) { titleWithExtension = normalizeFileName(titleWithExtension); fileEntryTitle = normalizeFileName(fileEntryTitle); } importedFileEntry = DLAppLocalServiceUtil.addFileEntry(userId, portletDataContext.getScopeGroupId(), folderId, titleWithExtension, fileEntry.getMimeType(), fileEntryTitle, fileEntry.getDescription(), null, is, fileEntry.getSize(), serviceContext); } else { FileVersion latestExistingFileVersion = existingFileEntry.getLatestFileVersion(); boolean indexEnabled = serviceContext.isIndexingEnabled(); try { serviceContext.setIndexingEnabled(false); if (!fileVersion.getUuid().equals(latestExistingFileVersion.getUuid())) { DLFileVersion alreadyExistingFileVersion = DLFileVersionLocalServiceUtil .getFileVersionByUuidAndGroupId(fileVersion.getUuid(), existingFileEntry.getGroupId()); if (alreadyExistingFileVersion != null) { serviceContext.setAttribute("existingDLFileVersionId", alreadyExistingFileVersion.getFileVersionId()); } serviceContext.setUuid(fileVersion.getUuid()); String fileEntryTitle = fileEntry.getTitle(); // LPS-37869 if (PropsValuesExt.LAYOUT_IMPORT_DL_FILE_NAME_NORMALIZATION_ENABLED) { fileEntryTitle = normalizeFileName(fileEntryTitle); } importedFileEntry = DLAppLocalServiceUtil.updateFileEntry(userId, existingFileEntry.getFileEntryId(), fileEntryTitle, fileEntry.getMimeType(), fileEntryTitle, fileEntry.getDescription(), null, false, is, fileEntry.getSize(), serviceContext); /* importedFileEntry = DLAppLocalServiceUtil.updateFileEntry( userId, existingFileEntry.getFileEntryId(), fileEntry.getTitle(), fileEntry.getMimeType(), fileEntry.getTitle(), fileEntry.getDescription(), null, false, is, fileEntry.getSize(), serviceContext); */ } else { DLAppLocalServiceUtil.updateAsset(userId, existingFileEntry, latestExistingFileVersion, assetCategoryIds, assetTagNames, null); importedFileEntry = existingFileEntry; } if (importedFileEntry.getFolderId() != folderId) { importedFileEntry = DLAppLocalServiceUtil.moveFileEntry(userId, importedFileEntry.getFileEntryId(), folderId, serviceContext); } if (importedFileEntry instanceof LiferayFileEntry) { LiferayFileEntry liferayFileEntry = (LiferayFileEntry) importedFileEntry; Indexer indexer = IndexerRegistryUtil.getIndexer(DLFileEntry.class); indexer.reindex(liferayFileEntry.getModel()); } } finally { serviceContext.setIndexingEnabled(indexEnabled); } } } else { try { String fileEntryTitle = fileEntry.getTitle(); // LPS-37869 if (PropsValuesExt.LAYOUT_IMPORT_DL_FILE_NAME_NORMALIZATION_ENABLED) { titleWithExtension = normalizeFileName(titleWithExtension); fileEntryTitle = normalizeFileName(fileEntryTitle); } importedFileEntry = DLAppLocalServiceUtil.addFileEntry(userId, portletDataContext.getScopeGroupId(), folderId, titleWithExtension, fileEntry.getMimeType(), fileEntryTitle, fileEntry.getDescription(), null, is, fileEntry.getSize(), serviceContext); /* importedFileEntry = DLAppLocalServiceUtil.addFileEntry( userId, portletDataContext.getScopeGroupId(), folderId, titleWithExtension, fileEntry.getMimeType(), fileEntry.getTitle(), fileEntry.getDescription(), null, is, fileEntry.getSize(), serviceContext); */ } catch (DuplicateFileException dfe) { String title = fileEntry.getTitle(); // LPS-37869 if (PropsValuesExt.LAYOUT_IMPORT_DL_FILE_NAME_NORMALIZATION_ENABLED) { title = normalizeFileName(title); } String[] titleParts = title.split("\\.", 2); title = titleParts[0] + PwdGenerator.getPassword(); if (titleParts.length > 1) { title += StringPool.PERIOD + titleParts[1]; } if (!title.endsWith(dotExtension)) { title += dotExtension; } importedFileEntry = DLAppLocalServiceUtil.addFileEntry(userId, portletDataContext.getScopeGroupId(), folderId, title, fileEntry.getMimeType(), title, fileEntry.getDescription(), null, is, fileEntry.getSize(), serviceContext); } } if (portletDataContext.getBooleanParameter(_NAMESPACE, "previews-and-thumbnails")) { DLProcessorRegistryUtil.importGeneratedFiles(portletDataContext, fileEntry, importedFileEntry, fileEntryElement); } Map<String, String> fileEntryTitles = (Map<String, String>) portletDataContext .getNewPrimaryKeysMap(DLFileEntry.class.getName() + ".title"); fileEntryTitles.put(fileEntry.getTitle(), importedFileEntry.getTitle()); portletDataContext.importClassedModel(fileEntry, importedFileEntry, _NAMESPACE); }