Search in sources :

Example 1 with ProgressTracker

use of com.liferay.portal.kernel.util.ProgressTracker in project liferay-ide by liferay.

the class MediaWikiImporter method processRegularPages.

protected void processRegularPages(long userId, WikiNode node, Element rootElement, List<String> specialNamespaces, Map<String, String> usersMap, InputStream imagesInputStream, Map<String, String[]> options) {
    boolean importLatestVersion = MapUtil.getBoolean(options, WikiImporterKeys.OPTIONS_IMPORT_LATEST_VERSION);
    boolean strictImportMode = MapUtil.getBoolean(options, WikiImporterKeys.OPTIONS_STRICT_IMPORT_MODE);
    ProgressTracker progressTracker = ProgressTrackerThreadLocal.getProgressTracker();
    int count = 0;
    int percentage = 10;
    int maxPercentage = 50;
    if (imagesInputStream == null) {
        maxPercentage = 99;
    }
    List<Element> pageElements = rootElement.elements("page");
    for (int i = 0; i < pageElements.size(); i++) {
        Element pageElement = pageElements.get(i);
        String title = pageElement.elementText("title");
        if (isSpecialMediaWikiPage(title, specialNamespaces)) {
            continue;
        }
        title = normalizeTitle(title);
        percentage = Math.min(10 + (i * (maxPercentage - percentage)) / pageElements.size(), maxPercentage);
        progressTracker.setPercent(percentage);
        List<Element> revisionElements = pageElement.elements("revision");
        if (importLatestVersion) {
            Element lastRevisionElement = revisionElements.get(revisionElements.size() - 1);
            revisionElements = new ArrayList<Element>();
            revisionElements.add(lastRevisionElement);
        }
        for (Element revisionElement : revisionElements) {
            Element contributorElement = revisionElement.element("contributor");
            String author = contributorElement.elementText("username");
            String content = revisionElement.elementText("text");
            String summary = revisionElement.elementText("comment");
            try {
                importPage(userId, author, node, title, content, summary, usersMap, strictImportMode);
            } catch (Exception e) {
                if (_log.isWarnEnabled()) {
                    _log.warn("Page with title " + title + " could not be imported", e);
                }
            }
        }
        count++;
    }
    if (_log.isInfoEnabled()) {
        _log.info("Imported " + count + " pages into " + node.getName());
    }
}
Also used : ProgressTracker(com.liferay.portal.kernel.util.ProgressTracker) Element(com.liferay.portal.kernel.xml.Element) NoSuchPageException(com.liferay.portlet.wiki.NoSuchPageException) ImportFilesException(com.liferay.portlet.wiki.ImportFilesException) PortalException(com.liferay.portal.kernel.exception.PortalException) SystemException(com.liferay.portal.kernel.exception.SystemException) DocumentException(com.liferay.portal.kernel.xml.DocumentException) IOException(java.io.IOException) NoSuchTagException(com.liferay.portlet.asset.NoSuchTagException)

Example 2 with ProgressTracker

use of com.liferay.portal.kernel.util.ProgressTracker in project liferay-ide by liferay.

the class MediaWikiImporter method processSpecialPages.

protected void processSpecialPages(long userId, WikiNode node, Element rootElement, List<String> specialNamespaces) throws PortalException {
    ProgressTracker progressTracker = ProgressTrackerThreadLocal.getProgressTracker();
    List<Element> pageElements = rootElement.elements("page");
    for (int i = 0; i < pageElements.size(); i++) {
        Element pageElement = pageElements.get(i);
        String title = pageElement.elementText("title");
        if (!title.startsWith("Category:")) {
            if (isSpecialMediaWikiPage(title, specialNamespaces)) {
                rootElement.remove(pageElement);
            }
            continue;
        }
        String categoryName = title.substring("Category:".length());
        categoryName = normalize(categoryName, 75);
        Element revisionElement = pageElement.element("revision");
        String description = revisionElement.elementText("text");
        description = normalizeDescription(description);
        try {
            AssetTag assetTag = null;
            try {
                assetTag = AssetTagLocalServiceUtil.getTag(node.getGroupId(), categoryName);
            } catch (NoSuchTagException nste) {
                ServiceContext serviceContext = new ServiceContext();
                serviceContext.setAddGroupPermissions(true);
                serviceContext.setAddGuestPermissions(true);
                serviceContext.setScopeGroupId(node.getGroupId());
                assetTag = AssetTagLocalServiceUtil.addTag(userId, categoryName, null, serviceContext);
                if (PropsValues.ASSET_TAG_PROPERTIES_ENABLED && Validator.isNotNull(description)) {
                    AssetTagPropertyLocalServiceUtil.addTagProperty(userId, assetTag.getTagId(), "description", description);
                }
            }
        } catch (SystemException se) {
            _log.error(se, se);
        }
        if ((i % 5) == 0) {
            progressTracker.setPercent((i * 10) / pageElements.size());
        }
    }
}
Also used : AssetTag(com.liferay.portlet.asset.model.AssetTag) NoSuchTagException(com.liferay.portlet.asset.NoSuchTagException) SystemException(com.liferay.portal.kernel.exception.SystemException) ProgressTracker(com.liferay.portal.kernel.util.ProgressTracker) ServiceContext(com.liferay.portal.service.ServiceContext) Element(com.liferay.portal.kernel.xml.Element)

Example 3 with ProgressTracker

use of com.liferay.portal.kernel.util.ProgressTracker in project liferay-ide by liferay.

the class MediaWikiImporter method processImages.

protected void processImages(long userId, WikiNode node, InputStream imagesInputStream) throws Exception {
    if (imagesInputStream == null) {
        return;
    }
    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());
    }
}
Also used : ProgressTracker(com.liferay.portal.kernel.util.ProgressTracker) NoSuchPageException(com.liferay.portlet.wiki.NoSuchPageException) ServiceContext(com.liferay.portal.service.ServiceContext) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) ZipReader(com.liferay.portal.kernel.zip.ZipReader) ObjectValuePair(com.liferay.portal.kernel.util.ObjectValuePair)

Aggregations

ProgressTracker (com.liferay.portal.kernel.util.ProgressTracker)3 SystemException (com.liferay.portal.kernel.exception.SystemException)2 Element (com.liferay.portal.kernel.xml.Element)2 ServiceContext (com.liferay.portal.service.ServiceContext)2 NoSuchTagException (com.liferay.portlet.asset.NoSuchTagException)2 NoSuchPageException (com.liferay.portlet.wiki.NoSuchPageException)2 PortalException (com.liferay.portal.kernel.exception.PortalException)1 ObjectValuePair (com.liferay.portal.kernel.util.ObjectValuePair)1 DocumentException (com.liferay.portal.kernel.xml.DocumentException)1 ZipReader (com.liferay.portal.kernel.zip.ZipReader)1 AssetTag (com.liferay.portlet.asset.model.AssetTag)1 ImportFilesException (com.liferay.portlet.wiki.ImportFilesException)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 ArrayList (java.util.ArrayList)1