1
22
23 package com.liferay.portlet.blogs.util;
24
25 import com.liferay.portal.kernel.search.Document;
26 import com.liferay.portal.kernel.search.DocumentImpl;
27 import com.liferay.portal.kernel.search.DocumentSummary;
28 import com.liferay.portal.kernel.search.Field;
29 import com.liferay.portal.kernel.search.SearchEngineUtil;
30 import com.liferay.portal.kernel.search.SearchException;
31 import com.liferay.portal.kernel.util.HtmlUtil;
32 import com.liferay.portal.kernel.util.StringUtil;
33 import com.liferay.portal.util.PortalUtil;
34 import com.liferay.portal.util.PortletKeys;
35 import com.liferay.portlet.blogs.model.BlogsEntry;
36 import com.liferay.portlet.blogs.service.BlogsEntryLocalServiceUtil;
37
38 import java.util.Date;
39
40 import javax.portlet.PortletURL;
41
42
50 public class Indexer implements com.liferay.portal.kernel.search.Indexer {
51
52 public static final String PORTLET_ID = PortletKeys.BLOGS;
53
54 public static void addEntry(
55 long companyId, long groupId, long userId, String userName,
56 long entryId, String title, String content, Date displayDate,
57 String[] tagsEntries)
58 throws SearchException {
59
60 Document doc = getEntryDocument(
61 companyId, groupId, userId, userName, entryId, title, content,
62 displayDate, tagsEntries);
63
64 SearchEngineUtil.addDocument(companyId, doc);
65 }
66
67 public static void deleteEntry(long companyId, long entryId)
68 throws SearchException {
69
70 SearchEngineUtil.deleteDocument(companyId, getEntryUID(entryId));
71 }
72
73 public static Document getEntryDocument(
74 long companyId, long groupId, long userId, String userName,
75 long entryId, String title, String content, Date displayDate,
76 String[] tagsEntries) {
77
78 userName = PortalUtil.getUserName(userId, userName);
79 content = HtmlUtil.extractText(content);
80
81 Document doc = new DocumentImpl();
82
83 doc.addUID(PORTLET_ID, entryId);
84
85 doc.addModifiedDate(displayDate);
86
87 doc.addKeyword(Field.COMPANY_ID, companyId);
88 doc.addKeyword(Field.PORTLET_ID, PORTLET_ID);
89 doc.addKeyword(Field.GROUP_ID, groupId);
90 doc.addKeyword(Field.USER_ID, userId);
91 doc.addText(Field.USER_NAME, userName);
92
93 doc.addText(Field.TITLE, title);
94 doc.addText(Field.CONTENT, content);
95 doc.addKeyword(Field.TAGS_ENTRIES, tagsEntries);
96
97 doc.addKeyword(Field.ENTRY_CLASS_NAME, BlogsEntry.class.getName());
98 doc.addKeyword(Field.ENTRY_CLASS_PK, entryId);
99
100 return doc;
101 }
102
103 public static String getEntryUID(long entryId) {
104 Document doc = new DocumentImpl();
105
106 doc.addUID(PORTLET_ID, entryId);
107
108 return doc.get(Field.UID);
109 }
110
111 public static void updateEntry(
112 long companyId, long groupId, long userId, String userName,
113 long entryId, String title, String content, Date displayDate,
114 String[] tagsEntries)
115 throws SearchException {
116
117 Document doc = getEntryDocument(
118 companyId, groupId, userId, userName, entryId, title, content,
119 displayDate, tagsEntries);
120
121 SearchEngineUtil.updateDocument(companyId, doc.get(Field.UID), doc);
122 }
123
124 public DocumentSummary getDocumentSummary(
125 com.liferay.portal.kernel.search.Document doc, PortletURL portletURL) {
126
127
129 String title = doc.get(Field.TITLE);
130
131
133 String content = doc.get(Field.CONTENT);
134
135 content = StringUtil.shorten(content, 200);
136
137
139 String entryId = doc.get(Field.ENTRY_CLASS_PK);
140
141 portletURL.setParameter("struts_action", "/blogs/view_entry");
142 portletURL.setParameter("entryId", entryId);
143
144 return new DocumentSummary(title, content, portletURL);
145 }
146
147 public void reIndex(String[] ids) throws SearchException {
148 try {
149 BlogsEntryLocalServiceUtil.reIndex(ids);
150 }
151 catch (Exception e) {
152 throw new SearchException(e);
153 }
154 }
155
156 }