Example usage for com.liferay.portal.repository.liferayrepository.model LiferayFileEntry getModel

List of usage examples for com.liferay.portal.repository.liferayrepository.model LiferayFileEntry getModel

Introduction

In this page you can find the example usage for com.liferay.portal.repository.liferayrepository.model LiferayFileEntry getModel.

Prototype

@Override
    public Object getModel() 

Source Link

Usage

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);
}