Example usage for com.liferay.portal.kernel.xml Element elements

List of usage examples for com.liferay.portal.kernel.xml Element elements

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.xml Element elements.

Prototype

public List<Element> elements(String name);

Source Link

Usage

From source file:com.liferay.portlet.journal.lar.JournalPortletDataHandlerImpl.java

License:Open Source License

@Override
protected PortletPreferences doImportData(PortletDataContext portletDataContext, String portletId,
        PortletPreferences portletPreferences, String data) throws Exception {

    portletDataContext.importPermissions("com.liferay.portlet.journal", portletDataContext.getSourceGroupId(),
            portletDataContext.getScopeGroupId());

    Document document = SAXReaderUtil.read(data);

    Element rootElement = document.getRootElement();

    importReferencedData(portletDataContext, rootElement);

    Element structuresElement = rootElement.element("structures");

    List<Element> structureElements = structuresElement.elements("structure");

    //Modification start
    long processedItems = 0, itemsToprocess = 0;

    itemsToprocess += structureElements.size();

    Element templatesElement = rootElement.element("templates");
    List<Element> templateElements = templatesElement.elements("template");
    itemsToprocess += templateElements.size();

    Element feedsElement = rootElement.element("feeds");
    List<Element> feedElements = feedsElement.elements("feed");
    itemsToprocess += feedElements.size();

    List<Element> articleElements = new ArrayList<Element>();
    if (portletDataContext.getBooleanParameter(_NAMESPACE, "web-content")) {
        Element articlesElement = rootElement.element("articles");

        articleElements = articlesElement.elements("article");
        itemsToprocess += articleElements.size();
    }//from   ww  w  .  j  ava 2  s.c o  m
    StagingProgressUpdaterThreadLocal.getMonitor().getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
            .setItemsCount(itemsToprocess);

    for (Element structureElement : structureElements) {
        StagingProgressUpdaterThreadLocal.getMonitor()
                .getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
                .setItemsProcessed(processedItems++);

        importStructure(portletDataContext, structureElement);
    }

    for (Element templateElement : templateElements) {
        StagingProgressUpdaterThreadLocal.getMonitor()
                .getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
                .setItemsProcessed(processedItems++);

        importTemplate(portletDataContext, templateElement);
    }

    for (Element feedElement : feedElements) {
        StagingProgressUpdaterThreadLocal.getMonitor()
                .getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
                .setItemsProcessed(processedItems++);

        importFeed(portletDataContext, feedElement);
    }

    for (Element articleElement : articleElements) {
        StagingProgressUpdaterThreadLocal.getMonitor()
                .getComponent(PublishProcessProgressMonitor.COMPONENT_JOURNAL)
                .setItemsProcessed(processedItems++);

        try {
            importArticle(portletDataContext, articleElement);
        } catch (ArticleContentException ace) {
            if (_log.isWarnEnabled()) {
                String path = articleElement.attributeValue("path");

                _log.warn("Skipping article with path " + path + " because of invalid content");
            }
        }
    }
    //Modification end

    return portletPreferences;
}

From source file:com.liferay.portlet.journal.model.impl.JournalStructureImpl.java

License:Open Source License

protected void addParentStructureId(Element parentEl, String parentStructureId) {

    Iterator<Element> itr = parentEl.elements(_DYNAMIC_ELEMENT).iterator();

    while (itr.hasNext()) {
        Element dynamicEl = itr.next();

        dynamicEl.addAttribute(_PARENT_STRUCTURE_ID, parentStructureId);

        addParentStructureId(dynamicEl, parentStructureId);
    }/*from  w  w w . jav a  2 s. c o m*/
}

From source file:com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.java

License:Open Source License

public JournalArticleDisplay getArticleDisplay(JournalArticle article, String templateId, String viewMode,
        String languageId, int page, String xmlRequest, ThemeDisplay themeDisplay)
        throws PortalException, SystemException {

    String content = null;//from w  w w .jav  a2s  . co m

    if (page < 1) {
        page = 1;
    }

    int numberOfPages = 1;
    boolean paginate = false;
    boolean pageFlow = false;

    boolean cacheable = true;

    if (Validator.isNull(xmlRequest)) {
        xmlRequest = "<request />";
    }

    Map<String, String> tokens = JournalUtil.getTokens(article.getGroupId(), themeDisplay, xmlRequest);

    tokens.put("article_resource_pk", String.valueOf(article.getResourcePrimKey()));

    String defaultTemplateId = article.getTemplateId();

    if (article.isTemplateDriven()) {
        if (Validator.isNull(templateId)) {
            templateId = defaultTemplateId;
        }

        tokens.put("structure_id", article.getStructureId());
        tokens.put("template_id", templateId);
    }

    String xml = article.getContent();

    try {
        Document document = null;

        Element rootElement = null;

        if (article.isTemplateDriven()) {
            document = SAXReaderUtil.read(xml);

            rootElement = document.getRootElement();

            Document requestDocument = SAXReaderUtil.read(xmlRequest);

            List<Element> pages = rootElement.elements("page");

            if (!pages.isEmpty()) {
                pageFlow = true;

                String targetPage = requestDocument
                        .valueOf("/request/parameters/parameter[name='targetPage']/" + "value");

                Element pageElement = null;

                if (Validator.isNotNull(targetPage)) {
                    XPath xPathSelector = SAXReaderUtil.createXPath("/root/page[@id = '" + targetPage + "']");

                    pageElement = (Element) xPathSelector.selectSingleNode(document);
                }

                if (pageElement != null) {
                    document = SAXReaderUtil.createDocument(pageElement);

                    rootElement = document.getRootElement();

                    numberOfPages = pages.size();
                } else {
                    if (page > pages.size()) {
                        page = 1;
                    }

                    pageElement = pages.get(page - 1);

                    document = SAXReaderUtil.createDocument(pageElement);

                    rootElement = document.getRootElement();

                    numberOfPages = pages.size();
                    paginate = true;
                }
            }

            rootElement.add(requestDocument.getRootElement().createCopy());

            JournalUtil.addAllReservedEls(rootElement, tokens, article, languageId);

            xml = DDMXMLUtil.formatXML(document);
        }
    } catch (DocumentException de) {
        throw new SystemException(de);
    } catch (IOException ioe) {
        throw new SystemException(ioe);
    }

    try {
        if (_log.isDebugEnabled()) {
            _log.debug(
                    "Transforming " + article.getArticleId() + " " + article.getVersion() + " " + languageId);
        }

        String script = null;
        String langType = null;

        if (article.isTemplateDriven()) {

            // Try with specified template first (in the current group and
            // the global group). If a template is not specified, use the
            // default one. If the specified template does not exit, use the
            // default one. If the default one does not exist, throw an
            // exception.

            JournalTemplate template = null;

            try {
                template = journalTemplatePersistence.findByG_T(article.getGroupId(), templateId);
            } catch (NoSuchTemplateException nste1) {
                try {
                    Group companyGroup = groupLocalService.getCompanyGroup(article.getCompanyId());

                    template = journalTemplatePersistence.findByG_T(companyGroup.getGroupId(), templateId);

                    tokens.put("company_group_id", String.valueOf(companyGroup.getGroupId()));
                } catch (NoSuchTemplateException nste2) {
                    if (!defaultTemplateId.equals(templateId)) {
                        template = journalTemplatePersistence.findByG_T(article.getGroupId(),
                                defaultTemplateId);
                    } else {
                        throw nste1;
                    }
                }
            }

            script = template.getXsl();
            langType = template.getLangType();
            cacheable = template.isCacheable();
        }

        content = JournalUtil.transform(themeDisplay, tokens, viewMode, languageId, xml, script, langType);

        if (!pageFlow) {
            String[] pieces = StringUtil.split(content, PropsValues.JOURNAL_ARTICLE_TOKEN_PAGE_BREAK);

            if (pieces.length > 1) {
                if (page > pieces.length) {
                    page = 1;
                }

                content = pieces[page - 1];
                numberOfPages = pieces.length;
                paginate = true;
            }
        }
    } catch (Exception e) {
        throw new SystemException(e);
    }

    return new JournalArticleDisplayImpl(article.getCompanyId(), article.getId(), article.getResourcePrimKey(),
            article.getGroupId(), article.getUserId(), article.getArticleId(), article.getVersion(),
            article.getTitle(languageId), article.getUrlTitle(), article.getDescription(languageId),
            article.getAvailableLocales(), content, article.getType(), article.getStructureId(), templateId,
            article.isSmallImage(), article.getSmallImageId(), article.getSmallImageURL(), numberOfPages, page,
            paginate, cacheable);
}

From source file:com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.java

License:Open Source License

protected void copyArticleImages(JournalArticle oldArticle, JournalArticle newArticle) throws Exception {

    Document contentDoc = SAXReaderUtil.read(oldArticle.getContent());

    XPath xPathSelector = SAXReaderUtil.createXPath("//dynamic-element[@type='image']");

    List<Node> imageNodes = xPathSelector.selectNodes(contentDoc);

    for (Node imageNode : imageNodes) {
        Element imageEl = (Element) imageNode;

        String instanceId = imageEl.attributeValue("instance-id");
        String name = imageEl.attributeValue("name");

        List<Element> dynamicContentEls = imageEl.elements("dynamic-content");

        for (Element dynamicContentEl : dynamicContentEls) {
            long imageId = GetterUtil.getLong(dynamicContentEl.attributeValue("id"));
            String languageId = dynamicContentEl.attributeValue("language-id");

            Image oldImage = null;

            try {
                oldImage = imageLocalService.getImage(imageId);
            } catch (NoSuchImageException nsie) {
                continue;
            }/*w  w  w .  ja va 2 s.c o m*/

            imageId = journalArticleImageLocalService.getArticleImageId(newArticle.getGroupId(),
                    newArticle.getArticleId(), newArticle.getVersion(), instanceId, name, languageId);

            imageLocalService.updateImage(imageId, oldImage.getTextObj());

            String elContent = "/image/journal/article?img_id=" + imageId + "&t="
                    + WebServerServletTokenUtil.getToken(imageId);

            dynamicContentEl.setText(elContent);
            dynamicContentEl.addAttribute("id", String.valueOf(imageId));
        }
    }

    newArticle.setContent(contentDoc.formattedString());
}

From source file:com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.java

License:Open Source License

protected String format(User user, long groupId, String articleId, double version, boolean incrementVersion,
        String content, String structureId, Map<String, byte[]> images)
        throws PortalException, SystemException {

    Document document = null;//from w w w  .ja va 2s . co  m

    try {
        document = SAXReaderUtil.read(content);

        Element rootElement = document.getRootElement();

        if (Validator.isNotNull(structureId)) {
            format(user, groupId, articleId, version, incrementVersion, rootElement, images);
        } else {
            List<Element> staticContentElements = rootElement.elements("static-content");

            for (Element staticContentElement : staticContentElements) {
                String staticContent = staticContentElement.getText();

                staticContent = SanitizerUtil.sanitize(user.getCompanyId(), groupId, user.getUserId(),
                        JournalArticle.class.getName(), 0, ContentTypes.TEXT_HTML, staticContent);

                staticContentElement.setText(staticContent);
            }
        }

        content = DDMXMLUtil.formatXML(document);
    } catch (DocumentException de) {
        _log.error(de);
    } catch (IOException ioe) {
        _log.error(ioe);
    }

    content = HtmlUtil.replaceMsWordCharacters(content);

    return content;
}

From source file:com.liferay.portlet.journal.service.impl.JournalArticleLocalServiceImpl.java

License:Open Source License

protected void formatImage(long groupId, String articleId, double version, boolean incrementVersion, Element el,
        String elInstanceId, String elName, Map<String, byte[]> images)
        throws PortalException, SystemException {

    List<Element> imageContents = el.elements("dynamic-content");

    for (Element dynamicContent : imageContents) {
        String elLanguage = dynamicContent.attributeValue("language-id", StringPool.BLANK);

        if (!elLanguage.equals(StringPool.BLANK)) {
            elLanguage = "_" + elLanguage;
        }//  ww  w  .  j av  a  2 s  .c om

        long imageId = journalArticleImageLocalService.getArticleImageId(groupId, articleId, version,
                elInstanceId, elName, elLanguage);

        double oldVersion = MathUtil.format(version - 0.1, 1, 1);

        long oldImageId = 0;

        if ((oldVersion >= 1) && incrementVersion) {
            oldImageId = journalArticleImageLocalService.getArticleImageId(groupId, articleId, oldVersion,
                    elInstanceId, elName, elLanguage);
        }

        String elContent = "/image/journal/article?img_id=" + imageId + "&t="
                + WebServerServletTokenUtil.getToken(imageId);

        if (dynamicContent.getText().equals("delete")) {
            dynamicContent.setText(StringPool.BLANK);

            imageLocalService.deleteImage(imageId);

            String defaultElLanguage = "";

            if (!Validator.isNotNull(elLanguage)) {
                defaultElLanguage = "_" + LocaleUtil.toLanguageId(LocaleUtil.getDefault());
            }

            long defaultImageId = journalArticleImageLocalService.getArticleImageId(groupId, articleId, version,
                    elInstanceId, elName, defaultElLanguage);

            imageLocalService.deleteImage(defaultImageId);

            continue;
        }

        byte[] bytes = images.get(elInstanceId + "_" + elName + elLanguage);

        if ((bytes != null) && (bytes.length > 0)) {
            dynamicContent.setText(elContent);
            dynamicContent.addAttribute("id", String.valueOf(imageId));

            imageLocalService.updateImage(imageId, bytes);

            continue;
        }

        if ((version > JournalArticleConstants.VERSION_DEFAULT) && (incrementVersion)) {

            Image oldImage = null;

            if (oldImageId > 0) {
                oldImage = imageLocalService.getImage(oldImageId);
            }

            if (oldImage != null) {
                dynamicContent.setText(elContent);
                dynamicContent.addAttribute("id", String.valueOf(imageId));

                bytes = oldImage.getTextObj();

                imageLocalService.updateImage(imageId, bytes);
            }

            continue;
        }

        Image image = imageLocalService.getImage(imageId);

        if (image != null) {
            dynamicContent.setText(elContent);
            dynamicContent.addAttribute("id", String.valueOf(imageId));

            continue;
        }

        long contentImageId = GetterUtil.getLong(HttpUtil.getParameter(dynamicContent.getText(), "img_id"));

        if (contentImageId <= 0) {
            contentImageId = GetterUtil
                    .getLong(HttpUtil.getParameter(dynamicContent.getText(), "img_id", false));
        }

        if (contentImageId > 0) {
            image = imageLocalService.getImage(contentImageId);

            if (image != null) {
                dynamicContent.addAttribute("id", String.valueOf(contentImageId));

                continue;
            }
        }

        String defaultElLanguage = "";

        if (!Validator.isNotNull(elLanguage)) {
            defaultElLanguage = "_" + LocaleUtil.toLanguageId(LocaleUtil.getDefault());
        }

        long defaultImageId = journalArticleImageLocalService.getArticleImageId(groupId, articleId, version,
                elInstanceId, elName, defaultElLanguage);

        Image defaultImage = imageLocalService.getImage(defaultImageId);

        if (defaultImage != null) {
            dynamicContent.setText(elContent);
            dynamicContent.addAttribute("id", String.valueOf(defaultImageId));

            bytes = defaultImage.getTextObj();

            imageLocalService.updateImage(defaultImageId, bytes);

            continue;
        }

        if (Validator.isNotNull(elLanguage)) {
            dynamicContent.setText(StringPool.BLANK);
        }
    }
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

@Override
public Fields getDDMFields(DDMStructure ddmStructure, String content) throws Exception {

    Document document = SAXReaderUtil.read(content);

    Field fieldsDisplayField = new Field(ddmStructure.getStructureId(), DDMImpl.FIELDS_DISPLAY_NAME,
            StringPool.BLANK);/*  w  ww . j a va  2s .c om*/
    Fields ddmFields = new Fields();
    ddmFields.put(fieldsDisplayField);

    Element rootElement = document.getRootElement();

    String defaultLocale = rootElement.attributeValue("default-locale");

    List<Element> dynamicElementElements = rootElement.elements("dynamic-element");
    for (Element dynamicElementElement : dynamicElementElements) {
        addDDMFields(dynamicElementElement, ddmStructure, ddmFields, defaultLocale);
    }

    return ddmFields;
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

@Override
public String getDDMXSD(String journalXSD) throws Exception {
    Document document = SAXReaderUtil.read(journalXSD);

    Element rootElement = document.getRootElement();

    Locale defaultLocale = LocaleUtil.getSiteDefault();

    rootElement.addAttribute("available-locales", defaultLocale.toString());
    rootElement.addAttribute("default-locale", defaultLocale.toString());

    List<Element> dynamicElementElements = rootElement.elements("dynamic-element");

    for (Element dynamicElementElement : dynamicElementElements) {
        updateJournalXSDDynamicElement(dynamicElementElement);
    }//from   w  w  w.  ja  v  a  2s. c  o m

    return DDMXMLUtil.formatXML(document);
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

@Override
public String getJournalXSD(String ddmXSD) throws Exception {
    Document document = SAXReaderUtil.read(ddmXSD);

    Element rootElement = document.getRootElement();

    String defaultLocale = rootElement.attributeValue("default-locale");

    removeAttribute(rootElement, "available-locales");
    removeAttribute(rootElement, "default-locale");

    List<Element> dynamicElementElements = rootElement.elements("dynamic-element");

    for (Element dynamicElementElement : dynamicElementElements) {
        updateDDMXSDDynamicElement(dynamicElementElement, defaultLocale);
    }/*from   w  w  w.j  a va 2  s  .com*/

    return DDMXMLUtil.formatXML(document);
}

From source file:com.liferay.portlet.journal.util.JournalConverterImpl.java

License:Open Source License

protected void addDDMFields(Element dynamicElementElement, DDMStructure ddmStructure, Fields ddmFields,
        String defaultLocale) throws Exception {

    String name = dynamicElementElement.attributeValue("name");

    if (!ddmStructure.hasField(name)) {
        return;/*from  w w w  .j av  a  2s. co  m*/
    }
    Field ddmField = getField(dynamicElementElement, ddmStructure, defaultLocale);

    String fieldName = ddmField.getName();

    Field existingDDMField = ddmFields.get(fieldName);

    if (existingDDMField != null) {
        for (Locale locale : ddmField.getAvailableLocales()) {
            existingDDMField.addValues(locale, ddmField.getValues(locale));
        }
    } else {
        ddmFields.put(ddmField);
    }

    updateFieldsDisplay(ddmFields, fieldName);

    List<Element> childrenDynamicElementElements = dynamicElementElement.elements("dynamic-element");

    for (Element childrenDynamicElementElement : childrenDynamicElementElements) {

        addDDMFields(childrenDynamicElementElement, ddmStructure, ddmFields, defaultLocale);
    }
}