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());

}