1
22
23 package com.liferay.portlet.journal.util;
24
25 import com.liferay.portal.kernel.search.Document;
26 import com.liferay.portal.kernel.search.Field;
27 import com.liferay.portal.kernel.search.Hits;
28 import com.liferay.portal.model.Layout;
29 import com.liferay.portal.search.HitsOpenSearchImpl;
30 import com.liferay.portal.service.LayoutLocalServiceUtil;
31 import com.liferay.portal.theme.ThemeDisplay;
32 import com.liferay.portal.util.PortalUtil;
33 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
34 import com.liferay.portlet.journal.service.JournalContentSearchLocalServiceUtil;
35
36 import java.util.List;
37
38 import javax.portlet.PortletURL;
39
40
46 public class JournalOpenSearchImpl extends HitsOpenSearchImpl {
47
48 public static final String SEARCH_PATH = "/c/journal/open_search";
49
50 public static final String TITLE = "Liferay Journal Search: ";
51
52 public Hits getHits(
53 long companyId, long groupId, long userId, String keywords,
54 int start, int end)
55 throws Exception {
56
57 return JournalArticleLocalServiceUtil.search(
58 companyId, groupId, keywords, start, end);
59 }
60
61 public String getSearchPath() {
62 return SEARCH_PATH;
63 }
64
65 public String getTitle(String keywords) {
66 return TITLE + keywords;
67 }
68
69 protected String getURL(
70 ThemeDisplay themeDisplay, long groupId, Document result,
71 PortletURL portletURL)
72 throws Exception {
73
74 Layout layout = themeDisplay.getLayout();
75
76 String articleId = result.get(Field.ENTRY_CLASS_PK);
77 String version = result.get("version");
78
79 List<Long> hitLayoutIds =
80 JournalContentSearchLocalServiceUtil.getLayoutIds(
81 layout.getGroupId(), layout.isPrivateLayout(), articleId);
82
83 if (hitLayoutIds.size() > 0) {
84 Long hitLayoutId = hitLayoutIds.get(0);
85
86 Layout hitLayout = LayoutLocalServiceUtil.getLayout(
87 layout.getGroupId(), layout.isPrivateLayout(),
88 hitLayoutId.longValue());
89
90 return PortalUtil.getLayoutURL(hitLayout, themeDisplay);
91 }
92 else {
93 StringBuilder sb = new StringBuilder();
94
95 sb.append(themeDisplay.getPathMain());
96 sb.append("/journal/view_article_content?groupId=");
97 sb.append(groupId);
98 sb.append("&articleId=");
99 sb.append(articleId);
100 sb.append("&version=");
101 sb.append(version);
102
103 return sb.toString();
104 }
105 }
106
107 }