Here's the answer. I replaced
and ({DriverMotionView.GROUPID} = {?GroupID1Parameter}
or {DriverMotionView.GROUPID} = {?GroupID2Parameter}
or {DriverMotionView.GROUPID} = {?GroupID3Parameter}
or {DriverMotionView.GROUPID} = {?GroupID4Parameter}
or {DriverMotionView.GROUPID} = {?GroupID5Parameter}
or {DriverMotionView.GROUPID} = {?GroupID6Parameter}
or {DriverMotionView.GROUPID} = {?GroupID7Parameter}
or {DriverMotionView.GROUPID} = {?GroupID8Parameter}
or {DriverMotionView.GROUPID} = {?GroupID9Parameter}
or {DriverMotionView.GROUPID} = {?GroupID10Parameter}
)
with
and ({DriverMotionView.GROUPID} in {?GroupIDArrayParameter})
Where the GroupIDArrayParameter is declared as a number parameter allowing discrete and multiple values. Custom values are allowed but I don't think that matters. What is key is that the type of the GroupIDArrayParameter (number) match the type of the DriverMotionView.GROUPID which is a number as well.
The code that sets the GroupIDArrayParameter is essentially as follows:
Fields fields = new Fields ();
... //Set other parameters here
setDiscreteArrayParameter(fields, "GroupIDArrayParameter", "",
getIntGroupIDs(groups));
...
// Convert String groupIDs to Integers
private Integer[] getIntGroupIDs(String[] s) {
Integer[] result = new Integer[s.length];
for (int i = 0; i < s.length; i++) {
result[i] = Integer.parseInt(s[i]);
}
return result;
}
...
private void setDiscreteArrayParameter(Fields fields, String paramName,
String reportName, Object[] parameterValues) {
logger.debug("DescreteParameter - Name: " + paramName);
// Create parameter field
ParameterField parmeterField = new ParameterField();
// Set report name
parmeterField.setReportName(reportName);
// Set parameter name
parmeterField.setName(paramName);
// Create value
Values values = new Values();
for (int i = 0; i < parameterValues.length; i++) {
ParameterFieldDiscreteValue discreteValue = new ParameterFieldDiscreteValue();
discreteValue.setValue(parameterValues[i]);
values.add(discreteValue);
}
parmeterField.setCurrentValues(values);
fields.add(parmeterField);
}
There may even be cleaner ways to do this, but I have only so much time to investigate.
Enjoy