A fin de habilitar la carga de parámetros para una aplicación, un desarrollador de aplicaciones debe realizar lo siguiente en la aplicación para que el usuario pueda cargar el archivo de parámetros en la ejecución del trabajo de la aplicación:
- En el código de la aplicación, lea el archivo de parámetros en la memoria.Por ejemplo, si el nombre del parámetro es ‘param’, el archivo estaría aquí: /data/parameters/job_id/param
- Convierta el archivo para que refleje la consulta deseada.Por ejemplo, si tiene la consulta SQL select * from table where column1 in (${param}), reemplace ${param} con una lista de valores en el archivo cargado. El archivo cargado tendría el siguiente formato:
value1
value2
value3
La consulta SQL final sería: select * from table where column1 in (‘value1’, ‘value2’, ‘value3’)
A continuación se muestra código JAVA de ejemplo para habilitar la carga de parámetros:
public class SampleApp { private static final String PARAMETER_VOLUME_MOUNT_PATH = "/data/parameters/"; public static void main( String[] args ) throws Exception { String query1 = "select * from cfilter_demo where col1_item1 in (${param});"; Try (DefaultAppCenterClient client = new DefaultAppCenterClient()) { client.log(LogLevel.INFO, "Replacing query parameters..."); String query = replaceWithConfig(client, query1, "param"); client.log(LogLevel.INFO, "executing query:" + query); InputStream resultStream = client.streamResultsFromQuery(query); client.log(LogLevel.INFO, "Caching result..."); client.cacheResult(resultStream, "application/json"); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } private static String getParamValueFromFile(DefaultAppCenterClient client, String configParamName) throws IOException { String paramFile = PARAMETER_VOLUME_MOUNT_PATH + client.getAppContext().getJobId() + "/" + configParamName; StringBuilder configParamValue = new StringBuilder(); boolean isFirst = true; try (BufferedReader br = new BufferedReader(new FileReader(paramFile))) { for (String line; (line = br.readLine()) != null; ) { if (!isFirst) { configParamValue.append(","); } else { isFirst = false; } configParamValue.append("'").append(line).append("'"); } } return configParamValue.toString(); } private static String replaceWithConfig(DefaultAppCenterClient client, String query, String paramName) throws IOException { String paramValue = getParamValueFromFile(client, paramName); query = query.replace("${" + paramName + "}", paramValue); return query; }