protected String doExportData( PortletDataContext context, String portletId, PortletPreferences preferences) throws Exception { context.addPermissions("com.liferay.portlet.journal", context.getScopeGroupId()); String articleId = preferences.getValue("article-id", null); if (articleId == null) { if (_log.isWarnEnabled()) { _log.warn("No article id found in preferences of portlet " + portletId); } return StringPool.BLANK; } long articleGroupId = GetterUtil.getLong(preferences.getValue("group-id", StringPool.BLANK)); if (articleGroupId <= 0) { if (_log.isWarnEnabled()) { _log.warn("No group id found in preferences of portlet " + portletId); } return StringPool.BLANK; } JournalArticle article = null; try { article = JournalArticleLocalServiceUtil.getLatestArticle( articleGroupId, articleId, WorkflowConstants.STATUS_APPROVED); } catch (NoSuchArticleException nsae) { if (_log.isWarnEnabled()) { _log.warn( "No approved article found with group id " + articleGroupId + " and article id " + articleId); } } if (article == null) { return StringPool.BLANK; } Document document = SAXReaderUtil.createDocument(); Element rootElement = document.addElement("journal-content-data"); String path = JournalPortletDataHandlerImpl.getArticlePath(context, article); Element articleElement = rootElement.addElement("article"); articleElement.addAttribute("path", path); Element dlFoldersElement = rootElement.addElement("dl-folders"); Element dlFilesElement = rootElement.addElement("dl-file-entries"); Element dlFileRanksElement = rootElement.addElement("dl-file-ranks"); Element igFoldersElement = rootElement.addElement("ig-folders"); Element igImagesElement = rootElement.addElement("ig-images"); JournalPortletDataHandlerImpl.exportArticle( context, rootElement, dlFoldersElement, dlFilesElement, dlFileRanksElement, igFoldersElement, igImagesElement, article, false); String structureId = article.getStructureId(); if (Validator.isNotNull(structureId)) { JournalStructure structure = JournalStructureUtil.findByG_S(article.getGroupId(), structureId); JournalPortletDataHandlerImpl.exportStructure(context, rootElement, structure); } String templateId = article.getTemplateId(); if (Validator.isNotNull(templateId)) { JournalTemplate template = JournalTemplateUtil.findByG_T(article.getGroupId(), templateId); JournalPortletDataHandlerImpl.exportTemplate( context, rootElement, dlFoldersElement, dlFilesElement, dlFileRanksElement, igFoldersElement, igImagesElement, template); } return document.formattedString(); }
protected PortletPreferences doImportData( PortletDataContext context, String portletId, PortletPreferences preferences, String data) throws Exception { context.importPermissions( "com.liferay.portlet.journal", context.getSourceGroupId(), context.getScopeGroupId()); if (Validator.isNull(data)) { return null; } Document document = SAXReaderUtil.read(data); Element rootElement = document.getRootElement(); Element dlFoldersElement = rootElement.element("dl-folders"); List<Element> dlFolderElements = Collections.EMPTY_LIST; if (dlFoldersElement != null) { dlFolderElements = dlFoldersElement.elements("folder"); } for (Element folderElement : dlFolderElements) { DLPortletDataHandlerImpl.importFolder(context, folderElement); } Element dlFileEntriesElement = rootElement.element("dl-file-entries"); List<Element> dlFileEntryElements = Collections.EMPTY_LIST; if (dlFileEntriesElement != null) { dlFileEntryElements = dlFileEntriesElement.elements("file-entry"); } for (Element fileEntryElement : dlFileEntryElements) { DLPortletDataHandlerImpl.importFileEntry(context, fileEntryElement); } Element dlFileRanksElement = rootElement.element("dl-file-ranks"); List<Element> dlFileRankElements = Collections.EMPTY_LIST; if (dlFileRanksElement != null) { dlFileRankElements = dlFileRanksElement.elements("file-rank"); } for (Element fileRankElement : dlFileRankElements) { DLPortletDataHandlerImpl.importFileRank(context, fileRankElement); } Element igFoldersElement = rootElement.element("ig-folders"); List<Element> igFolderElements = Collections.EMPTY_LIST; if (igFoldersElement != null) { igFolderElements = igFoldersElement.elements("folder"); } for (Element folderElement : igFolderElements) { IGPortletDataHandlerImpl.importFolder(context, folderElement); } Element igImagesElement = rootElement.element("ig-images"); List<Element> igImageElements = Collections.EMPTY_LIST; if (igImagesElement != null) { igImageElements = igImagesElement.elements("image"); } for (Element imageElement : igImageElements) { IGPortletDataHandlerImpl.importImage(context, imageElement); } Element structureElement = rootElement.element("structure"); if (structureElement != null) { JournalPortletDataHandlerImpl.importStructure(context, structureElement); } Element templateElement = rootElement.element("template"); if (templateElement != null) { JournalPortletDataHandlerImpl.importTemplate(context, templateElement); } Element articleElement = rootElement.element("article"); if (articleElement != null) { JournalPortletDataHandlerImpl.importArticle(context, articleElement); } String articleId = preferences.getValue("article-id", StringPool.BLANK); if (Validator.isNotNull(articleId)) { Map<String, String> articleIds = (Map<String, String>) context.getNewPrimaryKeysMap(JournalArticle.class); articleId = MapUtil.getString(articleIds, articleId, articleId); preferences.setValue("group-id", String.valueOf(context.getScopeGroupId())); preferences.setValue("article-id", articleId); Layout layout = LayoutLocalServiceUtil.getLayout(context.getPlid()); JournalContentSearchLocalServiceUtil.updateContentSearch( context.getScopeGroupId(), layout.isPrivateLayout(), layout.getLayoutId(), portletId, articleId, true); } return preferences; }