1
22
23 package com.liferay.portlet.softwarecatalog.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.softwarecatalog.service.SCProductEntryLocalServiceUtil;
36
37 import java.util.Date;
38
39 import javax.portlet.PortletURL;
40
41
50 public class Indexer
51 implements com.liferay.portal.kernel.search.Indexer {
52
53 public static final String PORTLET_ID = PortletKeys.SOFTWARE_CATALOG;
54
55 public static void addProductEntry(
56 long companyId, long groupId, long userId, String userName,
57 long productEntryId, String name, Date modifiedDate, String version,
58 String type, String shortDescription, String longDescription,
59 String pageURL, String repoGroupId, String repoArtifactId)
60 throws SearchException {
61
62 Document doc = getProductEntryDocument(
63 companyId, groupId, userId, userName, productEntryId, name,
64 modifiedDate, version, type, shortDescription, longDescription,
65 pageURL, repoGroupId, repoArtifactId);
66
67 SearchEngineUtil.addDocument(companyId, doc);
68 }
69
70 public static void deleteProductEntry(long companyId, long productEntryId)
71 throws SearchException {
72
73 SearchEngineUtil.deleteDocument(companyId, getEntryUID(productEntryId));
74 }
75
76 public static Document getProductEntryDocument(
77 long companyId, long groupId, long userId, String userName,
78 long productEntryId, String name, Date modifiedDate, String version,
79 String type, String shortDescription, String longDescription,
80 String pageURL, String repoGroupId, String repoArtifactId) {
81
82 userName = PortalUtil.getUserName(userId, userName);
83 shortDescription = HtmlUtil.extractText(shortDescription);
84 longDescription = HtmlUtil.extractText(longDescription);
85
86 String content =
87 userId + " " + userName + " " + type + " " + shortDescription +
88 " " + longDescription + " " + pageURL + repoGroupId + " " +
89 repoArtifactId;
90
91 Document doc = new DocumentImpl();
92
93 doc.addUID(PORTLET_ID, productEntryId);
94
95 doc.addModifiedDate(modifiedDate);
96
97 doc.addKeyword(Field.COMPANY_ID, companyId);
98 doc.addKeyword(Field.PORTLET_ID, PORTLET_ID);
99 doc.addKeyword(Field.GROUP_ID, groupId);
100 doc.addKeyword(Field.USER_ID, userId);
101 doc.addText(Field.USER_NAME, userName);
102
103 doc.addText(Field.TITLE, name);
104 doc.addText(Field.CONTENT, content);
105
106 doc.addKeyword(Field.ENTRY_CLASS_PK, productEntryId);
107 doc.addKeyword("version", version);
108 doc.addKeyword("type", type);
109 doc.addText("shortDescription", shortDescription);
110 doc.addText("longDescription", longDescription);
111 doc.addText("pageURL", pageURL);
112 doc.addKeyword("repoGroupId", repoGroupId);
113 doc.addKeyword("repoArtifactId", repoArtifactId);
114
115 return doc;
116 }
117
118 public static String getEntryUID(long productEntryId) {
119 Document doc = new DocumentImpl();
120
121 doc.addUID(PORTLET_ID, productEntryId);
122
123 return doc.get(Field.UID);
124 }
125
126 public static void updateProductEntry(
127 long companyId, long groupId, long userId, String userName,
128 long productEntryId, String name, Date modifiedDate, String version,
129 String type, String shortDescription, String longDescription,
130 String pageURL, String repoGroupId, String repoArtifactId)
131 throws SearchException {
132
133 Document doc = getProductEntryDocument(
134 companyId, groupId, userId, userName, productEntryId, name,
135 modifiedDate, version, type, shortDescription, longDescription,
136 pageURL, repoGroupId, repoArtifactId);
137
138 SearchEngineUtil.updateDocument(companyId, doc.get(Field.UID), doc);
139 }
140
141 public DocumentSummary getDocumentSummary(
142 com.liferay.portal.kernel.search.Document doc, PortletURL portletURL) {
143
144
146 String title = doc.get(Field.TITLE);
147
148
150 String content = doc.get(Field.CONTENT);
151
152 content = StringUtil.shorten(content, 200);
153
154
156 String productEntryId = doc.get(Field.ENTRY_CLASS_PK);
157
158 portletURL.setParameter(
159 "struts_action", "/software_catalog/view_product_entry");
160 portletURL.setParameter("productEntryId", productEntryId);
161
162 return new DocumentSummary(title, content, portletURL);
163 }
164
165 public void reIndex(String[] ids) throws SearchException {
166 try {
167 SCProductEntryLocalServiceUtil.reIndex(ids);
168 }
169 catch (Exception e) {
170 throw new SearchException(e);
171 }
172 }
173
174 }