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.messaging.SearchRequest;
31 import com.liferay.portal.search.lucene.LuceneSearchEngineUtil;
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 doReceive(Message message) throws Exception {
51 Object payload = message.getPayload();
52
53 if (!(payload instanceof SearchRequest)) {
54 return;
55 }
56
57 SearchRequest searchRequest = (SearchRequest)payload;
58
59 String command = searchRequest.getCommand();
60
61 if (!LuceneSearchEngineUtil.isRegistered() &&
62 !command.equals(SearchRequest.COMMAND_REGISTER)) {
63
64 return;
65 }
66
67 long companyId = searchRequest.getCompanyId();
68 String id = searchRequest.getId();
69 Document doc = searchRequest.getDocument();
70
71 if (command.equals(SearchRequest.COMMAND_ADD)) {
72 LuceneSearchEngineUtil.addDocument(companyId, doc);
73 }
74 else if (command.equals(SearchRequest.COMMAND_DELETE)) {
75 LuceneSearchEngineUtil.deleteDocument(companyId, id);
76 }
77 else if (command.equals(SearchRequest.COMMAND_DELETE_PORTLET_DOCS)) {
78 LuceneSearchEngineUtil.deletePortletDocuments(companyId, id);
79 }
80 else if (command.equals(SearchRequest.COMMAND_REGISTER)) {
81 LuceneSearchEngineUtil.register(id);
82 }
83 else if (command.equals(SearchRequest.COMMAND_UNREGISTER)) {
84 LuceneSearchEngineUtil.unregister(id);
85 }
86 else if (command.equals(SearchRequest.COMMAND_UPDATE)) {
87 LuceneSearchEngineUtil.updateDocument(companyId, id, doc);
88 }
89 }
90
91 private static Log _log =
92 LogFactoryUtil.getLog(LuceneWriterMessageListener.class);
93
94 }