/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.wiki.engine.jspwiki.internal; import com.ecyrd.jspwiki.QueryItem; import com.ecyrd.jspwiki.WikiEngine; import com.ecyrd.jspwiki.WikiPage; import com.ecyrd.jspwiki.providers.ProviderException; import com.ecyrd.jspwiki.providers.WikiPageProvider; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.util.GetterUtil; import com.liferay.wiki.exception.NoSuchPageException; import com.liferay.wiki.service.WikiPageLocalServiceUtil; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Properties; /** * @author Jorge Ferrer */ public class LiferayPageProvider implements WikiPageProvider { public static WikiPage toJSPWikiPage( com.liferay.wiki.model.WikiPage page, WikiEngine engine) { WikiPage jspWikiPage = new WikiPage(engine, page.getTitle()); jspWikiPage.setAuthor(page.getUserName()); jspWikiPage.setVersion((int)(page.getVersion() * 10)); jspWikiPage.setLastModified(page.getCreateDate()); return jspWikiPage; } @Override public void deletePage(String name) { if (_log.isDebugEnabled()) { _log.debug("Invoking deletePage(" + name + ")"); } } @Override public void deleteVersion(String title, int version) { if (_log.isDebugEnabled()) { _log.debug( "Invoking deleteVersion(" + title + ", " + version + ")"); } } @Override public Collection<WikiPage> findPages(QueryItem[] query) { if (_log.isDebugEnabled()) { _log.debug("Invoking findPages(" + Arrays.toString(query) + ")"); } return Collections.emptyList(); } @Override public Collection<WikiPage> getAllChangedSince(Date date) { if (_log.isDebugEnabled()) { _log.debug("Invoking getAllChangedSince(" + date + ")"); } try { return getAllPages(); } catch (ProviderException pe) { _log.error("Could not get changed pages", pe); return Collections.emptyList(); } } @Override public Collection<WikiPage> getAllPages() throws ProviderException { if (_log.isDebugEnabled()) { _log.debug("Invoking getAllPages()"); } List<WikiPage> jspWikiPages = new ArrayList<>(); try { int count = WikiPageLocalServiceUtil.getPagesCount(_nodeId, true); List<com.liferay.wiki.model.WikiPage> pages = WikiPageLocalServiceUtil.getPages(_nodeId, true, 0, count); for (com.liferay.wiki.model.WikiPage page : pages) { jspWikiPages.add(toJSPWikiPage(page, _engine)); } } catch (SystemException se) { throw new ProviderException(se.toString()); } return jspWikiPages; } @Override public int getPageCount() throws ProviderException { if (_log.isDebugEnabled()) { _log.debug("Invoking getPageCount()"); } try { return WikiPageLocalServiceUtil.getPagesCount(_nodeId); } catch (SystemException se) { throw new ProviderException(se.toString()); } } @Override public WikiPage getPageInfo(String title, int version) throws ProviderException { if (_log.isDebugEnabled()) { _log.debug("Invoking getPageInfo(" + title + ", " + version + ")"); } try { com.liferay.wiki.model.WikiPage page = WikiPageLocalServiceUtil.getPage(_nodeId, title); return toJSPWikiPage(page, _engine); } catch (NoSuchPageException nspe) { return null; } catch (Exception e) { throw new ProviderException(e.toString()); } } @Override public String getPageText(String title, int version) throws ProviderException { if (_log.isDebugEnabled()) { _log.debug("Invoking getPageText(" + title + ", " + version + ")"); } try { com.liferay.wiki.model.WikiPage page = WikiPageLocalServiceUtil.getPage(_nodeId, title); return page.getContent(); } catch (Exception e) { throw new ProviderException(e.toString()); } } @Override public String getProviderInfo() { if (_log.isDebugEnabled()) { _log.debug("Invoking getProviderInfo()"); } return LiferayPageProvider.class.getName(); } @Override public List<WikiPage> getVersionHistory(String title) { if (_log.isDebugEnabled()) { _log.debug("Invoking getVersionHistory(" + title + ")"); } return Collections.emptyList(); } @Override public void initialize(WikiEngine engine, Properties props) { if (_log.isDebugEnabled()) { _log.debug("Invoking initialize(" + engine + ", " + props + ")"); } _engine = engine; _nodeId = GetterUtil.getLong(props.getProperty("nodeId")); } @Override public void movePage(String from, String to) { if (_log.isDebugEnabled()) { _log.debug("Invoking movePage(" + from + ", " + to + ")"); } } @Override public boolean pageExists(String title) { if (_log.isDebugEnabled()) { _log.debug("Invoking pageExists(" + title + ")"); } try { int count = WikiPageLocalServiceUtil.getPagesCount( _nodeId, JSPWikiEngine.decodeJSPWikiName(title), true); if (count > 0) { return true; } else { return false; } } catch (Exception e) { _log.error(e, e); } return false; } @Override public void putPageText(WikiPage page, String text) { if (_log.isDebugEnabled()) { _log.debug("Invoking putPageText(" + page + ", " + text + ")"); } } private static final Log _log = LogFactoryUtil.getLog( LiferayPageProvider.class); private WikiEngine _engine; private long _nodeId; }