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.BaseMessageListener;
025 import com.liferay.portal.kernel.messaging.Message;
026 import com.liferay.portal.kernel.messaging.MessageBusUtil;
027
028
031 public class ReportCompilerRequestMessageListener extends BaseMessageListener {
032
033 public void setReportEngine(ReportEngine reportEngine) {
034 _reportEngine = reportEngine;
035 }
036
037 public void setReportResultContainer(
038 ReportResultContainer reportResultContainer) {
039
040 _reportResultContainer = reportResultContainer;
041 }
042
043 @Override
044 protected void doReceive(Message message) throws Exception {
045 ReportRequest reportRequest = (ReportRequest)message.getPayload();
046
047 ReportDesignRetriever reportDesignRetriever =
048 reportRequest.getReportDesignRetriever();
049
050 ReportResultContainer reportResultContainer =
051 _reportResultContainer.clone(reportDesignRetriever.getReportName());
052
053 try {
054 _reportEngine.compile(reportRequest);
055 }
056 catch (ReportGenerationException rge) {
057 _log.error("Unable to compile report", rge);
058
059 reportResultContainer.setReportGenerationException(rge);
060 }
061 finally {
062 Message responseMessage = MessageBusUtil.createResponseMessage(
063 message, reportResultContainer);
064
065 responseMessage.setPayload(reportResultContainer);
066
067 MessageBusUtil.sendMessage(
068 responseMessage.getDestinationName(), responseMessage);
069 }
070 }
071
072 private static Log _log = LogFactoryUtil.getLog(
073 ReportCompilerRequestMessageListener.class);
074
075 private ReportEngine _reportEngine;
076 private ReportResultContainer _reportResultContainer;
077
078 }