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 import java.util.Collection;
24
25
30 public class SearchWriterMessageListener
31 extends BaseSearchEngineMessageListener {
32
33 public void receive(Message message) {
34 try {
35 doReceive(message);
36 }
37 catch (Exception e) {
38 _log.error("Unable to process message " + message, e);
39 }
40 }
41
42 protected void doReceive(Message message) throws Exception {
43 Object payload = message.getPayload();
44
45 if (!(payload instanceof SearchRequest)) {
46 return;
47 }
48
49 SearchRequest searchRequest = (SearchRequest)payload;
50
51 SearchEngineCommand searchEngineCommand =
52 searchRequest.getSearchEngineCommand();
53
54 long companyId = searchRequest.getCompanyId();
55 Document document = searchRequest.getDocument();
56 Collection<Document> documents = searchRequest.getDocuments();
57 String id = searchRequest.getId();
58 Collection<String> ids = searchRequest.getIds();
59
60 IndexWriter indexWriter = searchEngine.getWriter();
61
62 if (searchEngineCommand.equals(SearchEngineCommand.ADD_DOCUMENT)) {
63 indexWriter.addDocument(companyId, document);
64 }
65 else if (searchEngineCommand.equals(
66 SearchEngineCommand.ADD_DOCUMENTS)) {
67
68 indexWriter.addDocuments(companyId, documents);
69 }
70 else if (searchEngineCommand.equals(
71 SearchEngineCommand.DELETE_DOCUMENT)) {
72
73 indexWriter.deleteDocument(companyId, id);
74 }
75 else if (searchEngineCommand.equals(
76 SearchEngineCommand.DELETE_DOCUMENTS)) {
77
78 indexWriter.deleteDocuments(companyId, ids);
79 }
80 else if (searchEngineCommand.equals(
81 SearchEngineCommand.DELETE_PORTLET_DOCUMENTS)) {
82
83 indexWriter.deletePortletDocuments(companyId, id);
84 }
85 else if (searchEngineCommand.equals(
86 SearchEngineCommand.UPDATE_DOCUMENT)) {
87
88 indexWriter.updateDocument(companyId, document);
89 }
90 else if (searchEngineCommand.equals(
91 SearchEngineCommand.UPDATE_DOCUMENTS)) {
92
93 indexWriter.updateDocuments(companyId, documents);
94 }
95 }
96
97 private static Log _log = LogFactoryUtil.getLog(
98 SearchWriterMessageListener.class);
99
100 }