001
014
015 package com.liferay.portlet.wiki.engines.jspwiki;
016
017 import com.ecyrd.jspwiki.QueryItem;
018 import com.ecyrd.jspwiki.WikiEngine;
019 import com.ecyrd.jspwiki.WikiPage;
020 import com.ecyrd.jspwiki.providers.ProviderException;
021 import com.ecyrd.jspwiki.providers.WikiPageProvider;
022
023 import com.liferay.portal.kernel.exception.SystemException;
024 import com.liferay.portal.kernel.log.Log;
025 import com.liferay.portal.kernel.log.LogFactoryUtil;
026 import com.liferay.portal.kernel.util.GetterUtil;
027 import com.liferay.portlet.wiki.NoSuchPageException;
028 import com.liferay.portlet.wiki.service.WikiPageLocalServiceUtil;
029
030 import java.util.ArrayList;
031 import java.util.Arrays;
032 import java.util.Collection;
033 import java.util.Collections;
034 import java.util.Date;
035 import java.util.List;
036 import java.util.Properties;
037
038
041 public class LiferayPageProvider implements WikiPageProvider {
042
043 public static com.ecyrd.jspwiki.WikiPage toJSPWikiPage(
044 com.liferay.portlet.wiki.model.WikiPage page, WikiEngine engine) {
045
046 com.ecyrd.jspwiki.WikiPage jspWikiPage = new com.ecyrd.jspwiki.WikiPage(
047 engine, page.getTitle());
048
049 jspWikiPage.setAuthor(page.getUserName());
050 jspWikiPage.setVersion((int)(page.getVersion() * 10));
051 jspWikiPage.setLastModified(page.getCreateDate());
052
053 return jspWikiPage;
054 }
055
056 public void deletePage(String name) {
057 if (_log.isDebugEnabled()) {
058 _log.debug("Invoking deletePage(" + name + ")");
059 }
060 }
061
062 public void deleteVersion(String title, int version) {
063 if (_log.isDebugEnabled()) {
064 _log.debug(
065 "Invoking deleteVersion(" + title + ", " + version + ")");
066 }
067 }
068
069 public Collection<WikiPage> findPages(QueryItem[] query) {
070 if (_log.isDebugEnabled()) {
071 _log.debug("Invoking findPages(" + Arrays.toString(query) + ")");
072 }
073
074 return Collections.emptyList();
075 }
076
077 public Collection<WikiPage> getAllChangedSince(Date date) {
078 if (_log.isDebugEnabled()) {
079 _log.debug("Invoking getAllChangedSince(" + date + ")");
080 }
081
082 try {
083 return getAllPages();
084 }
085 catch (ProviderException e) {
086 _log.error("Could not get changed pages", e);
087
088 return Collections.emptyList();
089 }
090 }
091
092 public Collection<WikiPage> getAllPages() throws ProviderException {
093 if (_log.isDebugEnabled()) {
094 _log.debug("Invoking getAllPages()");
095 }
096
097 List<WikiPage> jspWikiPages = new ArrayList<WikiPage>();
098
099 try {
100 int count = WikiPageLocalServiceUtil.getPagesCount(_nodeId, true);
101
102 List<com.liferay.portlet.wiki.model.WikiPage> pages =
103 WikiPageLocalServiceUtil.getPages(_nodeId, true, 0, count);
104
105 for (com.liferay.portlet.wiki.model.WikiPage page : pages) {
106 jspWikiPages.add(toJSPWikiPage(page, _engine));
107 }
108 }
109 catch (SystemException se) {
110 throw new ProviderException(se.toString());
111 }
112
113 return jspWikiPages;
114 }
115
116 public int getPageCount() throws ProviderException {
117 if (_log.isDebugEnabled()) {
118 _log.debug("Invoking getPageCount()");
119 }
120
121 try {
122 return WikiPageLocalServiceUtil.getPagesCount(_nodeId);
123 }
124 catch (SystemException se) {
125 throw new ProviderException(se.toString());
126 }
127 }
128
129 public com.ecyrd.jspwiki.WikiPage getPageInfo(String title, int version)
130 throws ProviderException {
131
132 if (_log.isDebugEnabled()) {
133 _log.debug("Invoking getPageInfo(" + title + ", " + version + ")");
134 }
135
136 try {
137 com.liferay.portlet.wiki.model.WikiPage page =
138 WikiPageLocalServiceUtil.getPage(_nodeId, title);
139
140 return toJSPWikiPage(page, _engine);
141 }
142 catch (NoSuchPageException nspe) {
143 return null;
144 }
145 catch (Exception e) {
146 throw new ProviderException(e.toString());
147 }
148 }
149
150 public String getPageText(String title, int version)
151 throws ProviderException {
152
153 if (_log.isDebugEnabled()) {
154 _log.debug("Invoking getPageText(" + title + ", " + version + ")");
155 }
156
157 try {
158 com.liferay.portlet.wiki.model.WikiPage page =
159 WikiPageLocalServiceUtil.getPage(_nodeId, title);
160
161 return page.getContent();
162 }
163 catch (Exception e) {
164 throw new ProviderException(e.toString());
165 }
166 }
167
168 public String getProviderInfo() {
169 if (_log.isDebugEnabled()) {
170 _log.debug("Invoking getProviderInfo()");
171 }
172
173 return LiferayPageProvider.class.getName();
174 }
175
176 public List<WikiPage> getVersionHistory(String title) {
177 if (_log.isDebugEnabled()) {
178 _log.debug("Invoking getVersionHistory(" + title + ")");
179 }
180
181 return Collections.emptyList();
182 }
183
184 public void initialize(WikiEngine engine, Properties props) {
185 if (_log.isDebugEnabled()) {
186 _log.debug("Invoking initialize(" + engine + ", " + props + ")");
187 }
188
189 _engine = engine;
190 _nodeId = GetterUtil.getLong(props.getProperty("nodeId"));
191 }
192
193 public void movePage(String from, String to) {
194 if (_log.isDebugEnabled()) {
195 _log.debug("Invoking movePage(" + from + ", " + to + ")");
196 }
197 }
198
199 public boolean pageExists(String title) {
200 if (_log.isDebugEnabled()) {
201 _log.debug("Invoking pageExists(" + title + ")");
202 }
203
204 try {
205 if (WikiPageLocalServiceUtil.getPagesCount(
206 _nodeId, JSPWikiEngine.decodeJSPWikiName(title), true) > 0) {
207
208 return true;
209 }
210 else {
211 return false;
212 }
213 }
214 catch (Exception e) {
215 _log.error(e, e);
216 }
217
218 return false;
219 }
220
221 public void putPageText(com.ecyrd.jspwiki.WikiPage page, String text) {
222 if (_log.isDebugEnabled()) {
223 _log.debug("Invoking putPageText(" + page + ", " + text + ")");
224 }
225 }
226
227 private static Log _log = LogFactoryUtil.getLog(LiferayPageProvider.class);
228
229 private WikiEngine _engine;
230 private long _nodeId;
231
232 }