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.Hits;
27 import com.liferay.portal.kernel.util.StringMaker;
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(long companyId, String keywords) throws Exception {
53 return JournalArticleLocalServiceUtil.search(
54 companyId, 0, keywords, keywords, keywords, null);
55 }
56
57 public String getSearchPath() {
58 return SEARCH_PATH;
59 }
60
61 public String getTitle(String keywords) {
62 return TITLE + keywords;
63 }
64
65 protected String getURL(
66 ThemeDisplay themeDisplay, long groupId, Document result,
67 PortletURL portletURL)
68 throws Exception {
69
70 Layout layout = themeDisplay.getLayout();
71
72 String articleId = result.get("articleId");
73 String version = result.get("version");
74
75 List hitLayoutIds =
76 JournalContentSearchLocalServiceUtil.getLayoutIds(
77 layout.getGroupId(), layout.isPrivateLayout(), articleId);
78
79 if (hitLayoutIds.size() > 0) {
80 Long hitLayoutId = (Long)hitLayoutIds.get(0);
81
82 Layout hitLayout = LayoutLocalServiceUtil.getLayout(
83 layout.getGroupId(), layout.isPrivateLayout(),
84 hitLayoutId.longValue());
85
86 return PortalUtil.getLayoutURL(hitLayout, themeDisplay);
87 }
88 else {
89 StringMaker sm = new StringMaker();
90
91 sm.append(themeDisplay.getPathMain());
92 sm.append("/journal/view_article_content?groupId=");
93 sm.append(groupId);
94 sm.append("&articleId=");
95 sm.append(articleId);
96 sm.append("&version=");
97 sm.append(version);
98
99 return sm.toString();
100 }
101 }
102
103 }