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.journal.internal.util.impl.JournalConverterImpl.java

License:Open Source License

protected void updateDDMXSDDynamicElement(Element dynamicElementElement, String defaultLanguageId) {

    // Metadata/* w w  w.ja  va2 s .  com*/

    List<Element> metadataElements = dynamicElementElement.elements("meta-data");

    for (Element metadataElement : metadataElements) {
        String languageId = metadataElement.attributeValue("locale");

        if (languageId.equals(defaultLanguageId)) {
            getJournalMetadataElement(metadataElement);
        } else {
            dynamicElementElement.remove(metadataElement);
        }
    }

    Element parentElement = dynamicElementElement.getParent();

    String parentType = parentElement.attributeValue("type");

    if (Objects.equals(parentType, "list") || Objects.equals(parentType, "multi-list")) {

        Element metadataElement = dynamicElementElement.element("meta-data");

        Element labelElement = fetchMetadataEntry(metadataElement, "name", "label");

        dynamicElementElement.addAttribute("name", labelElement.getText());

        String repeatable = parentElement.attributeValue("repeatable");

        dynamicElementElement.addAttribute("repeatable", repeatable);

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

        dynamicElementElement.addAttribute("type", value);

        removeAttribute(dynamicElementElement, "value");

        dynamicElementElement.remove(metadataElement);

        return;
    }

    // Index type

    String indexType = GetterUtil.getString(dynamicElementElement.attributeValue("indexType"));

    removeAttribute(dynamicElementElement, "indexType");

    dynamicElementElement.addAttribute("index-type", indexType);

    // Type

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

    boolean multiple = GetterUtil.getBoolean(dynamicElementElement.attributeValue("multiple"));

    String newType = _ddmTypesToJournalTypes.get(type);

    if (newType.equals("list") && multiple) {
        newType = "multi-list";
    }

    dynamicElementElement.addAttribute("type", newType);

    // Removable attributes

    String[] removableAttributeNames = new String[] { "dataType", "fieldNamespace", "multiple", "readOnly",
            "required", "showLabel", "width" };

    for (String removableAttributeName : removableAttributeNames) {
        removeAttribute(dynamicElementElement, removableAttributeName);
    }

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

    for (Element childrenDynamicElementElement : childrenDynamicElementElements) {

        updateDDMXSDDynamicElement(childrenDynamicElementElement, defaultLanguageId);
    }
}

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

License:Open Source License

protected void addDocumentLibraryFileEntries(Element dynamicElementElement) throws PortalException {

    if (ExportImportThreadLocal.isImportInProcess()) {
        return;/*  w  w w. j  a  v  a  2  s  . co m*/
    }

    for (Element dynamicContentElement : dynamicElementElement.elements("dynamic-content")) {

        String value = dynamicContentElement.getText();

        if (Validator.isNull(value)) {
            continue;
        }

        JSONObject jsonObject = JSONFactoryUtil.createJSONObject(value);

        String uuid = jsonObject.getString("uuid");
        long groupId = jsonObject.getLong("groupId");
        boolean tempFile = jsonObject.getBoolean("tempFile");

        if (!tempFile) {
            continue;
        }

        FileEntry fileEntry = dlAppLocalService.getFileEntryByUuidAndGroupId(uuid, groupId);

        String fileEntryName = DLUtil.getUniqueFileName(fileEntry.getGroupId(), fileEntry.getFolderId(),
                fileEntry.getFileName());

        dlAppLocalService.addFileEntry(fileEntry.getUserId(), fileEntry.getGroupId(), 0, fileEntryName,
                fileEntry.getMimeType(), fileEntryName, StringPool.BLANK, StringPool.BLANK,
                fileEntry.getContentStream(), fileEntry.getSize(), new ServiceContext());
    }
}

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

License:Open Source License

protected void addImageFileEntries(JournalArticle article, Element dynamicElementElement)
        throws PortalException {

    if (ExportImportThreadLocal.isImportInProcess()) {
        return;//from w w  w  .j av a  2  s  . c  o m
    }

    for (Element dynamicContentElement : dynamicElementElement.elements("dynamic-content")) {

        String value = dynamicContentElement.getText();

        if (Validator.isNull(value)) {
            continue;
        }

        JSONObject jsonObject = JSONFactoryUtil.createJSONObject(value);

        String uuid = jsonObject.getString("uuid");
        long groupId = jsonObject.getLong("groupId");

        FileEntry fileEntry = dlAppLocalService.getFileEntryByUuidAndGroupId(uuid, groupId);

        boolean tempFile = fileEntry.isRepositoryCapabilityProvided(TemporaryFileEntriesCapability.class);

        if (tempFile) {
            FileEntry tempFileEntry = fileEntry;

            Folder folder = article.addImagesFolder();

            String fileEntryName = DLUtil.getUniqueFileName(fileEntry.getGroupId(), folder.getFolderId(),
                    fileEntry.getFileName());

            fileEntry = PortletFileRepositoryUtil.addPortletFileEntry(groupId, fileEntry.getUserId(),
                    JournalArticle.class.getName(), article.getResourcePrimKey(), JournalConstants.SERVICE_NAME,
                    folder.getFolderId(), fileEntry.getContentStream(), fileEntryName, fileEntry.getMimeType(),
                    false);

            dlAppLocalService.deleteFileEntry(tempFileEntry.getFileEntryId());
        }

        JSONObject cdata = JSONFactoryUtil.createJSONObject(dynamicContentElement.getText());

        cdata.put("resourcePrimKey", article.getResourcePrimKey());
        cdata.put("uuid", fileEntry.getUuid());

        dynamicContentElement.clearContent();

        dynamicContentElement.addCDATA(cdata.toString());
    }
}

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

License:Open Source License

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

    Folder folder = newArticle.addImagesFolder();

    for (FileEntry fileEntry : oldArticle.getImagesFileEntries()) {
        PortletFileRepositoryUtil.addPortletFileEntry(oldArticle.getGroupId(), newArticle.getUserId(),
                JournalArticle.class.getName(), newArticle.getResourcePrimKey(), JournalConstants.SERVICE_NAME,
                folder.getFolderId(), fileEntry.getContentStream(), fileEntry.getFileName(),
                fileEntry.getMimeType(), false);
    }//www . j  a va2  s .c  om

    Document contentDocument = oldArticle.getDocument();

    contentDocument = contentDocument.clone();

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

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

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

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

        for (Element dynamicContentEl : dynamicContentEls) {
            String fileName = dynamicContentEl.attributeValue("name");

            FileEntry fileEntry = PortletFileRepositoryUtil.getPortletFileEntry(newArticle.getGroupId(),
                    folder.getFolderId(), fileName);

            String previewURL = DLUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(), null,
                    StringPool.BLANK, false, true);

            dynamicContentEl.addAttribute("resourcePrimKey", String.valueOf(newArticle.getResourcePrimKey()));

            dynamicContentEl.clearContent();

            dynamicContentEl.addCDATA(previewURL);
        }
    }

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

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

License:Open Source License

protected Map<String, LocalizedValue> createFieldsValuesMap(Element parentElement, Locale defaultLocale) {

    Map<String, LocalizedValue> fieldsValuesMap = new HashMap<>();

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

    LocalizedValue fieldLocalizedValue = new LocalizedValue(defaultLocale);

    for (Element dynamicElementElement : dynamicElementElements) {
        String fieldName = dynamicElementElement.attributeValue("name", StringPool.BLANK);

        List<Element> dynamicContentElements = dynamicElementElement.elements("dynamic-content");

        for (Element dynamicContentElement : dynamicContentElements) {
            String languageId = dynamicContentElement.attributeValue("language-id");
            String value = dynamicContentElement.getText();

            fieldLocalizedValue.addString(LocaleUtil.fromLanguageId(languageId), value);
        }// w  w w .j  a  v a2 s .co m

        fieldsValuesMap.put(fieldName, fieldLocalizedValue);

        fieldsValuesMap.putAll(createFieldsValuesMap(dynamicElementElement, defaultLocale));
    }

    return fieldsValuesMap;
}

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

License:Open Source License

protected JournalArticleDisplay getArticleDisplay(JournalArticle article, String ddmTemplateKey,
        String viewMode, String languageId, int page, PortletRequestModel portletRequestModel,
        ThemeDisplay themeDisplay, boolean propagateException) throws PortalException {

    String content = null;//from ww w  .ja va 2s.  c o m

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

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

    boolean cacheable = true;

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

    if ((themeDisplay == null) && (portletRequestModel == null)) {
        tokens.put("company_id", String.valueOf(article.getCompanyId()));

        Group companyGroup = groupLocalService.getCompanyGroup(article.getCompanyId());

        tokens.put("article_group_id", String.valueOf(article.getGroupId()));
        tokens.put("company_group_id", String.valueOf(companyGroup.getGroupId()));

        // Deprecated tokens

        tokens.put("group_id", String.valueOf(article.getGroupId()));
    }

    tokens.put(TemplateConstants.CLASS_NAME_ID,
            String.valueOf(classNameLocalService.getClassNameId(DDMStructure.class)));
    tokens.put("article_resource_pk", String.valueOf(article.getResourcePrimKey()));

    DDMStructure ddmStructure = article.getDDMStructure();

    tokens.put("ddm_structure_key", String.valueOf(ddmStructure.getStructureKey()));
    tokens.put("ddm_structure_id", String.valueOf(ddmStructure.getStructureId()));

    // Deprecated token

    tokens.put("structure_id", article.getDDMStructureKey());

    String defaultDDMTemplateKey = article.getDDMTemplateKey();

    if (Validator.isNull(ddmTemplateKey)) {
        ddmTemplateKey = defaultDDMTemplateKey;
    }

    Document document = article.getDocument();

    document = document.clone();

    Element rootElement = document.getRootElement();

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

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

        String targetPage = null;

        Map<String, String[]> parameters = portletRequestModel.getParameters();

        if (parameters != null) {
            String[] values = parameters.get("targetPage");

            if ((values != null) && (values.length > 0)) {
                targetPage = values[0];
            }
        }

        Element pageElement = null;

        if (Validator.isNotNull(targetPage)) {
            targetPage = HtmlUtil.escapeXPathAttribute(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;
        }
    }

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

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

        // 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 exist, use the default
        // one. If the default one does not exist, throw an exception.

        DDMTemplate ddmTemplate = null;

        try {
            ddmTemplate = ddmTemplateLocalService.getTemplate(PortalUtil.getSiteGroupId(article.getGroupId()),
                    classNameLocalService.getClassNameId(DDMStructure.class), ddmTemplateKey, true);

            Group companyGroup = groupLocalService.getCompanyGroup(article.getCompanyId());

            if (companyGroup.getGroupId() == ddmTemplate.getGroupId()) {
                tokens.put("company_group_id", String.valueOf(companyGroup.getGroupId()));
            }
        } catch (NoSuchTemplateException nste) {
            if (!defaultDDMTemplateKey.equals(ddmTemplateKey)) {
                ddmTemplate = ddmTemplateLocalService.getTemplate(
                        PortalUtil.getSiteGroupId(article.getGroupId()),
                        classNameLocalService.getClassNameId(DDMStructure.class), defaultDDMTemplateKey);
            } else {
                throw nste;
            }
        }

        tokens.put("ddm_template_key", String.valueOf(ddmTemplate.getTemplateKey()));
        tokens.put("ddm_template_id", String.valueOf(ddmTemplate.getTemplateId()));

        // Deprecated token

        tokens.put("template_id", ddmTemplateKey);

        String script = ddmTemplate.getScript();
        String langType = ddmTemplate.getLanguage();
        cacheable = ddmTemplate.isCacheable();

        content = JournalUtil.transform(themeDisplay, tokens, viewMode, languageId, document,
                portletRequestModel, script, langType, propagateException);

        if (!pageFlow) {
            JournalServiceConfiguration journalServiceConfiguration = configurationProvider
                    .getCompanyConfiguration(JournalServiceConfiguration.class, article.getCompanyId());

            String[] pieces = StringUtil.split(content,
                    journalServiceConfiguration.journalArticlePageBreakToken());

            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.getAvailableLanguageIds(), content, article.getDDMStructureKey(), ddmTemplateKey,
            article.isSmallImage(), article.getSmallImageId(), article.getSmallImageURL(), numberOfPages, page,
            paginate, cacheable);
}

From source file:com.liferay.journal.test.util.JournalTestUtil.java

License:Open Source License

private static Map<String, String> _getMap(Element dynamicElementElement) {
    Map<String, String> map = new HashMap<>();

    Element parentElement = dynamicElementElement.getParent();

    String parentType = parentElement.attributeValue("type");

    // Attributes

    for (Attribute attribute : dynamicElementElement.attributes()) {

        // Option element should not contain index type atribute

        if ((Objects.equals(parentType, "list") || Objects.equals(parentType, "multi-list"))
                && Objects.equals(attribute.getName(), "index-type")) {

            continue;
        }//from  w ww . ja  va 2  s  . c  o  m

        map.put(attribute.getName(), attribute.getValue());
    }

    // Metadata

    Element metadadataElement = dynamicElementElement.element("meta-data");

    if (metadadataElement == null) {
        return map;
    }

    List<Element> entryElements = metadadataElement.elements("entry");

    for (Element entryElement : entryElements) {
        map.put(entryElement.attributeValue("name"), entryElement.getText());
    }

    return map;
}

From source file:com.liferay.journal.transformer.JournalTransformer.java

License:Open Source License

protected List<TemplateNode> getTemplateNodes(ThemeDisplay themeDisplay, Element element, long ddmStructureId)
        throws Exception {

    DDMStructure ddmStructure = DDMStructureLocalServiceUtil.getStructure(ddmStructureId);

    DDMForm ddmForm = ddmStructure.getDDMForm();

    Map<String, DDMFormField> ddmFormFieldsMap = ddmForm.getDDMFormFieldsMap(true);

    List<TemplateNode> templateNodes = new ArrayList<>();

    Map<String, TemplateNode> prototypeTemplateNodes = new HashMap<>();

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

    for (Element dynamicElementElement : dynamicElementElements) {
        Element dynamicContentElement = dynamicElementElement.element("dynamic-content");

        String data = StringPool.BLANK;

        if (dynamicContentElement != null) {
            data = dynamicContentElement.getText();
        }/*from w  ww  .ja  v  a2s . c o m*/

        String name = dynamicElementElement.attributeValue("name", StringPool.BLANK);

        if (name.length() == 0) {
            throw new TransformException("Element missing \"name\" attribute");
        }

        String type = dynamicElementElement.attributeValue("type", StringPool.BLANK);

        Map<String, String> attributes = new HashMap<>();

        if (type.equals("image")) {
            JSONObject dataJSONObject = JSONFactoryUtil.createJSONObject(data);

            Iterator<String> itr = dataJSONObject.keys();

            while (itr.hasNext()) {
                String key = itr.next();

                String value = dataJSONObject.getString(key);

                attributes.put(key, value);
            }
        }

        if (dynamicContentElement != null) {
            for (Attribute attribute : dynamicContentElement.attributes()) {
                attributes.put(attribute.getName(), attribute.getValue());
            }
        }

        TemplateNode templateNode = new TemplateNode(themeDisplay, name, StringUtil.stripCDATA(data), type,
                attributes);

        if (dynamicElementElement.element("dynamic-element") != null) {
            templateNode.appendChildren(getTemplateNodes(themeDisplay, dynamicElementElement, ddmStructureId));
        } else if ((dynamicContentElement != null) && (dynamicContentElement.element("option") != null)) {

            List<Element> optionElements = dynamicContentElement.elements("option");

            for (Element optionElement : optionElements) {
                templateNode.appendOption(StringUtil.stripCDATA(optionElement.getText()));
            }
        }

        DDMFormField ddmFormField = ddmFormFieldsMap.get(name);

        if (ddmFormField != null) {
            DDMFormFieldOptions ddmFormFieldOptions = ddmFormField.getDDMFormFieldOptions();

            Map<String, LocalizedValue> options = ddmFormFieldOptions.getOptions();

            for (Entry<String, LocalizedValue> entry : options.entrySet()) {
                String optionValue = StringUtil.stripCDATA(entry.getKey());

                LocalizedValue localizedLabel = entry.getValue();

                String optionLabel = localizedLabel.getString(themeDisplay.getLocale());

                templateNode.appendOptionMap(optionValue, optionLabel);
            }
        }

        TemplateNode prototypeTemplateNode = prototypeTemplateNodes.get(name);

        if (prototypeTemplateNode == null) {
            prototypeTemplateNode = templateNode;

            prototypeTemplateNodes.put(name, prototypeTemplateNode);

            templateNodes.add(templateNode);
        }

        prototypeTemplateNode.appendSibling(templateNode);
    }

    return templateNodes;
}

From source file:com.liferay.journal.transformer.LocaleTransformerListener.java

License:Open Source License

protected void filter(Element dynamicElementElement, DDMStructure ddmStructure, String name,
        String defaultLanguageId) throws PortalException {

    boolean localizable = GetterUtil.getBoolean(ddmStructure.getFieldProperty(name, "localizable"));

    List<Element> dynamicContentElements = dynamicElementElement.elements("dynamic-content");

    for (Element dynamicContentElement : dynamicContentElements) {
        String languageId = dynamicContentElement.attributeValue("language-id");

        if (!localizable && !languageId.equals(defaultLanguageId)) {
            dynamicElementElement.remove(dynamicContentElement);
        }/*from ww w .  j  a v  a2  s . c o m*/
    }
}

From source file:com.liferay.journal.transformer.LocaleTransformerListener.java

License:Open Source License

protected void filterByLocalizability(Element root, String defaultLanguageId, DDMStructure ddmStructure)
        throws PortalException {

    for (Element element : root.elements("dynamic-element")) {
        String name = element.attributeValue("name");

        if (!ddmStructure.hasField(name)) {
            continue;
        }//from w ww  . ja  va 2 s.  c o  m

        if (!ddmStructure.isFieldTransient(name)) {
            filter(element, ddmStructure, name, defaultLanguageId);
        }

        filterByLocalizability(element, defaultLanguageId, ddmStructure);
    }
}