Strategy ONE
Iterating Through the Prompts Collection and Printing Properties for Each Prompt
This code sample illustrates how to iterate through the prompts collection for a report instance and print out certain properties for each prompt object. This code sample also illustrates how to obtain the specific prompt interface.
// obtain the WebObjectSource and WebReportSource interfaces from the WebObjectsFactory
WebObjectsFactory factory = WebObjectsFactory.getInstance();
WebReportSource reportSource = factory.getReportSource();
// specify the report to use
String reportID = "8D679D4211D3E4981000E787EC6DE8A4";
try {
// execute the report and obtain the report instance
WebReportInstance reportInstance = reportSource.getNewInstance(reportID);
int status = reportInstance.pollStatus();
// check to see if this is a prompted or non-prompted report
if(status != EnumDSSXMLStatus.DssXmlStatusPromptXML) {
Log.logger.log(Level.SEVERE, "This is not a prompted report!");
return;
}
// get the collection of prompts used by the report
WebPrompts prompts = reportInstance.getPrompts();
WebPrompt prompt = null;
// print the total number of prompt object in the prompts collection
Log.logger.log(Level.INFO, "The number of prompts in the collection: " + prompts.size());
// iterate through the prompts collection
for(int i = 0; i < prompts.size(); i++) {
prompt = prompts.get(i);
// print the prompt type corresponding to EnumDSSXMLPromptType
Log.logger.log(Level.INFO, "Prompt type: " + prompt.getPromptType());
// print a specialized message for each prompt type
switch (prompt.getPromptType()) {
case EnumWebPromptType.WebPromptTypeConstant:
// for constant prompts, get the specific interface to print the data type
WebConstantPrompt cstPrompt = (WebConstantPrompt) prompt;
Log.logger.log(Level.INFO, "This is a constant prompt.");
Log.logger.log(Level.INFO, "The data type for the constant prompt is: " + cstPrompt.getDataType());
break;
case EnumWebPromptType.WebPromptTypeObjects:
Log.logger.log(Level.INFO, "This is an objects prompt.");
break;
case EnumWebPromptType.WebPromptTypeElements:
Log.logger.log(Level.INFO, "This is an elements prompt.");
break;
case EnumWebPromptType.WebPromptTypeExpression:
// for expression prompts, obtain the specific interface to print the expression type
WebExpressionPrompt expPrompt = (WebExpressionPrompt) prompt;
Log.logger.log(Level.INFO, "This is an expression prompt.");
Log.logger.log(Level.INFO, "The expression type is: " + expPrompt.getExpressionType());
break;
case EnumWebPromptType.WebPromptTypeDimty:
Log.logger.log(Level.INFO, "This is an dimty prompt.");
break;
default:
Log.logger.log(Level.ERROR, "This is an unsupported prompt type.");
break;
}
// print some of the generic properties of the prompt object
Log.logger.log(Level.INFO, "Prompt name: " + prompt.getName());
Log.logger.log(Level.INFO, "Prompt title: " + prompt.getTitle());
Log.logger.log(Level.INFO, "Prompt meaning: " + prompt.getMeaning());
Log.logger.log(Level.INFO, "Is closed?: " + prompt.isClosed());
Log.logger.log(Level.INFO, "Is used?: " + prompt.isUsed());
Log.logger.log(Level.INFO, "Is required?: " + prompt.isRequired());
Log.logger.log(Level.INFO, "Has original answer?: " + prompt.hasOriginalAnswer());
Log.logger.log(Level.INFO, "Has default answer?: " + prompt.hasDefaultAnswer());
Log.logger.log(Level.INFO, "Has previous answer?: " + prompt.hasPreviousAnswer());
// if the prompt came with an answer, print the answer XML
if(prompt.hasOriginalAnswer())
Log.logger.log(Level.INFO, "Answer XML: " + prompt.getAnswerXML());
}
}
catch (WebObjectsException e) {
Log.logger.log(Level.ERROR, e.getMessage());
}
