1
14
15 package com.liferay.portal.search.lucene.messaging;
16
17 import com.liferay.portal.kernel.bean.PortalBeanLocatorUtil;
18 import com.liferay.portal.kernel.messaging.BaseDestinationEventListener;
19 import com.liferay.portal.kernel.messaging.DestinationNames;
20 import com.liferay.portal.kernel.messaging.MessageBusUtil;
21 import com.liferay.portal.kernel.messaging.MessageListener;
22 import com.liferay.portal.kernel.search.BooleanQueryFactory;
23 import com.liferay.portal.kernel.search.BooleanQueryFactoryUtil;
24 import com.liferay.portal.kernel.search.TermQueryFactory;
25 import com.liferay.portal.kernel.search.TermQueryFactoryUtil;
26 import com.liferay.portal.kernel.search.messaging.BaseSearchEngineMessageListener;
27 import com.liferay.portal.kernel.search.messaging.SearchReaderMessageListener;
28 import com.liferay.portal.kernel.search.messaging.SearchWriterMessageListener;
29 import com.liferay.portal.search.lucene.LuceneSearchEngineImpl;
30
31
37 public class SearchEngineDestinationEventListener
38 extends BaseDestinationEventListener {
39
40 public SearchEngineDestinationEventListener() {
41 }
42
43
46 public SearchEngineDestinationEventListener(
47 SearchReaderMessageListener searchReaderMessageListener,
48 SearchWriterMessageListener searchWriterMessageListener) {
49
50 _searchReaderMessageListener = searchReaderMessageListener;
51 _searchWriterMessageListener = searchWriterMessageListener;
52 }
53
54 public void messageListenerRegistered(
55 String destinationName, MessageListener messageListener) {
56
57 if (!isProceed(destinationName, messageListener)) {
58 return;
59 }
60
61 MessageBusUtil.unregisterMessageListener(
62 DestinationNames.SEARCH_READER, _searchReaderMessageListener);
63 MessageBusUtil.unregisterMessageListener(
64 DestinationNames.SEARCH_WRITER, _searchWriterMessageListener);
65
66 BaseSearchEngineMessageListener baseSearchEngineMessageListener =
67 (BaseSearchEngineMessageListener)messageListener;
68
69 if (!baseSearchEngineMessageListener.getSearchEngineName().contains(
70 LuceneSearchEngineImpl.NAME)) {
71
72 setBooleanQueryFactory(
73 new com.liferay.portal.search.generic.
74 BooleanQueryFactoryImpl());
75 setTermQueryFactory(
76 new com.liferay.portal.search.generic.TermQueryFactoryImpl());
77 }
78 }
79
80 public void messageListenerUnregistered(
81 String destinationName, MessageListener messageListener) {
82
83 if (!isProceed(destinationName, messageListener)) {
84 return;
85 }
86
87 MessageBusUtil.registerMessageListener(
88 DestinationNames.SEARCH_READER, _searchReaderMessageListener);
89 MessageBusUtil.registerMessageListener(
90 DestinationNames.SEARCH_WRITER, _searchWriterMessageListener);
91
92 BaseSearchEngineMessageListener baseSearchEngineMessageListener =
93 (BaseSearchEngineMessageListener)messageListener;
94
95 if (!baseSearchEngineMessageListener.getSearchEngineName().contains(
96 LuceneSearchEngineImpl.NAME)) {
97
98 setBooleanQueryFactory(
99 new com.liferay.portal.search.lucene.BooleanQueryFactoryImpl());
100 setTermQueryFactory(
101 new com.liferay.portal.search.lucene.TermQueryFactoryImpl());
102 }
103 }
104
105 public void setSearchReaderMessageListener(
106 SearchReaderMessageListener searchReaderMessageListener) {
107
108 _searchReaderMessageListener = searchReaderMessageListener;
109 }
110
111 public void setSearchWriterMessageListener(
112 SearchWriterMessageListener searchWriterMessageListener) {
113
114 _searchWriterMessageListener = searchWriterMessageListener;
115 }
116
117 protected boolean isProceed(
118 String destinationName, MessageListener messageListener) {
119
120 if ((!destinationName.equals(DestinationNames.SEARCH_READER)) ||
121 (messageListener == _searchReaderMessageListener) ||
122 !(messageListener instanceof SearchReaderMessageListener)) {
123
124 return false;
125 }
126 else {
127 return true;
128 }
129 }
130
131 protected void setBooleanQueryFactory(
132 BooleanQueryFactory booleanQueryFactory) {
133
134 BooleanQueryFactoryUtil booleanQueryFactoryUtil =
135 (BooleanQueryFactoryUtil)PortalBeanLocatorUtil.locate(
136 BooleanQueryFactoryUtil.class.getName());
137
138 booleanQueryFactoryUtil.setBooleanQueryFactory(booleanQueryFactory);
139 }
140
141 protected void setTermQueryFactory(TermQueryFactory termQueryFactory) {
142 TermQueryFactoryUtil termQueryFactoryUtil =
143 (TermQueryFactoryUtil)PortalBeanLocatorUtil.locate(
144 TermQueryFactoryUtil.class.getName());
145
146 termQueryFactoryUtil.setTermQueryFactory(termQueryFactory);
147 }
148
149 private SearchReaderMessageListener _searchReaderMessageListener;
150 private SearchWriterMessageListener _searchWriterMessageListener;
151
152 }