The following code converts a report to a datamart using the Strategy SDK 9.4.x:
import com.Strategy.web.beans.BeanFactory;
import com.Strategy.web.beans.EnumReportBeanEvents;
import com.Strategy.web.beans.GenericRequestKeys;
import com.Strategy.web.beans.GenericWebEvent;
import com.Strategy.web.beans.ReportBean;
import com.Strategy.web.beans.RequestKeys;
import com.Strategy.web.beans.WebBeanException;
import com.Strategy.web.beans.WebEvent;
import com.Strategy.web.beans.WebException;
import com.Strategy.web.objects.WebIServerSession;
import com.Strategy.web.objects.WebObjectsException;
import com.Strategy.web.objects.WebObjectsFactory;
import com.Strategy.webapi.EnumDSSXMLApplicationType;
import com.Strategy.webapi.EnumDSSXMLDisplayMode;
import com.Strategy.webapi.EnumDSSXMLExecutionFlags;
public class ConvertToDatamartReportSample {
/*
* Reference
* MSDL Home > Web SDK > Customizing Strategy Web >
* Part II: Advanced Customization Topics > Using the Web Objects API > Data Marts > Examples >
* Converting a Report to a Data Mart Report Using Report Bean Events and Saving the Report Definition
*/
public static void main(String[] args) throws WebObjectsException, InterruptedException, WebBeanException, WebException {
out("Begin Converting Report to Datamart");
/** Create I-Server Session **/
WebObjectsFactory factory = WebObjectsFactory.getInstance();
WebIServerSession serverSession = factory.getIServerSession();
serverSession.setServerName("localhost");
serverSession.setServerPort(0);
serverSession.setProjectName("Strategy Tutorial");
serverSession.setLogin("administrator");
serverSession.setPassword("");
serverSession.setApplicationType(EnumDSSXMLApplicationType.DssXmlApplicationCustomApp);
/** Create Report Bean that will be converted to Datamart **/
String reportID = "F74380A3435DCBF8C2F3AA9AE8A06AE9";
ReportBean bean = getReportBean(reportID, serverSession);
bean.collectData();
WebEvent we = bean.getWebEvent(EnumReportBeanEvents.REPORT_EVENT_DEFINE_DATAMART);
/* Allocates arguments for converting to Datamart Report */
RequestKeys mr = new GenericRequestKeys();
mr.add(GenericWebEvent.URL_EVENT_NAME, String.valueOf(EnumReportBeanEvents.REPORT_EVENT_DEFINE_DATAMART));
mr.add(we.getArgumentName(EnumReportBeanEvents.REPORT_EVENT_ARGUMENT_DM_TABLE_NAME), "Datamart_Table");
// Indicates a Table Name
mr.add(we.getArgumentName(EnumReportBeanEvents.REPORT_EVENT_ARGUMENT_DM_NAME_MACRO), "1");
mr.add(we.getArgumentName(EnumReportBeanEvents.REPORT_EVENT_ARGUMENT_DM_APPEND), "1");
mr.add(we.getArgumentName(EnumReportBeanEvents.REPORT_EVENT_ARGUMENT_DB_ROLE_ID), "BCB3836D4C70EDF53CB706ABA556B44B");
// Indicates a DB role
bean.handleRequest(mr);
bean.collectData();
WebEvent weSave = bean.getWebEvent(EnumReportBeanEvents.REPORT_EVENT_SAVE_AS);
/* Save a Datamart Report that has been converted */
RequestKeys mrSave = new GenericRequestKeys();
mrSave.add(GenericWebEvent.URL_EVENT_NAME, String.valueOf(EnumReportBeanEvents.REPORT_EVENT_SAVE_AS));
mrSave.add(weSave.getArgumentName(EnumReportBeanEvents.REPORT_EVENT_ARGUMENT_SAVE_AS_NAME), "Datamart_Converted");
// Indicates a Report Name
mrSave.add(weSave.getArgumentName(EnumReportBeanEvents.REPORT_EVENT_ARGUMENT_SAVE_AS_PARENT_FOLDER_ID), "405B7C934826C3ED08CCF9B6653D4845");
// Indicates the folder in which the datamart report will be saved
mrSave.add(weSave.getArgumentName(EnumReportBeanEvents.REPORT_EVENT_ARGUMENT_DISPLAY_FLAGS), String.valueOf(EnumDSSXMLDisplayMode.DssXmlDisplayModeDatamart));
bean.handleRequest(mrSave);
String newReportID = bean.getObjectID();
ReportBean datamart = getReportBean(newReportID, serverSession);
datamart.setExecutionFlags(EnumDSSXMLExecutionFlags.DssXmlExecutionGenerateDatamart);
// Insert a data to the table indicated above when it executes the datamart Report
datamart.collectData();
// Executes the datamart Report
/** Close I-Server Session **/
serverSession.closeSession();
out("Finished Converting Report to Datamart");
}
public static ReportBean getReportBean(String reportID, WebIServerSession session) {
/** Create a new Bean instance **/
ReportBean rb = (ReportBean) BeanFactory.getInstance().newBean("ReportBean");
/** Assuming a session has already been made
* Setting the session to the report bean
* Setting the reportID to the report bean **/
rb.setSessionInfo(session);
rb.setObjectID(reportID);
/** Return the ReportBean **/
return rb;
}
public static void out(String s) {
System.out.println(s);
}
}