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