1
22
23 package com.liferay.portal.search.lucene.messaging;
24
25 import com.liferay.portal.kernel.messaging.Message;
26 import com.liferay.portal.kernel.messaging.MessageListener;
27 import com.liferay.portal.kernel.search.Document;
28 import com.liferay.portal.kernel.search.messaging.SearchRequest;
29 import com.liferay.portal.search.lucene.LuceneSearchEngineUtil;
30
31 import org.apache.commons.logging.Log;
32 import org.apache.commons.logging.LogFactory;
33
34
40 public class LuceneWriterMessageListener implements MessageListener {
41
42 public void receive(Message message) {
43 try {
44 doReceive(message);
45 }
46 catch (Exception e) {
47 _log.error("Unable to process message " + message, e);
48 }
49 }
50
51 public 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 (!LuceneSearchEngineUtil.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 LuceneSearchEngineUtil.addDocument(companyId, doc);
74 }
75 else if (command.equals(SearchRequest.COMMAND_DELETE)) {
76 LuceneSearchEngineUtil.deleteDocument(companyId, id);
77 }
78 else if (command.equals(SearchRequest.COMMAND_DELETE_PORTLET_DOCS)) {
79 LuceneSearchEngineUtil.deletePortletDocuments(companyId, id);
80 }
81 else if (command.equals(SearchRequest.COMMAND_REGISTER)) {
82 LuceneSearchEngineUtil.register(id);
83 }
84 else if (command.equals(SearchRequest.COMMAND_UNREGISTER)) {
85 LuceneSearchEngineUtil.unregister(id);
86 }
87 else if (command.equals(SearchRequest.COMMAND_UPDATE)) {
88 LuceneSearchEngineUtil.updateDocument(companyId, id, doc);
89 }
90 }
91
92 private static Log _log =
93 LogFactory.getLog(LuceneWriterMessageListener.class);
94
95 }