001
014
015 package com.liferay.portal.kernel.bi.reporting.messaging;
016
017 import com.liferay.portal.kernel.bi.reporting.ReportDesignRetriever;
018 import com.liferay.portal.kernel.bi.reporting.ReportEngine;
019 import com.liferay.portal.kernel.bi.reporting.ReportGenerationException;
020 import com.liferay.portal.kernel.bi.reporting.ReportRequest;
021 import com.liferay.portal.kernel.bi.reporting.ReportResultContainer;
022 import com.liferay.portal.kernel.log.Log;
023 import com.liferay.portal.kernel.log.LogFactoryUtil;
024 import com.liferay.portal.kernel.messaging.Message;
025 import com.liferay.portal.kernel.messaging.MessageBusUtil;
026 import com.liferay.portal.kernel.messaging.MessageListener;
027
028
031 public class ReportCompilerRequestMessageListener implements MessageListener {
032
033 public ReportCompilerRequestMessageListener(
034 ReportEngine reportEngine,
035 ReportResultContainer reportResultContainer) {
036
037 _reportEngine = reportEngine;
038 _reportResultContainer = reportResultContainer;
039 }
040
041 public void receive(Message message) {
042 ReportRequest reportRequest = (ReportRequest)message.getPayload();
043
044 ReportDesignRetriever reportDesignRetriever =
045 reportRequest.getReportDesignRetriever();
046
047 ReportResultContainer reportResultContainer =
048 _reportResultContainer.clone(reportDesignRetriever.getReportName());
049
050 try {
051 _reportEngine.compile(reportRequest);
052 }
053 catch (ReportGenerationException rge) {
054 _log.error("Unable to compile report", rge);
055
056 reportResultContainer.setReportGenerationException(rge);
057 }
058 finally {
059 Message responseMessage = MessageBusUtil.createResponseMessage(
060 message, reportResultContainer);
061
062 responseMessage.setPayload(reportResultContainer);
063
064 MessageBusUtil.sendMessage(
065 responseMessage.getDestinationName(), responseMessage);
066 }
067 }
068
069 private static Log _log = LogFactoryUtil.getLog(
070 ReportCompilerRequestMessageListener.class);
071
072 private ReportEngine _reportEngine;
073 private ReportResultContainer _reportResultContainer;
074
075 }