Defining and Customizing a Report to a Java Method

Use the Java Method report type to define a drill-through report to drill through to a custom Java method that you create.

You may create a Java method that generates a report that satisfies your specific requirements. For example, you may create a Java method that extracts data from a specific application.

For the Spreadsheet Add-in or Smart View user in the client application that runs the drill-through report, there is no difference between executing a drill-through report to a relational source and executing a drill-through report with user-defined Java methods.

  To define a Java method report type and specify the Java method to execute during drill-through:

  1. From Drill-through Report Type, select Java Method.

  2. In Java Class Name, enter the full package name of the Java class; for example:

    test.com.hyperion.cp.scripts.acceptance.test_cases.TestDTRJavaMethod
  3. In Java Method Name , enter the name of the Java method; for example:

    runTest

    User-defined Java methods that can be invoked by Essbase Studio Server must have the following signature:

    public static void <method-name>(ArrayList<String>[]> args, ResultSet result)

    The ArrayList<String>[]> args parameter of the user-defined Java method is an array list of drill-through report arguments. Each item of the array list describes a member from the intersection and includes the dimension name, class name, and member name. For example

    “ProductH”   “SKU”         “100-10”
    “TimeH”      “Time Year”   “2006”
    

    If the member is a top member of an Essbase dimension, the value of class name is null. For example:

    “ProductH”     null     “ProductH”

    The ResultSet parameter is an interface from the Java package, com.hyperion.cp.interfaces.

    Note:

    Before setting any values in the records of the result set, all tags of the result set must be defined.

    The following methods of the interface can be used in user-defined Java methods:

    /**
     * Adds a new tag to result set signature
     * @param tag Tag name
     * @param clazz Java class that corresponds to the tag
     *              (Boolean, Integer, Long, Double, String)
     */
    public void addTag(String tag, Class clazz);
       
    /**
     * Sets value in result set record
     * @param tag Tag name
     * @param value Value
     */
    public void setValue(String tag, boolean value);
    public void setValue(String tag, int value);
    public void setValue(String tag, long value);
    public void setValue(String tag, double value);
    public void setValue(String tag, String value);
       
    /**
     * Adds record to the result set
     *
     */
    public void addRecord();

    The following is an example of the user-defined Java method, runTest. This method converts the parameters of the drill-through report to a result set with the tags Hierarchy, Class, Value. The values of all tags are strings.

    package test.com.hyperion.cp.scripts.acceptance.test_cases;
    
    import com.hyperion.cp.interfaces.ResultSet;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class TestDTRJavaMethod
    {
       /**
        * User defined java method for DTR
        * @param result Result of DTR
        * @param args Actual arguments of the DTR
        */
       public static void runTest(ArrayList<String[]> args, ResultSet result)
       {
          // make signature of the result
          
          result.addTag("Hierarchy", String.class);
          result.addTag("Class", String.class);
          result.addTag("Value", String.class);
          
          Iterator<String[]> iterator = args.iterator();
          
          while (iterator.hasNext())
          {
             // add records to the result
             
             String[] tuple = iterator.next();
             
             result.setValue("Hierarchy", tuple[0]);
             result.setValue("Class", tuple[1]);
             result.setValue("Value", tuple[2]);
             
             result.addRecord();
          }
       }
    }
    

    When the spreadsheet user runs the drill-through report, the Java method is executed and results in the following drill-through report:

    ======================================
    Hierarchy    Class        Value       
    ======================================
    ProductH     SKU          100-10      
    TimeH        Time Year    2006        
    MarketH      REGION       East        
    MyMeasuresH  Msr_Gen4     Sales       
    ======================================
    
  4. Click Save, and then Close to close the drill-through report editor; or select the Associations tab and perform the tasks in Associating Drill-through Reports with Essbase Models.