1
14
15 package com.liferay.portal.kernel.search.messaging;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.kernel.messaging.Message;
20 import com.liferay.portal.kernel.search.Document;
21 import com.liferay.portal.kernel.search.IndexWriter;
22
23
28 public class SearchWriterMessageListener
29 extends BaseSearchEngineMessageListener {
30
31 public void receive(Message message) {
32 try {
33 doReceive(message);
34 }
35 catch (Exception e) {
36 _log.error("Unable to process message " + message, e);
37 }
38 }
39
40 protected void doReceive(Message message) throws Exception {
41 Object payload = message.getPayload();
42
43 if (!(payload instanceof SearchRequest)) {
44 return;
45 }
46
47 SearchRequest searchRequest = (SearchRequest)payload;
48
49 SearchEngineCommand searchEngineCommand =
50 searchRequest.getSearchEngineCommand();
51
52 long companyId = searchRequest.getCompanyId();
53 String id = searchRequest.getId();
54 Document doc = searchRequest.getDocument();
55
56 IndexWriter indexWriter = searchEngine.getWriter();
57
58 if (searchEngineCommand.equals(SearchEngineCommand.ADD)) {
59 indexWriter.addDocument(companyId, doc);
60 }
61 else if (searchEngineCommand.equals(SearchEngineCommand.DELETE)) {
62 indexWriter.deleteDocument(companyId, id);
63 }
64 else if (searchEngineCommand.equals(
65 SearchEngineCommand.DELETE_PORTLET_DOCUMENTS)) {
66
67 indexWriter.deletePortletDocuments(companyId, id);
68 }
69 else if (searchEngineCommand.equals(SearchEngineCommand.UPDATE)) {
70 indexWriter.updateDocument(companyId, id, doc);
71 }
72 }
73
74 private static Log _log = LogFactoryUtil.getLog(
75 SearchWriterMessageListener.class);
76
77 }