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