1
14
15 package com.liferay.portal.kernel.bi.reporting.messaging;
16
17 import com.liferay.portal.kernel.bi.reporting.ReportDesignRetriever;
18 import com.liferay.portal.kernel.bi.reporting.ReportEngine;
19 import com.liferay.portal.kernel.bi.reporting.ReportGenerationException;
20 import com.liferay.portal.kernel.bi.reporting.ReportRequest;
21 import com.liferay.portal.kernel.bi.reporting.ReportResultContainer;
22 import com.liferay.portal.kernel.log.Log;
23 import com.liferay.portal.kernel.log.LogFactoryUtil;
24 import com.liferay.portal.kernel.messaging.Message;
25 import com.liferay.portal.kernel.messaging.MessageBusUtil;
26 import com.liferay.portal.kernel.messaging.MessageListener;
27
28
34 public class ReportCompilerRequestMessageListener implements MessageListener {
35
36 public ReportCompilerRequestMessageListener(
37 ReportEngine reportEngine,
38 ReportResultContainer reportResultContainer) {
39
40 _reportEngine = reportEngine;
41 _reportResultContainer = reportResultContainer;
42 }
43
44 public void receive(Message message) {
45 ReportRequest reportRequest = (ReportRequest)message.getPayload();
46
47 ReportDesignRetriever reportDesignRetriever =
48 reportRequest.getReportDesignRetriever();
49
50 ReportResultContainer reportResultContainer =
51 _reportResultContainer.clone(reportDesignRetriever.getReportName());
52
53 try {
54 _reportEngine.compile(reportRequest);
55 }
56 catch (ReportGenerationException rge) {
57 _log.error("Unable to compile report", rge);
58
59 reportResultContainer.setReportGenerationException(rge);
60 }
61 finally {
62 Message responseMessage = MessageBusUtil.createResponseMessage(
63 message, reportResultContainer);
64
65 responseMessage.setPayload(reportResultContainer);
66
67 MessageBusUtil.sendMessage(
68 responseMessage.getDestinationName(), responseMessage);
69 }
70 }
71
72 private static Log _log = LogFactoryUtil.getLog(
73 ReportCompilerRequestMessageListener.class);
74
75 private ReportEngine _reportEngine;
76 private ReportResultContainer _reportResultContainer;
77
78 }