1
14
15 package com.liferay.portlet.wiki.engines.jspwiki;
16
17 import com.ecyrd.jspwiki.QueryItem;
18 import com.ecyrd.jspwiki.WikiEngine;
19 import com.ecyrd.jspwiki.WikiPage;
20 import com.ecyrd.jspwiki.providers.ProviderException;
21 import com.ecyrd.jspwiki.providers.WikiPageProvider;
22
23 import com.liferay.portal.kernel.exception.SystemException;
24 import com.liferay.portal.kernel.log.Log;
25 import com.liferay.portal.kernel.log.LogFactoryUtil;
26 import com.liferay.portal.kernel.util.GetterUtil;
27 import com.liferay.portlet.wiki.NoSuchPageException;
28 import com.liferay.portlet.wiki.service.WikiPageLocalServiceUtil;
29 import com.liferay.portlet.wiki.util.WikiUtil;
30
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.Collection;
34 import java.util.Collections;
35 import java.util.Date;
36 import java.util.List;
37 import java.util.Properties;
38
39
44 public class LiferayPageProvider implements WikiPageProvider {
45
46 public static com.ecyrd.jspwiki.WikiPage toJSPWikiPage(
47 com.liferay.portlet.wiki.model.WikiPage page, WikiEngine engine) {
48
49 com.ecyrd.jspwiki.WikiPage jspWikiPage = new com.ecyrd.jspwiki.WikiPage(
50 engine, page.getTitle());
51
52 jspWikiPage.setAuthor(page.getUserName());
53 jspWikiPage.setVersion((int)(page.getVersion() * 10));
54 jspWikiPage.setLastModified(page.getCreateDate());
55
56 return jspWikiPage;
57 }
58
59 public void deletePage(String name) {
60 if (_log.isDebugEnabled()) {
61 _log.debug("Invoking deletePage(" + name + ")");
62 }
63 }
64
65 public void deleteVersion(String title, int version) {
66 if (_log.isDebugEnabled()) {
67 _log.debug(
68 "Invoking deleteVersion(" + title + ", " + version + ")");
69 }
70 }
71
72 public Collection<WikiPage> findPages(QueryItem[] query) {
73 if (_log.isDebugEnabled()) {
74 _log.debug("Invoking findPages(" + Arrays.toString(query) + ")");
75 }
76
77 return Collections.EMPTY_LIST;
78 }
79
80 public Collection<WikiPage> getAllChangedSince(Date date) {
81 if (_log.isDebugEnabled()) {
82 _log.debug("Invoking getAllChangedSince(" + date + ")");
83 }
84
85 try {
86 return getAllPages();
87 }
88 catch (ProviderException e) {
89 _log.error("Could not get changed pages", e);
90
91 return Collections.EMPTY_LIST;
92 }
93 }
94
95 public Collection<WikiPage> getAllPages() throws ProviderException {
96 if (_log.isDebugEnabled()) {
97 _log.debug("Invoking getAllPages()");
98 }
99
100 List<WikiPage> jspWikiPages = new ArrayList<WikiPage>();
101
102 try {
103 int count = WikiPageLocalServiceUtil.getPagesCount(_nodeId, true);
104
105 List<com.liferay.portlet.wiki.model.WikiPage> pages =
106 WikiPageLocalServiceUtil.getPages(_nodeId, true, 0, count);
107
108 for (com.liferay.portlet.wiki.model.WikiPage page : pages) {
109 jspWikiPages.add(toJSPWikiPage(page, _engine));
110 }
111 }
112 catch (SystemException se) {
113 throw new ProviderException(se.toString());
114 }
115
116 return jspWikiPages;
117 }
118
119 public int getPageCount() throws ProviderException {
120 if (_log.isDebugEnabled()) {
121 _log.debug("Invoking getPageCount()");
122 }
123
124 try {
125 return WikiPageLocalServiceUtil.getPagesCount(_nodeId);
126 }
127 catch (SystemException se) {
128 throw new ProviderException(se.toString());
129 }
130 }
131
132 public com.ecyrd.jspwiki.WikiPage getPageInfo(String title, int version)
133 throws ProviderException {
134
135 if (_log.isDebugEnabled()) {
136 _log.debug("Invoking getPageInfo(" + title + ", " + version + ")");
137 }
138
139 try {
140 com.liferay.portlet.wiki.model.WikiPage page =
141 WikiPageLocalServiceUtil.getPage(_nodeId, title);
142
143 return toJSPWikiPage(page, _engine);
144 }
145 catch (NoSuchPageException nspe) {
146 return null;
147 }
148 catch (Exception e) {
149 throw new ProviderException(e.toString());
150 }
151 }
152
153 public String getPageText(String title, int version)
154 throws ProviderException {
155
156 if (_log.isDebugEnabled()) {
157 _log.debug("Invoking getPageText(" + title + ", " + version + ")");
158 }
159
160 try {
161 com.liferay.portlet.wiki.model.WikiPage page =
162 WikiPageLocalServiceUtil.getPage(_nodeId, title);
163
164 return page.getContent();
165 }
166 catch (Exception e) {
167 throw new ProviderException(e.toString());
168 }
169 }
170
171 public String getProviderInfo() {
172 if (_log.isDebugEnabled()) {
173 _log.debug("Invoking getProviderInfo()");
174 }
175
176 return LiferayPageProvider.class.getName();
177 }
178
179 public List<WikiPage> getVersionHistory(String title) {
180 if (_log.isDebugEnabled()) {
181 _log.debug("Invoking getVersionHistory(" + title + ")");
182 }
183
184 return Collections.EMPTY_LIST;
185 }
186
187 public void initialize(WikiEngine engine, Properties props) {
188 if (_log.isDebugEnabled()) {
189 _log.debug("Invoking initialize(" + engine + ", " + props + ")");
190 }
191
192 _engine = engine;
193 _nodeId = GetterUtil.getLong(props.getProperty("nodeId"));
194 }
195
196 public void movePage(String from, String to) {
197 if (_log.isDebugEnabled()) {
198 _log.debug("Invoking movePage(" + from + ", " + to + ")");
199 }
200 }
201
202 public boolean pageExists(String title) {
203 if (_log.isDebugEnabled()) {
204 _log.debug("Invoking pageExists(" + title + ")");
205 }
206
207 try {
208 if (WikiPageLocalServiceUtil.getPagesCount(
209 _nodeId, WikiUtil.decodeJSPWikiName(title), true) > 0) {
210
211 return true;
212 }
213 else {
214 return false;
215 }
216 }
217 catch (Exception e) {
218 _log.error(e, e);
219 }
220
221 return false;
222 }
223
224 public void putPageText(com.ecyrd.jspwiki.WikiPage page, String text) {
225 if (_log.isDebugEnabled()) {
226 _log.debug("Invoking putPageText(" + page + ", " + text + ")");
227 }
228 }
229
230 private static Log _log = LogFactoryUtil.getLog(LiferayPageProvider.class);
231
232 private WikiEngine _engine;
233 private long _nodeId;
234
235 }