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