Example usage for com.liferay.portal.kernel.zip ZipReader getEntries

List of usage examples for com.liferay.portal.kernel.zip ZipReader getEntries

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.zip ZipReader getEntries.

Prototype

public List<String> getEntries();

Source Link

Usage

From source file:com.liferay.knowledgebase.admin.importer.KBArticleImporter.java

License:Open Source License

protected Map<String, List<String>> getFolderNameFileEntryNamesMap(ZipReader zipReader) {

    Map<String, List<String>> folderNameFileEntryNamesMap = new TreeMap<String, List<String>>();

    for (String zipEntry : zipReader.getEntries()) {
        String extension = FileUtil.getExtension(zipEntry);

        if (!ArrayUtil.contains(PortletPropsValues.MARKDOWN_IMPORTER_ARTICLE_EXTENSIONS,
                StringPool.PERIOD.concat(extension))) {

            continue;
        }//from w w w  . j a v a2 s  . c om

        String folderName = zipEntry.substring(0, zipEntry.lastIndexOf(StringPool.SLASH));

        List<String> fileEntryNames = folderNameFileEntryNamesMap.get(folderName);

        if (fileEntryNames == null) {
            fileEntryNames = new ArrayList<String>();
        }

        fileEntryNames.add(zipEntry);

        folderNameFileEntryNamesMap.put(folderName, fileEntryNames);
    }

    return folderNameFileEntryNamesMap;
}

From source file:com.liferay.portlet.wiki.importers.mediawiki.MediaWikiImporter.java

License:Open Source License

protected void processImages(long userId, WikiNode node, InputStream imagesInputStream) throws Exception {

    if (imagesInputStream == null) {
        return;//from  ww  w  . j a v a 2s . c o m
    }

    ProgressTracker progressTracker = ProgressTrackerThreadLocal.getProgressTracker();

    int count = 0;

    ZipReader zipReader = ZipReaderFactoryUtil.getZipReader(imagesInputStream);

    List<String> entries = zipReader.getEntries();

    int total = entries.size();

    if (total > 0) {
        try {
            WikiPageLocalServiceUtil.getPage(node.getNodeId(), SHARED_IMAGES_TITLE);
        } catch (NoSuchPageException nspe) {
            ServiceContext serviceContext = new ServiceContext();

            serviceContext.setAddGroupPermissions(true);
            serviceContext.setAddGuestPermissions(true);

            WikiPageLocalServiceUtil.addPage(userId, node.getNodeId(), SHARED_IMAGES_TITLE,
                    SHARED_IMAGES_CONTENT, null, true, serviceContext);
        }
    }

    List<ObjectValuePair<String, InputStream>> inputStreamOVPs = new ArrayList<ObjectValuePair<String, InputStream>>();

    try {
        int percentage = 50;

        for (int i = 0; i < entries.size(); i++) {
            String entry = entries.get(i);

            String key = entry;

            InputStream inputStream = zipReader.getEntryAsInputStream(entry);

            String[] paths = StringUtil.split(key, CharPool.SLASH);

            if (!isValidImage(paths, inputStream)) {
                if (_log.isInfoEnabled()) {
                    _log.info("Ignoring " + key);
                }

                continue;
            }

            String fileName = StringUtil.toLowerCase(paths[paths.length - 1]);

            ObjectValuePair<String, InputStream> inputStreamOVP = new ObjectValuePair<String, InputStream>(
                    fileName, inputStream);

            inputStreamOVPs.add(inputStreamOVP);

            count++;

            if ((i % 5) == 0) {
                WikiPageLocalServiceUtil.addPageAttachments(userId, node.getNodeId(), SHARED_IMAGES_TITLE,
                        inputStreamOVPs);

                inputStreamOVPs.clear();

                percentage = Math.min(50 + (i * 50) / total, 99);

                progressTracker.setPercent(percentage);
            }
        }

        if (!inputStreamOVPs.isEmpty()) {
            WikiPageLocalServiceUtil.addPageAttachments(userId, node.getNodeId(), SHARED_IMAGES_TITLE,
                    inputStreamOVPs);
        }
    } finally {
        for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) {

            InputStream inputStream = inputStreamOVP.getValue();

            StreamUtil.cleanUp(inputStream);
        }
    }

    zipReader.close();

    if (_log.isInfoEnabled()) {
        _log.info("Imported " + count + " images into " + node.getName());
    }
}

From source file:com.liferay.wiki.importer.impl.mediawiki.MediaWikiImporter.java

License:Open Source License

protected void processImages(long userId, WikiNode node, InputStream imagesInputStream) throws Exception {

    if (imagesInputStream == null) {
        return;//from  ww  w  .ja v  a2s . co m
    }

    ProgressTracker progressTracker = ProgressTrackerThreadLocal.getProgressTracker();

    int count = 0;

    ZipReader zipReader = ZipReaderFactoryUtil.getZipReader(imagesInputStream);

    List<String> entries = zipReader.getEntries();

    if (entries == null) {
        throw new ImportFilesException();
    }

    int total = entries.size();

    if (total > 0) {
        try {
            _wikiPageLocalService.getPage(node.getNodeId(), SHARED_IMAGES_TITLE);
        } catch (NoSuchPageException nspe) {
            ServiceContext serviceContext = new ServiceContext();

            serviceContext.setAddGroupPermissions(true);
            serviceContext.setAddGuestPermissions(true);

            _wikiPageLocalService.addPage(userId, node.getNodeId(), SHARED_IMAGES_TITLE, SHARED_IMAGES_CONTENT,
                    null, true, serviceContext);
        }
    }

    List<ObjectValuePair<String, InputStream>> inputStreamOVPs = new ArrayList<>();

    try {
        int percentage = 50;

        for (int i = 0; i < entries.size(); i++) {
            String entry = entries.get(i);

            String key = entry;

            InputStream inputStream = zipReader.getEntryAsInputStream(entry);

            String[] paths = StringUtil.split(key, CharPool.SLASH);

            if (!isValidImage(paths, inputStream)) {
                if (_log.isInfoEnabled()) {
                    _log.info("Ignoring " + key);
                }

                continue;
            }

            String fileName = StringUtil.toLowerCase(paths[paths.length - 1]);

            ObjectValuePair<String, InputStream> inputStreamOVP = new ObjectValuePair<>(fileName, inputStream);

            inputStreamOVPs.add(inputStreamOVP);

            count++;

            if ((i % 5) == 0) {
                _wikiPageLocalService.addPageAttachments(userId, node.getNodeId(), SHARED_IMAGES_TITLE,
                        inputStreamOVPs);

                inputStreamOVPs.clear();

                percentage = Math.min(50 + (i * 50) / total, 99);

                if (progressTracker != null) {
                    progressTracker.setPercent(percentage);
                }
            }
        }

        if (!inputStreamOVPs.isEmpty()) {
            _wikiPageLocalService.addPageAttachments(userId, node.getNodeId(), SHARED_IMAGES_TITLE,
                    inputStreamOVPs);
        }
    } finally {
        for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) {

            InputStream inputStream = inputStreamOVP.getValue();

            StreamUtil.cleanUp(inputStream);
        }
    }

    zipReader.close();

    if (_log.isInfoEnabled()) {
        _log.info("Imported " + count + " images into " + node.getName());
    }
}