The example provided in this document is provided “as-is” to the user and assumes that the user:
PREREQUISITES:
For the sample to work, the Strategy Web JAR files must be accessible by the Java Runtime
Environment. The Strategy Web JAR files can be found under:
Note:
More elaborate programs will require additional library files and are out of the scope of this document.
The following piece of code will execute a datamart report answering an object prompt using the saved default answer in Strategy Web SDK.
package com.Strategy.standalone;
import com.Strategy.web.beans.ReportBean;
import com.Strategy.web.beans.WebBeanFactory;
import com.Strategy.web.objects.EnumWebPromptType;
import com.Strategy.web.objects.WebIServerSession;
import com.Strategy.web.objects.WebObjectsException;
import com.Strategy.web.objects.WebObjectsFactory;
import com.Strategy.web.objects.WebObjectsPrompt;
import com.Strategy.web.objects.WebPrompt;
import com.Strategy.web.objects.WebPrompts;
import com.Strategy.web.objects.WebReportInstance;
import com.Strategy.webapi.EnumDSSXMLApplicationType;
import com.Strategy.webapi.EnumDSSXMLExecutionFlags;
public class PromptedDataMart {
public static void main(String[] args) throws WebObjectsException {
try {
WebObjectsFactory factory=WebObjectsFactory.getInstance();
WebIServerSession serverSession=factory.getIServerSession();
serverSession.setServerName("SERVERNAME");
serverSession.setServerPort(0);
serverSession.setProjectName("PROJECT NAME");
serverSession.setLogin("administrator");
serverSession.setPassword("");
serverSession.setApplicationType(EnumDSSXMLApplicationType.DssXmlApplicationCustomApp);
//Create report bean using the ID of an existing Datamart report
ReportBean rb = getReportBean("AC76536442D4238AA7053EA614FD2192",serverSession);
WebReportInstance reportInstance = rb.getReportInstance();
WebPrompts prompts = reportInstance.getPrompts();
int promptSize = prompts.size();
System.out.println("Number of Prompts in report :->"+promptSize);
for (int i = 0; i < prompts.size(); i++){
WebPrompt prompt = prompts.get(i);
int promptType = prompt.getPromptType();
System.out.println("Prompt Type:->"+promptType);
switch (promptType) {
//For testing purposes I'll just use Object prompt type
//passing default answer
case EnumWebPromptType.WebPromptTypeObjects:
System.out.println("Setting prompt valye for Object Type prompt");
WebObjectsPrompt objPrompt = (WebObjectsPrompt) prompt;
if(objPrompt.hasDefaultAnswer()) { // Check if the prompt has a default answer...
objPrompt.setAnswer(objPrompt.getDefaultAnswer()); // Use default as answer...
}
else if(objPrompt.hasPreviousAnswer()) { // Check if the prompt has a previous answer...
objPrompt.setAnswer(objPrompt.getPreviousAnswer()); // Use previous as answer...
}
break;
default:
System.out.println("Prompt type :->" + promptType + " is not support by ReportExecutor Utility.");
}
}
//sets the execution flag to indicate that datamart should be executed
rb.setExecutionFlags(EnumDSSXMLExecutionFlags.DssXmlExecutionGenerateDatamart);
rb.collectData();
serverSession.closeSession();
System.out.println("Done");
}
catch(Exception e){
e.printStackTrace();
}
}
public static ReportBean getReportBean(String id,WebIServerSession session) {
ReportBean rb = (ReportBean) WebBeanFactory.getInstance().newBean("ReportBean");
//initialize session appropriately
rb.setSessionInfo(session);
rb.setObjectID(id);
return rb;
}
}