1
22
23 package com.liferay.portal.search;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.messaging.DestinationNames;
28 import com.liferay.portal.kernel.messaging.MessageBusException;
29 import com.liferay.portal.kernel.messaging.MessageBusUtil;
30 import com.liferay.portal.kernel.search.IndexSearcher;
31 import com.liferay.portal.kernel.search.IndexWriter;
32 import com.liferay.portal.kernel.search.SearchEngine;
33 import com.liferay.portal.kernel.search.messaging.SearchRequest;
34
35
41 public class SearchEngineImpl implements SearchEngine {
42
43 public String getName() {
44 throw new UnsupportedOperationException();
45 }
46
47 public IndexSearcher getSearcher() {
48 return _searcher;
49 }
50
51 public IndexWriter getWriter() {
52 return _writer;
53 }
54
55 public boolean isIndexReadOnly() {
56 if (_indexReadOnly != null) {
57 return _indexReadOnly.booleanValue();
58 }
59
60 try {
61 SearchRequest searchRequest = new SearchRequest();
62
63 searchRequest.setCommand(SearchRequest.COMMAND_INDEX_ONLY);
64
65 _indexReadOnly = (Boolean)MessageBusUtil.sendSynchronousMessage(
66 DestinationNames.SEARCH_READER, searchRequest);
67
68 if (_indexReadOnly == null) {
69 _indexReadOnly = Boolean.FALSE;
70 }
71
72 return _indexReadOnly.booleanValue();
73 }
74 catch (MessageBusException mbe) {
75 if (_log.isWarnEnabled()) {
76 _log.warn("Unable to check index status", mbe);
77 }
78
79 return false;
80 }
81 }
82
83 public boolean isRegistered() {
84 throw new UnsupportedOperationException();
85 }
86
87 public void register(String name) {
88 SearchRequest searchRequest = new SearchRequest();
89
90 searchRequest.setCommand(SearchRequest.COMMAND_REGISTER);
91 searchRequest.setId(name);
92
93 MessageBusUtil.sendMessage(
94 DestinationNames.SEARCH_WRITER, searchRequest);
95 }
96
97 public void setSearcher(IndexSearcher searcher) {
98 _searcher = searcher;
99 }
100
101 public void setWriter(IndexWriter writer) {
102 _writer = writer;
103 }
104
105 public void unregister(String fromName) {
106 SearchRequest searchRequest = new SearchRequest();
107
108 searchRequest.setCommand(SearchRequest.COMMAND_UNREGISTER);
109 searchRequest.setId(fromName);
110
111 MessageBusUtil.sendMessage(
112 DestinationNames.SEARCH_WRITER, searchRequest);
113 }
114
115 private static Log _log = LogFactoryUtil.getLog(SearchEngineImpl.class);
116
117 private IndexSearcher _searcher;
118 private IndexWriter _writer;
119 private Boolean _indexReadOnly;
120
121 }