Custom Functions

In addition to the standard (built-in) functions, there is an ability to define your own (custom) functions. To do this, we have the list customFunctions implemented in the class StiReport. Before rendering a report all required functions must be added in it. Classes of user-defined functions must implement the interface com.stimulsoft.report.StiCustomFunction. The description of the interface StiCustomFunction:

 

public String getFunctionName() – the function class should return the name of the custom function. Register is taken into account. Do not use the names of existing built-in functions, methods, variables, reserved words as true/false/null, etc.

public List<Class> getParametersList() – the function class should return a list of classes of variables used in the custom function.

public Object invoke(List<Object> args) –  there must be a realization of a custom function.

 

An example of using on the base of Samples\webfx\. Suppose you need to implement a custom substring function. In the class my.actions.MyRenderReportAction write the following:

 

webfx

...

public StiReport render(StiReport report) throws IOException, StiException {

report.getCustomFunctions().add(new StiCustomFunction() {

public Object invoke(List<Object> args) {

return ((String) args.get(0)).substring((Integer)args.get(1), (Integer) args.get(2));

}

 

public List<Class> getParametersList() {

return new ArrayList<Class>(Arrays.asList(String.class, Integer.class, Integer.class));

}

 

public String getFunctionName() {

return "substring";

}

});

return super.render(report);

}

...

 

 

Now you can use a custom substring function in a report: