ExecuteSqlDatasource.java
package com.bonitasoft.processbuilder.extension;
/**
* Handles SQL datasource execution for REST API extensions.
* Provides validation of pagination parameters (page and count).
* <p>
* This class validates that pagination parameters are numerical values
* before executing database queries.
* </p>
*/
public class ExecuteSqlDatasource {
/**
* Validates input parameters for SQL datasource execution.
* Ensures that pagination parameters 'p' (page) and 'c' (count) are numerical values.
*
* @param p the page parameter as a string
* @param c the count parameter as a string
* @throws ValidationException if any parameter is not a valid numerical value
*/
public void validateInputParameters(final String p, final String c) throws ValidationException {
if (p != null && !p.trim().isEmpty()) {
QueryParamValidator.validateNumerical("p", p);
}
if (c != null && !c.trim().isEmpty()) {
QueryParamValidator.validateNumerical("c", c);
}
}
/**
* Executes a SQL query with validated pagination parameters.
*
* @param p the page parameter
* @param c the count parameter
* @return a result object (placeholder for actual implementation)
* @throws ValidationException if validation fails
*/
public Object execute(final String p, final String c) throws ValidationException {
validateInputParameters(p, c);
int page = (p != null && !p.trim().isEmpty()) ? Integer.parseInt(p) : 0;
int count = (c != null && !c.trim().isEmpty()) ? Integer.parseInt(c) : 10;
// Placeholder for actual SQL execution logic
return String.format("Executing query with page=%d, count=%d", page, count);
}
}