List of usage examples for com.liferay.portal.kernel.xml Element elements
public List<Element> elements(String name);
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); } }