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