1
22
23 package com.liferay.portal.search.lucene.messaging;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.messaging.Message;
28 import com.liferay.portal.kernel.messaging.MessageListener;
29 import com.liferay.portal.kernel.search.Document;
30 import com.liferay.portal.kernel.search.SearchEngine;
31 import com.liferay.portal.kernel.search.messaging.SearchRequest;
32
33
39 public class LuceneWriterMessageListener implements MessageListener {
40
41 public void receive(Message message) {
42 try {
43 doReceive(message);
44 }
45 catch (Exception e) {
46 _log.error("Unable to process message " + message, e);
47 }
48 }
49
50 public void setSearchEngine(SearchEngine searchEngine) {
51 _searchEngine = searchEngine;
52 }
53
54 protected void doReceive(Message message) throws Exception {
55 Object payload = message.getPayload();
56
57 if (!(payload instanceof SearchRequest)) {
58 return;
59 }
60
61 SearchRequest searchRequest = (SearchRequest)payload;
62
63 String command = searchRequest.getCommand();
64
65 if (!_searchEngine.isRegistered() &&
66 !command.equals(SearchRequest.COMMAND_REGISTER)) {
67
68 return;
69 }
70
71 long companyId = searchRequest.getCompanyId();
72 String id = searchRequest.getId();
73 Document doc = searchRequest.getDocument();
74
75 if (command.equals(SearchRequest.COMMAND_ADD)) {
76 _searchEngine.getWriter().addDocument(companyId, doc);
77 }
78 else if (command.equals(SearchRequest.COMMAND_DELETE)) {
79 _searchEngine.getWriter().deleteDocument(companyId, id);
80 }
81 else if (command.equals(SearchRequest.COMMAND_DELETE_PORTLET_DOCS)) {
82 _searchEngine.getWriter().deletePortletDocuments(companyId, id);
83 }
84 else if (command.equals(SearchRequest.COMMAND_REGISTER)) {
85 _searchEngine.register(id);
86 }
87 else if (command.equals(SearchRequest.COMMAND_UNREGISTER)) {
88 _searchEngine.unregister(id);
89 }
90 else if (command.equals(SearchRequest.COMMAND_UPDATE)) {
91 _searchEngine.getWriter().updateDocument(companyId, id, doc);
92 }
93 }
94
95 private static Log _log =
96 LogFactoryUtil.getLog(LuceneWriterMessageListener.class);
97
98 private SearchEngine _searchEngine;
99
100 }